[Libreoffice-commits] core.git: vcl/headless vcl/inc vcl/quartz vcl/source vcl/unx vcl/win

Khaled Hosny khaledhosny at eglug.org
Sat Dec 10 01:58:22 UTC 2016


 vcl/headless/svptext.cxx                       |    8 ++++----
 vcl/inc/headless/svpgdi.hxx                    |    4 ++--
 vcl/inc/quartz/salgdi.h                        |    8 ++++----
 vcl/inc/salgdi.hxx                             |    4 ++--
 vcl/inc/textrender.hxx                         |    4 ++--
 vcl/inc/unx/cairotextrender.hxx                |    4 ++--
 vcl/inc/unx/genpspgraphics.h                   |    4 ++--
 vcl/inc/unx/glyphcache.hxx                     |    6 +++---
 vcl/inc/unx/salgdi.h                           |    4 ++--
 vcl/inc/win/salgdi.h                           |    4 ++--
 vcl/quartz/ctfonts.cxx                         |   10 +++++-----
 vcl/quartz/salgdi.cxx                          |   12 ++++++------
 vcl/source/gdi/sallayout.cxx                   |    4 ++--
 vcl/source/outdev/font.cxx                     |    2 +-
 vcl/unx/generic/gdi/cairotextrender.cxx        |   14 ++++++--------
 vcl/unx/generic/gdi/font.cxx                   |    8 ++++----
 vcl/unx/generic/glyphs/freetype_glyphcache.cxx |   20 ++++++--------------
 vcl/unx/generic/glyphs/glyphcache.cxx          |    8 ++++----
 vcl/unx/generic/print/genpspgraphics.cxx       |   14 ++++++--------
 vcl/win/gdi/salfont.cxx                        |   12 +++++-------
 20 files changed, 70 insertions(+), 84 deletions(-)

New commits:
commit bebee55d197176f009668628de0d9945c26af8ad
Author: Khaled Hosny <khaledhosny at eglug.org>
Date:   Thu Dec 8 03:01:14 2016 +0200

    Use GlyphItem in more places
    
    Change-Id: Ic0dd8c0311161271817eb9a3f454d00a319e43a8
    Reviewed-on: https://gerrit.libreoffice.org/31814
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Khaled Hosny <khaledhosny at eglug.org>

diff --git a/vcl/headless/svptext.cxx b/vcl/headless/svptext.cxx
index 63a10f5..bdb97a9 100644
--- a/vcl/headless/svptext.cxx
+++ b/vcl/headless/svptext.cxx
@@ -91,14 +91,14 @@ void SvpSalGraphics::GetGlyphWidths( const PhysicalFontFace* pFont,
     m_aTextRenderImpl.GetGlyphWidths(pFont, bVertical, rWidths, rUnicodeEnc);
 }
 
-bool SvpSalGraphics::GetGlyphBoundRect( sal_GlyphId aGlyphId, Rectangle& rRect )
+bool SvpSalGraphics::GetGlyphBoundRect(const GlyphItem& rGlyph, Rectangle& rRect)
 {
-    return m_aTextRenderImpl.GetGlyphBoundRect(aGlyphId, rRect);
+    return m_aTextRenderImpl.GetGlyphBoundRect(rGlyph, rRect);
 }
 
-bool SvpSalGraphics::GetGlyphOutline( sal_GlyphId aGlyphId, basegfx::B2DPolyPolygon& rPolyPoly )
+bool SvpSalGraphics::GetGlyphOutline(const GlyphItem& rGlyph, basegfx::B2DPolyPolygon& rPolyPoly)
 {
-    return m_aTextRenderImpl.GetGlyphOutline(aGlyphId, rPolyPoly);
+    return m_aTextRenderImpl.GetGlyphOutline(rGlyph, rPolyPoly);
 }
 
 SalLayout* SvpSalGraphics::GetTextLayout( ImplLayoutArgs& rArgs, int nFallbackLevel )
diff --git a/vcl/inc/headless/svpgdi.hxx b/vcl/inc/headless/svpgdi.hxx
index a8f3362..8083474 100644
--- a/vcl/inc/headless/svpgdi.hxx
+++ b/vcl/inc/headless/svpgdi.hxx
@@ -159,8 +159,8 @@ public:
                                             bool bVertical,
                                             std::vector< sal_Int32 >& rWidths,
                                             Ucs2UIntMap& rUnicodeEnc ) override;
-    virtual bool            GetGlyphBoundRect( sal_GlyphId nIndex, Rectangle& ) override;
-    virtual bool            GetGlyphOutline( sal_GlyphId nIndex, basegfx::B2DPolyPolygon& ) override;
+    virtual bool            GetGlyphBoundRect(const GlyphItem&, Rectangle&) override;
+    virtual bool            GetGlyphOutline(const GlyphItem&, basegfx::B2DPolyPolygon&) override;
     virtual SalLayout*      GetTextLayout( ImplLayoutArgs&, int nFallbackLevel ) override;
     virtual void            DrawTextLayout( const CommonSalLayout& ) override;
     virtual bool            supportsOperation( OutDevSupportType ) const override;
