summaryrefslogtreecommitdiffstats
path: root/emfio/inc/mtftools.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'emfio/inc/mtftools.hxx')
-rw-r--r--emfio/inc/mtftools.hxx537
1 files changed, 336 insertions, 201 deletions
diff --git a/emfio/inc/mtftools.hxx b/emfio/inc/mtftools.hxx
index 84a012f183d6..f5638af59ecb 100644
--- a/emfio/inc/mtftools.hxx
+++ b/emfio/inc/mtftools.hxx
@@ -16,9 +16,7 @@
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
-
-#ifndef INCLUDED_EMFIO_INC_MTFTOOLS_HXX
-#define INCLUDED_EMFIO_INC_MTFTOOLS_HXX
+#pragma once
#include <config_options.h>
#include <basegfx/utils/b2dclipstate.hxx>
@@ -32,51 +30,60 @@
#include "emfiodllapi.h"
-#define ERROR 0
-#define NULLREGION 1
-#define COMPLEXREGION 3
-
-#define RGN_AND 1
-#define RGN_OR 2
-#define RGN_XOR 3
-#define RGN_DIFF 4
-#define RGN_COPY 5
-
namespace emfio
{
- enum class BkMode
+ /* [MS-EMF] - v20210625 - pages 43, 107 */
+ enum class RegionMode : sal_uInt32
+ {
+ RGN_AND = 0x01,
+ RGN_OR = 0x02,
+ RGN_XOR = 0x03,
+ RGN_DIFF = 0x04,
+ RGN_COPY = 0x05
+ };
+
+ /* [MS-EMF] - v20210625 - pages 40, 198 */
+ enum class BackgroundMode : sal_uInt32
{
NONE = 0,
Transparent = 1,
OPAQUE = 2,
};
-}
-/* xform stuff */
-#define MWT_IDENTITY 1
-#define MWT_LEFTMULTIPLY 2
-#define MWT_RIGHTMULTIPLY 3
-#define MWT_SET 4
-
-#define ENHMETA_STOCK_OBJECT 0x80000000
-
-/* Stock Logical Objects */
-#define WHITE_BRUSH 0
-#define LTGRAY_BRUSH 1
-#define GRAY_BRUSH 2
-#define DKGRAY_BRUSH 3
-#define BLACK_BRUSH 4
-#define NULL_BRUSH 5
-#define WHITE_PEN 6
-#define BLACK_PEN 7
-#define NULL_PEN 8
-#define ANSI_FIXED_FONT 11
-#define ANSI_VAR_FONT 12
-#define SYSTEM_FIXED_FONT 16
+ /* [MS-EMF] - v20210625 - pages 40, 210 */
+ /* xform stuff */
+ enum class ModifyWorldTransformMode : sal_uInt32
+ {
+ MWT_IDENTITY = 0x01,
+ MWT_LEFTMULTIPLY = 0x02,
+ MWT_RIGHTMULTIPLY = 0x03,
+ MWT_SET = 0x04
+ };
+
+ constexpr sal_uInt32 ENHMETA_STOCK_OBJECT = 0x80000000;
-namespace emfio
-{
- enum class WMFRasterOp {
+ /* [MS-EMF] - v20210625 - pages 44, 45, 182 */
+ /* Stock Logical Objects */
+ enum class StockObject : sal_uInt32
+ {
+ WHITE_BRUSH = 0,
+ LTGRAY_BRUSH = 1,
+ GRAY_BRUSH = 2,
+ DKGRAY_BRUSH = 3,
+ BLACK_BRUSH = 4,
+ NULL_BRUSH = 5,
+ WHITE_PEN = 6,
+ BLACK_PEN = 7,
+ NULL_PEN = 8,
+ ANSI_FIXED_FONT = 11,
+ ANSI_VAR_FONT = 12,
+ SYSTEM_FIXED_FONT = 16
+ };
+
+ /* Note: This enum is incomplete compared to the specification */
+ /* [MS-WMF] - v20210625 - pages 25-26 */
+ enum class WMFRasterOp : sal_uInt16
+ {
NONE = 0,
Black = 1,
Not = 6,
@@ -84,35 +91,48 @@ namespace emfio
Nop = 11,
CopyPen = 13
};
-}
-/* Mapping modes */
-#define MM_TEXT 1
-#define MM_LOMETRIC 2
-#define MM_HIMETRIC 3
-#define MM_LOENGLISH 4
-#define MM_HIENGLISH 5
-#define MM_TWIPS 6
-#define MM_ISOTROPIC 7
-#define MM_ANISOTROPIC 8
-
-/* Graphics modes */
-#define GM_COMPATIBLE 1
-#define GM_ADVANCED 2
-
-/* StretchBlt() modes */
-#define BLACKONWHITE 1
-#define WHITEONBLACK 2
-#define COLORONCOLOR 3
-#define HALFTONE 4
-#define STRETCH_ANDSCANS BLACKONWHITE
-#define STRETCH_ORSCANS WHITEONBLACK
-#define STRETCH_DELETESCANS COLORONCOLOR
-
-#define LF_FACESIZE 32
+ /* Note: We have MapMode elsewhere, so we use MappingMode instead */
+ /* [MS-EMF] - v20210625 - pages 38-50, 202 */
+ /* Mapping modes */
+ enum MappingMode : sal_uInt32
+ {
+ MM_TEXT = 0x01,
+ MM_LOMETRIC = 0x02,
+ MM_HIMETRIC = 0x03,
+ MM_LOENGLISH = 0x04,
+ MM_HIENGLISH = 0x05,
+ MM_TWIPS = 0x06,
+ MM_ISOTROPIC = 0x07,
+ MM_ANISOTROPIC = 0x08
+ };
+
+ /* Note: No type is specified, but 32-bit unsigned is used to provide
+ * to match the number of bits in the binary literal, and also the
+ * previous definition of SetGfxMode() and GetGfxMode() functions */
+ /* [MS-EMF] - v20210625 - pages 35 */
+ /* Graphics modes */
+ enum class GraphicsMode : sal_uInt32
+ {
+ GM_COMPATIBLE = 0x00000001,
+ GM_ADVANCED = 0x00000002
+ } ;
+
+ /* [MS-WMF] - v20210625 - pages 46 */
+ /* StretchBlt() modes */
+ enum class StretchMode : sal_uInt16
+ {
+ BLACKONWHITE = 0x0001,
+ WHITEONBLACK = 0x0002,
+ COLORONCOLOR = 0x0003,
+ HALFTONE = 0x0004,
+ STRETCH_ANDSCANS = BLACKONWHITE,
+ STRETCH_ORSCANS = WHITEONBLACK,
+ STRETCH_DELETESCANS = COLORONCOLOR
+ };
+
+ constexpr sal_Int32 LF_FACESIZE = 32;
-namespace emfio
-{
struct LOGFONTW
{
sal_Int32 lfHeight;
@@ -146,120 +166,167 @@ namespace emfio
{
}
};
-}
-#define TA_NOUPDATECP 0x0000
-#define TA_UPDATECP 0x0001
-#define TA_LEFT 0x0000
-#define TA_RIGHT 0x0002
-#define TA_CENTER 0x0006
-#define TA_RIGHT_CENTER (TA_RIGHT | TA_CENTER)
-#define TA_TOP 0x0000
-#define TA_BOTTOM 0x0008
-#define TA_BASELINE 0x0018
-
-#define SRCCOPY 0x00CC0020L
-#define SRCPAINT 0x00EE0086L
-#define SRCAND 0x008800C6L
-#define SRCINVERT 0x00660046L
-#define SRCERASE 0x00440328L
-#define PATCOPY 0x00F00021L
-#define PATINVERT 0x005A0049L
-#define BLACKNESS 0x00000042L
-#define WHITENESS 0x00FF0062L
-
-#define PS_SOLID 0
-#define PS_DASH 1
-#define PS_DOT 2
-#define PS_DASHDOT 3
-#define PS_DASHDOTDOT 4
-#define PS_NULL 5
-#define PS_INSIDEFRAME 6
-#define PS_STYLE_MASK 15
-
-#define PS_ENDCAP_ROUND 0x000
-#define PS_ENDCAP_SQUARE 0x100
-#define PS_ENDCAP_FLAT 0x200
-#define PS_ENDCAP_STYLE_MASK 0xF00
-
-#define PS_JOIN_ROUND 0x0000
-#define PS_JOIN_BEVEL 0x1000
-#define PS_JOIN_MITER 0x2000
-#define PS_JOIN_STYLE_MASK 0xF000
-
-#define ANSI_CHARSET 0
-#define DEFAULT_CHARSET 1
-#define SYMBOL_CHARSET 2
-#define SHIFTJIS_CHARSET 128
-#define HANGEUL_CHARSET 129
-#define GB2312_CHARSET 134
-#define CHINESEBIG5_CHARSET 136
-#define OEM_CHARSET 255
-/*WINVER >= 0x0400*/
-#define JOHAB_CHARSET 130
-#define HEBREW_CHARSET 177
-#define ARABIC_CHARSET 178
-#define GREEK_CHARSET 161
-#define TURKISH_CHARSET 162
-#define VIETNAMESE_CHARSET 163
-#define THAI_CHARSET 222
-#define EASTEUROPE_CHARSET 238
-#define RUSSIAN_CHARSET 204
-#define MAC_CHARSET 77
-#define BALTIC_CHARSET 186
-
-#define ETO_OPAQUE 0x0002
-#define ETO_CLIPPED 0x0004
-/*WINVER >= 0x0400*/
-#define ETO_GLYPH_INDEX 0x0010
-#define ETO_RTLREADING 0x0080
-/*_WIN32_WINNT >= 0x0500*/
-#define ETO_NO_RECT 0x0100
-#define ETO_PDY 0x2000
-
-#define DEFAULT_PITCH 0x00
-#define FIXED_PITCH 0x01
-#define VARIABLE_PITCH 0x02
-
-/* Font Families */
-#define FF_DONTCARE 0x00
-#define FF_ROMAN 0x10
-#define FF_SWISS 0x20
-#define FF_MODERN 0x30
-#define FF_SCRIPT 0x40
-#define FF_DECORATIVE 0x50
-
-#define FW_THIN 100
-#define FW_EXTRALIGHT 200
-#define FW_LIGHT 300
-#define FW_NORMAL 400
-#define FW_MEDIUM 500
-#define FW_SEMIBOLD 600
-#define FW_BOLD 700
-#define FW_EXTRABOLD 800
-#define FW_ULTRALIGHT 200
-#define FW_ULTRABOLD 800
-#define FW_BLACK 900
-
-#define BS_SOLID 0
-#define BS_NULL 1
-#define BS_HOLLOW 1
-#define BS_HATCHED 2
-#define BS_PATTERN 3
-#define BS_INDEXED 4
-#define BS_DIBPATTERN 5
-#define BS_DIBPATTERNPT 6
-#define BS_PATTERN8X8 7
-#define BS_DIBPATTERN8X8 8
-#define BS_MONOPATTERN 9
-
-#define RDH_RECTANGLES 1
-#define W_MFCOMMENT 15
-#define PRIVATE_ESCAPE_UNICODE 2
-
-//Scalar constants
-#define UNDOCUMENTED_WIN_RCL_RELATION 32
-#define MS_FIXPOINT_BITCOUNT_28_4 4
+ /* [MS-WMF] - v20210625 - pages 153 */
+ enum TextAlignmentMode : sal_uInt16
+ {
+ TA_NOUPDATECP = 0x0000,
+ TA_UPDATECP = 0x0001,
+ TA_LEFT = 0x0000,
+ TA_RIGHT = 0x0002,
+ TA_CENTER = 0x0006,
+ TA_RIGHT_CENTER = (TA_RIGHT | TA_CENTER),
+ TA_TOP = 0x0000,
+ TA_BOTTOM = 0x0008,
+ // In [MS-WMF] 2.1.2.3, TA_BASELINE value is wrong.
+ // It is 0x0018 and it should be 0x0010.
+ TA_BASELINE = 0x0010,
+ TA_RTLREADING = 0x0100
+ };
+
+ /* Note: This enum is incomplete compared to the specification */
+ /* [MS-EMF] - v20210625 - pages 47-50, 126 */
+ /* Ternary raster operations */
+ enum TernaryRasterOperation : sal_uInt32
+ {
+ SRCCOPY = 0x00CC0020L,
+ SRCPAINT = 0x00EE0086L,
+ SRCAND = 0x008800C6L,
+ SRCINVERT = 0x00660046L,
+ SRCERASE = 0x00440328L,
+ PATCOPY = 0x00F00021L,
+ PATINVERT = 0x005A0049L,
+ BLACKNESS = 0x00000042L,
+ WHITENESS = 0x00FF0062L
+ };
+
+ /* [MS-EMF] - v20210625 - pages 40, 41, 65 */
+ enum PenStyle : sal_uInt32
+ {
+ PS_COSMETIC = 0x00000000,
+ PS_SOLID = 0x00000000,
+ PS_DASH = 0x00000001,
+ PS_DOT = 0x00000002,
+ PS_DASHDOT = 0x00000003,
+ PS_DASHDOTDOT = 0x00000004,
+ PS_NULL = 0x00000005,
+ PS_INSIDEFRAME = 0x00000006,
+ PS_USERSTYLE = 0x00000007,
+ PS_ALTERNATE = 0x00000008,
+ PS_STYLE_MASK = 0x0000000F,
+
+ PS_ENDCAP_ROUND = 0x00000000,
+ PS_ENDCAP_SQUARE = 0x00000100,
+ PS_ENDCAP_FLAT = 0x00000200,
+ PS_ENDCAP_STYLE_MASK = 0x00000F00,
+
+ PS_JOIN_ROUND = 0x00000000,
+ PS_JOIN_BEVEL = 0x00001000,
+ PS_JOIN_MITER = 0x00002000,
+ PS_JOIN_STYLE_MASK = 0x0000F000,
+
+ PS_GEOMETRIC = 0x00010000
+ };
+
+ /* [MS-WMF] - v20210625 - pages 30, 82 */
+ /* Character Sets */
+ enum CharacterSet : sal_uInt8
+ {
+ ANSI_CHARSET = 0x00000000,
+ DEFAULT_CHARSET = 0x00000001,
+ SYMBOL_CHARSET = 0x00000002,
+ SHIFTJIS_CHARSET = 0x00000080,
+ HANGUL_CHARSET = 0x00000081,
+ GB2312_CHARSET = 0x00000086,
+ CHINESEBIG5_CHARSET = 0x00000088,
+ OEM_CHARSET = 0x000000FF,
+ /* WINVER >= 0x0400 */
+ MAC_CHARSET = 0x0000004D,
+ JOHAB_CHARSET = 0x00000082,
+ GREEK_CHARSET = 0x000000A1,
+ TURKISH_CHARSET = 0x000000A2,
+ VIETNAMESE_CHARSET = 0x000000A3,
+ HEBREW_CHARSET = 0x000000B1,
+ ARABIC_CHARSET = 0x000000B2,
+ BALTIC_CHARSET = 0x000000BA,
+ RUSSIAN_CHARSET = 0x000000CC,
+ THAI_CHARSET = 0x000000DE,
+ EASTEUROPE_CHARSET = 0x000000EE
+ };
+
+ /* Note: This enum is incomplete compared to the specification */
+ /* [MS-EMF] - v20210625 - pages 32, 283 */
+ enum ExtTextOutOptions : sal_uInt32
+ {
+ ETO_OPAQUE = 0x0002,
+ ETO_CLIPPED = 0x0004,
+ /* WINVER >= 0x0400 */
+ ETO_GLYPH_INDEX = 0x0010,
+ ETO_RTLREADING = 0x0080,
+ /* _WIN32_WINNT >= 0x0500 */
+ ETO_NO_RECT = 0x0100,
+ ETO_PDY = 0x2000
+ };
+
+ /* [MS-WMF] - v20210625 - pages 44, 96 */
+ /* This is packed into a byte as 2 bits */
+ enum PitchFont : sal_uInt8
+ {
+ DEFAULT_PITCH = 0,
+ FIXED_PITCH = 1,
+ VARIABLE_PITCH = 2
+ };
+
+ /* [MS-WMF] - v20210625 - pages 33, */
+ enum FamilyFont : sal_uInt8
+ {
+ FF_DONTCARE = 0x00,
+ FF_ROMAN = 0x01,
+ FF_SWISS = 0x02,
+ FF_MODERN = 0x03,
+ FF_SCRIPT = 0x04,
+ FF_DECORATIVE = 0x05
+ };
+
+ enum WeightFont
+ {
+ FW_THIN = 100,
+ FW_EXTRALIGHT = 200,
+ FW_LIGHT = 300,
+ FW_NORMAL = 400,
+ FW_MEDIUM = 500,
+ FW_SEMIBOLD = 600,
+ FW_BOLD = 700,
+ FW_EXTRABOLD = 800,
+ FW_ULTRALIGHT = 200,
+ FW_ULTRABOLD = 800,
+ FW_BLACK = 900
+ };
+
+ /* [MS-WMF] - v20210625 - pages 29, 30, 182 */
+ enum class BrushStyle : sal_uInt16
+ {
+ BS_SOLID = 0,
+ BS_NULL = 1,
+ BS_HOLLOW = 1,
+ BS_HATCHED = 2,
+ BS_PATTERN = 3,
+ BS_INDEXED = 4,
+ BS_DIBPATTERN = 5,
+ BS_DIBPATTERNPT = 6,
+ BS_PATTERN8X8 = 7,
+ BS_DIBPATTERN8X8 = 8,
+ BS_MONOPATTERN = 9
+ };
+
+ constexpr sal_Int32 RDH_RECTANGLES = 1;
+ constexpr sal_Int32 W_MFCOMMENT = 15;
+ constexpr sal_Int32 PRIVATE_ESCAPE_UNICODE = 2;
+
+ //Scalar constants
+ constexpr sal_Int32 UNDOCUMENTED_WIN_RCL_RELATION = 32;
+ constexpr sal_Int32 MS_FIXPOINT_BITCOUNT_28_4 = 4;
+}
//============================ WmfReader ==================================
@@ -272,7 +339,7 @@ namespace emfio
public:
WinMtfClipPath() : maClip() {};
- void setClipPath(const basegfx::B2DPolyPolygon&, sal_Int32 nClippingMode);
+ void setClipPath(const basegfx::B2DPolyPolygon&, RegionMode nClippingMode);
void intersectClip(const basegfx::B2DPolyPolygon& rPolyPolygon);
void excludeClip(const basegfx::B2DPolyPolygon& rPolyPolygon);
void moveClipRegion(const Size& rSize);
@@ -320,7 +387,7 @@ namespace emfio
GDIObj & operator =(GDIObj const &) = default;
};
- struct UNLESS_MERGELIBS(EMFIO_DLLPUBLIC) WinMtfFontStyle final : GDIObj
+ struct EMFIO_DLLPUBLIC WinMtfFontStyle final : GDIObj
{
vcl::Font aFont;
@@ -397,11 +464,75 @@ namespace emfio
, bTransparent(bTrans)
{}
- WinMtfLineStyle(const Color& rColor, const LineInfo& rStyle, bool bTrans)
+ WinMtfLineStyle(const Color& rColor, const sal_uInt32 nStyle, const sal_Int32 nPenWidth)
: aLineColor(rColor)
- , aLineInfo(rStyle)
- , bTransparent(bTrans)
- {}
+ {
+ // According to documentation: nStyle = PS_COSMETIC = 0x0 - line with a width of one logical unit and a style that is a solid color
+ // tdf#140271 Based on observed behaviour the line width is not constant with PS_COSMETIC
+
+ // Width 0 means default width for LineInfo (HairLine) with 1 pixel wide
+ aLineInfo.SetWidth(nPenWidth);
+ switch (nStyle & PS_STYLE_MASK)
+ {
+ case PS_DASHDOTDOT:
+ aLineInfo.SetStyle(LineStyle::Dash);
+ aLineInfo.SetDashCount(1);
+ aLineInfo.SetDotCount(2);
+ break;
+ case PS_DASHDOT:
+ aLineInfo.SetStyle(LineStyle::Dash);
+ aLineInfo.SetDashCount(1);
+ aLineInfo.SetDotCount(1);
+ break;
+ case PS_DOT:
+ aLineInfo.SetStyle(LineStyle::Dash);
+ aLineInfo.SetDashCount(0);
+ aLineInfo.SetDotCount(1);
+ break;
+ case PS_DASH:
+ aLineInfo.SetStyle(LineStyle::Dash);
+ aLineInfo.SetDashCount(1);
+ aLineInfo.SetDotCount(0);
+ break;
+ case PS_NULL:
+ aLineInfo.SetStyle(LineStyle::NONE);
+ break;
+ case PS_INSIDEFRAME: // TODO Implement PS_INSIDEFRAME
+ case PS_SOLID:
+ default:
+ aLineInfo.SetStyle(LineStyle::Solid);
+ }
+ if (nPenWidth)
+ switch (nStyle & PS_ENDCAP_STYLE_MASK)
+ {
+ case PS_ENDCAP_ROUND:
+ aLineInfo.SetLineCap(css::drawing::LineCap_ROUND);
+ break;
+ case PS_ENDCAP_SQUARE:
+ aLineInfo.SetLineCap(css::drawing::LineCap_SQUARE);
+ break;
+ case PS_ENDCAP_FLAT:
+ default:
+ aLineInfo.SetLineCap(css::drawing::LineCap_BUTT);
+ }
+ else
+ aLineInfo.SetLineCap(css::drawing::LineCap_BUTT);
+ switch (nStyle & PS_JOIN_STYLE_MASK)
+ {
+ case PS_JOIN_ROUND:
+ aLineInfo.SetLineJoin(basegfx::B2DLineJoin::Round);
+ break;
+ case PS_JOIN_BEVEL:
+ aLineInfo.SetLineJoin(basegfx::B2DLineJoin::Bevel);
+ break;
+ // Undocumented but based on experiments with MS Paint and MS Word,
+ // the default Join Style is PS_JOIN_MITER
+ case PS_JOIN_MITER:
+ default:
+ aLineInfo.SetLineJoin(basegfx::B2DLineJoin::Miter);
+ }
+ bTransparent = aLineInfo.GetStyle() == LineStyle::NONE;
+ }
bool operator==(const WinMtfLineStyle& rStyle) const
{
@@ -434,8 +565,9 @@ namespace emfio
struct SaveStruct
{
- BkMode nBkMode;
- sal_uInt32 nMapMode, nGfxMode;
+ BackgroundMode nBkMode;
+ MappingMode eMapMode;
+ GraphicsMode eGfxMode;
vcl::text::ComplexTextLayoutFlags nTextLayoutMode;
sal_Int32 nWinOrgX, nWinOrgY, nWinExtX, nWinExtY;
sal_Int32 nDevOrgX, nDevOrgY, nDevWidth, nDevHeight;
@@ -454,6 +586,7 @@ namespace emfio
WinMtfClipPath maClipPath;
XForm aXForm;
+ bool bClockWiseArcDirection;
bool bFillStyleSelected;
};
@@ -524,8 +657,8 @@ namespace emfio
Color maBkColor;
vcl::text::ComplexTextLayoutFlags mnLatestTextLayoutMode;
vcl::text::ComplexTextLayoutFlags mnTextLayoutMode;
- BkMode mnLatestBkMode;
- BkMode mnBkMode;
+ BackgroundMode mnLatestBkMode;
+ BackgroundMode mnBkMode;
RasterOp meLatestRasterOp;
RasterOp meRasterOp;
@@ -534,8 +667,8 @@ namespace emfio
WMFRasterOp mnRop;
std::vector< std::shared_ptr<SaveStruct> > mvSaveStack;
- sal_uInt32 mnGfxMode;
- sal_uInt32 mnMapMode;
+ GraphicsMode meGfxMode;
+ MappingMode meMapMode;
XForm maXForm;
sal_Int32 mnDevOrgX;
@@ -565,6 +698,7 @@ namespace emfio
ScaledFontDetectCorrectHelper maScaledFontHelper;
bool mbNopMode : 1;
+ bool mbClockWiseArcDirection : 1;
bool mbFillStyleSelected : 1;
bool mbClipNeedsUpdate : 1;
bool mbComplexClip : 1;
@@ -597,6 +731,7 @@ namespace emfio
void ScaleDevExt(double fX, double fY);
void SetWinOrg(const Point& rPoint, bool bIsEMF = false);
+ Point GetWinOrg() { return Point(mnWinOrgX, mnWinOrgY); }
void SetWinOrgOffset(sal_Int32 nX, sal_Int32 nY);
void SetWinExt(const Size& rSize, bool bIsEMF = false);
void ScaleWinExt(double fX, double fY);
@@ -606,9 +741,9 @@ namespace emfio
void SetRefPix(const Size& rSize);
void SetRefMill(const Size& rSize);
- void SetMapMode(sal_uInt32 mnMapMode);
+ void SetMapMode(MappingMode mnMapMode);
void SetWorldTransform(const XForm& rXForm);
- void ModifyWorldTransform(const XForm& rXForm, sal_uInt32 nMode);
+ void ModifyWorldTransform(const XForm& rXForm, ModifyWorldTransformMode nMode);
void Push();
void Pop( const sal_Int32 nSavedDC = -1 );
@@ -616,9 +751,11 @@ namespace emfio
WMFRasterOp SetRasterOp(WMFRasterOp nRasterOp);
void StrokeAndFillPath(bool bStroke, bool bFill);
- void SetGfxMode(sal_Int32 nGfxMode) { mnGfxMode = nGfxMode; };
- sal_Int32 GetGfxMode() const { return mnGfxMode; };
- void SetBkMode(BkMode nMode);
+ void SetArcDirection(bool bCounterClockWise);
+ bool IsArcDirectionClockWise() { return mbClockWiseArcDirection; };
+ void SetGfxMode(GraphicsMode nGfxMode) { meGfxMode = nGfxMode; };
+ GraphicsMode GetGfxMode() const { return meGfxMode; };
+ void SetBkMode(BackgroundMode nMode);
void SetBkColor(const Color& rColor);
void SetTextColor(const Color& rColor);
void SetTextAlign(sal_uInt32 nAlign);
@@ -672,10 +809,10 @@ namespace emfio
);
void DrawText(Point& rPosition,
OUString const & rString,
- std::vector<sal_Int32>* pDXArry = nullptr,
+ KernArray* pDXArry = nullptr,
tools::Long* pDYArry = nullptr,
bool bRecordPath = false,
- sal_Int32 nGraphicsMode = GM_COMPATIBLE);
+ GraphicsMode nGraphicsMode = GraphicsMode::GM_COMPATIBLE);
void ResolveBitmapActions(std::vector<BSaveStruct>& rSaveList);
@@ -684,7 +821,7 @@ namespace emfio
void MoveClipRegion(const Size& rSize);
void SetClipPath(
const tools::PolyPolygon& rPolyPoly,
- sal_Int32 nClippingMode,
+ RegionMode nClippingMode,
bool bIsMapped
);
void SetDefaultClipPath();
@@ -701,6 +838,4 @@ namespace emfio
};
}
-#endif
-
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */