From 3d91a7fa83e29989ac81764e5c0793bc1960305c Mon Sep 17 00:00:00 2001 From: Marko Njezic Date: Wed, 29 Feb 2012 21:22:42 +0100 Subject: Bug #3495791. Create auxiliary surfaces on Direct2D without alpha channel, as no underlying code expects them to be transparent. This will make text drawing use the same anti-aliasing mode no matter if using buffered mode or not. --- doc/ScintillaDoc.html | 6 +++--- win32/PlatWin.cxx | 5 ++++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/doc/ScintillaDoc.html b/doc/ScintillaDoc.html index 2e8406ba6..b87650526 100644 --- a/doc/ScintillaDoc.html +++ b/doc/ScintillaDoc.html @@ -3064,9 +3064,9 @@ struct Sci_TextToFind { The technology property allows choosing between different drawing APIs and options. On most platforms, the only choice is SC_TECHNOLOGY_DEFAULT (0). On Windows Vista or later, SC_TECHNOLOGY_DIRECTWRITE (1) - can be chosen to use the Direct2D and DirectWrite APIs for higher quality antialiased drawing.

-

Since Direct2D buffers drawing, Scintilla's buffering should be turned off with - SCI_SETBUFFEREDDRAW(0);. This causes DirectWrite to use better quality antialiasing.

+ can be chosen to use the Direct2D and DirectWrite APIs for higher quality antialiased drawing. + Since Direct2D buffers drawing, Scintilla's buffering can be turned off with + SCI_SETBUFFEREDDRAW(0).

SCI_SETFONTQUALITY(int fontQuality)
SCI_GETFONTQUALITY
diff --git a/win32/PlatWin.cxx b/win32/PlatWin.cxx index 15b3655bf..5884cd4f2 100644 --- a/win32/PlatWin.cxx +++ b/win32/PlatWin.cxx @@ -1279,8 +1279,11 @@ void SurfaceD2D::InitPixMap(int width, int height, Surface *surface_, WindowID) SetScale(); SurfaceD2D *psurfOther = static_cast(surface_); ID2D1BitmapRenderTarget *pCompatibleRenderTarget = NULL; + D2D1_SIZE_F desiredSize = D2D1::SizeF(width, height); + D2D1_PIXEL_FORMAT desiredFormat = psurfOther->pRenderTarget->GetPixelFormat(); + desiredFormat.alphaMode = D2D1_ALPHA_MODE_IGNORE; HRESULT hr = psurfOther->pRenderTarget->CreateCompatibleRenderTarget( - D2D1::SizeF(width, height), &pCompatibleRenderTarget); + &desiredSize, NULL, &desiredFormat, D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS_NONE, &pCompatibleRenderTarget); if (SUCCEEDED(hr)) { pRenderTarget = pCompatibleRenderTarget; pRenderTarget->BeginDraw(); -- cgit v1.2.3