diff --git a/vcl/inc/quartz/salgdi.h b/vcl/inc/quartz/salgdi.h
index 6ea5bf3..086266d 100644
--- a/vcl/inc/quartz/salgdi.h
+++ b/vcl/inc/quartz/salgdi.h
@@ -89,8 +89,8 @@ public:
     ~CoreTextStyle( void );
 
     void       GetFontMetric( ImplFontMetricDataRef& ) const;
-    bool       GetGlyphBoundRect( sal_GlyphId, Rectangle& ) const;
-    bool       GetGlyphOutline( sal_GlyphId, basegfx::B2DPolyPolygon& ) const;
+    bool       GetGlyphBoundRect(const GlyphItem&, Rectangle&) const;
+    bool       GetGlyphOutline(const GlyphItem&, basegfx::B2DPolyPolygon&) const;
     hb_font_t* GetHbFont() const { return mpHbFont; }
     void       SetHbFont(hb_font_t* pHbFont) const { mpHbFont = pHbFont; }
 
@@ -375,8 +375,8 @@ public:
                                             std::vector< sal_Int32 >& rWidths,
                                             Ucs2UIntMap& rUnicodeEnc ) override;
 
-    virtual bool            GetGlyphBoundRect( sal_GlyphId, Rectangle& ) override;
-    virtual bool            GetGlyphOutline( sal_GlyphId, basegfx::B2DPolyPolygon& ) override;
+    virtual bool            GetGlyphBoundRect(const GlyphItem&, Rectangle&) override;
+    virtual bool            GetGlyphOutline(const GlyphItem&, basegfx::B2DPolyPolygon&) override;
 
     virtual SalLayout*      GetTextLayout( ImplLayoutArgs&, int nFallbackLevel ) override;
     virtual void            DrawTextLayout( const CommonSalLayout& ) override;
diff --git a/vcl/inc/salgdi.hxx b/vcl/inc/salgdi.hxx
index ef228fa..9ca2433 100644
--- a/vcl/inc/salgdi.hxx
+++ b/vcl/inc/salgdi.hxx
@@ -191,8 +191,8 @@ public:
                                     std::vector< sal_Int32 >& rWidths,
                                     Ucs2UIntMap& rUnicodeEnc ) = 0;
 
-    virtual bool                GetGlyphBoundRect( sal_GlyphId, Rectangle& ) = 0;
-    virtual bool                GetGlyphOutline( sal_GlyphId, basegfx::B2DPolyPolygon& ) = 0;
+    virtual bool                GetGlyphBoundRect(const GlyphItem&, Rectangle&) = 0;
+    virtual bool                GetGlyphOutline(const GlyphItem&, basegfx::B2DPolyPolygon&) = 0;
 
     virtual SalLayout*          GetTextLayout( ImplLayoutArgs&, int nFallbackLevel ) = 0;
     virtual void                DrawTextLayout( const CommonSalLayout& ) = 0;
diff --git a/vcl/inc/textrender.hxx b/vcl/inc/textrender.hxx
index 9417345..1b04725 100644
--- a/vcl/inc/textrender.hxx
+++ b/vcl/inc/textrender.hxx
@@ -59,8 +59,8 @@ public:
                                         std::vector< sal_Int32 >& rWidths,
                                         Ucs2UIntMap& rUnicodeEnc ) = 0;
 
-    virtual bool                    GetGlyphBoundRect( sal_GlyphId nIndex, Rectangle& ) = 0;
-    virtual bool                    GetGlyphOutline( sal_GlyphId nIndex, basegfx::B2DPolyPolygon& ) = 0;
+    virtual bool                    GetGlyphBoundRect(const GlyphItem&, Rectangle&) = 0;
+    virtual bool                    GetGlyphOutline(const GlyphItem&, basegfx::B2DPolyPolygon&) = 0;
     virtual SalLayout*              GetTextLayout( ImplLayoutArgs&, int nFallbackLevel ) = 0;
     virtual void                    DrawTextLayout(const CommonSalLayout&) = 0;
 #if ENABLE_CAIRO_CANVAS
diff --git a/vcl/inc/unx/cairotextrender.hxx b/vcl/inc/unx/cairotextrender.hxx
index 5fab64a..1cdf405 100644
--- a/vcl/inc/unx/cairotextrender.hxx
+++ b/vcl/inc/unx/cairotextrender.hxx
@@ -75,8 +75,8 @@ public:
                                     std::vector< sal_Int32 >& rWidths,
                                     Ucs2UIntMap& rUnicodeEnc ) override;
 
