diff options
author | Tor Lillqvist <tml@collabora.com> | 2016-01-07 15:05:58 +0200 |
---|---|---|
committer | Tor Lillqvist <tml@collabora.com> | 2016-01-21 10:04:04 +0000 |
commit | 4622689fad7ddff72cd08da9611ccfacdb0aa7bd (patch) | |
tree | 69799d69d624d09e4809f05f13b04466f7f3be2a /vcl/inc/win/salgdi.h | |
parent | 88b458d55dc1f56e13bbf34aa7c6758e13707fa1 (diff) |
tdf#96420: Re-introduce SimpleWinLayout
Should fix lots of the problems with glyph layout. The UniscribeLayout
class turned out to be much less correct that one might have hoped.
Use OpenGL glyph caching also for SimpleWinLayout to avoid performance
decrease.
Change-Id: Ia0cf2f5c1ff21b9347fa7662ded69abc347e77b7
Reviewed-on: https://gerrit.libreoffice.org/21656
Reviewed-by: Tor Lillqvist <tml@collabora.com>
Tested-by: Tor Lillqvist <tml@collabora.com>
Diffstat (limited to 'vcl/inc/win/salgdi.h')
-rw-r--r-- | vcl/inc/win/salgdi.h | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/vcl/inc/win/salgdi.h b/vcl/inc/win/salgdi.h index d90e429051bb..a889b45dca27 100644 --- a/vcl/inc/win/salgdi.h +++ b/vcl/inc/win/salgdi.h @@ -186,6 +186,7 @@ class WinSalGraphics : public SalGraphics friend class ScopedFont; friend class OpenGLCompatibleDC; friend class WinLayout; + friend class SimpleWinLayout; friend class UniscribeLayout; protected: @@ -213,6 +214,9 @@ private: RGNDATA* mpClipRgnData; // ClipRegion-Data RGNDATA* mpStdClipRgnData; // Cache Standard-ClipRegion-Data ImplFontAttrCache* mpFontAttrCache; // Cache font attributes from files in so/share/fonts + bool mbFontKernInit; // FALSE: FontKerns must be queried + KERNINGPAIR* mpFontKernPairs; // Kerning Pairs of the current Font + sal_uIntPtr mnFontKernPairCount;// Number of Kerning Pairs of the current Font int mnPenWidth; // Linienbreite public: @@ -329,6 +333,12 @@ protected: const SalBitmap* pAlphaBitmap) override; virtual bool drawAlphaRect( long nX, long nY, long nWidth, long nHeight, sal_uInt8 nTransparency ) override; +private: + // local helpers + + // get kernign pairs of the current font + sal_uLong GetKernPairs(); + public: // public SalGraphics methods, the interface to the independent vcl part @@ -448,7 +458,7 @@ void ImplGetLogFontFromFontSelect( HDC, const FontSelectPattern*, #define MAX_64KSALPOINTS ((((sal_uInt16)0xFFFF)-8)/sizeof(POINTS)) // #102411# Win's GCP mishandles kerning => we need to do it ourselves -// kerning pairs is sorted by +// SalGraphicsData::mpFontKernPairs is sorted by inline bool ImplCmpKernData( const KERNINGPAIR& a, const KERNINGPAIR& b ) { if( a.wFirst < b.wFirst ) |