summaryrefslogtreecommitdiff
path: root/vcl/inc
diff options
context:
space:
mode:
authorChris Sherlock <chris.sherlock79@gmail.com>2016-01-01 17:52:50 +1100
committerChris Sherlock <chris.sherlock79@gmail.com>2016-01-01 18:51:23 +0000
commit264e6c04afaff96dda6cd510c1da90bb519a1f66 (patch)
tree8ad63fa1ad70136ee105b91a054f128bd4522281 /vcl/inc
parent820eeba6772a356cf57b9d1f4d114122f6a63abb (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.hxx12
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