-    virtual bool                GetGlyphBoundRect( sal_GlyphId nIndex, Rectangle& ) override;
-    virtual bool                GetGlyphOutline( sal_GlyphId nIndex, basegfx::B2DPolyPolygon& ) override;
+    virtual bool                GetGlyphBoundRect(const GlyphItem&, Rectangle&) override;
+    virtual bool                GetGlyphOutline(const GlyphItem&, basegfx::B2DPolyPolygon&) override;
     virtual SalLayout*          GetTextLayout( ImplLayoutArgs&, int nFallbackLevel ) override;
     virtual void                DrawTextLayout(const CommonSalLayout&) override;
 #if ENABLE_CAIRO_CANVAS
diff --git a/vcl/inc/unx/genpspgraphics.h b/vcl/inc/unx/genpspgraphics.h
index 1dcb7ab..721efd5 100644
--- a/vcl/inc/unx/genpspgraphics.h
+++ b/vcl/inc/unx/genpspgraphics.h
@@ -115,8 +115,8 @@ public:
                                             bool bVertical,
                                             std::vector< sal_Int32 >& rWidths,
                                             Ucs2UIntMap& rUnicodeEnc ) override;
-    virtual bool            GetGlyphBoundRect( sal_GlyphId, Rectangle& ) override;
-    virtual bool            GetGlyphOutline( sal_GlyphId, basegfx::B2DPolyPolygon& ) override;
+    virtual bool            GetGlyphBoundRect(const GlyphItem&, Rectangle&) override;
+    virtual bool            GetGlyphOutline(const GlyphItem&, basegfx::B2DPolyPolygon&) override;
     virtual SalLayout*      GetTextLayout( ImplLayoutArgs&, int nFallbackLevel ) override;
     virtual void            DrawTextLayout( const CommonSalLayout& ) override;
     virtual bool            supportsOperation( OutDevSupportType ) const override;
diff --git a/vcl/inc/unx/glyphcache.hxx b/vcl/inc/unx/glyphcache.hxx
index 65afd4b..bf9cf3c 100644
--- a/vcl/inc/unx/glyphcache.hxx
+++ b/vcl/inc/unx/glyphcache.hxx
@@ -157,9 +157,9 @@ public:
     const FontCharMapRef    GetFontCharMap() const;
     bool                    GetFontCapabilities(vcl::FontCapabilities &) const;
 
-    const GlyphMetric&      GetGlyphMetric(sal_GlyphId aGlyphId);
+    const GlyphMetric&      GetGlyphMetric(const GlyphItem& rGlyph);
 
-    bool                    GetGlyphOutline( sal_GlyphId aGlyphId, basegfx::B2DPolyPolygon& ) const;
+    bool                    GetGlyphOutline(const GlyphItem& rGlyph, basegfx::B2DPolyPolygon&) const;
     bool                    GetAntialiasAdvice() const;
     hb_font_t*              GetHbFont() { return mpHbFont; }
     void                    SetHbFont( hb_font_t* pHbFont ) { mpHbFont = pHbFont; }
@@ -175,7 +175,7 @@ private:
     long                    Release() const;
     sal_uLong               GetByteCount() const { return mnBytesUsed; }
 
-    void                    InitGlyphData( sal_GlyphId, GlyphData& ) const;
+    void                    InitGlyphData(const GlyphItem&, GlyphData&) const;
     void                    GarbageCollect( long );
     void                    ReleaseFromGarbageCollect();
 
diff --git a/vcl/inc/unx/salgdi.h b/vcl/inc/unx/salgdi.h
index b3de804..5eb9172 100644
--- a/vcl/inc/unx/salgdi.h
+++ b/vcl/inc/unx/salgdi.h
@@ -140,8 +140,8 @@ public:
                                         std::vector< sal_Int32 >& rWidths,
                                         Ucs2UIntMap& rUnicodeEnc ) override;
 
-    virtual bool                    GetGlyphBoundRect( sal_GlyphId nIndex, Rectangle& ) override;
-    virtual bool                    GetGlyphOutline( sal_GlyphId nIndex, basegfx::B2DPolyPolygon& ) override;
+    virtual bool                    GetGlyphBoundRect(const GlyphItem&, Rectangle&) override;
+    virtual bool                    GetGlyphOutline(const GlyphItem&, basegfx::B2DPolyPolygon&) override;
     virtual SalLayout*              GetTextLayout( ImplLayoutArgs&, int nFallbackLevel ) override;
     virtual void                    DrawTextLayout( const CommonSalLayout& ) override;
 
diff --git a/vcl/inc/win/salgdi.h b/vcl/inc/win/salgdi.h
index 198c61c..8a493d7 100644
--- a/vcl/inc/win/salgdi.h
+++ b/vcl/inc/win/salgdi.h
@@ -377,8 +377,8 @@ public:
                                             Ucs2UIntMap& rUnicodeEnc ) override;
             int             GetMinKashidaWidth();
 
