vcl/inc/sallayout.hxx | 5 +++++ vcl/quartz/salgdi.cxx | 4 ++-- vcl/source/gdi/sallayout.cxx | 4 ++-- vcl/source/outdev/text.cxx | 2 +- vcl/unx/generic/gdi/cairotextrender.cxx | 4 ++-- vcl/unx/generic/print/genpspgraphics.cxx | 4 ++-- 6 files changed, 14 insertions(+), 9 deletions(-)
New commits: commit 0fb0a564bf9cb0f721e812ac4bfa70e951827bdd Author: Khaled Hosny <[email protected]> Date: Thu Dec 8 05:38:08 2016 +0200 Donât encode font fallback level in the glyph id Change-Id: I747d969c3c1dc42b1a3b5d12d06fed3af9a64675 Reviewed-on: https://gerrit.libreoffice.org/31818 Tested-by: Jenkins <[email protected]> Reviewed-by: Khaled Hosny <[email protected]> diff --git a/vcl/inc/sallayout.hxx b/vcl/inc/sallayout.hxx index 9e7f8ab..ee41051 100644 --- a/vcl/inc/sallayout.hxx +++ b/vcl/inc/sallayout.hxx @@ -279,6 +279,8 @@ struct GlyphItem sal_GlyphId maGlyphId; Point maLinearPos; // absolute position of non rotated string + int mnFallbackLevel; + public: GlyphItem() : mnFlags(0) @@ -287,6 +289,7 @@ public: , mnNewWidth(0) , mnXOffset(0) , maGlyphId(0) + , mnFallbackLevel(0) { } GlyphItem( int nCharPos, sal_GlyphId aGlyphId, const Point& rLinearPos, @@ -298,6 +301,7 @@ public: , mnXOffset(0) , maGlyphId(aGlyphId) , maLinearPos(rLinearPos) + , mnFallbackLevel(0) { } GlyphItem( int nCharPos, sal_GlyphId aGlyphId, const Point& rLinearPos, @@ -309,6 +313,7 @@ public: , mnXOffset(nXOffset) , maGlyphId(aGlyphId) , maLinearPos(rLinearPos) + , mnFallbackLevel(0) { } enum { diff --git a/vcl/quartz/salgdi.cxx b/vcl/quartz/salgdi.cxx index c8f9c75..0df8955 100644 --- a/vcl/quartz/salgdi.cxx +++ b/vcl/quartz/salgdi.cxx @@ -384,7 +384,7 @@ bool AquaSalGraphics::AddTempDevFont( PhysicalFontCollection*, bool AquaSalGraphics::GetGlyphOutline(const GlyphItem& rGlyph, basegfx::B2DPolyPolygon& rPolyPoly) { - const int nFallbackLevel = rGlyph.maGlyphId >> GF_FONTSHIFT; + const int nFallbackLevel = rGlyph.mnFallbackLevel; if (nFallbackLevel < MAX_FALLBACK && mpTextStyle[nFallbackLevel]) { const bool bRC = mpTextStyle[nFallbackLevel]->GetGlyphOutline(rGlyph, rPolyPoly); @@ -395,7 +395,7 @@ bool AquaSalGraphics::GetGlyphOutline(const GlyphItem& rGlyph, basegfx::B2DPolyP bool AquaSalGraphics::GetGlyphBoundRect(const GlyphItem& rGlyph, Rectangle& rRect ) { - const int nFallbackLevel = rGlyph.maGlyphId >> GF_FONTSHIFT; + const int nFallbackLevel = rGlyph.mnFallbackLevel; if (nFallbackLevel < MAX_FALLBACK && mpTextStyle[nFallbackLevel]) { const bool bRC = mpTextStyle[nFallbackLevel]->GetGlyphBoundRect(rGlyph, rRect); diff --git a/vcl/source/gdi/sallayout.cxx b/vcl/source/gdi/sallayout.cxx index 9c4c48f..bdbb28d 100644 --- a/vcl/source/gdi/sallayout.cxx +++ b/vcl/source/gdi/sallayout.cxx @@ -1610,8 +1610,8 @@ int MultiSalLayout::GetNextGlyphs(int nLen, const GlyphItem** pGlyphs, nStart |= nFontTag; for( int i = 0; i < nRetVal; ++i ) { - // FIXME: This is ugly! - const_cast<GlyphItem*>(pGlyphs[i])->maGlyphId |= nFontTag; + // FIXME: This cast is ugly! + const_cast<GlyphItem*>(pGlyphs[i])->mnFallbackLevel = nLevel; if( pFallbackFonts ) { pFallbackFonts[ i ] = mpFallbackFonts[ nLevel ]; diff --git a/vcl/source/outdev/text.cxx b/vcl/source/outdev/text.cxx index 93deefe..2d66822 100644 --- a/vcl/source/outdev/text.cxx +++ b/vcl/source/outdev/text.cxx @@ -2397,7 +2397,7 @@ SystemTextLayoutData OutputDevice::GetSysTextLayoutData(const Point& rStartPt, c aSystemGlyph.index = static_cast<unsigned long> (pGlyph->maGlyphId & GF_IDXMASK); aSystemGlyph.x = aPos.X(); aSystemGlyph.y = aPos.Y(); - int nLevel = (pGlyph->maGlyphId & GF_FONTMASK) >> GF_FONTSHIFT; + int nLevel = pGlyph->mnFallbackLevel; aSystemGlyph.fallbacklevel = nLevel < MAX_FALLBACK ? nLevel : 0; aSysLayoutData.rGlyphData.push_back(aSystemGlyph); } diff --git a/vcl/unx/generic/gdi/cairotextrender.cxx b/vcl/unx/generic/gdi/cairotextrender.cxx index a188ad3..ec025b8 100644 --- a/vcl/unx/generic/gdi/cairotextrender.cxx +++ b/vcl/unx/generic/gdi/cairotextrender.cxx @@ -427,7 +427,7 @@ void CairoTextRender::GetFontMetric( ImplFontMetricDataRef& rxFontMetric, int nF bool CairoTextRender::GetGlyphBoundRect(const GlyphItem& rGlyph, Rectangle& rRect) { - const int nLevel = rGlyph.maGlyphId >> GF_FONTSHIFT; + const int nLevel = rGlyph.mnFallbackLevel; if( nLevel >= MAX_FALLBACK ) return false; @@ -457,7 +457,7 @@ bool CairoTextRender::GetGlyphBoundRect(const GlyphItem& rGlyph, Rectangle& rRec bool CairoTextRender::GetGlyphOutline(const GlyphItem& rGlyph, basegfx::B2DPolyPolygon& rPolyPoly ) { - const int nLevel = rGlyph.maGlyphId >> GF_FONTSHIFT; + const int nLevel = rGlyph.mnFallbackLevel; if( nLevel >= MAX_FALLBACK ) return false; diff --git a/vcl/unx/generic/print/genpspgraphics.cxx b/vcl/unx/generic/print/genpspgraphics.cxx index 97fadbd..a9ff215 100644 --- a/vcl/unx/generic/print/genpspgraphics.cxx +++ b/vcl/unx/generic/print/genpspgraphics.cxx @@ -760,7 +760,7 @@ void GenPspGraphics::GetFontMetric(ImplFontMetricDataRef& rxFontMetric, int nFal bool GenPspGraphics::GetGlyphBoundRect(const GlyphItem& rGlyph, Rectangle& rRect) { - const int nLevel = rGlyph.maGlyphId >> GF_FONTSHIFT; + const int nLevel = rGlyph.mnFallbackLevel; if( nLevel >= MAX_FALLBACK ) return false; @@ -776,7 +776,7 @@ bool GenPspGraphics::GetGlyphBoundRect(const GlyphItem& rGlyph, Rectangle& rRect bool GenPspGraphics::GetGlyphOutline(const GlyphItem& rGlyph, basegfx::B2DPolyPolygon& rB2DPolyPoly ) { - const int nLevel = rGlyph.maGlyphId >> GF_FONTSHIFT; + const int nLevel = rGlyph.mnFallbackLevel; if( nLevel >= MAX_FALLBACK ) return false;
_______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
