diff options
author | Neil <nyamatongwe@gmail.com> | 2025-03-20 10:34:10 +1100 |
---|---|---|
committer | Neil <nyamatongwe@gmail.com> | 2025-03-20 10:34:10 +1100 |
commit | b1823dea90391e67d4a5ee96a4a997230035fe58 (patch) | |
tree | 735de10d8b36dbab95e609833992bdc139107c6c /win32/ScintillaWin.cxx | |
parent | 443df5997d71ad8af6b7456eba124e6909118480 (diff) | |
download | scintilla-mirror-b1823dea90391e67d4a5ee96a4a997230035fe58.tar.gz |
Standardize render target initialization.
Use symbolic names for DPI instead of inline value 96.
Diffstat (limited to 'win32/ScintillaWin.cxx')
-rw-r--r-- | win32/ScintillaWin.cxx | 68 |
1 files changed, 35 insertions, 33 deletions
diff --git a/win32/ScintillaWin.cxx b/win32/ScintillaWin.cxx index a64ba2499..7cd8ff086 100644 --- a/win32/ScintillaWin.cxx +++ b/win32/ScintillaWin.cxx @@ -832,20 +832,14 @@ HRESULT ScintillaWin::Create3D() noexcept { void ScintillaWin::CreateRenderTarget() { HWND hw = MainHWND(); - const RECT rc = GetClientRect(hw); // Create a Direct2D render target. - D2D1_RENDER_TARGET_PROPERTIES drtp{}; - drtp.type = D2D1_RENDER_TARGET_TYPE_DEFAULT; - drtp.usage = D2D1_RENDER_TARGET_USAGE_NONE; - drtp.minLevel = D2D1_FEATURE_LEVEL_DEFAULT; if (technology == Technology::DirectWriteDC) { - drtp.dpiX = 96.f; - drtp.dpiY = 96.f; - // Explicit pixel format needed. - drtp.pixelFormat = D2D1::PixelFormat(DXGI_FORMAT_B8G8R8A8_UNORM, - D2D1_ALPHA_MODE_IGNORE); + const D2D1_RENDER_TARGET_PROPERTIES drtp = D2D1::RenderTargetProperties( + D2D1_RENDER_TARGET_TYPE_DEFAULT, + { DXGI_FORMAT_B8G8R8A8_UNORM, D2D1_ALPHA_MODE_IGNORE }, + dpiDefault, dpiDefault); const HRESULT hr = CreateDCRenderTarget(&drtp, targets.pDCRT); if (FAILED(hr)) { @@ -870,18 +864,25 @@ void ScintillaWin::CreateRenderTarget() { } } else { // DirectWrite or DirectWriteRetain + + const RECT rc = GetClientRect(hw); + const int integralDeviceScaleFactor = GetFirstIntegralMultipleDeviceScaleFactor(); - drtp.dpiX = 96.f * integralDeviceScaleFactor; - drtp.dpiY = 96.f * integralDeviceScaleFactor; - drtp.pixelFormat = D2D1::PixelFormat(DXGI_FORMAT_UNKNOWN, - D2D1_ALPHA_MODE_UNKNOWN); - - D2D1_HWND_RENDER_TARGET_PROPERTIES dhrtp{}; - dhrtp.hwnd = hw; - dhrtp.pixelSize = ::GetSizeUFromRect(rc, integralDeviceScaleFactor); - dhrtp.presentOptions = (technology == Technology::DirectWriteRetain) ? + const FLOAT dpiTarget = dpiDefault * integralDeviceScaleFactor; + + const D2D1_RENDER_TARGET_PROPERTIES drtp = D2D1::RenderTargetProperties( + D2D1_RENDER_TARGET_TYPE_DEFAULT, + { DXGI_FORMAT_UNKNOWN, D2D1_ALPHA_MODE_UNKNOWN }, + dpiTarget, dpiTarget); + + const D2D1_PRESENT_OPTIONS presentOptions = (technology == Technology::DirectWriteRetain) ? D2D1_PRESENT_OPTIONS_RETAIN_CONTENTS : D2D1_PRESENT_OPTIONS_NONE; + const D2D1_HWND_RENDER_TARGET_PROPERTIES dhrtp = D2D1::HwndRenderTargetProperties( + hw, + ::GetSizeUFromRect(rc, integralDeviceScaleFactor), + presentOptions); + const HRESULT hr = CreateHwndRenderTarget(&drtp, &dhrtp, targets.pHwndRT); if (FAILED(hr)) { Platform::DebugPrintf("Failed CreateHwndRenderTarget 0x%lx\n", hr); @@ -3908,20 +3909,21 @@ void ScintillaWin::CTPaint(HWND hWnd) { const int scaleFactor = GetFirstIntegralMultipleDeviceScaleFactor(); // Create a Direct2D render target. - D2D1_HWND_RENDER_TARGET_PROPERTIES dhrtp{}; - dhrtp.hwnd = hWnd; - dhrtp.pixelSize = ::GetSizeUFromRect(rc, scaleFactor); - dhrtp.presentOptions = (technology == Technology::DirectWriteRetain) ? - D2D1_PRESENT_OPTIONS_RETAIN_CONTENTS : D2D1_PRESENT_OPTIONS_NONE; - - D2D1_RENDER_TARGET_PROPERTIES drtp{}; - drtp.type = D2D1_RENDER_TARGET_TYPE_DEFAULT; - drtp.pixelFormat.format = DXGI_FORMAT_UNKNOWN; - drtp.pixelFormat.alphaMode = D2D1_ALPHA_MODE_UNKNOWN; - drtp.dpiX = 96.f * scaleFactor; - drtp.dpiY = 96.f * scaleFactor; - drtp.usage = D2D1_RENDER_TARGET_USAGE_NONE; - drtp.minLevel = D2D1_FEATURE_LEVEL_DEFAULT; + + const FLOAT dpiTarget = dpiDefault * scaleFactor; + + const D2D1_RENDER_TARGET_PROPERTIES drtp = D2D1::RenderTargetProperties( + D2D1_RENDER_TARGET_TYPE_DEFAULT, + { DXGI_FORMAT_UNKNOWN, D2D1_ALPHA_MODE_UNKNOWN }, + dpiTarget, dpiTarget); + + const D2D1_PRESENT_OPTIONS presentOptions = (technology == Technology::DirectWriteRetain) ? + D2D1_PRESENT_OPTIONS_RETAIN_CONTENTS : D2D1_PRESENT_OPTIONS_NONE; + + const D2D1_HWND_RENDER_TARGET_PROPERTIES dhrtp = D2D1::HwndRenderTargetProperties( + hWnd, + ::GetSizeUFromRect(rc, scaleFactor), + presentOptions); const HRESULT hr = CreateHwndRenderTarget(&drtp, &dhrtp, pCTRenderTarget); if (!SUCCEEDED(hr)) { |