[Libreoffice-commits] core.git: Branch 'libreoffice-5-0' - vcl/win
Tor Lillqvist
tml at collabora.com
Wed Dec 16 12:28:32 PST 2015
vcl/win/source/gdi/winlayout.cxx | 5 +++++
vcl/win/source/gdi/winlayout.hxx | 1 +
2 files changed, 6 insertions(+)
New commits:
commit f295adc5e5cc11134883a6d7dd50c1c8322c8139
Author: Tor Lillqvist <tml at collabora.com>
Date: Tue Dec 1 15:13:17 2015 +0200
tdf#95194: We need to set the GF flags in UniscribeLayout::GetNextGlyphs()
The old SimpleWinLayout::GetNextGlyphs() did it.
PDFWriterImpl::drawVerticalGlyphs() expects GF_ROTL etc to be set when
necessary for vertical text when exporting to PDF.
Change-Id: I1971dd2784efa3cd7274a32a51f61fdf197ec81a
Reviewed-on: https://gerrit.libreoffice.org/20329
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Miklos Vajna <vmiklos at collabora.co.uk>
diff --git a/vcl/win/source/gdi/winlayout.cxx b/vcl/win/source/gdi/winlayout.cxx
index 3f5a78c..d1515a1 100644
--- a/vcl/win/source/gdi/winlayout.cxx
+++ b/vcl/win/source/gdi/winlayout.cxx
@@ -700,6 +700,8 @@ UniscribeLayout::~UniscribeLayout()
bool UniscribeLayout::LayoutText( ImplLayoutArgs& rArgs )
{
+ msTheString = OUString(rArgs.mpStr, rArgs.mnLength);
+
// for a base layout only the context glyphs have to be dropped
// => when the whole string is involved there is no extra context
typedef std::vector<int> TIntVector;
@@ -1401,6 +1403,9 @@ int UniscribeLayout::GetNextGlyphs( int nLen, sal_GlyphId* pGlyphs, Point& rPos,
}
// update return values
+ if( (mnLayoutFlags & SalLayoutFlags::Vertical) &&
+ nCharPos != -1 )
+ aGlyphId |= GetVerticalFlags( msTheString[nCharPos] );
*(pGlyphs++) = aGlyphId;
if( pGlyphAdvances )
*(pGlyphAdvances++) = nGlyphWidth;
diff --git a/vcl/win/source/gdi/winlayout.hxx b/vcl/win/source/gdi/winlayout.hxx
index d558d4cc..87c9f01 100644
--- a/vcl/win/source/gdi/winlayout.hxx
+++ b/vcl/win/source/gdi/winlayout.hxx
@@ -110,6 +110,7 @@ private:
// string specific info
// everything is in logical order
+ OUString msTheString; // Sadly we need it in GetNextGlyphs(), to be able to call GetVerticalFlags()
int mnCharCapacity;
WORD* mpLogClusters; // map from absolute_char_pos to relative_glyph_pos
int* mpCharWidths; // map from absolute_char_pos to char_width
More information about the Libreoffice-commits
mailing list