diff options
author | Vladimir Glazounov <vg@openoffice.org> | 2008-07-01 21:54:31 +0000 |
---|---|---|
committer | Vladimir Glazounov <vg@openoffice.org> | 2008-07-01 21:54:31 +0000 |
commit | 538883acd7e03bfe452479e495748ec20cb1a528 (patch) | |
tree | 4887a87f0dc55a881bd346e90abdf9cebcafdbbe | |
parent | 7055b132690aea4dcec7971f5c4b7dd2d91be130 (diff) |
INTEGRATION: CWS impress143 (1.20.52); FILE MERGED
2008/05/16 16:07:15 sj 1.20.52.1: #i85715# added patch (wmf/emf export of rtl text)
-rw-r--r-- | svtools/source/filter.vcl/wmf/emfwr.cxx | 41 |
1 files changed, 35 insertions, 6 deletions
diff --git a/svtools/source/filter.vcl/wmf/emfwr.cxx b/svtools/source/filter.vcl/wmf/emfwr.cxx index 080aa57d4e3b..df56afc4a250 100644 --- a/svtools/source/filter.vcl/wmf/emfwr.cxx +++ b/svtools/source/filter.vcl/wmf/emfwr.cxx @@ -7,7 +7,7 @@ * OpenOffice.org - a multi-platform office productivity suite * * $RCSfile: emfwr.cxx,v $ - * $Revision: 1.20 $ + * $Revision: 1.21 $ * * This file is part of OpenOffice.org. * @@ -148,6 +148,20 @@ #define FILL_SELECT 0x00000002 #define TEXT_SELECT 0x00000004 +/* Text Alignment Options */ +#define TA_NOUPDATECP 0 +#define TA_UPDATECP 1 + +#define TA_LEFT 0 +#define TA_RIGHT 2 +#define TA_CENTER 6 + +#define TA_TOP 0 +#define TA_BOTTOM 8 +#define TA_BASELINE 24 +#define TA_RTLREADING 256 +#define TA_MASK (TA_BASELINE+TA_CENTER+TA_UPDATECP+TA_RTLREADING) + // ------------- // - EMFWriter - // ------------- @@ -158,7 +172,7 @@ BOOL EMFWriter::WriteEMF( const GDIMetaFile& rMtf, SvStream& rOStm, FilterConfig mpHandlesUsed = new BOOL[ MAXHANDLES ]; memset( mpHandlesUsed, 0, MAXHANDLES * sizeof( BOOL ) ); - mnHandleCount = mnLastPercent = mnRecordPos = mnRecordCount = 0; + mnHorTextAlign = mnHandleCount = mnLastPercent = mnRecordPos = mnRecordCount = 0; mnLineHandle = mnFillHandle = mnTextHandle = HANDLE_INVALID; mbRecordOpen = FALSE; @@ -451,10 +465,11 @@ void EMFWriter::ImplCheckTextAttr() switch( rFont.GetAlign() ) { - case ALIGN_TOP: nTextAlign = 0; break; - case ALIGN_BOTTOM: nTextAlign = 8; break; - default: nTextAlign = 24; break; + case ALIGN_TOP: nTextAlign = TA_TOP; break; + case ALIGN_BOTTOM: nTextAlign = TA_BOTTOM; break; + default: nTextAlign = TA_BASELINE; break; } + nTextAlign |= mnHorTextAlign; ImplBeginRecord( WIN_EMR_SETTEXTALIGN ); (*mpStm) << nTextAlign; @@ -1267,6 +1282,21 @@ void EMFWriter::ImplWrite( const GDIMetaFile& rMtf ) } break; + case( META_LAYOUTMODE_ACTION ): + { + sal_uInt32 nLayoutMode = ( (MetaLayoutModeAction*) pAction )->GetLayoutMode(); + mnHorTextAlign = 0; + if (nLayoutMode & TEXT_LAYOUT_BIDI_RTL) + { + mnHorTextAlign = TA_RIGHT | TA_RTLREADING; + } + if (nLayoutMode & TEXT_LAYOUT_TEXTORIGIN_RIGHT) + mnHorTextAlign |= TA_RIGHT; + else if (nLayoutMode & TEXT_LAYOUT_TEXTORIGIN_LEFT) + mnHorTextAlign &= ~TA_RIGHT; + break; + } + case( META_MASK_ACTION ): case( META_MASKSCALE_ACTION ): case( META_MASKSCALEPART_ACTION ): @@ -1274,7 +1304,6 @@ void EMFWriter::ImplWrite( const GDIMetaFile& rMtf ) case( META_TEXTLINE_ACTION ): case( META_COMMENT_ACTION ): case( META_GRADIENTEX_ACTION ): - case( META_LAYOUTMODE_ACTION ): { // !!! >>> we don't want to support these actions } |