diff options
author | Chris Sherlock <chris.sherlock79@gmail.com> | 2016-01-01 17:52:50 +1100 |
---|---|---|
committer | Chris Sherlock <chris.sherlock79@gmail.com> | 2016-01-01 18:51:23 +0000 |
commit | 264e6c04afaff96dda6cd510c1da90bb519a1f66 (patch) | |
tree | 8ad63fa1ad70136ee105b91a054f128bd4522281 /vcl/inc | |
parent | 820eeba6772a356cf57b9d1f4d114122f6a63abb (diff) |
vcl: remove poor-man's RTTI in PhysicalFontFace
The *only* things relying on the in-built magic number are PDFFontCache
and PDFWriterImpl. PDFWriterImpl::emitBuiltinFont has as its first
parameter a const PhysicalFontFace*, but this is only called upon by
PDFWriterImpl::emitFonts, which instantiates an ImplPdfBuiltinFontData
object from a built-in font map... so basically it is always guaranteed
to get a ImplPdfBuiltinFontData object. ImplPdfBuiltinFontData derives
from PhysicalFontFace, so to prevent the need to check the class being
used is a ImplPdfBuiltinFontData, just make emitBuiltinFont require as
it's first parameter ImplPdfBuiltinFontData!
Unfortunately, we can't get around RTTI completely, because
PDFFontCache::FontIdentifier requires a way of distinguishing between
two different PhysicalFontFaces...
Change-Id: I74c8cd294580bbecd12dd2427ac405f97a7e7f7e
Reviewed-on: https://gerrit.libreoffice.org/21030
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Chris Sherlock <chris.sherlock79@gmail.com>
Diffstat (limited to 'vcl/inc')
-rw-r--r-- | vcl/inc/PhysicalFontFace.hxx | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/vcl/inc/PhysicalFontFace.hxx b/vcl/inc/PhysicalFontFace.hxx index bb0b9002d36b..06a8fe23d1f2 100644 --- a/vcl/inc/PhysicalFontFace.hxx +++ b/vcl/inc/PhysicalFontFace.hxx @@ -66,33 +66,29 @@ public: class VCL_PLUGIN_PUBLIC PhysicalFontFace : public ImplFontAttributes { public: + virtual ~PhysicalFontFace() {} + // by using an PhysicalFontFace object as a factory for its corresponding // ImplFontEntry an ImplFontEntry can be extended to cache device and // font instance specific data virtual ImplFontEntry* CreateFontInstance( FontSelectPattern& ) const = 0; + virtual PhysicalFontFace* Clone() const = 0; int GetHeight() const { return mnHeight; } int GetWidth() const { return mnWidth; } virtual sal_IntPtr GetFontId() const = 0; - int GetFontMagic() const { return mnMagic; } bool IsScalable() const { return (mnHeight == 0); } - bool CheckMagic( int n ) const { return (n == mnMagic); } bool IsBetterMatch( const FontSelectPattern&, FontMatchStatus& ) const; sal_Int32 CompareWithSize( const PhysicalFontFace& ) const; sal_Int32 CompareIgnoreSize( const PhysicalFontFace& ) const; - virtual ~PhysicalFontFace() {} - virtual PhysicalFontFace* Clone() const = 0; protected: - explicit PhysicalFontFace( const ImplFontAttributes&, int nMagic ); + explicit PhysicalFontFace( const ImplFontAttributes& ); void SetBitmapSize( int nW, int nH ) { mnWidth=nW; mnHeight=nH; } long mnWidth; // Width (in pixels) long mnHeight; // Height (in pixels) - -private: - const int mnMagic; // poor man's RTTI }; #endif // INCLUDED_VCL_INC_PHYSICALFONTFACE_HXX |