-    virtual bool            GetGlyphBoundRect( sal_GlyphId, Rectangle& ) override;
-    virtual bool            GetGlyphOutline( sal_GlyphId, basegfx::B2DPolyPolygon& ) override;
+    virtual bool            GetGlyphBoundRect(const GlyphItem&, Rectangle&) override;
+    virtual bool            GetGlyphOutline(const GlyphItem&, basegfx::B2DPolyPolygon&) override;
 
     virtual SalLayout*      GetTextLayout( ImplLayoutArgs&, int nFallbackLevel ) override;
     virtual void            DrawTextLayout( const CommonSalLayout& ) override;
diff --git a/vcl/quartz/ctfonts.cxx b/vcl/quartz/ctfonts.cxx
index 7677a04..300ee4d 100644
--- a/vcl/quartz/ctfonts.cxx
+++ b/vcl/quartz/ctfonts.cxx
@@ -152,9 +152,9 @@ SAL_WNODEPRECATED_DECLARATIONS_POP
     }
 }
 
-bool CoreTextStyle::GetGlyphBoundRect( sal_GlyphId aGlyphId, Rectangle& rRect ) const
+bool CoreTextStyle::GetGlyphBoundRect(const GlyphItem& rGlyph, Rectangle& rRect ) const
 {
-    CGGlyph nCGGlyph = aGlyphId & GF_IDXMASK;
+    CGGlyph nCGGlyph = rGlyph.maGlyphId & GF_IDXMASK;
     CTFontRef aCTFontRef = static_cast<CTFontRef>(CFDictionaryGetValue( mpStyleDict, kCTFontAttributeName ));
 
     SAL_WNODEPRECATED_DECLARATIONS_PUSH //TODO: 10.11 kCTFontDefaultOrientation
@@ -163,7 +163,7 @@ bool CoreTextStyle::GetGlyphBoundRect( sal_GlyphId aGlyphId, Rectangle& rRect )
     CGRect aCGRect = CTFontGetBoundingRectsForGlyphs(aCTFontRef, aFontOrientation, &nCGGlyph, nullptr, 1);
 
     // Apply font rotation to non-upright glyphs.
-    if (mfFontRotation && !(aGlyphId & GF_ROTMASK))
+    if (mfFontRotation && !(rGlyph.maGlyphId & GF_ROTMASK))
         aCGRect = CGRectApplyAffineTransform(aCGRect, CGAffineTransformMakeRotation(mfFontRotation));
 
     rRect.Left()   = lrint( aCGRect.origin.x );
@@ -225,11 +225,11 @@ static void MyCGPathApplierFunc( void* pData, const CGPathElement* pElement )
     }
 }
 
