summaryrefslogtreecommitdiffstats
path: root/vcl/skia/win/gdiimpl.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'vcl/skia/win/gdiimpl.cxx')
-rw-r--r--vcl/skia/win/gdiimpl.cxx31
1 files changed, 21 insertions, 10 deletions
diff --git a/vcl/skia/win/gdiimpl.cxx b/vcl/skia/win/gdiimpl.cxx
index 6b68571d6ab1..759ff1d477ec 100644
--- a/vcl/skia/win/gdiimpl.cxx
+++ b/vcl/skia/win/gdiimpl.cxx
@@ -22,7 +22,6 @@
#include <SkTypeface_win.h>
#include <SkFont.h>
#include <SkFontMgr.h>
-#include <SkFontLCDConfig.h>
#include <tools/sk_app/win/WindowContextFactory_win.h>
#include <tools/sk_app/WindowContext.h>
@@ -39,6 +38,9 @@ void WinSkiaSalGraphicsImpl::createWindowContext(bool forceRaster)
{
SkiaZone zone;
sk_app::DisplayParams displayParams;
+ initFontInfo();
+ displayParams.fSurfaceProps
+ = SkSurfaceProps(displayParams.fSurfaceProps.flags(), pixelGeometry);
switch (forceRaster ? SkiaHelper::RenderRaster : SkiaHelper::renderMethodToUse())
{
case SkiaHelper::RenderRaster:
@@ -209,10 +211,20 @@ bool WinSkiaSalGraphicsImpl::DrawTextLayout(const GenericSalLayout& rLayout)
return true;
}
+SkFont::Edging WinSkiaSalGraphicsImpl::fontEdging;
+SkPixelGeometry WinSkiaSalGraphicsImpl::pixelGeometry;
+bool WinSkiaSalGraphicsImpl::fontInfoDone = false;
+
SkFont::Edging WinSkiaSalGraphicsImpl::getFontEdging()
{
- if (fontEdgingDone)
- return fontEdging;
+ initFontInfo();
+ return fontEdging;
+}
+
+void WinSkiaSalGraphicsImpl::initFontInfo()
+{
+ if (fontInfoDone)
+ return;
// Skia needs to be explicitly told what kind of antialiasing should be used,
// get it from system settings. This does not actually matter for the text
// rendering itself, since Skia has been patched to simply use the setting
@@ -222,7 +234,7 @@ SkFont::Edging WinSkiaSalGraphicsImpl::getFontEdging()
// the glyphs will be rendered based on this setting (subpixel AA requires colors,
// others do not).
fontEdging = SkFont::Edging::kAlias;
- SkFontLCDConfig::LCDOrder lcdOrder = SkFontLCDConfig::kNONE_LCDOrder;
+ pixelGeometry = kUnknown_SkPixelGeometry;
BOOL set;
if (SystemParametersInfo(SPI_GETFONTSMOOTHING, 0, &set, 0) && set)
{
@@ -233,24 +245,23 @@ SkFont::Edging WinSkiaSalGraphicsImpl::getFontEdging()
fontEdging = SkFont::Edging::kSubpixelAntiAlias;
if (SystemParametersInfo(SPI_GETFONTSMOOTHINGORIENTATION, 0, &set2, 0)
&& set2 == FE_FONTSMOOTHINGORIENTATIONBGR)
- lcdOrder = SkFontLCDConfig::kBGR_LCDOrder;
+ // No idea how to tell if it's horizontal or vertical.
+ pixelGeometry = kBGR_H_SkPixelGeometry;
else
- lcdOrder = SkFontLCDConfig::kRGB_LCDOrder; // default
+ pixelGeometry = kRGB_H_SkPixelGeometry; // default
}
else
fontEdging = SkFont::Edging::kAntiAlias;
}
- SkFontLCDConfig::SetSubpixelOrder(lcdOrder);
// Cache this, it is actually visible a little bit when profiling.
- fontEdgingDone = true;
- return fontEdging;
+ fontInfoDone = true;
}
void WinSkiaSalGraphicsImpl::ClearDevFontCache()
{
dwriteFontMgr.reset();
dwriteDone = false;
- fontEdgingDone = false;
+ fontInfoDone = false;
}
SkiaCompatibleDC::SkiaCompatibleDC(SalGraphics& rGraphics, int x, int y, int width, int height)