summaryrefslogtreecommitdiff
path: root/vcl/source/gdi/pdfwriter_impl.cxx
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/source/gdi/pdfwriter_impl.cxx
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/source/gdi/pdfwriter_impl.cxx')
-rw-r--r--vcl/source/gdi/pdfwriter_impl.cxx28
1 files changed, 2 insertions, 26 deletions
diff --git a/vcl/source/gdi/pdfwriter_impl.cxx b/vcl/source/gdi/pdfwriter_impl.cxx
index 9e8428f372a9..9ccdbd091125 100644
--- a/vcl/source/gdi/pdfwriter_impl.cxx
+++ b/vcl/source/gdi/pdfwriter_impl.cxx
@@ -2239,29 +2239,6 @@ OutputDevice* PDFWriterImpl::getReferenceDevice()
return m_pReferenceDevice;
}
-class ImplPdfBuiltinFontData : public PhysicalFontFace
-{
-private:
- const PDFWriterImpl::BuiltinFont& mrBuiltin;
-
-public:
- static int const PDF_FONT_MAGIC = int(0xBDFF0A1C);
- explicit ImplPdfBuiltinFontData( const PDFWriterImpl::BuiltinFont& );
- const PDFWriterImpl::BuiltinFont& GetBuiltinFont() const { return mrBuiltin; }
-
- virtual PhysicalFontFace* Clone() const override { return new ImplPdfBuiltinFontData(*this); }
- virtual ImplFontEntry* CreateFontInstance( FontSelectPattern& ) const override;
- virtual sal_IntPtr GetFontId() const override { return reinterpret_cast<sal_IntPtr>(&mrBuiltin); }
-};
-
-inline const ImplPdfBuiltinFontData* GetPdfFontData( const PhysicalFontFace* pFontData )
-{
- const ImplPdfBuiltinFontData* pFD = nullptr;
- if( pFontData && pFontData->CheckMagic( ImplPdfBuiltinFontData::PDF_FONT_MAGIC ) )
- pFD = static_cast<const ImplPdfBuiltinFontData*>( pFontData );
- return pFD;
-}
-
static ImplFontAttributes GetDevFontAttributes( const PDFWriterImpl::BuiltinFont& rBuiltin )
{
ImplFontAttributes aDFA;
@@ -2283,7 +2260,7 @@ static ImplFontAttributes GetDevFontAttributes( const PDFWriterImpl::BuiltinFont
}
ImplPdfBuiltinFontData::ImplPdfBuiltinFontData( const PDFWriterImpl::BuiltinFont& rBuiltin )
-: PhysicalFontFace( GetDevFontAttributes(rBuiltin), PDF_FONT_MAGIC ),
+: PhysicalFontFace( GetDevFontAttributes(rBuiltin) ),
mrBuiltin( rBuiltin )
{}
@@ -2938,9 +2915,8 @@ bool PDFWriterImpl::emitTilings()
return true;
}
-sal_Int32 PDFWriterImpl::emitBuiltinFont( const PhysicalFontFace* pFont, sal_Int32 nFontObject )
+sal_Int32 PDFWriterImpl::emitBuiltinFont( const ImplPdfBuiltinFontData* pFD, sal_Int32 nFontObject )
{
- const ImplPdfBuiltinFontData* pFD = GetPdfFontData( pFont );
if( !pFD )
return 0;
const BuiltinFont& rBuiltinFont = pFD->GetBuiltinFont();