Kaydet (Commit) 3ecd8f19 authored tarafından Miklos Vajna's avatar Miklos Vajna

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/58035Reviewed-by: 's avatarMiklos Vajna <vmiklos@collabora.co.uk>
Tested-by: Jenkins
üst b032d746
......@@ -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 )
......
......@@ -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
......
......@@ -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
......
......@@ -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);
......
......@@ -55,7 +55,7 @@ X11SalGraphics::GetFontGC()
void X11SalGraphics::DrawTextLayout(const GenericSalLayout& rLayout)
{
mxTextRenderImpl->DrawTextLayout(rLayout);
mxTextRenderImpl->DrawTextLayout(rLayout, *this);
}
const FontCharMapRef X11SalGraphics::GetFontCharMap() const
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment