summaryrefslogtreecommitdiff
path: root/vcl/unx/generic/print/genpspgraphics.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'vcl/unx/generic/print/genpspgraphics.cxx')
-rw-r--r--vcl/unx/generic/print/genpspgraphics.cxx61
1 files changed, 55 insertions, 6 deletions
diff --git a/vcl/unx/generic/print/genpspgraphics.cxx b/vcl/unx/generic/print/genpspgraphics.cxx
index 8c73ec149140..455f186613a9 100644
--- a/vcl/unx/generic/print/genpspgraphics.cxx
+++ b/vcl/unx/generic/print/genpspgraphics.cxx
@@ -54,6 +54,7 @@
#include "PhysicalFontFace.hxx"
#include "salbmp.hxx"
#include "salprn.hxx"
+#include "CommonSalLayout.hxx"
#include <config_graphite.h>
#if ENABLE_GRAPHITE
@@ -692,9 +693,45 @@ void PspServerFontLayout::InitFont() const
mnOrientation, mbVertical, mbArtItalic, mbArtBold );
}
+class PspCommonSalLayout : public CommonSalLayout
+{
+public:
+ PspCommonSalLayout(psp::PrinterGfx&, FreetypeFont& rFont);
+
+ virtual void InitFont() const override;
+
+private:
+ ::psp::PrinterGfx& mrPrinterGfx;
+ sal_IntPtr mnFontID;
+ int mnFontHeight;
+ int mnFontWidth;
+ bool mbVertical;
+ bool mbArtItalic;
+ bool mbArtBold;
+};
+
+PspCommonSalLayout::PspCommonSalLayout(::psp::PrinterGfx& rGfx, FreetypeFont& rFont)
+: CommonSalLayout(rFont)
+, mrPrinterGfx(rGfx)
+{
+ mnFontID = mrPrinterGfx.GetFontID();
+ mnFontHeight = mrPrinterGfx.GetFontHeight();
+ mnFontWidth = mrPrinterGfx.GetFontWidth();
+ mbVertical = mrPrinterGfx.GetFontVertical();
+ mbArtItalic = mrPrinterGfx.GetArtificialItalic();
+ mbArtBold = mrPrinterGfx.GetArtificialBold();
+}
+
+void PspCommonSalLayout::InitFont() const
+{
+ CommonSalLayout::InitFont();
+ mrPrinterGfx.SetFont(mnFontID, mnFontHeight, mnFontWidth,
+ mnOrientation, mbVertical, mbArtItalic, mbArtBold);
+}
+
static void DrawPrinterLayout( const SalLayout& rLayout, ::psp::PrinterGfx& rGfx, bool bIsPspServerFontLayout )
{
- const int nMaxGlyphs = 200;
+ const int nMaxGlyphs = 1;
sal_GlyphId aGlyphAry[ nMaxGlyphs ];
DeviceCoordinate aWidthAry[ nMaxGlyphs ];
sal_Int32 aIdxAry [ nMaxGlyphs ];
@@ -764,6 +801,11 @@ void GenPspGraphics::DrawServerFontLayout( const GenericSalLayout& rLayout, cons
DrawPrinterLayout( rLayout, *m_pPrinterGfx, true );
}
+void GenPspGraphics::DrawSalLayout(const CommonSalLayout& rLayout)
+{
+ DrawPrinterLayout(rLayout, *m_pPrinterGfx, false);
+}
+
const FontCharMapRef GenPspGraphics::GetFontCharMap() const
{
if( !m_pFreetypeFont[0] )
@@ -989,15 +1031,22 @@ SalLayout* GenPspGraphics::GetTextLayout( ImplLayoutArgs& rArgs, int nFallbackLe
if( m_pFreetypeFont[ nFallbackLevel ]
&& !(rArgs.mnFlags & SalLayoutFlags::DisableGlyphProcessing) )
{
-#if ENABLE_GRAPHITE
- // Is this a Graphite font?
- if (GraphiteServerFontLayout::IsGraphiteEnabledFont(*m_pFreetypeFont[nFallbackLevel]))
+ if (SalLayout::UseCommonLayout())
{
- pLayout = new GraphiteServerFontLayout(*m_pFreetypeFont[nFallbackLevel]);
+ pLayout = new PspCommonSalLayout(*m_pPrinterGfx, *m_pFreetypeFont[nFallbackLevel]);
}
else
+ {
+#if ENABLE_GRAPHITE
+ // Is this a Graphite font?
+ if (GraphiteServerFontLayout::IsGraphiteEnabledFont(*m_pFreetypeFont[nFallbackLevel]))
+ {
+ pLayout = new GraphiteServerFontLayout(*m_pFreetypeFont[nFallbackLevel]);
+ }
+ else
#endif
- pLayout = new PspServerFontLayout( *m_pPrinterGfx, *m_pFreetypeFont[nFallbackLevel], rArgs );
+ pLayout = new PspServerFontLayout( *m_pPrinterGfx, *m_pFreetypeFont[nFallbackLevel], rArgs );
+ }
}
else
pLayout = new PspFontLayout( *m_pPrinterGfx );