約 4,484,549 件
https://w.atwiki.jp/takumi-memo/pages/53.html
Purpose of this Module Type Component Import plugin Moduleは、Conponentがランタイムにアップグレードされても、他のpluginsによって共有されるJava Componentにアクセスすることを可能にします。 Configuration Component Import plugin Moduleのroot elementはcomponent-importです。 次の属性と子エレメントを持ちます。 Attribute Name Required Description Interface * コンポーネントをインポートするためのJava Interface。この属性は、インターフェイスが使われなかったときのみ要求される。 key * plugin moduleの識別子。keyはユニークである必要がある。 filter The LDAP filter to use to match public components (OSGi services). Note The format of the filter must be a valid LDAP filter. (Plugin Framework 2.3 and later.) Element interface * The Java interface under which the component to retrieve is registered. This element can appear zero or more times, but is required if the interface attribute is not used. Example 1つのコンポーネントのインポートを含むコード片。 atlassian-plugin name="Hello World" key="example.plugin.helloworld" plugins-version="2" plugin-info description A basic component import module test /description vendor name="Atlassian Software Systems" url="http //www.atlassian.com"/ version 1.0 /version /plugin-info component-import key="helloWorldService" interface com.myapp.HelloWorldService /interface /component-import /atlassian-plugin 異なるpluginによって利用可能になったコンポーネントを消費します。 atlassian-plugin name="Hello World Provider" key="example.plugin.helloworld.provider" plugins-version="2" plugin-info description A basic component module test /description vendor name="Atlassian Software Systems" url="http //www.atlassian.com"/ version 1.0 /version /plugin-info component key="helloWorldService" class="com.myapp.internal.MyHelloWorldService" public="true" interface com.myapp.HelloWorldService /interface /component /atlassian-plugin LDAPフィルターの例 component-import key="dictionaryService" interface="com.myapp.DictionaryService" filter="(language=English)" /
https://w.atwiki.jp/sampleisbest/pages/591.html
開発環境 Microsoft Visual Studio Community 2019 実行環境 Microsoft Windows 10 Home (64bit) プロジェクト テンプレート C++ 空のプロジェクト プロジェクト名 dx11sample1 dx11sample1.cpp #pragma comment(lib, "d3d11") #pragma comment(lib, "d3dcompiler") #include Windows.h #include wrl.h #include d3d11.h #include d3dcompiler.h #include DirectXMath.h using namespace Microsoft WRL; using namespace DirectX; struct SimpleVertex { XMFLOAT3 Pos; XMFLOAT3 Color; }; struct ConstantBuffer { XMMATRIX mWorld; }; ComPtr ID3D11Device g_pDevice; ComPtr ID3D11DeviceContext g_pContext; ComPtr IDXGISwapChain g_pSwapChain; ComPtr ID3D11RenderTargetView g_pRenderTargetView; ComPtr ID3D11VertexShader g_pVertexShader; ComPtr ID3D11PixelShader g_pPixelShader; ComPtr ID3D11InputLayout g_pVertexLayout; ComPtr ID3D11Buffer g_pVertexBuffer; ComPtr ID3D11Buffer g_pConstantBuffer; float g_theta = 0; // 関数宣言 HWND InitWindow(HINSTANCE hInst); HRESULT InitDevice(HWND hWnd); void CleanupDevice(); LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); void Render(); int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE, LPWSTR, int nCmdShow) { HWND hWnd = InitWindow(hInstance); if (!hWnd) return -1; if (FAILED(InitDevice(hWnd))) { CleanupDevice(); return -1; } ShowWindow(hWnd, nCmdShow); MSG msg = { 0 }; while (msg.message != WM_QUIT) { if (PeekMessage( msg, nullptr, 0, 0, PM_REMOVE)) { TranslateMessage( msg); DispatchMessage( msg); } else { Render(); } } CleanupDevice(); return msg.wParam; } HWND InitWindow(HINSTANCE hInst) { WNDCLASSEX wc = { sizeof WNDCLASSEX }; wc.style = CS_HREDRAW | CS_VREDRAW; wc.lpfnWndProc = WndProc; wc.hInstance = hInst; wc.hCursor = LoadCursor(nullptr, IDC_ARROW); wc.hbrBackground = HBRUSH(COLOR_WINDOW + 1); wc.lpszClassName = L"dx11sample1"; if (!RegisterClassEx( wc)) return nullptr; DWORD dwStyle = WS_OVERLAPPEDWINDOW; RECT rc = { 0, 0, 400, 400 }; AdjustWindowRect( rc, dwStyle, FALSE); HWND hWnd = CreateWindow( wc.lpszClassName, L"dx11sample1", dwStyle, CW_USEDEFAULT, 0, rc.right - rc.left, rc.bottom - rc.top, nullptr, nullptr, hInst, nullptr); return hWnd; } HRESULT CompileShaderFromFile( LPCWSTR szFileName, LPCSTR szEntryPoint, LPCSTR szShaderModel, ID3DBlob** ppBlobOut) { DWORD dwShaderFlags = D3DCOMPILE_ENABLE_STRICTNESS; ComPtr ID3DBlob pErrorBlob; HRESULT hr = D3DCompileFromFile(szFileName, nullptr, nullptr, szEntryPoint, szShaderModel, dwShaderFlags, 0, ppBlobOut, pErrorBlob); if (FAILED(hr)) { if (pErrorBlob) { OutputDebugStringA((LPCSTR)pErrorBlob- GetBufferPointer()); } return hr; } return S_OK; } HRESULT InitDevice(HWND hWnd) { HRESULT hr; UINT width = 400; UINT height = 400; DXGI_SWAP_CHAIN_DESC sd = { 0 }; sd.BufferDesc.Width = width; sd.BufferDesc.Height = height; sd.BufferDesc.RefreshRate.Numerator = 60; sd.BufferDesc.RefreshRate.Denominator = 1; sd.BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;// 符号なし正規化整数 sd.SampleDesc.Count = 1; sd.SampleDesc.Quality = 0; sd.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT; sd.BufferCount = 1; sd.OutputWindow = hWnd; sd.Windowed = TRUE; sd.SwapEffect = DXGI_SWAP_EFFECT_DISCARD; D3D_FEATURE_LEVEL featureLevel; hr = D3D11CreateDeviceAndSwapChain( nullptr, D3D_DRIVER_TYPE_HARDWARE, nullptr, 0, nullptr, 0, D3D11_SDK_VERSION, sd, g_pSwapChain, g_pDevice, featureLevel, g_pContext); // レンダーターゲットビュー ComPtr ID3D11Texture2D pBackBuffer; hr = g_pSwapChain- GetBuffer(0, IID_PPV_ARGS( pBackBuffer)); if (FAILED(hr)) return hr; hr = g_pDevice- CreateRenderTargetView(pBackBuffer.Get(), nullptr, g_pRenderTargetView); if (FAILED(hr)) return hr; g_pContext- OMSetRenderTargets(1, g_pRenderTargetView.GetAddressOf(), nullptr); // ビューポート D3D11_VIEWPORT vp = { 0 }; vp.Width = (FLOAT)width; vp.Height = (FLOAT)height; vp.MinDepth = 0; vp.MaxDepth = 1; g_pContext- RSSetViewports(1, vp); // 頂点シェーダ ComPtr ID3DBlob pVSBlob; hr = CompileShaderFromFile(L"dx11sample1.fx", "VS", "vs_5_0", pVSBlob); if (FAILED(hr)) { return hr; } hr = g_pDevice- CreateVertexShader( pVSBlob- GetBufferPointer(), pVSBlob- GetBufferSize(), nullptr, g_pVertexShader); if (FAILED(hr)) return hr; // ピクセルシェーダ ComPtr ID3DBlob pPSBlob; hr = CompileShaderFromFile(L"dx11sample1.fx", "PS", "ps_5_0", pPSBlob); if (FAILED(hr)) { return hr; } hr = g_pDevice- CreatePixelShader( pPSBlob- GetBufferPointer(), pPSBlob- GetBufferSize(), nullptr, g_pPixelShader); if (FAILED(hr)) return hr; // g_pContext- IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST); // 入力レイアウト D3D11_INPUT_ELEMENT_DESC layout[] = { { "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0 }, { "COLOR", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 12, D3D11_INPUT_PER_VERTEX_DATA, 0 }, }; hr = g_pDevice- CreateInputLayout(layout, ARRAYSIZE(layout), pVSBlob- GetBufferPointer(), pVSBlob- GetBufferSize(), g_pVertexLayout); if (FAILED(hr)) return hr; g_pContext- IASetInputLayout(g_pVertexLayout.Get()); // 頂点バッファ SimpleVertex vertices[] = { { XMFLOAT3(0, 0, 1), XMFLOAT3(0, 0, 1) }, { XMFLOAT3(0, 1, 0), XMFLOAT3(0, 1, 0) }, { XMFLOAT3(1, 0, 0), XMFLOAT3(1, 0, 0) }, }; D3D11_BUFFER_DESC vb = { 0 }; vb.ByteWidth = sizeof vertices; vb.Usage = D3D11_USAGE_DEFAULT; vb.BindFlags = D3D11_BIND_VERTEX_BUFFER; D3D11_SUBRESOURCE_DATA InitData = { 0 }; InitData.pSysMem = vertices; hr = g_pDevice- CreateBuffer( vb, InitData, g_pVertexBuffer); if (FAILED(hr)) return hr; UINT stride = sizeof SimpleVertex; UINT offset = 0; g_pContext- IASetVertexBuffers(0, 1, g_pVertexBuffer.GetAddressOf(), stride, offset); // 定数バッファ D3D11_BUFFER_DESC cb = { 0 }; cb.ByteWidth = sizeof ConstantBuffer; cb.Usage = D3D11_USAGE_DEFAULT; cb.BindFlags = D3D11_BIND_CONSTANT_BUFFER; hr = g_pDevice- CreateBuffer( cb, nullptr, g_pConstantBuffer); if (FAILED(hr)) return hr; return S_OK; } void CleanupDevice() { if (g_pContext) { g_pContext- ClearState(); } } LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { PAINTSTRUCT ps; HDC hdc; switch (uMsg) { case WM_PAINT hdc = BeginPaint(hWnd, ps); EndPaint(hWnd, ps); break; case WM_DESTROY PostQuitMessage(0); break; default return DefWindowProc(hWnd, uMsg, wParam, lParam); } return 0; } void Render() { XMMATRIX world = XMMatrixRotationZ(g_theta); // float ClearColor[4] = { 0, 0, 0, 1 }; g_pContext- ClearRenderTargetView(g_pRenderTargetView.Get(), ClearColor); ConstantBuffer cb; //cb.mWorld = XMMatrixTranspose(world); cb.mWorld = world; g_pContext- UpdateSubresource(g_pConstantBuffer.Get(), 0, nullptr, cb, 0, 0); g_pContext- VSSetShader(g_pVertexShader.Get(), nullptr, 0); g_pContext- VSSetConstantBuffers(0, 1, g_pConstantBuffer.GetAddressOf()); g_pContext- PSSetShader(g_pPixelShader.Get(), nullptr, 0); g_pContext- Draw(3, 0); g_pSwapChain- Present(1, 0); // g_theta += 0.01f; } dx11sample1.fx cbuffer ConstantBuffer register(b0) { matrix World; }; struct VS_INPUT { float4 Pos POSITION; float4 Color COLOR; }; struct PS_INPUT { float4 Pos SV_Position; float4 Color COLOR; }; // Vertex Shader PS_INPUT VS(VS_INPUT input) { PS_INPUT output = (PS_INPUT)0; output.Pos = mul(World, input.Pos); output.Color = input.Color; return output; } // Pixel Shader float4 PS(PS_INPUT input) SV_Target { return input.Color; }
https://w.atwiki.jp/sampleisbest/pages/590.html
開発環境 Microsoft Visual Studio Community 2019 実行環境 Microsoft Windows 10 Home (64bit) プロジェクト テンプレート C++ 空のプロジェクト プロジェクト名 dx11sample2 dx11sample2.cpp #pragma comment(lib, "d3d11") #pragma comment(lib, "d3dcompiler") #include Windows.h #include wrl.h #include d3d11.h #include d3dcompiler.h #include DirectXMath.h #define HLSL_FILE L"dx11sample2.fx" using namespace Microsoft WRL; using namespace DirectX; struct ConstantBuffer { float frame; float f1, f2, f3;// filler }; // 外部変数 ComPtr ID3D11Device g_pDevice; ComPtr ID3D11DeviceContext g_pContext; ComPtr IDXGISwapChain g_pSwapChain; ComPtr ID3D11RenderTargetView g_pRenderTargetView; ComPtr ID3D11VertexShader g_pVertexShader; ComPtr ID3D11PixelShader g_pPixelShader; ComPtr ID3D11Buffer g_pConstantBuffer; float g_frame = 0; // 関数宣言 HWND InitWindow(HINSTANCE hInst); HRESULT InitDevice(HWND hWnd); void CleanupDevice(); LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); void Render(); int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE, LPWSTR, int nCmdShow) { HWND hWnd = InitWindow(hInstance); if (!hWnd) return -1; if (FAILED(InitDevice(hWnd))) { CleanupDevice(); return -1; } ShowWindow(hWnd, nCmdShow); MSG msg = { 0 }; while (msg.message != WM_QUIT) { if (PeekMessage( msg, nullptr, 0, 0, PM_REMOVE)) { TranslateMessage( msg); DispatchMessage( msg); } else { Render(); } } CleanupDevice(); return int(msg.wParam); } HWND InitWindow(HINSTANCE hInst) { WNDCLASSEX wc = { sizeof WNDCLASSEX }; wc.style = CS_HREDRAW | CS_VREDRAW; wc.lpfnWndProc = WndProc; wc.hInstance = hInst; wc.hCursor = LoadCursor(nullptr, IDC_ARROW); wc.hbrBackground = HBRUSH(COLOR_WINDOW + 1); wc.lpszClassName = L"dx11sample2"; if (!RegisterClassEx( wc)) return nullptr; DWORD dwStyle = WS_OVERLAPPEDWINDOW; RECT rc = { 0, 0, 400, 400 }; AdjustWindowRect( rc, dwStyle, FALSE); HWND hWnd = CreateWindow( wc.lpszClassName, L"dx11sample2", dwStyle, CW_USEDEFAULT, 0, rc.right - rc.left, rc.bottom - rc.top, nullptr, nullptr, hInst, nullptr); return hWnd; } HRESULT CompileShaderFromFile( LPCWSTR szFileName, LPCSTR szEntryPoint, LPCSTR szShaderModel, ID3DBlob** ppBlobOut) { DWORD dwShaderFlags = D3DCOMPILE_ENABLE_STRICTNESS; ComPtr ID3DBlob pErrorBlob; HRESULT hr = D3DCompileFromFile(szFileName, nullptr, nullptr, szEntryPoint, szShaderModel, dwShaderFlags, 0, ppBlobOut, pErrorBlob); if (FAILED(hr)) { if (pErrorBlob) { OutputDebugStringA((LPCSTR)pErrorBlob- GetBufferPointer()); } return hr; } return S_OK; } HRESULT InitDevice(HWND hWnd) { HRESULT hr; RECT rc; GetClientRect(hWnd, rc); UINT width = rc.right - rc.left; UINT height = rc.bottom - rc.top; DXGI_SWAP_CHAIN_DESC sd = { 0 }; sd.BufferDesc.Width = width; sd.BufferDesc.Height = height; sd.BufferDesc.RefreshRate.Numerator = 60; sd.BufferDesc.RefreshRate.Denominator = 1; sd.BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;// 符号なし正規化整数 sd.SampleDesc.Count = 1; sd.SampleDesc.Quality = 0; sd.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT; sd.BufferCount = 1; sd.OutputWindow = hWnd; sd.Windowed = TRUE; sd.SwapEffect = DXGI_SWAP_EFFECT_DISCARD; D3D_FEATURE_LEVEL featureLevel; hr = D3D11CreateDeviceAndSwapChain( nullptr, D3D_DRIVER_TYPE_HARDWARE, nullptr, 0, nullptr, 0, D3D11_SDK_VERSION, sd, g_pSwapChain, g_pDevice, featureLevel, g_pContext); if (FAILED(hr)) return hr; // レンダーターゲットビュー ComPtr ID3D11Texture2D pBackBuffer; hr = g_pSwapChain- GetBuffer(0, IID_PPV_ARGS( pBackBuffer)); if (FAILED(hr)) return hr; hr = g_pDevice- CreateRenderTargetView(pBackBuffer.Get(), nullptr, g_pRenderTargetView); if (FAILED(hr)) return hr; g_pContext- OMSetRenderTargets(1, g_pRenderTargetView.GetAddressOf(), nullptr); // ビューポート D3D11_VIEWPORT vp = { 0 }; vp.Width = (FLOAT)width; vp.Height = (FLOAT)height; vp.MinDepth = 0; vp.MaxDepth = 1; g_pContext- RSSetViewports(1, vp); // 頂点シェーダ ComPtr ID3DBlob pVSBlob; hr = CompileShaderFromFile(HLSL_FILE, "VS", "vs_5_0", pVSBlob); if (FAILED(hr)) { return hr; } hr = g_pDevice- CreateVertexShader( pVSBlob- GetBufferPointer(), pVSBlob- GetBufferSize(), nullptr, g_pVertexShader); if (FAILED(hr)) return hr; // ピクセルシェーダ ComPtr ID3DBlob pPSBlob; hr = CompileShaderFromFile(HLSL_FILE, "PS", "ps_5_0", pPSBlob); if (FAILED(hr)) { return hr; } hr = g_pDevice- CreatePixelShader( pPSBlob- GetBufferPointer(), pPSBlob- GetBufferSize(), nullptr, g_pPixelShader); if (FAILED(hr)) return hr; // 定数バッファ D3D11_BUFFER_DESC cb = { 0 }; cb.ByteWidth = sizeof ConstantBuffer; cb.Usage = D3D11_USAGE_DEFAULT; cb.BindFlags = D3D11_BIND_CONSTANT_BUFFER; hr = g_pDevice- CreateBuffer( cb, nullptr, g_pConstantBuffer); if (FAILED(hr)) return hr; return S_OK; } void CleanupDevice() { if (g_pContext) { g_pContext- ClearState(); } } LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { PAINTSTRUCT ps; HDC hdc; switch (uMsg) { case WM_PAINT hdc = BeginPaint(hWnd, ps); EndPaint(hWnd, ps); break; case WM_DESTROY PostQuitMessage(0); break; default return DefWindowProc(hWnd, uMsg, wParam, lParam); } return 0; } void Render() { float ClearColor[4] = { 0, 0, 0, 1 }; g_pContext- ClearRenderTargetView(g_pRenderTargetView.Get(), ClearColor); ConstantBuffer cb; cb.frame = g_frame; g_pContext- UpdateSubresource(g_pConstantBuffer.Get(), 0, nullptr, cb, 0, 0); g_pContext- VSSetShader(g_pVertexShader.Get(), nullptr, 0); g_pContext- VSSetConstantBuffers(0, 1, g_pConstantBuffer.GetAddressOf()); g_pContext- PSSetShader(g_pPixelShader.Get(), nullptr, 0); // dx11sample2.fx g_pContext- IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST); g_pContext- Draw(3, 0); // dx11sample2b.fx //g_pContext- IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP); //g_pContext- Draw(18, 0); g_pSwapChain- Present(1, 0); // g_frame++; } dx11sample2.fx cbuffer ConstantBuffer register(b0) { float frame; }; struct VS_INPUT { uint vid SV_VertexID; }; struct PS_INPUT { float4 Pos SV_Position; float4 Color COLOR; }; // Vertex Shader PS_INPUT VS(VS_INPUT input) { PS_INPUT output = (PS_INPUT)0; float2 coord = float2((input.vid 1) 1, input.vid 1); float2 pos = coord - 0.5; float rad = radians(frame); float c = cos(rad); float s = sin(rad); pos = float2(pos.x * c - pos.y * s, pos.x * s + pos.y * c); output.Pos = float4(pos, 0, 1); output.Color = float4(coord, 1, 1); return output; } // Pixel Shader float4 PS(PS_INPUT input) SV_Target { return input.Color; } dx11sample2b.fx +... cbuffer ConstantBuffer register(b0) { float frame; }; struct VS_INPUT { uint vid SV_VertexID; }; struct PS_INPUT { float4 Pos SV_Position; float4 Coord TEXCOORD; }; matrix rotationX(float angle) { float c = cos(angle); float s = sin(angle); return matrix( 1, 0, 0, 0, 0, c, -s, 0, 0, s, c, 0, 0, 0, 0, 1); } matrix rotationY(float angle) { float c = cos(angle); float s = sin(angle); return matrix( c, 0, s, 0, 0, 1, 0, 0, -s, 0, c, 0, 0, 0, 0, 1); } matrix rotationZ(float angle) { float c = cos(angle); float s = sin(angle); return matrix( c, -s, 0, 0, s, c, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); } static uint vertices[] = { 3,1,2,0, 0,4,2,6,3,7,1,5,0,4, 4,5,6,7 }; // Vertex Shader PS_INPUT VS(VS_INPUT input) { PS_INPUT output = (PS_INPUT)0; uint vtx = vertices[input.vid]; float3 coord = float3(vtx 1, (vtx 1) 1, (vtx 2) 1); float4 pos = float4((coord - 0.5) * float3(0.4, 0.8, 0.2), 1); matrix mWorld = mul(rotationY(radians(frame)), rotationX(radians(70.0))); output.Pos = mul(mWorld, pos); output.Pos.z += 0.5; output.Coord = float4(coord, 1); return output; } // Pixel Shader float4 PS(PS_INPUT input) SV_Target { float3 edge = step(0.48, abs(input.Coord.xyz - 0.5)); if (length(edge) 1.0) { return float4(0.5, 0.5, 0.5, 1); } return input.Coord; }
https://w.atwiki.jp/dslua/pages/28.html
canvas controls DateTime debug fonts images maps Rumble Sound timers
https://w.atwiki.jp/sampleisbest/pages/555.html
開発環境 Microsoft Visual Studio Community 2017 実行環境 Microsoft Windows 10 Home (64bit) プロジェクトの種類 Visual C++/空のプロジェクト プロジェクト名 FontSample FontSample.cpp // Unicode文字セット #include Windows.h #include windowsx.h #include set #include string #include "Resource.h" using namespace std; typedef set wstring STRLIST; // 関数プロトタイプ宣言 INT_PTR CALLBACK DlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); void OnInitDialog(HWND hDlg); void OnDrawItem(LPARAM lParam); int CALLBACK EnumFontFamExProc(const LOGFONT *lpelfe, const TEXTMETRIC *lpntme, DWORD FontType, LPARAM lParam); void Redraw(); // 外部変数 STRLIST facenames; HWND hMainDlg; int APIENTRY wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow) { DialogBox(hInstance, MAKEINTRESOURCE(IDD_MAINDLG), NULL, DlgProc); return 0; } INT_PTR CALLBACK DlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { INT_PTR ret = TRUE; switch (uMsg) { case WM_DRAWITEM OnDrawItem(lParam); break; case WM_COMMAND WORD cid; cid = LOWORD(wParam); switch (cid) { case IDC_FACENAME switch (HIWORD(wParam)) { case LBN_SELCHANGE Redraw(); break; } break; case IDOK Redraw(); break; case IDCANCEL EndDialog(hDlg, LOWORD(wParam)); break; default ret = FALSE; } break; case WM_INITDIALOG hMainDlg = hDlg; OnInitDialog(hDlg); return FALSE; default ret = FALSE; } return ret; } void OnInitDialog(HWND hDlg) { SetDlgItemText(hDlg, IDC_SAMPLE, L"東京都千代○区\r\n永○町1丁目10ー1\r\n\r\n図書 館太郎様\r\n 花子様\r\n1ー1-1―-"); SetDlgItemText(hDlg, IDC_HEIGHT, L"50"); HDC hdc = GetDC(NULL); LOGFONT lf = { 0 }; lf.lfCharSet = DEFAULT_CHARSET; EnumFontFamiliesEx(hdc, lf, EnumFontFamExProc, 0, 0); ReleaseDC(NULL, hdc); HWND hList = GetDlgItem(hDlg, IDC_FACENAME); for (auto e facenames) { ListBox_AddString(hList, e.c_str()); } ListBox_SetCurSel(hList, 0); } void OnDrawItem(LPARAM lParam) { LPDRAWITEMSTRUCT pdi = (LPDRAWITEMSTRUCT)lParam; HDC hdc = pdi- hDC; RECT rcView; GetClientRect(pdi- hwndItem, rcView); FillRect(hdc, rcView, GetSysColorBrush(COLOR_WINDOW)); // 書体名 wchar_t facename[256]; HWND hList = GetDlgItem(hMainDlg, IDC_FACENAME); int index = ListBox_GetCurSel(hList); ListBox_GetText(hList, index, facename); bool vert = (facename[0] == L @ ); // 例文 wchar_t buf[256]; GetDlgItemText(hMainDlg, IDC_SAMPLE, buf, _countof(buf)); // フォントの高さ BOOL trans; int height = GetDlgItemInt(hMainDlg, IDC_HEIGHT, trans, TRUE); if (trans == FALSE) { trans = 10; } // フォント作成 LOGFONT lf = { 0 }; lf.lfCharSet = DEFAULT_CHARSET; lf.lfEscapement = (vert ? 2700 0); //lf.lfOrientation = 2700; lf.lfHeight = height; wcscpy_s(lf.lfFaceName, facename); HFONT hFont = CreateFontIndirect( lf); HGDIOBJ hFontOld = SelectObject(hdc, hFont); if (vert) { LPTSTR p = buf; for (int x = rcView.right; ; x -= abs(height)) { LPTSTR n = wcsstr(p, L"\r\n"); if (n) { *n = 0; TextOut(hdc, x, 0, p, wcslen(p)); p = n + 2; } else { TextOut(hdc, x, 0, p, wcslen(p)); break; } } } else { DrawText(hdc, buf, -1, rcView, 0); } SelectObject(hdc, hFontOld); DeleteObject(hFont); } int CALLBACK EnumFontFamExProc(const LOGFONT *lpelfe, const TEXTMETRIC *lpntme, DWORD FontType, LPARAM lParam) { if (facenames.find(lpelfe- lfFaceName) == facenames.end()) { facenames.insert(lpelfe- lfFaceName); } return TRUE; } void Redraw() { RedrawWindow(GetDlgItem(hMainDlg, IDC_PREVIEW), NULL, NULL, RDW_INVALIDATE); } Resource.h #define IDD_MAINDLG100 #define IDC_FACENAME101 #define IDC_SAMPLE102 #define IDC_HEIGHT103 #define IDC_PREVIEW104 #define IDC_STATIC-1 FontSample.rc #include windows.h #include "resource.h" IDD_MAINDLG DIALOGEX 100, 100, 480, 500 //STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU STYLE DS_CENTER | WS_SYSMENU | WS_MINIMIZEBOX CAPTION "Font Sample" FONT 9, "MS UI Gothic" BEGIN LISTBOXIDC_FACENAME,10,10,150,400,WS_TABSTOP | WS_VSCROLL EDITTEXTIDC_SAMPLE,10,420,150,45,ES_MULTILINE | WS_VSCROLL LTEXT"Font Height ",IDC_STATIC,10,475,50,14 EDITTEXTIDC_HEIGHT,50,475,50,14, DEFPUSHBUTTON"OK",IDOK,110,475,50,14,WS_GROUP LTEXT"",IDC_PREVIEW,170,10,300,400,WS_BORDER | SS_OWNERDRAW END
https://w.atwiki.jp/tdnki/pages/43.html
2. nativeコードへの移行 前回のコードによる描画処理には、Xperia VLで50ms~70ms程度かかっていた(15~20fps)。 これからさらに重い画像処理を追加しながらも、30fps程度は実現したいため、 C/C++による実装に切り替えて高速化を図っていく。 前回、Javaで書いたpreviewBufferRgbaを書き込む処理を、C++で置き換えることを目標とする。 2-1. nativeサポートの追加 プロジェクト上で右クリックし、[Android Tools] [Add Native Support...] を選択する。 適当なライブラリ名を入力して決定すると、プロジェクトルートにjniフォルダが作成される。 以降、ツールバーのとんかちのアイコンや、プロジェクトのビルドのタイミングでnativeコードがビルドされる。 早速ビルドしてみようととんかちを押すと、次の警告が出る。 APP_PLATFORM android-** is larger than android minSdkVersion ** in ./AndroidManifest.xml 自動で設定されたnativeコードのターゲットが、アプリ側で設定したminSdkVersionより大きいことを示す警告で、 アプリ側ではエラーとして扱われる。 jniフォルダにApplication.mkファイルを追加し、minSdkVersionを超えない値をターゲットとすることで解決できる。 Application.mk APP_PLATFORM = android-8 2-2. native関数を呼ぶ準備 関数を呼びたいクラスに、関数定義と、staticイニシャライザでsoを読み込む処理を追加する。 MainActivity.java private native boolean processImage(byte[] src, int[] dst, int width, int height); static { System.loadLibrary("ComicFinder"); } 次にヘッダファイルを作成する。 自分で書こうとすると、何らかのミスで実行時にUnsatisfiedLinkErrorが出るのがオチなので、javahで自動生成しておきたい。 コマンドは次のようになるか。(カレントがプロジェクトルートであることを想定) javah -classpath ".\bin\classes; android-sdkのパス \platforms\android-14\data\layoutlib.jar" -o .\jni\ComicFinder.hpp com.example.comicfinder.MainActivity ヘッダファイルができたら、実体もコーディングする。 ひとまずは呼び出しが上手くいくかを確認したいため、空の関数を書いておく。 ComicFinder.cpp #include "ComicFinder.hpp" JNIEXPORT bool JNICALL Java_com_example_comicfinder_MainActivity_processImage (JNIEnv *env, jobject me, jbyteArray src, jintArray dst, jint width, jint height) { return false; } アプリ側で呼び出し。 MainActivity.java private void updateFrame(byte[] data) { processImage(data, previewBufferRgba, previewSize.width, previewSize.height); これを実行してエラーが起きなければ成功。 2-3. 関数の実装 GetPrimitiveArrayCritical()で、Javaの配列にnative側から触れるポインタが取得できる。 ComicFinder.cpp #include stdlib.h #include "ComicFinder.hpp" JNIEXPORT bool JNICALL Java_com_example_comicfinder_MainActivity_processImage (JNIEnv *env, jobject me, jbyteArray src, jintArray dst, jint width, jint height) { unsigned char *p_src = reinterpret_cast unsigned char * (env- GetPrimitiveArrayCritical(src, NULL)); if (NULL == p_src) { return false; } unsigned char *p_dst = reinterpret_cast unsigned char * (env- GetPrimitiveArrayCritical(dst, NULL)); if (NULL == p_dst) { env- ReleasePrimitiveArrayCritical(src, p_src, 0); return false; } for (int k = 0; k width*height; k++) { p_dst[k*4+0] = p_dst[k*4+1] = p_dst[k*4+2] = p_src[k]; p_dst[k*4+3] = 0xff; } env- ReleasePrimitiveArrayCritical(dst, p_dst, 0); env- ReleasePrimitiveArrayCritical(src, p_src, 0); return true; } 2-4. 目標達成 描画処理の時間は30ms程度となった。 が、複雑な画像処理をしていないにも関わらず、すでに30fpsぎりぎりである。 画像処理自体は5msで終わっているため、Surfaceへの描画が完全にボトルネックとなっている。 まずこちらの処理の高速化や並列化を検討する必要があるかもしれない。 ここまでのソース ComicFinder.zip
https://w.atwiki.jp/mc3hana/
Mission Completeは2008年10月2日に命名された女性音楽グループである。 レーベルはFor Music 事務所はNOB。 概要 同じクラスの女3人が集まって結成された音楽グループ 同じ班だった咲燦花ききょうと雛霞寺椿が掃除中、同クラスの男子がまだ一学期中でもあるに関わらず 別れを惜しむような発言をしており、「もう泣きたいよ~」とその男子が言った瞬間、咲燦花がじゃあサヨナラのワンフレーズを 即興で歌ったのが、キッカケである。 それからもうサヨナラの歌詞製作中、どうしても埋まらない四文字の歌詞があり、文才がある日向紗月に聞いてみよう! ということになり、日向の歌詞が採用され、晴れてグループ入りとなった。 それから次々と曲を製作。 次第にクラスに広まっていく。 当初のグループ名はLC2だったが、2008年10月2日に現在のグループ名、Mission Completeとなった。 メンバー 咲燦花 ききょう(さざんかききょう、9月24日-、A型)リーダー・メインボーカル 日向 紗月(ひゅうがさつき、7月7日-、A型)キーボード・コーラス 雛霞寺椿(ひなげしつばき、11月18日-、B型)レコーディング・MA
https://w.atwiki.jp/civilizationv/pages/20.html
#freeze #nofollow #norelated テキスト整形のルール 通常は入力した文章がそのまま出力されます。 HTMLのタグは効果がありません。書かれた文章はそのまま(「 font color="red" text /font 」といった形のまま)表示されます 段落と段落の区切りには空行をはさんで下さい。空行をはさまず、連続している複数の行は同じ段落と解釈されます (連結して表示されます) これに加えて、特定のルールによるテキスト整形を行うことができます。以下では、プラグインについてはよく使われるものだけを簡略に説明しています。プラグインのオプションなど詳細な説明については PukiWiki/1.4/Manual/Plugin を参照してください。 テキスト整形のルール [#oca54177] ブロック要素 [#vd593893] 段落 [#n6691793] 引用文 [#af1781b1] リスト構造 [#q8abd9a8] 整形済みテキスト [#g72f3a72] 表組み [#k7c49df4] CSV形式の表組み [#zc726b7e] 見出し [#z15343da] 目次 [#l6dfa631] 左寄せ・センタリング・右寄せ [#bbc1f21c] 水平線 [#s9799d2c] 行間開け [#j2656808] 添付ファイル・画像の貼り付け [#p1971296] テキストの回り込みの解除 [#a800a528] フォーム [#x23849ca] インライン要素 [#l7110f11] 文字列 [#bd24e4ad] 改行 [#f383c24f] 強調・斜体 [#n38a029f] 文字サイズ [#t513b12d] 文字色 [#sf40816a] 取消線 [#r81ec79f] 注釈 [#s21cf12e] 添付ファイル・画像の貼り付け [#v181e939] ルビ構造 [#j137cd8e] アンカーの設定 [#mb297616] カウンタ表示 [#h7beb6ac] オンライン表示 [#ab42f827] バージョン表示 [#f09f9e4b] WikiName [#u8188184] ページ名 [#gce935d9] InterWiki [#g0dec0fe] リンク [#bd6593e1] エイリアス [#u1026558] タブコード [#d2561bef] ページ名置換文字 [#hc95e608] 日時置換文字 [#f03aaf0a] 文字参照文字 [#oc8e0c4c] 数値参照文字 [#ibd49862] その他 [#w8d0fa5a] コメント行 [#fa693c95] ブロック要素 ブロック要素は、インライン要素と他のブロック要素を子要素にすることができます。ただし、段落、見出し、水平線、#から始まるブロック要素は他のブロック要素を子要素にすることはできません。 空行はトップレベルのブロック要素の区切りになります。空行が現われると、すべてのブロック要素は終了します。 ブロック要素は、他のブロック要素の子要素になることができます。 リスト構造と引用文は他のブロック要素を子要素にすることができます。子要素のブロック要素は親要素のレベルに従ってインデントされて表示されます。空行が現われるとブロック要素は終了します。 リスト構造と引用文のネストには3段階のレベルがありますが、リスト構造のレベルと引用文のレベルは独立しています。従って、リスト構造を引用文の子要素にする場合や引用文をリスト構造の子要素にする場合は、レベルを1段階増やさずに記述します。リスト構造を他のリスト構造の子要素にする場合や引用文を他の引用文の子要素にする場合は、レベルを1段階増やして記述します。 他のブロック要素の子要素となっている引用文から脱出するとき、親のブロック要素を継続したい場合は行頭に 、 、 を記述します。 で第1レベルの引用文から、 で第2レベルの引用文から、 で第3レベルの引用文から脱出します。空行を記述すると引用文だけでなく親のブロック要素からも脱出します。 ブロック要素となるプラグインは#〜の形式になっています。(*1) 段落 インライン要素 他のブロック要素を明示しない限り、段落となります。 ~ インライン要素 行頭で ~ を指定した場合も段落になります。行頭書式の文字(~、-、+、 、 、|、#、//)を通常の文字として段落の先頭に書きたい場合は、行頭に~を記述して書くことができます。 段落の先頭は1文字分字下げされます。但し、番号なしリスト構造、番号付きリスト構造、引用文内の段落では字下げされません。定義リスト内の段落の先頭は1文字分字下げされます。 段落は、新たなブロック要素が現われるまで継続します。 段落は、他のブロック要素の子要素になることができます。 段落は、他のブロック要素を子要素にすることはできません。 引用文 インライン要素 行頭で を指定すると、引用文になります。引用文は 、 、 の3レベルあります。 引用文の中は、ブロック要素を明示しない限り、段落となります。 引用文は、空行が現われるまで継続します。 引用文内の段落は、新たな引用文またはブロック要素が現われるまで継続します。 引用文は、他のブロック要素の子要素になることができます。他の引用文の子要素にする場合は、レベルを1段増やして記述します。リスト構造の子要素にする場合はレベルを1段増やさずに記述します。 引用文は、他のブロック要素を子要素にすることができます。引用文の子要素となるリスト構造はレベルを1段増やさずに記述します。 リスト構造内の引用文から脱出する場合で、リスト構造を継続する場合は、 、 、 を行頭に記述します。 リスト構造 - インライン要素 行頭で - を指定すると、番号なしリストになります。番号なしリストは -、--、--- の3レベルあります。 番号なしリストは、他のブロック要素の子要素になることができます。他のリスト構造の子要素にする場合は、レベルを1段増やして記述します。引用文の子要素にする場合は、レベルを増やさずに記述します。 -の直後に ~を記述すると段落を子要素にすることができます。 番号なしリストは、リストの先頭がインライン要素または段落である場合に限り、リストの次の行に他のブロック要素を記述することで、他のブロック要素を子要素にすることができます。 + インライン要素 行頭で + を指定すると、番号付きリストになります。番号付きリストは +、++、+++ の3レベルあります。 番号付きリストは、他のブロック要素の子要素になることができます。他のリスト構造の子要素にする場合は、レベルを1段増やして記述します。引用文の子要素にする場合は、レベルを増やさずに記述します。 + の直後に ~ を記述すると段落を子要素にすることができます。 番号付きリストは、リストの先頭がインライン要素または段落である場合に限り、リストの次の行に他のブロック要素を記述することで、他のブロック要素を子要素にすることができます。 定義語 | 説明文 行頭を で始め、| 記号で区切ると、定義リストになります。定義リストは 、 、 の3段階あります。定義リストの定義語、説明文は省略することができます。複数の連続した定義リストを記述し、2つ目以降の定義語を省略することで1つの定義語に対する複数の説明文を記述することができます。 行中に | がないと定義リストにはなりません。 定義語・説明文は、インライン要素のみ記述することができます。 定義リストは、他のブロック要素の子要素になることができます。他のリスト構造の子要素にする場合は、レベルを1段増やして記述します。引用文の子要素にする場合は、レベルを増やさずに記述します。 | の直後に ~ を記述すると段落を子要素にすることができます。 定義リストは、定義リストの次の行に他のブロック要素を記述することで、他のブロック要素を子要素にすることができます。 整形済みテキスト 行頭が半角空白で始まる行は整形済みテキストとなります。行の自動折り返しは行なわれません。 整形済みテキストは、他のブロック要素の子要素になることができます。 整形済みテキストは、他のブロック要素を子要素にすることができません。 整形済みテキストは、すべての子要素を文字列として扱います。 表組み | インライン要素 | インライン要素 | 行頭から | でインライン要素を区切ることで表組みになります。 各要素の先頭に下記の記述子を指定できます。 LEFT CENTER RIGHT BGCOLOR(色) COLOR(色) SIZE(サイズ) 要素の表示位置及び背景色・文字色・文字サイズ(px単位)を指定します。デフォルトは左寄せになります。 表組みの 各セルの要素の配置に 関するサンプル 左寄せ センタリング 右寄せ 右寄せ 左寄せ センタリング 行末にcを記述すると、書式指定行となります。書式指定行では、次の記述子が指定できます。 LEFT CENTER RIGHT BGCOLOR(色) COLOR(色) SIZE(サイズ) 記述子の後ろに数値を記述すると、セル幅がpx単位で指定できます。 行末にhを記述すると、ヘッダ行(thead)になります。 行末にfを記述すると、フッタ行(tfoot)になります。 セル内のインライン要素の先頭に~を付けると、ヘッダ(th)になります。 セル内に を単独で記述すると右のセルと連結します(colspan)。 セル内に ~ を単独で記述すると上のセルと連結します(rowspan)。 表組みは、他のブロック要素の子要素になることができます。 表組みは、他のブロック要素を子要素にすることができません。 CSV形式の表組み ,データ,データ,… 行頭でカンマ(,)を記述し、インライン要素をカンマ区切りで記述すると表組みになります。 インライン要素はダブルクォーテーション(")で囲むことができます。ダブルクォーテーションで囲むことで、カンマ(,)を含むインライン要素を記述できます。 ダブルクォーテーション(")で囲んだデータの中で、ダブルクォーテーションを2つ("")続けることで、ダブルクォーテーション(")を含むインライン要素を記述できます。 インライン要素の代わりにイコールを2つ(==)記述すると、colspanを意味します。 インライン要素の左に1つ以上の半角空白文字を記述すると右寄せに、インライン要素の左右に1つ以上の半角空白文字を記述するとセンタリングになります。 表組みは、他のブロック要素の子要素になることができます。 表組みは、他のブロック要素を子要素にすることができません。 見出し * インライン要素 行頭で * を記述すると、見出しになります。見出しは *、**、*** の3段階あります。 見出しは、他のブロック要素の子要素になることはできません。見出しが現われると他のブロック要素は終了します。 見出しは、他のブロック要素を子要素にすることはできません。 目次 #contents 行頭で #contents を記述すると、見出しに基づいて目次を作成します。一般的に #contents はページの最初のほうに記述します。 目次は、他のブロック要素の子要素になることができますが、トップレベルに設置することを前提に左マージンを設定してありますので、他のブロック要素の子要素にはしないでください。 目次は、他のブロック要素を子要素にすることはできません。 左寄せ・センタリング・右寄せ LEFT インライン要素 CENTER インライン要素 RIGHT インライン要素 行頭で LEFT 、 CENTER 、 RIGHT を記述すると、インライン要素が左寄せ、センタリング、右寄せされます。 LEFT 、CENTER 、RIGHT は、他のブロック要素の子要素になることができます。 LEFT 、CENTER 、RIGHT は、他のブロック要素を子要素にすることができません。 水平線 --------------------------------------------- 行頭で4つ以上の - を書くと水平線になります。 水平線は、他のブロック要素の子要素になることはできません。水平線が現われると他のブロック要素は終了します。 水平線は、他のブロック要素を子要素にすることはできません。 #hr 行頭で #hr を記述すると、区切り線になります。区切り線は上位のブロック要素の幅の60%の長さの水平線がセンタリングされて引かれます。 区切り線は、他のブロック要素の子要素になることができます。 区切り線は、他のブロック要素を子要素にすることはできません。 行間開け #br 行頭で #br を記述すると、ブロック要素間またはブロック要素内で行間を開けることができます(*2)。 行間開けは、他のブロック要素の子要素になることができます。 行間開けは、他のブロック要素を子要素にすることはできません。 添付ファイル・画像の貼り付け #ref(添付ファイル名) #ref(ファイルのURL) 行頭で #ref を記述すると、添付ファイルまたは指定されたURLにあるファイルへのリンクを貼り付けることができます。ファイルが画像ファイルの場合は、その画像を表示します。 #ref には、カンマで区切って下記のパラメタを指定できます。パラメタを省略した場合はデフォルト値となります。 添付ファイルのページ 添付ファイルが存在するページ名を指定します。デフォルトは現在のページです。 このパラメタを指定する場合は、添付ファイル名の次に記述します。 left center right ファイルへのリンク・画像を表示する位置を指定します。デフォルトではセンタリングされます。 wrap nowrap ファイルへのリンク・画像を枠で囲むかどうかを指定します。デフォルトは囲みません。 around テキストの回り込みを指定します。デフォルトでは回り込みを行ないません。 nolink デフォルトでは添付ファイルへのリンクが張られますが、nolinkを指定するとリンクを張りません。 代替文字列 ファイル名の代わりに表示する文字列や画像の代替文字列を指定できます。指定しない場合は、ファイル名になります。 代替文字列には文字列以外のインライン要素を含めることはできません。ページ名、文字列以外のインライン要素を記述しても文字列として扱われます。 このパラメタを指定する場合は、最後に記述します。 #refは、他のブロック要素の子要素になることができます。 #refは、他のブロック要素を子要素にすることはできません。 テキストの回り込みの解除 #clear 行頭で #clear を記述すると、 #ref で指定したテキストの回り込みを解除します。 #clear を指定しなくても、記事の末尾でテキストの回り込みが自動的に解除されます。 #clearは、他のブロック要素の子要素になることができます。 #clearは、他のブロック要素を子要素にすることができません。 フォーム #comment 行頭で #comment を記述すると、コメントを挿入するためのフォームが埋め込まれます。 #commentは、他のブロック要素の子要素になることができますが、トップレベルに設置することを前提に左マージンを設定してありますので、他のブロック要素の子要素にはしないでください。 #commentは、他のブロック要素を子要素にすることはできません。 #pcomment 行頭で #pcomment を記述すると、コメントを挿入するためのフォームが埋め込まれます。 #comment とは異なり、コメントは別ページに記録されます。また、コメントに対するレスポンスを階層状に表示します。 #pcommentは、他のブロック要素の子要素になることができますが、トップレベルに設置することを前提に左マージンを設定してありますので、他のブロック要素の子要素にはしないでください。 #pcommentは、他のブロック要素を子要素にすることはできません。 #article 行頭で#articleを記述すると、簡易掲示板のフォームが埋め込まれます。 #articleは、他のブロック要素の子要素になることができますが、トップレベルに設置することを前提に左マージンを設定してありますので、他のブロック要素の子要素にはしないでください。 #articleは、他のブロック要素を子要素にすることはできません。 #vote(選択肢1,選択肢2,...) 行頭で #vote を記述すると、簡易投票フォームが埋め込まれます。 選択肢は文字列、ページ名、InterWiki、リンクを含めることができます。その他のインライン要素を含めることができません。 #voteは、他のブロック要素の子要素になることができますが、トップレベルに設置することを前提に左マージンを設定してありますので、他のブロック要素の子要素にはしないでください。 #voteは、他のブロック要素を子要素にすることはできません。 インライン要素 インライン要素は、必ずブロック要素の子要素になっています。 行頭書式でブロック要素を明示しない場合は、段落の子要素となります。 行頭書式でブロック要素を明示した場合は、指定したブロック要素の子要素になります。 特定のインライン要素は、他のインライン要素を子要素にすることができます。 インライン要素はブロック要素を子要素にすることはできません。 インライン要素となるプラグイン及びユーザー定義は 〜; の形式になっています。 インライン要素となるプラグインに対してオプションと子要素を指定する場合は、 プラグイン名(オプション){子要素}; の形式になります。 文字列 文字列 文字列はインライン要素です。 文字列は、他のインライン要素の子要素になることができます。 文字列は、他のインライン要素を子要素にすることができません。 改行 インライン要素~ 行末に~を書くと行末改行になります。行末改行はブロック要素内での改行になります。 行末改行の次の行の行頭書式は無効になり、文字列として扱われます。 行末改行は、他のインライン要素の子要素になることはできません。 行末改行は、他のインライン要素を子要素にすることはできません。 行末改行は、定義リストの定義語、表組みの要素、#で始まるブロック要素のパラメタの中では使用できません。 br; 行中に br; を書くと、そこで改行されます。行末の ~ と違い、定義リストの定義語や表組の要素、# で始まるブロック要素のパラメタの中でも使用できます。 行中改行は、他のインライン要素の子要素になることができます。 行中改行は、他のインライン要素を子要素にすることはできません。 強調・斜体 インライン要素 行中のインライン要素を #39; #39; ではさむと、インライン要素が 強調表示 になります。 強調は、他のインライン要素の子要素になることができます。 強調は、他のインライン要素を子要素にすることができます。 インライン要素 行中のインライン要素を #39; #39; #39; ではさむと、インライン要素が 斜体表示 になります。 斜体は、他のインライン要素の子要素になることができます。 斜体は、他のインライン要素を子要素にすることができます。 文字サイズ size(サイズ){インライン要素}; 行中に size を書くとインライン要素の文字サイズを指定することができます。サイズはピクセル単位(px)で指定します。例えば20を指定すると、20ピクセルの文字の大きさになります。 文字サイズは、他のインライン要素の子要素になることができます。 文字サイズは、他のインライン要素を子要素にすることができます。 文字色 color(文字色,背景色){インライン要素}; 行中に color と書くとインライン要素の 文字色 と 背景色 を指定することができます。背景色は省略できます。 色の指定は、次のいずれかの形式で行ないます。 色を意味するキーワード(red, blueなど) #16進数6桁 #16進数3桁 文字色は、他のインライン要素の子要素になることができます。 文字色は、他のインライン要素を子要素にすることができます。 取消線 %%インライン要素%% 行中のインライン要素を #37; #37;ではさむと、インライン要素に取消線が付きます。 取消線は、他のインライン要素の子要素になることができます。 取消線は、他のインライン要素を子要素にすることができます。 注釈 ((インライン要素)) 行中でインライン要素を #40; #40; と #41; #41; ではさむと、注釈(*3)が作成され、行中に注釈へのリンクが貼られます。 注釈は、他のインライン要素の子要素になることができます。親要素は注釈文ではなく、注釈へのリンクに反映されます。 注釈は、他のインライン要素を子要素にすることができます。子要素は注釈文に反映されます。 添付ファイル・画像の貼り付け ref(添付ファイル名); ref(ファイルのURL); 行中で ref を記述すると、添付ファイルまたは指定されたURLにあるファイルへのリンクを貼り付けることができます。ファイルが画像ファイルの場合は、その画像を表示します。 ref には、カンマで区切って下記のパラメタを指定できます。パラメタを省略した場合はデフォルト値となります。 添付ファイルのページ 添付ファイルが存在するページ名を指定します。デフォルトは現在のページです。 このパラメタを指定する場合は、添付ファイル名の次に記述します。 nolink デフォルトでは添付ファイルへのリンクが張られますが、nolink を指定するとリンクを張りません。 代替文字列 ファイル名の代わりに表示する文字列や画像の代替文字列を指定できます。指定しない場合は、ファイル名になります。 代替文字列には文字列以外のインライン要素を含めることはできません。ページ名、文字列以外のインライン要素を記述しても文字列として扱われます。 このパラメタを指定する場合は、最後に記述します。 ref は、他のインライン要素の子要素になることができます。 ref は、他のインライン要素を子要素にはできません。 ルビ構造 ruby(ルビ){インライン要素}; 行中で ruby を書くとインライン要素に対するルビをふることができます。ルビに対応していないブラウザではルビが本文中に ( と ) に囲まれて表示されます。 ルビ構造のルビにはインライン要素を記述します。ただし、ルビの特性上、期待通りの表示になるとは限りません。 ルビ構造は、他のインライン要素の子要素になることができます。 ルビ構造は、他のインライン要素を子要素にすることができます。 ルビ構造をルビ構造の子要素にはできません(ネストはできません)。 注釈内や文字サイズを小さくしている部分での使用は、ルビが判読できなくなるので避けてください。 アンカーの設定 aname(アンカー名); aname(アンカー名){インライン要素}; 行中で aname を記述するとリンクのアンカーを設定することができます。リンクの飛び先にしたい位置に記述します。 アンカー名は、半角アルファベットから始まる半角アルファベット・数字・ハイフン・アンダースコアからなる文字列を指定します。 アンカー名の中には、全角文字や半角空白文字、半角記号を含めることはできません。 アンカー設定は、他のインライン要素の子要素になることができます。 アンカー設定は、他のインライン要素を子要素にすることができます。 カウンタ表示 counter; counter(オプション); 行中で counter を記述するとそのページにアクセスした人の数を表示することができます。 counter には次のオプションを指定できます。オプションを省略した場合はtotalが指定されたものとみなされます。 today 今日のアクセス数を表示します。 yesterday 昨日のアクセス数を表示します。 total アクセス総数を表示します。 カウンタ表示は、他のインライン要素の子要素になることができます。 カウンタ表示は、他のインライン要素を子要素にはできません。 オンライン表示 online; 行中で online を記述すると現在アクセス中の人数を表示することができます。 オンライン表示は、他のインライン要素の子要素になることができます。 オンライン表示は、他のインライン要素を子要素にはできません。 バージョン表示 version; 行中で version を記述するとPukiWikiのバージョンを表示することができます。 バージョン表示は、他のインライン要素の子要素になることができます。 バージョン表示は、他のインライン要素を子要素にはできません。 WikiName WikiName 行中で、1つ以上の大文字→1つ以上の小文字→1つ以上の大文字→1つ以上の小文字の組合わせからなる半角//文字列はWikiNameになります。 WikiNameの中には、全角文字や半角空白文字、記号、数字を含めることはできません。 WikiNameは、PukiWiki内のページ名になります。すでに存在するページであればそのページへのリンクが自動的に貼られます。存在しない場合はWikiNameの後ろに?が自動的に付き、そのページを新規作成するためのリンクが貼られます。 WikiNameは、他のインライン要素の子要素になることができます。 WikiNameは、他のインライン要素を子要素にはできません。 ページ名 [[ぷきうぃき]] 行中で #91; #91; と #93; #93; で囲まれた文字列はページ名になります。 ページ名の中には、全角文字、記号、数字、半角空白文字を含めることができます。 ページ名の中には、"# を含めることはできません。 すでに存在するページであればそのページへのリンクが自動的に貼られます。存在しない場合はページ名の後ろに?が自動的に付き、そのページを新規作成するためのリンクが貼られます。 [[ページ名#アンカー名]] ページ名にアンカー名をつけることもできます。 ページ名は、他のインライン要素の子要素になることができます。 ページ名は、他のインライン要素を子要素にはできません。 InterWiki [[InterWikiName ページ名]] 行中のページ名形式の文字列の中で、 で2つの文字列を区切るとInterWikiになります。 の前にはInterWikiNameのページで定義したInterWikiNameを、 の後ろにはページ名を記述します。 [[InterWikiName ページ名#アンカー名]] ページ名の後ろにアンカー名をつけることもできます。 InterWikiNameの中には、全角文字を含めることができます。 InterWikiNameの中には、半角空白文字を含めるができます。 InterWikiは、他のインライン要素の子要素になることができます。 InterWikiは、他のインライン要素を子要素にはできません。 リンク [[リンク名 URL]] 行中のInterWikiNameの形式の文字列の中で、 の前に任意のリンク名を、 の後ろにURLを記述すると、そのリンク名でURLに対するリンクを貼ることができます。 リンク名には、全角文字や半角空白文字を含めることができます。メールアドレスを指定する場合は、mailto を書かずにアドレスだけを記述します。 http //www.example.com/ https //www.example.com/ ftp //ftp.example.com/ news //news.example.com/ foo@example.com 行中に直接、URLを記述した場合は自動的にそのURLに対するリンクが貼られます。 記述したURLが画像ファイルである場合は、その画像を表示します。 リンクは、他のインライン要素の子要素になることができます。 リンクは、他のインライン要素を子要素にはできません。 エイリアス [[エイリアス名 ページ名]] 行中のページ名形式の文字列の中で、 で2つの文字列を区切るとエイリアスになります。 の前にはエイリアス名を、 の後ろにはページ名を記述します。 エイリアスはPukiWiki内のページ名とは別のエイリアス名で、指定したページへのリンクを貼ります。 [[エイリアス名 ページ名#アンカー名]] [[エイリアス名 #アンカー名]] ページ名にアンカー名を付け加えてアンカーへのリンクを貼ることができます。ページ名とアンカー名の間には#をつけます。カレントページのアンカーへリンクを貼る場合はページ名を省略することができます。 [[エイリアス名 http //www.example.com/]] [[エイリアス名 https //www.example.com/]] [[エイリアス名 ftp //ftp.example.com/]] [[エイリアス名 news //news.example.com/]] [[エイリアス名 foo@example.com]] [[エイリアス名 InterWikiName ページ名]] [[エイリアス名 InterWikiName ページ名#アンカー名]] エイリアスをURLやInterWikiと組み合わせることもできます。 [[エイリアス名 http //www.example.com/]] [[エイリアス名 https //www.example.com/]] [[エイリアス名 ftp //ftp.example.com/]] [[エイリアス名 news //news.example.com/]] [[エイリアス名 foo@example.com]] URLを指定する場合は、 の代わりに も使用できます。 エイリアス名の中には、全角文字を含めることができます。 エイリアス名の中には、半角空白文字を含めることができます。 階層化されたページでは、ページ名を相対指定することができます。 エイリアスは、他のインライン要素の子要素になることができます。 エイリアスは、他のインライン要素を子要素にできます。 タブコード t; 行中で t; と書くと、タブコードに置換されます。 通常、フォーム内ではキーボードからタブコードを直接入力できない(*4)ので、タブコードを入力したい位置に t;を記述すると、保存時にタブコードに置換します。 タブコードは、記事が書き込まれるときに置換されて記録されます。 タブコードは、他のインライン要素の子要素になることができます。 タブコードは、他のインライン要素を子要素にはできません。 ページ名置換文字 page; fpage; 行中で page; 及び fpage; と書くと、編集中のページ名に置換されます。ページ名が階層化されたページで「hogehoge/hoge」となっている場合、 page; は「hoge」に、 fpage; は「hogehoge/hoge」に置換されます。階層化されていないページでは、 page; も fpage; も同じになります。 ページ名置換文字は、記事が書き込まれるときに置換されて記録されます。 ページ名置換文字は、他のインライン要素の子要素になることができます。 ページ名置換文字は、他のインライン要素を子要素にはできません。 日時置換文字 date; time; now; 行中で date; と書くと、更新時の日付に置換されます 行中で time; と書くと、更新時の時刻に置換されます 行中で now; と書くと、更新時の日時に置換されます date? time? now? PukiWiki 1.3系との後方互換性のために、 date #63;、 time #63;、 now #63; についても使用できるようにしてあります。 date;、 time;、 now;は、記事が書き込まれるときに置換されて記録されます。 date;、 time;、 now;は、他のインライン要素の子要素になることができます。 date;、 time;、 now;は、他のインライン要素を子要素にはできません。 _date; _time; _now; 行中で _date; と書くと、表示時の日付に置換されて出力されます。 行中で _time; と書くと、表示時の時刻に置換されて出力されます。 行中で _now; と書くと、表示時の日時に置換されて出力されます。 lastmod; lastmod(ページ名); 行中で lastmod; と書くと、そのページの最終更新日時に置換されて出力されます。 ページ名を指定すると、その指定されたページの最終更新日時に置換されて出力されます。 _date;、 _time;、 _now;、 lastmod;は、記事が表示されるときに置換されて出力されます。 _date;、 _time;、 _now;、 lastmod;は、他のインライン要素の子要素になることができます。 _date;、 _time;、 _now;、 lastmod;は、他のインライン要素を子要素にはできません。 文字参照文字 文字参照は、SGMLで定義されている文字参照文字( copy;や reg;など)のほか、下記の独自の文字参照文字が使用できます。 heart; smile; bigsmile; huh; oh; wink; sad; worried; 行中で heart;と書くと、ハートマーク heart に置換されて出力されます。 行中で smile;と書くと、 smile に置換されて出力されます。 行中で bigsmile;と書くと、 bigsmile に置換されて出力されます。 行中で huh;と書くと、 huh に置換されて出力されます。 行中で oh;と書くと、 oh に置換されて出力されます。 行中で wink;と書くと、 wink に置換されて出力されます。 行中で sad;と書くと、 sad に置換されて出力されます。 行中で worried;と書くと、 worried に置換されて出力されます。 文字参照文字は、表示されるときに置換されます。 文字参照文字は、他のインライン要素の子要素になることができます。 文字参照文字は、他のインライン要素を子要素にはできません。 数値参照文字 #10進数; #x16進数; 行中で # と ; の間に10進数を、 #x と ;の間に16進数を書くと、Unicodeを数値参照して表示します。キーボードから直接入力できない文字やJIS第3水準・第4水準の文字などの表示に使用します。たとえば、内田百 #38290;と入力すると、内田百 #38290;と表示されます。 数値参照文字は、表示されるときに置換されます。 数値参照文字は、他のインライン要素の子要素になることができます。 数値参照文字は、他のインライン要素を子要素にはできません。 16進数は半角小文字で指定する必要があります(XHTML 1.0 第2版から小文字に限定されました)。 その他 コメント行 // コメント 行頭で // を指定すると、コメント行になります。コメント行は出力されない行です。 コメント行は、他の要素と無関係に行単位でどの位置にも記述できます。 コメント行は、前後の他の要素に何ら影響を及ぼしません。
https://w.atwiki.jp/example1111/pages/13.html
人気商品一覧 @wikiのwikiモードでは #price_list(カテゴリ名) と入力することで、あるカテゴリの売れ筋商品のリストを表示することができます。 カテゴリには以下のキーワードがご利用できます。 キーワード 表示される内容 ps3 PlayStation3 ps2 PlayStation3 psp PSP wii Wii xbox XBOX nds Nintendo DS desctop-pc デスクトップパソコン note-pc ノートパソコン mp3player デジタルオーディオプレイヤー kaden 家電 aircon エアコン camera カメラ game-toy ゲーム・おもちゃ全般 all 指定無し 空白の場合はランダムな商品が表示されます。 ※このプラグインは価格比較サイト@PRICEのデータを利用しています。 たとえば、 #price_list(game-toy) と入力すると以下のように表示されます。 ゲーム・おもちゃ全般の売れ筋商品 #price_list ノートパソコンの売れ筋商品 #price_list 人気商品リスト #price_list
https://w.atwiki.jp/sampleisbest/pages/588.html
開発環境 Microsoft Visual Studio Community 2019 実行環境 Microsoft Windows 10 Home (64bit) プロジェクト テンプレート C++ 空のプロジェクト プロジェクト名 dx9sample1 参考 座標変換済み頂点で2D板ポリゴンを描画:サンプルプログラム プロジェクト構成プロパティ リンカ―/システム/サブシステム Windows (/SUBSYSTEM WINDOWS) dx9sample1.cpp #pragma comment(lib, "d3d9") #include Windows.h #include d3d9.h #define SAFE_RELEASE(p) if(p){p- Release();p=NULL;} struct CUSTOM_VTX { float x, y, z, w; DWORD color; }; #define CUSTOM_FVF (D3DFVF_XYZRHW | D3DFVF_DIFFUSE) // 外部変数 LPDIRECT3D9 pD3D; LPDIRECT3DDEVICE9 pD3DDev; // 関数プロトタイプ宣言 LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); HWND InitWindow(HINSTANCE hInstance, int nCmdShow); HRESULT InitD3D(HWND hWnd); void Cleanup(); int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE, LPWSTR, int nCmdShow) { HWND hWnd = InitWindow(hInstance, nCmdShow); if (!hWnd) return -1; HRESULT hr = InitD3D(hWnd); if (FAILED(hr)) { Cleanup(); return -1; } ShowWindow(hWnd, nCmdShow); CUSTOM_VTX vtx[] = { { 200, 200, 0, 1, 0xff0000ff }, { 200, 0, 0, 1, 0xff00ff00 }, { 400, 200, 0, 1, 0xffff0000 }, }; MSG msg = { 0 }; while (msg.message != WM_QUIT) { if (PeekMessage( msg, NULL, 0, 0, PM_REMOVE)) { TranslateMessage( msg); DispatchMessage( msg); } else { pD3DDev- Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, 0, 0), 1, 0); pD3DDev- BeginScene(); pD3DDev- SetFVF(CUSTOM_FVF); pD3DDev- DrawPrimitiveUP(D3DPT_TRIANGLELIST, 1, vtx, sizeof CUSTOM_VTX); pD3DDev- EndScene(); pD3DDev- Present(NULL, NULL, NULL, NULL); } } Cleanup(); return msg.wParam; } LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { case WM_DESTROY PostQuitMessage(0); return 0; } return DefWindowProc(hWnd, msg, wParam, lParam); } HWND InitWindow(HINSTANCE hInstance, int nCmdShow) { WNDCLASSEX wc = { sizeof WNDCLASSEX }; wc.style = CS_HREDRAW | CS_VREDRAW; wc.lpfnWndProc = WndProc; wc.hInstance = hInstance; wc.hbrBackground = HBRUSH(COLOR_WINDOW + 1); wc.lpszClassName = L"dx9sample1"; if (!RegisterClassEx( wc)) return NULL; DWORD deStyle = WS_OVERLAPPEDWINDOW ^ WS_MAXIMIZEBOX ^ WS_THICKFRAME; RECT rc = { 0, 0, 400, 400 }; AdjustWindowRect( rc, deStyle, FALSE); HWND hWnd = CreateWindow( wc.lpszClassName, L"dx9sample1", deStyle, CW_USEDEFAULT, 0, rc.right - rc.left, rc.bottom - rc.top, NULL, NULL, hInstance, NULL); return hWnd; } HRESULT InitD3D(HWND hWnd) { HRESULT hr; pD3D = Direct3DCreate9(D3D_SDK_VERSION); if (!pD3D) return E_FAIL; D3DPRESENT_PARAMETERS d3dpp = { 0 }; d3dpp.BackBufferFormat = D3DFMT_UNKNOWN; d3dpp.MultiSampleType = D3DMULTISAMPLE_NONE; d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; d3dpp.Windowed = TRUE; d3dpp.AutoDepthStencilFormat = D3DFMT_UNKNOWN; d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT; hr = pD3D- CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, D3DCREATE_HARDWARE_VERTEXPROCESSING, d3dpp, pD3DDev); if (FAILED(hr)) return hr; return S_OK; } void Cleanup() { SAFE_RELEASE(pD3DDev); SAFE_RELEASE(pD3D); }