summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.co.uk>2018-07-26 09:06:21 +0200
committerMiklos Vajna <vmiklos@collabora.co.uk>2018-07-26 10:22:29 +0200
commit3ecd8f19a91ed7141304a2080fb11612b5ff30b3 (patch)
tree8b38653012e6cc50acbf94603415c6a1b6120f76 /vcl
parentb032d746a48b8887ccc2330b2fdbf63d701a213f (diff)
vcl cairo text renderer: support non-AA text
Non-AA lines were already working, but text was always anti-aliased. (Use-case is reference bitmaps in a testsuite, where AA just makes it harder to determine if the expected and actual rendering output match.) Change-Id: I7c5ab4c80675e1a523d67b71f3cd3cbc9c6416c3 Reviewed-on: https://gerrit.libreoffice.org/58035 Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk> Tested-by: Jenkins
Diffstat (limited to 'vcl')
-rw-r--r--vcl/headless/svptext.cxx2
-rw-r--r--vcl/inc/textrender.hxx2
-rw-r--r--vcl/inc/unx/cairotextrender.hxx2
-rw-r--r--vcl/unx/generic/gdi/cairotextrender.cxx14
-rw-r--r--vcl/unx/generic/gdi/font.cxx2
5 files changed, 16 insertions, 6 deletions
diff --git a/vcl/headless/svptext.cxx b/vcl/headless/svptext.cxx
index 1e0b578f800b..dbef813cd658 100644
--- a/vcl/headless/svptext.cxx
+++ b/vcl/headless/svptext.cxx
@@ -108,7 +108,7 @@ std::unique_ptr<SalLayout> SvpSalGraphics::GetTextLayout( ImplLayoutArgs& rArgs,
void SvpSalGraphics::DrawTextLayout(const GenericSalLayout& rLayout)
{
- m_aTextRenderImpl.DrawTextLayout(rLayout);
+ m_aTextRenderImpl.DrawTextLayout(rLayout, *this);
}
void SvpSalGraphics::SetTextColor( Color nColor )
diff --git a/vcl/inc/textrender.hxx b/vcl/inc/textrender.hxx
index 88de2076aca3..eb86e3b2bcf4 100644
--- a/vcl/inc/textrender.hxx
+++ b/vcl/inc/textrender.hxx
@@ -63,7 +63,7 @@ public:
virtual bool GetGlyphOutline(const GlyphItem&, basegfx::B2DPolyPolygon&) = 0;
virtual std::unique_ptr<SalLayout>
GetTextLayout( ImplLayoutArgs&, int nFallbackLevel ) = 0;
- virtual void DrawTextLayout(const GenericSalLayout&) = 0;
+ virtual void DrawTextLayout(const GenericSalLayout&, const SalGraphics&) = 0;
#if ENABLE_CAIRO_CANVAS
virtual SystemFontData GetSysFontData( int nFallbackLevel ) const = 0;
#endif // ENABLE_CAIRO_CANVAS
diff --git a/vcl/inc/unx/cairotextrender.hxx b/vcl/inc/unx/cairotextrender.hxx
index 896a0254b923..65d2bed2918e 100644
--- a/vcl/inc/unx/cairotextrender.hxx
+++ b/vcl/inc/unx/cairotextrender.hxx
@@ -79,7 +79,7 @@ public:
virtual bool GetGlyphOutline(const GlyphItem&, basegfx::B2DPolyPolygon&) override;
virtual std::unique_ptr<SalLayout>
GetTextLayout( ImplLayoutArgs&, int nFallbackLevel ) override;
- virtual void DrawTextLayout(const GenericSalLayout&) override;
+ virtual void DrawTextLayout(const GenericSalLayout&, const SalGraphics&) override;
#if ENABLE_CAIRO_CANVAS
virtual SystemFontData GetSysFontData( int nFallbackLevel ) const override;
#endif
diff --git a/vcl/unx/generic/gdi/cairotextrender.cxx b/vcl/unx/generic/gdi/cairotextrender.cxx
index 36d1dc9cf1a0..55316ed9926a 100644
--- a/vcl/unx/generic/gdi/cairotextrender.cxx
+++ b/vcl/unx/generic/gdi/cairotextrender.cxx
@@ -168,7 +168,7 @@ namespace
}
}
-void CairoTextRender::DrawTextLayout(const GenericSalLayout& rLayout)
+void CairoTextRender::DrawTextLayout(const GenericSalLayout& rLayout, const SalGraphics& rGraphics)
{
const FreetypeFontInstance& rInstance = static_cast<FreetypeFontInstance&>(rLayout.GetFont());
const FreetypeFont& rFont = *rInstance.GetFreetypeFont();
@@ -218,7 +218,17 @@ void CairoTextRender::DrawTextLayout(const GenericSalLayout& rLayout)
ImplSVData* pSVData = ImplGetSVData();
if (const cairo_font_options_t* pFontOptions = pSVData->mpDefInst->GetCairoFontOptions())
- cairo_set_font_options(cr, pFontOptions);
+ {
+ if (!rGraphics.getAntiAliasB2DDraw())
+ {
+ cairo_font_options_t* pOptions = cairo_font_options_copy(pFontOptions);
+ cairo_font_options_set_antialias(pOptions, CAIRO_ANTIALIAS_NONE);
+ cairo_set_font_options(cr, pOptions);
+ cairo_font_options_destroy(pOptions);
+ }
+ else
+ cairo_set_font_options(cr, pFontOptions);
+ }
double nDX, nDY;
getSurfaceOffset(nDX, nDY);
diff --git a/vcl/unx/generic/gdi/font.cxx b/vcl/unx/generic/gdi/font.cxx
index ae4ef22e21b9..9cdbff3ea69d 100644
--- a/vcl/unx/generic/gdi/font.cxx
+++ b/vcl/unx/generic/gdi/font.cxx
@@ -55,7 +55,7 @@ X11SalGraphics::GetFontGC()
void X11SalGraphics::DrawTextLayout(const GenericSalLayout& rLayout)
{
- mxTextRenderImpl->DrawTextLayout(rLayout);
+ mxTextRenderImpl->DrawTextLayout(rLayout, *this);
}
const FontCharMapRef X11SalGraphics::GetFontCharMap() const