-bool CoreTextStyle::GetGlyphOutline( sal_GlyphId aGlyphId, basegfx::B2DPolyPolygon& rResult ) const
+bool CoreTextStyle::GetGlyphOutline(const GlyphItem& rGlyph, basegfx::B2DPolyPolygon& rResult) const
 {
     rResult.clear();
 
-    CGGlyph nCGGlyph = aGlyphId & GF_IDXMASK;
+    CGGlyph nCGGlyph = rGlyph.maGlyphId & GF_IDXMASK;
     CTFontRef pCTFont = static_cast<CTFontRef>(CFDictionaryGetValue( mpStyleDict, kCTFontAttributeName ));
     CGPathRef xPath = CTFontCreatePathForGlyph( pCTFont, nCGGlyph, nullptr );
     if (!xPath)
diff --git a/vcl/quartz/salgdi.cxx b/vcl/quartz/salgdi.cxx
index 4b3a63a..c593b88 100644
--- a/vcl/quartz/salgdi.cxx
+++ b/vcl/quartz/salgdi.cxx
@@ -382,23 +382,23 @@ bool AquaSalGraphics::AddTempDevFont( PhysicalFontCollection*,
     return ::AddTempDevFont(rFontFileURL);
 }
 
-bool AquaSalGraphics::GetGlyphOutline( sal_GlyphId aGlyphId, basegfx::B2DPolyPolygon& rPolyPoly )
+bool AquaSalGraphics::GetGlyphOutline(const GlyphItem& rGlyph, basegfx::B2DPolyPolygon& rPolyPoly)
 {
-    const int nFallbackLevel = aGlyphId >> GF_FONTSHIFT;
+    const int nFallbackLevel = rGlyph.maGlyphId >> GF_FONTSHIFT;
     if (nFallbackLevel < MAX_FALLBACK && mpTextStyle[nFallbackLevel])
     {
-        const bool bRC = mpTextStyle[nFallbackLevel]->GetGlyphOutline(aGlyphId, rPolyPoly);
+        const bool bRC = mpTextStyle[nFallbackLevel]->GetGlyphOutline(rGlyph, rPolyPoly);
         return bRC;
     }
     return false;
 }
 
-bool AquaSalGraphics::GetGlyphBoundRect( sal_GlyphId aGlyphId, Rectangle& rRect )
+bool AquaSalGraphics::GetGlyphBoundRect(const GlyphItem& rGlyph, Rectangle& rRect )
 {
-    const int nFallbackLevel = aGlyphId >> GF_FONTSHIFT;
+    const int nFallbackLevel = rGlyph.maGlyphId >> GF_FONTSHIFT;
     if (nFallbackLevel < MAX_FALLBACK && mpTextStyle[nFallbackLevel])
     {
-        const bool bRC = mpTextStyle[nFallbackLevel]->GetGlyphBoundRect(aGlyphId, rRect);
+        const bool bRC = mpTextStyle[nFallbackLevel]->GetGlyphBoundRect(rGlyph, rRect);
         return bRC;
     }
     return false;
diff --git a/vcl/source/gdi/sallayout.cxx b/vcl/source/gdi/sallayout.cxx
index 25c1600..6f3b082 100644
--- a/vcl/source/gdi/sallayout.cxx
+++ b/vcl/source/gdi/sallayout.cxx
@@ -675,7 +675,7 @@ bool SalLayout::GetOutline( SalGraphics& rSalGraphics,
     while (GetNextGlyphs(1, &pGlyph, aPos, nStart))
     {
         // get outline of individual glyph, ignoring "empty" glyphs
-        bool bSuccess = rSalGraphics.GetGlyphOutline(pGlyph->maGlyphId, aGlyphOutline);
+        bool bSuccess = rSalGraphics.GetGlyphOutline(*pGlyph, aGlyphOutline);
         bAllOk &= bSuccess;
         bOneOk |= bSuccess;
         // only add non-empty outlines
@@ -707,7 +707,7 @@ bool SalLayout::GetBoundRect( SalGraphics& rSalGraphics, Rectangle& rRect ) cons
     while (GetNextGlyphs(1, &pGlyph, aPos, nStart))
     {
         // get bounding rectangle of individual glyph
-        if (rSalGraphics.GetGlyphBoundRect(pGlyph->maGlyphId, aRectangle))
+        if (rSalGraphics.GetGlyphBoundRect(*pGlyph, aRectangle))
         {
             // merge rectangle
             aRectangle += aPos;
diff --git a/vcl/source/outdev/font.cxx b/vcl/source/outdev/font.cxx
index 71d3f21..3820d42 100644
--- a/vcl/source/outdev/font.cxx
+++ b/vcl/source/outdev/font.cxx
@@ -1300,7 +1300,7 @@ void OutputDevice::ImplDrawEmphasisMarks( SalLayout& rSalLayout )
     int nStart = 0;
     while (rSalLayout.GetNextGlyphs(1, &pGlyph, aOutPoint, nStart))
     {
-        if (!mpGraphics->GetGlyphBoundRect(pGlyph->maGlyphId, aRectangle ) )
+        if (!mpGraphics->GetGlyphBoundRect(*pGlyph, aRectangle ) )
             continue;
 
         if (!SalLayout::IsSpacingGlyph(pGlyph->maGlyphId))
diff --git a/vcl/unx/generic/gdi/cairotextrender.cxx b/vcl/unx/generic/gdi/cairotextrender.cxx
index 501d399..3d7ca15 100644
--- a/vcl/unx/generic/gdi/cairotextrender.cxx
+++ b/vcl/unx/generic/gdi/cairotextrender.cxx
@@ -430,9 +430,9 @@ void CairoTextRender::GetFontMetric( ImplFontMetricDataRef& rxFontMetric, int nF
         mpFreetypeFont[nFallbackLevel]->GetFontMetric(rxFontMetric);
 }
 
-bool CairoTextRender::GetGlyphBoundRect( sal_GlyphId aGlyphId, Rectangle& rRect )
+bool CairoTextRender::GetGlyphBoundRect(const GlyphItem& rGlyph, Rectangle& rRect)
 {
-    const int nLevel = aGlyphId >> GF_FONTSHIFT;
+    const int nLevel = rGlyph.maGlyphId >> GF_FONTSHIFT;
     if( nLevel >= MAX_FALLBACK )
         return false;
 
@@ -440,8 +440,7 @@ bool CairoTextRender::GetGlyphBoundRect( sal_GlyphId aGlyphId, Rectangle& rRect
     if( !pSF )
         return false;
 
-    aGlyphId &= GF_IDXMASK;
-    const GlyphMetric& rGM = pSF->GetGlyphMetric(aGlyphId);
+    const GlyphMetric& rGM = pSF->GetGlyphMetric(rGlyph);
     Rectangle aRect( rGM.GetOffset(), rGM.GetSize() );
 
     if ( pSF->mnCos != 0x10000 && pSF->mnSin != 0 )
@@ -460,10 +459,10 @@ bool CairoTextRender::GetGlyphBoundRect( sal_GlyphId aGlyphId, Rectangle& rRect
     return true;
 }
 
-bool CairoTextRender::GetGlyphOutline( sal_GlyphId aGlyphId,
+bool CairoTextRender::GetGlyphOutline(const GlyphItem& rGlyph,
     basegfx::B2DPolyPolygon& rPolyPoly )
 {
-    const int nLevel = aGlyphId >> GF_FONTSHIFT;
+    const int nLevel = rGlyph.maGlyphId >> GF_FONTSHIFT;
     if( nLevel >= MAX_FALLBACK )
         return false;
 
@@ -471,8 +470,7 @@ bool CairoTextRender::GetGlyphOutline( sal_GlyphId aGlyphId,
     if( !pSF )
         return false;
 
-    aGlyphId &= GF_IDXMASK;
-    if( pSF->GetGlyphOutline( aGlyphId, rPolyPoly ) )
+    if( pSF->GetGlyphOutline(rGlyph, rPolyPoly))
         return true;
 
     return false;
diff --git a/vcl/unx/generic/gdi/font.cxx b/vcl/unx/generic/gdi/font.cxx
index 8379c0c..37a3846 100644
--- a/vcl/unx/generic/gdi/font.cxx
+++ b/vcl/unx/generic/gdi/font.cxx
@@ -106,15 +106,15 @@ X11SalGraphics::GetFontMetric( ImplFontMetricDataRef &rxFontMetric, int nFallbac
     mxTextRenderImpl->GetFontMetric(rxFontMetric, nFallbackLevel);
 }
 
-bool X11SalGraphics::GetGlyphBoundRect( sal_GlyphId aGlyphId, Rectangle& rRect )
+bool X11SalGraphics::GetGlyphBoundRect(const GlyphItem& rGlyph, Rectangle& rRect)
 {
-    return mxTextRenderImpl->GetGlyphBoundRect(aGlyphId, rRect);
+    return mxTextRenderImpl->GetGlyphBoundRect(rGlyph, rRect);
 }
 
-bool X11SalGraphics::GetGlyphOutline( sal_GlyphId aGlyphId,
+bool X11SalGraphics::GetGlyphOutline(const GlyphItem& rGlyph,
     basegfx::B2DPolyPolygon& rPolyPoly )
 {
-    return mxTextRenderImpl->GetGlyphOutline(aGlyphId, rPolyPoly);
+    return mxTextRenderImpl->GetGlyphOutline(rGlyph, rPolyPoly);
 }
 
 SalLayout* X11SalGraphics::GetTextLayout( ImplLayoutArgs& rArgs, int nFallbackLevel )
diff --git a/vcl/unx/generic/glyphs/freetype_glyphcache.cxx b/vcl/unx/generic/glyphs/freetype_glyphcache.cxx
index 36b262f..2e62abe 100644
--- a/vcl/unx/generic/glyphs/freetype_glyphcache.cxx
+++ b/vcl/unx/generic/glyphs/freetype_glyphcache.cxx
@@ -627,12 +627,6 @@ void FreetypeFont::GetFontMetric(ImplFontMetricDataRef& rxTo) const
 
 }
 
-static inline void SplitGlyphFlags(sal_GlyphId& rGlyphId, int& nGlyphFlags)
-{
-    nGlyphFlags = rGlyphId & GF_FLAGMASK;
-    rGlyphId &= GF_IDXMASK;
-}
-
 void FreetypeFont::ApplyGlyphTransform( int nGlyphFlags, FT_Glyph pGlyphFT ) const
 {
     // shortcut most common case
@@ -696,14 +690,13 @@ void FreetypeFont::ApplyGlyphTransform( int nGlyphFlags, FT_Glyph pGlyphFT ) con
     }
 }
 
-void FreetypeFont::InitGlyphData( sal_GlyphId aGlyphId, GlyphData& rGD ) const
+void FreetypeFont::InitGlyphData(const GlyphItem& rGlyph, GlyphData& rGD ) const
 {
     FT_Activate_Size( maSizeFT );
 
-    int nGlyphFlags;
-    SplitGlyphFlags(aGlyphId, nGlyphFlags );
+    int nGlyphFlags = rGlyph.maGlyphId & GF_FLAGMASK;;
 
-    FT_Error rc = FT_Load_Glyph(maFaceFT, aGlyphId, mnLoadFlags);
+    FT_Error rc = FT_Load_Glyph(maFaceFT, rGlyph.maGlyphId & GF_IDXMASK, mnLoadFlags);
 
     if( rc != FT_Err_Ok )
     {
@@ -1001,7 +994,7 @@ static int FT_cubic_to( const FT_Vector* p1, const FT_Vector* p2, const FT_Vecto
 
 } // extern "C"
 
-bool FreetypeFont::GetGlyphOutline( sal_GlyphId aGlyphId,
+bool FreetypeFont::GetGlyphOutline(const GlyphItem& rGlyph,
     basegfx::B2DPolyPolygon& rB2DPolyPoly ) const
 {
     if( maSizeFT )
@@ -1009,8 +1002,7 @@ bool FreetypeFont::GetGlyphOutline( sal_GlyphId aGlyphId,
 
     rB2DPolyPoly.clear();
 
-    int nGlyphFlags;
-    SplitGlyphFlags(aGlyphId, nGlyphFlags);
+    int nGlyphFlags = rGlyph.maGlyphId & GF_FLAGMASK;;
 
     FT_Int nLoadFlags = FT_LOAD_DEFAULT | FT_LOAD_IGNORE_TRANSFORM;
 
@@ -1019,7 +1011,7 @@ bool FreetypeFont::GetGlyphOutline( sal_GlyphId aGlyphId,
     nLoadFlags |= FT_LOAD_TARGET_LIGHT;
 #endif
 
-    FT_Error rc = FT_Load_Glyph( maFaceFT, aGlyphId, nLoadFlags );
+    FT_Error rc = FT_Load_Glyph(maFaceFT, rGlyph.maGlyphId & GF_IDXMASK, nLoadFlags);
     if( rc != FT_Err_Ok )
         return false;
 
diff --git a/vcl/unx/generic/glyphs/glyphcache.cxx b/vcl/unx/generic/glyphs/glyphcache.cxx
index 3cece78..b41f7c0 100644
--- a/vcl/unx/generic/glyphs/glyphcache.cxx
+++ b/vcl/unx/generic/glyphs/glyphcache.cxx
@@ -304,10 +304,10 @@ long FreetypeFont::Release() const
     return --mnRefCount;
 }
 
-const GlyphMetric& FreetypeFont::GetGlyphMetric(sal_GlyphId aGlyphId)
+const GlyphMetric& FreetypeFont::GetGlyphMetric(const GlyphItem& rGlyph)
 {
     // usually the GlyphData is cached
-    GlyphList::iterator it = maGlyphList.find( aGlyphId );
+    GlyphList::iterator it = maGlyphList.find(rGlyph.maGlyphId & GF_IDXMASK);
     if( it != maGlyphList.end() ) {
         GlyphData& rGlyphData = it->second;
         GlyphCache::GetInstance().UsingGlyph( *this, rGlyphData );
@@ -315,9 +315,9 @@ const GlyphMetric& FreetypeFont::GetGlyphMetric(sal_GlyphId aGlyphId)
     }
 
     // sometimes not => we need to create and initialize it ourselves
-    GlyphData& rGlyphData = maGlyphList[ aGlyphId ];
+    GlyphData& rGlyphData = maGlyphList[rGlyph.maGlyphId & GF_IDXMASK];
     mnBytesUsed += sizeof( GlyphData );
-    InitGlyphData( aGlyphId, rGlyphData );
+    InitGlyphData(rGlyph, rGlyphData);
     GlyphCache::GetInstance().AddedGlyph( *this, rGlyphData );
     return rGlyphData.GetMetric();
 }
diff --git a/vcl/unx/generic/print/genpspgraphics.cxx b/vcl/unx/generic/print/genpspgraphics.cxx
index 213874d..f0859eb 100644
--- a/vcl/unx/generic/print/genpspgraphics.cxx
+++ b/vcl/unx/generic/print/genpspgraphics.cxx
@@ -760,9 +760,9 @@ void GenPspGraphics::GetFontMetric(ImplFontMetricDataRef& rxFontMetric, int nFal
         m_pFreetypeFont[nFallbackLevel]->GetFontMetric(rxFontMetric);
 }
 
-bool GenPspGraphics::GetGlyphBoundRect( sal_GlyphId aGlyphId, Rectangle& rRect )
+bool GenPspGraphics::GetGlyphBoundRect(const GlyphItem& rGlyph, Rectangle& rRect)
 {
-    const int nLevel = aGlyphId >> GF_FONTSHIFT;
+    const int nLevel = rGlyph.maGlyphId >> GF_FONTSHIFT;
     if( nLevel >= MAX_FALLBACK )
         return false;
 
@@ -770,16 +770,15 @@ bool GenPspGraphics::GetGlyphBoundRect( sal_GlyphId aGlyphId, Rectangle& rRect )
     if( !pSF )
         return false;
 
-    aGlyphId &= GF_IDXMASK;
-    const GlyphMetric& rGM = pSF->GetGlyphMetric( aGlyphId );
+    const GlyphMetric& rGM = pSF->GetGlyphMetric(rGlyph);
     rRect = Rectangle( rGM.GetOffset(), rGM.GetSize() );
     return true;
 }
 
-bool GenPspGraphics::GetGlyphOutline( sal_GlyphId aGlyphId,
+bool GenPspGraphics::GetGlyphOutline(const GlyphItem& rGlyph,
     basegfx::B2DPolyPolygon& rB2DPolyPoly )
 {
-    const int nLevel = aGlyphId >> GF_FONTSHIFT;
+    const int nLevel = rGlyph.maGlyphId >> GF_FONTSHIFT;
     if( nLevel >= MAX_FALLBACK )
         return false;
 
@@ -787,8 +786,7 @@ bool GenPspGraphics::GetGlyphOutline( sal_GlyphId aGlyphId,
     if( !pSF )
         return false;
 
-    aGlyphId &= GF_IDXMASK;
-    if( pSF->GetGlyphOutline( aGlyphId, rB2DPolyPoly ) )
+    if (pSF->GetGlyphOutline(rGlyph, rB2DPolyPoly))
         return true;
 
     return false;
diff --git a/vcl/win/gdi/salfont.cxx b/vcl/win/gdi/salfont.cxx
index fef9bbf..30f22e6 100644
--- a/vcl/win/gdi/salfont.cxx
+++ b/vcl/win/gdi/salfont.cxx
@@ -1354,7 +1354,7 @@ void WinSalGraphics::ClearDevFontCache()
     //anything to do here ?
 }
 
-bool WinSalGraphics::GetGlyphBoundRect( sal_GlyphId aGlyphId, Rectangle& rRect )
+bool WinSalGraphics::GetGlyphBoundRect(const GlyphItem& rGlyph, Rectangle& rRect)
 {
     HDC hDC = getHDC();
 
@@ -1365,12 +1365,11 @@ bool WinSalGraphics::GetGlyphBoundRect( sal_GlyphId aGlyphId, Rectangle& rRect )
 
     UINT nGGOFlags = GGO_METRICS;
     nGGOFlags |= GGO_GLYPH_INDEX;
-    aGlyphId &= GF_IDXMASK;
 
     GLYPHMETRICS aGM;
     aGM.gmptGlyphOrigin.x = aGM.gmptGlyphOrigin.y = 0;
     aGM.gmBlackBoxX = aGM.gmBlackBoxY = 0;
-    DWORD nSize = ::GetGlyphOutlineW( hDC, aGlyphId, nGGOFlags, &aGM, 0, nullptr, &aMat );
+    DWORD nSize = ::GetGlyphOutlineW(hDC, rGlyph.maGlyphId & GF_IDXMASK, nGGOFlags, &aGM, 0, nullptr, &aMat);
     if( nSize == GDI_ERROR )
         return false;
 
@@ -1383,7 +1382,7 @@ bool WinSalGraphics::GetGlyphBoundRect( sal_GlyphId aGlyphId, Rectangle& rRect )
     return true;
 }
 
-bool WinSalGraphics::GetGlyphOutline( sal_GlyphId aGlyphId,
+bool WinSalGraphics::GetGlyphOutline(const GlyphItem& rGlyph,
     basegfx::B2DPolyPolygon& rB2DPolyPoly )
 {
     rB2DPolyPoly.clear();
@@ -1397,17 +1396,16 @@ bool WinSalGraphics::GetGlyphOutline( sal_GlyphId aGlyphId,
 
     UINT nGGOFlags = GGO_NATIVE;
     nGGOFlags |= GGO_GLYPH_INDEX;
-    aGlyphId &= GF_IDXMASK;
 
     GLYPHMETRICS aGlyphMetrics;
-    const DWORD nSize1 = ::GetGlyphOutlineW( hDC, aGlyphId, nGGOFlags, &aGlyphMetrics, 0, nullptr, &aMat );
+    const DWORD nSize1 = ::GetGlyphOutlineW(hDC, rGlyph.maGlyphId & GF_IDXMASK, nGGOFlags, &aGlyphMetrics, 0, nullptr, &aMat);
     if( !nSize1 )       // blank glyphs are ok
         return true;
     else if( nSize1 == GDI_ERROR )
         return false;
 
     BYTE* pData = new BYTE[ nSize1 ];
-    const DWORD nSize2 = ::GetGlyphOutlineW( hDC, aGlyphId, nGGOFlags,
+    const DWORD nSize2 = ::GetGlyphOutlineW(hDC, rGlyph.maGlyphId & GF_IDXMASK, nGGOFlags,
               &aGlyphMetrics, nSize1, pData, &aMat );
 
     if( nSize1 != nSize2 )


More information about the Libreoffice-commits mailing list