LibreOffice Module emfio (master) 1
mtftools.hxx
Go to the documentation of this file.
1/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2/*
3 * This file is part of the LibreOffice project.
4 *
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 *
9 * This file incorporates work covered by the following license notice:
10 *
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 */
19#pragma once
20
21#include <config_options.h>
23#include <tools/poly.hxx>
24#include <vcl/font.hxx>
25#include <vcl/bitmapex.hxx>
26#include <vcl/lineinfo.hxx>
28#include <vcl/metaact.hxx>
29#include <rtl/ref.hxx>
30
31#include "emfiodllapi.h"
32
33namespace emfio
34{
35 /* [MS-EMF] - v20210625 - pages 43, 107 */
36 enum class RegionMode : sal_uInt32
37 {
38 RGN_AND = 0x01,
39 RGN_OR = 0x02,
40 RGN_XOR = 0x03,
41 RGN_DIFF = 0x04,
42 RGN_COPY = 0x05
43 };
44
45 /* [MS-EMF] - v20210625 - pages 40, 198 */
46 enum class BackgroundMode : sal_uInt32
47 {
48 NONE = 0,
49 Transparent = 1,
50 OPAQUE = 2,
51 };
52
53 /* [MS-EMF] - v20210625 - pages 40, 210 */
54 /* xform stuff */
55 enum class ModifyWorldTransformMode : sal_uInt32
56 {
57 MWT_IDENTITY = 0x01,
58 MWT_LEFTMULTIPLY = 0x02,
59 MWT_RIGHTMULTIPLY = 0x03,
60 MWT_SET = 0x04
61 };
62
63 constexpr sal_uInt32 ENHMETA_STOCK_OBJECT = 0x80000000;
64
65 /* [MS-EMF] - v20210625 - pages 44, 45, 182 */
66 /* Stock Logical Objects */
67 enum class StockObject : sal_uInt32
68 {
69 WHITE_BRUSH = 0,
70 LTGRAY_BRUSH = 1,
71 GRAY_BRUSH = 2,
72 DKGRAY_BRUSH = 3,
73 BLACK_BRUSH = 4,
74 NULL_BRUSH = 5,
75 WHITE_PEN = 6,
76 BLACK_PEN = 7,
77 NULL_PEN = 8,
78 ANSI_FIXED_FONT = 11,
79 ANSI_VAR_FONT = 12,
81 };
82
83 /* Note: This enum is incomplete compared to the specification */
84 /* [MS-WMF] - v20210625 - pages 25-26 */
85 enum class WMFRasterOp : sal_uInt16
86 {
87 NONE = 0,
88 Black = 1,
89 Not = 6,
90 XorPen = 7,
91 Nop = 11,
92 CopyPen = 13
93 };
94
95 /* Note: We have MapMode elsewhere, so we use MappingMode instead */
96 /* [MS-EMF] - v20210625 - pages 38-50, 202 */
97 /* Mapping modes */
98 enum MappingMode : sal_uInt32
99 {
100 MM_TEXT = 0x01,
105 MM_TWIPS = 0x06,
107 MM_ANISOTROPIC = 0x08
108 };
109
110 /* Note: No type is specified, but 32-bit unsigned is used to provide
111 * to match the number of bits in the binary literal, and also the
112 * previous definition of SetGfxMode() and GetGfxMode() functions */
113 /* [MS-EMF] - v20210625 - pages 35 */
114 /* Graphics modes */
115 enum class GraphicsMode : sal_uInt32
116 {
117 GM_COMPATIBLE = 0x00000001,
118 GM_ADVANCED = 0x00000002
119 } ;
120
121 /* [MS-WMF] - v20210625 - pages 46 */
122 /* StretchBlt() modes */
123 enum class StretchMode : sal_uInt16
124 {
125 BLACKONWHITE = 0x0001,
126 WHITEONBLACK = 0x0002,
127 COLORONCOLOR = 0x0003,
128 HALFTONE = 0x0004,
132 };
133
134 constexpr sal_Int32 LF_FACESIZE = 32;
135
136 struct LOGFONTW
137 {
138 sal_Int32 lfHeight;
139 sal_Int32 lfWidth;
140 sal_Int32 lfEscapement;
141 sal_Int32 lfOrientation;
142 sal_Int32 lfWeight;
151 OUString alfFaceName;
153 : lfHeight(0)
154 , lfWidth(0)
155 , lfEscapement(0)
156 , lfOrientation(0)
157 , lfWeight(0)
158 , lfItalic(0)
159 , lfUnderline(0)
160 , lfStrikeOut(0)
161 , lfCharSet(0)
162 , lfOutPrecision(0)
163 , lfClipPrecision(0)
164 , lfQuality(0)
166 {
167 }
168 };
169
170 /* [MS-WMF] - v20210625 - pages 153 */
171 enum TextAlignmentMode : sal_uInt16
172 {
174 TA_UPDATECP = 0x0001,
175 TA_LEFT = 0x0000,
176 TA_RIGHT = 0x0002,
177 TA_CENTER = 0x0006,
179 TA_TOP = 0x0000,
180 TA_BOTTOM = 0x0008,
181 // In [MS-WMF] 2.1.2.3, TA_BASELINE value is wrong.
182 // It is 0x0018 and it should be 0x0010.
183 TA_BASELINE = 0x0010,
184 TA_RTLREADING = 0x0100
185 };
186
187 /* Note: This enum is incomplete compared to the specification */
188 /* [MS-EMF] - v20210625 - pages 47-50, 126 */
189 /* Ternary raster operations */
190 enum TernaryRasterOperation : sal_uInt32
191 {
192 SRCCOPY = 0x00CC0020L,
193 SRCPAINT = 0x00EE0086L,
194 SRCAND = 0x008800C6L,
195 SRCINVERT = 0x00660046L,
196 SRCERASE = 0x00440328L,
197 PATCOPY = 0x00F00021L,
198 PATINVERT = 0x005A0049L,
199 BLACKNESS = 0x00000042L,
200 WHITENESS = 0x00FF0062L
201 };
202
203 /* [MS-EMF] - v20210625 - pages 40, 41, 65 */
204 enum PenStyle : sal_uInt32
205 {
206 PS_COSMETIC = 0x00000000,
207 PS_SOLID = 0x00000000,
208 PS_DASH = 0x00000001,
209 PS_DOT = 0x00000002,
210 PS_DASHDOT = 0x00000003,
211 PS_DASHDOTDOT = 0x00000004,
212 PS_NULL = 0x00000005,
213 PS_INSIDEFRAME = 0x00000006,
214 PS_USERSTYLE = 0x00000007,
215 PS_ALTERNATE = 0x00000008,
216 PS_STYLE_MASK = 0x0000000F,
217
218 PS_ENDCAP_ROUND = 0x00000000,
219 PS_ENDCAP_SQUARE = 0x00000100,
220 PS_ENDCAP_FLAT = 0x00000200,
222
223 PS_JOIN_ROUND = 0x00000000,
224 PS_JOIN_BEVEL = 0x00001000,
225 PS_JOIN_MITER = 0x00002000,
226 PS_JOIN_STYLE_MASK = 0x0000F000,
227
228 PS_GEOMETRIC = 0x00010000
229 };
230
231 /* [MS-WMF] - v20210625 - pages 30, 82 */
232 /* Character Sets */
234 {
235 ANSI_CHARSET = 0x00000000,
236 DEFAULT_CHARSET = 0x00000001,
237 SYMBOL_CHARSET = 0x00000002,
238 SHIFTJIS_CHARSET = 0x00000080,
239 HANGUL_CHARSET = 0x00000081,
240 GB2312_CHARSET = 0x00000086,
242 OEM_CHARSET = 0x000000FF,
243 /* WINVER >= 0x0400 */
244 MAC_CHARSET = 0x0000004D,
245 JOHAB_CHARSET = 0x00000082,
246 GREEK_CHARSET = 0x000000A1,
247 TURKISH_CHARSET = 0x000000A2,
248 VIETNAMESE_CHARSET = 0x000000A3,
249 HEBREW_CHARSET = 0x000000B1,
250 ARABIC_CHARSET = 0x000000B2,
251 BALTIC_CHARSET = 0x000000BA,
252 RUSSIAN_CHARSET = 0x000000CC,
253 THAI_CHARSET = 0x000000DE,
254 EASTEUROPE_CHARSET = 0x000000EE
255 };
256
257 /* Note: This enum is incomplete compared to the specification */
258 /* [MS-EMF] - v20210625 - pages 32, 283 */
259 enum ExtTextOutOptions : sal_uInt32
260 {
261 ETO_OPAQUE = 0x0002,
262 ETO_CLIPPED = 0x0004,
263 /* WINVER >= 0x0400 */
266 /* _WIN32_WINNT >= 0x0500 */
267 ETO_NO_RECT = 0x0100,
268 ETO_PDY = 0x2000
269 };
270
271 /* [MS-WMF] - v20210625 - pages 44, 96 */
272 /* This is packed into a byte as 2 bits */
274 {
278 };
279
280 /* [MS-WMF] - v20210625 - pages 33, */
282 {
284 FF_ROMAN = 0x01,
285 FF_SWISS = 0x02,
286 FF_MODERN = 0x03,
287 FF_SCRIPT = 0x04,
288 FF_DECORATIVE = 0x05
289 };
290
292 {
293 FW_THIN = 100,
295 FW_LIGHT = 300,
299 FW_BOLD = 700,
303 FW_BLACK = 900
304 };
305
306 /* [MS-WMF] - v20210625 - pages 29, 30, 182 */
307 enum class BrushStyle : sal_uInt16
308 {
309 BS_SOLID = 0,
310 BS_NULL = 1,
311 BS_HOLLOW = 1,
312 BS_HATCHED = 2,
313 BS_PATTERN = 3,
314 BS_INDEXED = 4,
315 BS_DIBPATTERN = 5,
316 BS_DIBPATTERNPT = 6,
317 BS_PATTERN8X8 = 7,
320 };
321
322 constexpr sal_Int32 RDH_RECTANGLES = 1;
323 constexpr sal_Int32 W_MFCOMMENT = 15;
324 constexpr sal_Int32 PRIVATE_ESCAPE_UNICODE = 2;
325
326 //Scalar constants
327 constexpr sal_Int32 UNDOCUMENTED_WIN_RCL_RELATION = 32;
328 constexpr sal_Int32 MS_FIXPOINT_BITCOUNT_28_4 = 4;
329}
330
331//============================ WmfReader ==================================
332
333namespace emfio
334{
336 {
338
339 public:
341
342 void setClipPath(const basegfx::B2DPolyPolygon&, RegionMode nClippingMode);
343 void intersectClip(const basegfx::B2DPolyPolygon& rPolyPolygon);
344 void excludeClip(const basegfx::B2DPolyPolygon& rPolyPolygon);
345 void moveClipRegion(const Size& rSize);
346 void setDefaultClipPath();
347
348 bool isEmpty() const { return maClip.isCleared(); }
349
350 basegfx::utils::B2DClipState const & getClip() const { return maClip; }
351 basegfx::B2DPolyPolygon const & getClipPath() const;
352
353 bool operator==(const WinMtfClipPath& rPath) const
354 {
355 return maClip == rPath.maClip;
356 };
357 };
358
360 {
362
363 public:
364
366 bClosed(true)
367 {}
368
369 void Init()
370 {
371 Clear();
372 bClosed = true;
373 }
374
375 void ClosePath();
376 void AddPoint(const Point& rPoint);
377 void AddPolygon(const tools::Polygon& rPoly);
378 void AddPolyLine(const tools::Polygon& rPoly);
379 void AddPolyPolygon(const tools::PolyPolygon& rPolyPolygon);
380 };
381
383 {
384 GDIObj() = default;
385 GDIObj(GDIObj const &) = default;
386 virtual ~GDIObj() = default; // Polymorphic base class
387 GDIObj & operator =(GDIObj const &) = default;
388 };
389
391 {
393
394 explicit WinMtfFontStyle(LOGFONTW const & rLogFont);
395 };
396
398 {
400 };
401
402 struct WinMtfFillStyle final : GDIObj
403 {
408
411 , bTransparent(false)
413 {}
414
415 WinMtfFillStyle(const Color& rColor, bool bTrans = false)
416 : aFillColor(rColor)
417 , bTransparent(bTrans)
419 {}
420
421 explicit WinMtfFillStyle(Bitmap const & rBmp)
422 : bTransparent(false)
424 , aBmp(rBmp)
425 {}
426
427 bool operator==(const WinMtfFillStyle& rStyle) const
428 {
429 return aFillColor == rStyle.aFillColor
430 && bTransparent == rStyle.bTransparent
431 && aType == rStyle.aType;
432 }
433 };
434
435
436 struct WinMtfPalette final : GDIObj
437 {
438 std::vector< Color > aPaletteColors;
439
441 : aPaletteColors(std::vector< Color >{})
442 {}
443
444 WinMtfPalette(const std::vector< Color > rPaletteColors)
445 : aPaletteColors(rPaletteColors)
446 {}
447
448 };
449
450
451 struct WinMtfLineStyle final : GDIObj
452 {
456
459 , bTransparent(false)
460 {}
461
462 WinMtfLineStyle(const Color& rColor, bool bTrans = false)
463 : aLineColor(rColor)
464 , bTransparent(bTrans)
465 {}
466
467 WinMtfLineStyle(const Color& rColor, const sal_uInt32 nStyle, const sal_Int32 nPenWidth)
468 : aLineColor(rColor)
469 {
470 // According to documentation: nStyle = PS_COSMETIC = 0x0 - line with a width of one logical unit and a style that is a solid color
471 // tdf#140271 Based on observed behaviour the line width is not constant with PS_COSMETIC
472
473 // Width 0 means default width for LineInfo (HairLine) with 1 pixel wide
474 aLineInfo.SetWidth(nPenWidth);
475 switch (nStyle & PS_STYLE_MASK)
476 {
477 case PS_DASHDOTDOT:
478 aLineInfo.SetStyle(LineStyle::Dash);
481 break;
482 case PS_DASHDOT:
483 aLineInfo.SetStyle(LineStyle::Dash);
486 break;
487 case PS_DOT:
488 aLineInfo.SetStyle(LineStyle::Dash);
491 break;
492 case PS_DASH:
493 aLineInfo.SetStyle(LineStyle::Dash);
496 break;
497 case PS_NULL:
498 aLineInfo.SetStyle(LineStyle::NONE);
499 break;
500 case PS_INSIDEFRAME: // TODO Implement PS_INSIDEFRAME
501 case PS_SOLID:
502 default:
503 aLineInfo.SetStyle(LineStyle::Solid);
504 }
505 if (nPenWidth)
506 switch (nStyle & PS_ENDCAP_STYLE_MASK)
507 {
508 case PS_ENDCAP_ROUND:
509 aLineInfo.SetLineCap(css::drawing::LineCap_ROUND);
510 break;
511 case PS_ENDCAP_SQUARE:
512 aLineInfo.SetLineCap(css::drawing::LineCap_SQUARE);
513 break;
514 case PS_ENDCAP_FLAT:
515 default:
516 aLineInfo.SetLineCap(css::drawing::LineCap_BUTT);
517 }
518 else
519 aLineInfo.SetLineCap(css::drawing::LineCap_BUTT);
520 switch (nStyle & PS_JOIN_STYLE_MASK)
521 {
522 case PS_JOIN_ROUND:
524 break;
525 case PS_JOIN_BEVEL:
527 break;
528 // Undocumented but based on experiments with MS Paint and MS Word,
529 // the default Join Style is PS_JOIN_MITER
530 case PS_JOIN_MITER:
531 default:
533 }
534 bTransparent = aLineInfo.GetStyle() == LineStyle::NONE;
535 }
536
537 bool operator==(const WinMtfLineStyle& rStyle) const
538 {
539 return aLineColor == rStyle.aLineColor
540 && bTransparent == rStyle.bTransparent
541 && aLineInfo == rStyle.aLineInfo;
542 }
543 };
544
545 struct XForm
546 {
547 float eM11;
548 float eM12;
549 float eM21;
550 float eM22;
551 float eDx;
552 float eDy;
553
555 : eM11(1.0f)
556 , eM12(0.0f)
557 , eM21(0.0f)
558 , eM22(1.0f)
559 , eDx(0.0f)
560 , eDy(0.0f)
561 {}
562 };
563
564 SvStream& operator >> (SvStream& rInStream, XForm& rXForm);
565
567 {
574
577
581 sal_uInt32 nTextAlign;
583
588
591 };
592
594 {
597 sal_uInt32 nWinRop;
598 bool m_bForceAlpha = false;
599
600 BSaveStruct(const Bitmap& rBmp, const tools::Rectangle& rOutRect, sal_uInt32 nRop)
601 : aBmpEx(rBmp)
602 , aOutRect(rOutRect)
603 , nWinRop(nRop)
604 {}
605
606 BSaveStruct(const BitmapEx& rBmpEx, const tools::Rectangle& rOutRect, sal_uInt32 nRop,
607 bool bForceAlpha = false)
608 : aBmpEx(rBmpEx)
609 , aOutRect(rOutRect)
610 , nWinRop(nRop)
611 , m_bForceAlpha(bForceAlpha)
612 {}
613 };
614
615 // tdf#127471 implement detection and correction of wrongly scaled
616 // fonts in own-written, old (before this fix) EMF/WMF files
618 {
619 private:
621 std::vector<double> maAlternativeFontScales;
622 std::vector<std::pair<rtl::Reference<MetaFontAction>, double>> maPositiveIdentifiedCases;
623 std::vector<std::pair<rtl::Reference<MetaFontAction>, double>> maNegativeIdentifiedCases;
624
625 public:
628 void newCurrentMetaFontAction(const rtl::Reference<MetaFontAction>& rNewMetaFontAction);
629 void evaluateAlternativeFontScale(OUString const & rText, tools::Long nImportedTextLength);
631 };
632
634 {
635 MtfTools(MtfTools const &) = delete;
636 MtfTools& operator =(MtfTools const &) = delete;
637
638 protected:
641
649
653 sal_uInt32 mnTextAlign;
664
665 std::vector< std::unique_ptr<GDIObj> > mvGDIObj;
668 std::vector< std::shared_ptr<SaveStruct> > mvSaveStack;
669
672
674 sal_Int32 mnDevOrgX;
675 sal_Int32 mnDevOrgY;
676 sal_Int32 mnDevWidth;
677 sal_Int32 mnDevHeight;
678 sal_Int32 mnWinOrgX;
679 sal_Int32 mnWinOrgY;
680 sal_Int32 mnWinExtX;
681 sal_Int32 mnWinExtY;
682
683 sal_Int32 mnPixX; // Reference Device in pixel
684 sal_Int32 mnPixY; // Reference Device in pixel
685 sal_Int32 mnMillX; // Reference Device in Mill
686 sal_Int32 mnMillY; // Reference Device in Mill
689
691
692 SvStream* mpInputStream; // the WMF/EMF file to be read
693 sal_uInt32 mnStartPos;
694 sal_uInt32 mnEndPos;
695 std::vector<BSaveStruct> maBmpSaveList;
696
697 // tdf#127471 always try to detect - only used with ScaledText
699
700 bool mbNopMode : 1;
707
708 void UpdateLineStyle();
709 void UpdateFillStyle();
710
711 Point ImplMap(const Point& rPt);
712 Point ImplScale(const Point& rPt);
713 Size ImplMap(const Size& rSize, bool bDoWorldTransform = true);
714 tools::Rectangle ImplMap(const tools::Rectangle& rRectangle);
715 void ImplMap(vcl::Font& rFont);
718 void ImplScale(tools::Polygon& rPolygon);
720 void ImplResizeObjectArry(sal_uInt32 nNewEntry);
722 void ImplDrawClippedPolyPolygon(const tools::PolyPolygon& rPolyPoly);
723 void ImplDrawBitmap(const Point& rPos, const Size& rSize, const BitmapEx& rBitmap);
724
725 public:
726
727 void SetDevByWin(); //Hack to set varying defaults for incompletely defined files.
728 void SetDevOrg(const Point& rPoint);
729 void SetDevOrgOffset(sal_Int32 nXAdd, sal_Int32 nYAdd);
730 void SetDevExt(const Size& rSize, bool regular = true);
731 void ScaleDevExt(double fX, double fY);
732
733 void SetWinOrg(const Point& rPoint, bool bIsEMF = false);
735 void SetWinOrgOffset(sal_Int32 nX, sal_Int32 nY);
736 void SetWinExt(const Size& rSize, bool bIsEMF = false);
737 void ScaleWinExt(double fX, double fY);
738
739 void SetrclBounds(const tools::Rectangle& rRect);
740 void SetrclFrame(const tools::Rectangle& rRect);
741 void SetRefPix(const Size& rSize);
742 void SetRefMill(const Size& rSize);
743
744 void SetMapMode(MappingMode mnMapMode);
745 void SetWorldTransform(const XForm& rXForm);
746 void ModifyWorldTransform(const XForm& rXForm, ModifyWorldTransformMode nMode);
747
748 void Push();
749 void Pop( const sal_Int32 nSavedDC = -1 );
750
752 void StrokeAndFillPath(bool bStroke, bool bFill);
753
754 void SetArcDirection(bool bCounterClockWise);
756 void SetGfxMode(GraphicsMode nGfxMode) { meGfxMode = nGfxMode; };
757 GraphicsMode GetGfxMode() const { return meGfxMode; };
758 void SetBkMode(BackgroundMode nMode);
759 void SetBkColor(const Color& rColor);
760 void SetTextColor(const Color& rColor);
761 void SetTextAlign(sal_uInt32 nAlign);
762
763 void CreateObject(std::unique_ptr<GDIObj> pObject);
764 void CreateObjectIndexed(sal_uInt32 nIndex, std::unique_ptr<GDIObj> pObject);
765 void CreateObject();
766
767 void DeleteObject(sal_uInt32 nIndex);
768 void SelectObject(sal_uInt32 nIndex);
769 rtl_TextEncoding GetCharSet() const { return maFont.GetCharSet(); };
770 const vcl::Font& GetFont() const { return maFont; }
772
773 void ClearPath() { maPathObj.Init(); };
775 const tools::PolyPolygon& GetPathObj() const { return maPathObj; };
776
777 void MoveTo(const Point& rPoint, bool bRecordPath = false);
778 void LineTo(const Point& rPoint, bool bRecordPath = false);
779 void DrawPixel(const Point& rSource, const Color& rColor);
780 void DrawRect(const tools::Rectangle& rRect, bool bEdge = true);
781 void DrawRectWithBGColor(const tools::Rectangle& rRect);
782 void DrawRoundRect(const tools::Rectangle& rRect, const Size& rSize);
783 void DrawEllipse(const tools::Rectangle& rRect);
784 void DrawArc(
785 const tools::Rectangle& rRect,
786 const Point& rStartAngle,
787 const Point& rEndAngle,
788 bool bDrawTo = false
789 );
790 void DrawPie(
791 const tools::Rectangle& rRect,
792 const Point& rStartAngle,
793 const Point& rEndAngle
794 );
795 void DrawChord(
796 const tools::Rectangle& rRect,
797 const Point& rStartAngle,
798 const Point& rEndAngle
799 );
800 void DrawPolygon(tools::Polygon rPolygon, bool bRecordPath);
801 void DrawPolyPolygon(tools::PolyPolygon& rPolyPolygon, bool bRecordPath = false);
802 void DrawPolyLine(tools::Polygon rPolygon,
803 bool bDrawTo = false,
804 bool bRecordPath = false
805 );
806 void DrawPolyBezier(tools::Polygon rPolygon,
807 bool bDrawTo,
808 bool bRecordPath
809 );
810 void DrawText(Point& rPosition,
811 OUString const & rString,
812 KernArray* pDXArry = nullptr,
813 tools::Long* pDYArry = nullptr,
814 bool bRecordPath = false,
816
817 void ResolveBitmapActions(std::vector<BSaveStruct>& rSaveList);
818
819 void IntersectClipRect(const tools::Rectangle& rRect);
820 void ExcludeClipRect(const tools::Rectangle& rRect);
821 void MoveClipRegion(const Size& rSize);
822 void SetClipPath(
823 const tools::PolyPolygon& rPolyPoly,
824 RegionMode nClippingMode,
825 bool bIsMapped
826 );
827 void SetDefaultClipPath();
828 void UpdateClipRegion();
829 void AddFromGDIMetaFile(GDIMetaFile& rGDIMetaFile);
830
831 void PassEMFPlus(void const * pBuffer, sal_uInt32 nLength);
833
835
836 explicit MtfTools(GDIMetaFile& rGDIMetaFile, SvStream& rStreamWMF);
837 ~MtfTools() COVERITY_NOEXCEPT_FALSE;
838 };
839}
840
841/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
RasterOp
void SetDashCount(sal_uInt16 nDashCount)
LineStyle GetStyle() const
void SetDotCount(sal_uInt16 nDotCount)
void SetWidth(double nWidth)
void SetLineJoin(basegfx::B2DLineJoin eLineJoin)
void SetLineCap(css::drawing::LineCap eLineCap)
void SetStyle(LineStyle eStyle)
void AddFromGDIMetaFile(GDIMetaFile &rGDIMetaFile)
Definition: mtftools.cxx:2484
WMFRasterOp mnRop
Definition: mtftools.hxx:667
void DrawChord(const tools::Rectangle &rRect, const Point &rStartAngle, const Point &rEndAngle)
Definition: mtftools.cxx:1465
void PassEMFPlus(void const *pBuffer, sal_uInt32 nLength)
Definition: mtftools.cxx:2522
MappingMode meMapMode
Definition: mtftools.hxx:671
Point ImplScale(const Point &rPt)
Definition: mtftools.cxx:501
void DrawPolygon(tools::Polygon rPolygon, bool bRecordPath)
Definition: mtftools.cxx:1488
void CreateObject()
Definition: mtftools.cxx:991
WinMtfFillStyle maLatestFillStyle
Definition: mtftools.hxx:645
bool IsArcDirectionClockWise()
Definition: mtftools.hxx:755
const vcl::Font & GetFont() const
Definition: mtftools.hxx:770
WinMtfFillStyle maFillStyle
Definition: mtftools.hxx:646
Color ReadColor()
Definition: mtftools.cxx:481
void SetMapMode(MappingMode mnMapMode)
Definition: mtftools.cxx:2259
GraphicsMode GetGfxMode() const
Definition: mtftools.hxx:757
void ScaleDevExt(double fX, double fY)
Definition: mtftools.cxx:2167
void LineTo(const Point &rPoint, bool bRecordPath=false)
Definition: mtftools.cxx:1308
GDIMetaFile * mpGDIMetaFile
Definition: mtftools.hxx:690
vcl::Font maFont
Definition: mtftools.hxx:651
WinMtfClipPath maClipPath
Definition: mtftools.hxx:640
WinMtfPalette maPalette
Definition: mtftools.hxx:648
void ScaleWinExt(double fX, double fY)
Definition: mtftools.cxx:2231
void SetArcDirection(bool bCounterClockWise)
Definition: mtftools.cxx:862
void SetDevOrg(const Point &rPoint)
Definition: mtftools.cxx:2130
WMFRasterOp SetRasterOp(WMFRasterOp nRasterOp)
Definition: mtftools.cxx:1205
void UpdateClipRegion()
Definition: mtftools.cxx:1137
void SetWinExt(const Size &rSize, bool bIsEMF=false)
Definition: mtftools.cxx:2205
sal_Int32 mnWinExtY
Definition: mtftools.hxx:681
sal_Int32 mnDevOrgX
Definition: mtftools.hxx:674
void DrawEllipse(const tools::Rectangle &rRect)
Definition: mtftools.cxx:1391
void SetTextAlign(sal_uInt32 nAlign)
Definition: mtftools.cxx:883
void SetWorldTransform(const XForm &rXForm)
Definition: mtftools.cxx:2280
GraphicsMode meGfxMode
Definition: mtftools.hxx:670
void DrawPolyLine(tools::Polygon rPolygon, bool bDrawTo=false, bool bRecordPath=false)
Definition: mtftools.cxx:1594
sal_Int32 mnMillX
Definition: mtftools.hxx:685
void ImplResizeObjectArry(sal_uInt32 nNewEntry)
Definition: mtftools.cxx:888
void SetClipPath(const tools::PolyPolygon &rPolyPoly, RegionMode nClippingMode, bool bIsMapped)
Definition: mtftools.cxx:1039
void SetrclBounds(const tools::Rectangle &rRect)
Definition: mtftools.cxx:2237
WinMtfLineStyle maLineStyle
Definition: mtftools.hxx:643
void UpdateFillStyle()
Definition: mtftools.cxx:1193
void StrokeAndFillPath(bool bStroke, bool bFill)
Definition: mtftools.cxx:1252
sal_Int32 mnDevWidth
Definition: mtftools.hxx:676
void IntersectClipRect(const tools::Rectangle &rRect)
Definition: mtftools.cxx:1007
vcl::text::ComplexTextLayoutFlags mnTextLayoutMode
Definition: mtftools.hxx:659
std::vector< BSaveStruct > maBmpSaveList
Definition: mtftools.hxx:695
void CreateObjectIndexed(sal_uInt32 nIndex, std::unique_ptr< GDIObj > pObject)
Definition: mtftools.cxx:954
Color maLatestBkColor
Definition: mtftools.hxx:656
void SetDefaultClipPath()
Definition: mtftools.cxx:1056
void PassEMFPlusHeaderInfo()
Definition: mtftools.cxx:2489
bool mbFillStyleSelected
Definition: mtftools.hxx:702
void SetDevExt(const Size &rSize, bool regular=true)
Definition: mtftools.cxx:2142
void UpdateLineStyle()
Definition: mtftools.cxx:1184
std::vector< std::unique_ptr< GDIObj > > mvGDIObj
Definition: mtftools.hxx:665
BackgroundMode mnBkMode
Definition: mtftools.hxx:661
sal_Int32 mnPixY
Definition: mtftools.hxx:684
sal_Int32 mnDevHeight
Definition: mtftools.hxx:677
void SetrclFrame(const tools::Rectangle &rRect)
Definition: mtftools.cxx:2242
void ResolveBitmapActions(std::vector< BSaveStruct > &rSaveList)
Definition: mtftools.cxx:1883
bool mbClipNeedsUpdate
Definition: mtftools.hxx:703
const tools::PolyPolygon & GetPathObj() const
Definition: mtftools.hxx:775
SvStream * mpInputStream
Definition: mtftools.hxx:692
void ClosePath()
Definition: mtftools.hxx:774
void SetRefMill(const Size &rSize)
Definition: mtftools.cxx:2253
sal_uInt32 mnEndPos
Definition: mtftools.hxx:694
sal_Int32 mnWinOrgX
Definition: mtftools.hxx:678
void SetWinOrgOffset(sal_Int32 nX, sal_Int32 nY)
Definition: mtftools.cxx:2184
void DrawPie(const tools::Rectangle &rRect, const Point &rStartAngle, const Point &rEndAngle)
Definition: mtftools.cxx:1442
void SetWinOrg(const Point &rPoint, bool bIsEMF=false)
Definition: mtftools.cxx:2173
sal_Int32 mnMillY
Definition: mtftools.hxx:686
void ClearPath()
Definition: mtftools.hxx:773
void MoveTo(const Point &rPoint, bool bRecordPath=false)
Definition: mtftools.cxx:1294
void ModifyWorldTransform(const XForm &rXForm, ModifyWorldTransformMode nMode)
Definition: mtftools.cxx:2290
tools::Rectangle mrclFrame
Definition: mtftools.hxx:687
void DrawPolyPolygon(tools::PolyPolygon &rPolyPolygon, bool bRecordPath=false)
Definition: mtftools.cxx:1561
void DrawText(Point &rPosition, OUString const &rString, KernArray *pDXArry=nullptr, tools::Long *pDYArry=nullptr, bool bRecordPath=false, GraphicsMode nGraphicsMode=GraphicsMode::GM_COMPATIBLE)
Definition: mtftools.cxx:1649
~MtfTools() COVERITY_NOEXCEPT_FALSE
Definition: mtftools.cxx:1127
vcl::Font maLatestFont
Definition: mtftools.hxx:650
sal_uInt32 mnStartPos
Definition: mtftools.hxx:693
void ImplSetNonPersistentLineColorTransparenz()
Definition: mtftools.cxx:1174
bool mbClockWiseArcDirection
Definition: mtftools.hxx:701
void SetBkColor(const Color &rColor)
Definition: mtftools.cxx:873
WinMtfPathObj maPathObj
Definition: mtftools.hxx:639
vcl::text::ComplexTextLayoutFlags mnLatestTextLayoutMode
Definition: mtftools.hxx:658
RasterOp meLatestRasterOp
Definition: mtftools.hxx:662
Color maLatestTextColor
Definition: mtftools.hxx:654
void DeleteObject(sal_uInt32 nIndex)
Definition: mtftools.cxx:996
void Pop(const sal_Int32 nSavedDC=-1)
Definition: mtftools.cxx:2413
void ImplDrawClippedPolyPolygon(const tools::PolyPolygon &rPolyPoly)
Definition: mtftools.cxx:893
void DrawRectWithBGColor(const tools::Rectangle &rRect)
Definition: mtftools.cxx:1322
ScaledFontDetectCorrectHelper maScaledFontHelper
Definition: mtftools.hxx:698
void SetTextLayoutMode(vcl::text::ComplexTextLayoutFlags nLayoutMode)
Definition: mtftools.cxx:857
sal_Int32 mnDevOrgY
Definition: mtftools.hxx:675
sal_uInt32 mnLatestTextAlign
Definition: mtftools.hxx:652
void SetGfxMode(GraphicsMode nGfxMode)
Definition: mtftools.hxx:756
void DrawRect(const tools::Rectangle &rRect, bool bEdge=true)
Definition: mtftools.cxx:1339
void DrawRoundRect(const tools::Rectangle &rRect, const Size &rSize)
Definition: mtftools.cxx:1377
WinMtfFillStyle maNopFillStyle
Definition: mtftools.hxx:647
void ImplDrawBitmap(const Point &rPos, const Size &rSize, const BitmapEx &rBitmap)
Definition: mtftools.cxx:1869
void DrawArc(const tools::Rectangle &rRect, const Point &rStartAngle, const Point &rEndAngle, bool bDrawTo=false)
Definition: mtftools.cxx:1413
Point GetWinOrg()
Definition: mtftools.hxx:734
RasterOp meRasterOp
Definition: mtftools.hxx:663
void SelectObject(sal_uInt32 nIndex)
Definition: mtftools.cxx:748
sal_Int32 mnWinOrgY
Definition: mtftools.hxx:679
MtfTools(MtfTools const &)=delete
sal_uInt32 mnTextAlign
Definition: mtftools.hxx:653
void SetBkMode(BackgroundMode nMode)
Definition: mtftools.cxx:868
sal_Int32 mnWinExtX
Definition: mtftools.hxx:680
void DrawPolyBezier(tools::Polygon rPolygon, bool bDrawTo, bool bRecordPath)
Definition: mtftools.cxx:1617
void SetDevOrgOffset(sal_Int32 nXAdd, sal_Int32 nYAdd)
Definition: mtftools.cxx:2136
void SetRefPix(const Size &rSize)
Definition: mtftools.cxx:2247
MtfTools & operator=(MtfTools const &)=delete
rtl_TextEncoding GetCharSet() const
Definition: mtftools.hxx:769
WinMtfLineStyle maLatestLineStyle
Definition: mtftools.hxx:642
std::vector< std::shared_ptr< SaveStruct > > mvSaveStack
Definition: mtftools.hxx:668
tools::Rectangle mrclBounds
Definition: mtftools.hxx:688
Point ImplMap(const Point &rPt)
Definition: mtftools.cxx:510
BackgroundMode mnLatestBkMode
Definition: mtftools.hxx:660
sal_Int32 mnPixX
Definition: mtftools.hxx:683
void SetTextColor(const Color &rColor)
Definition: mtftools.cxx:878
void SetDevByWin()
Definition: mtftools.cxx:2190
void ExcludeClipRect(const tools::Rectangle &rRect)
Definition: mtftools.cxx:1021
void MoveClipRegion(const Size &rSize)
Definition: mtftools.cxx:1031
WinMtfLineStyle maNopLineStyle
Definition: mtftools.hxx:644
void DrawPixel(const Point &rSource, const Color &rColor)
Definition: mtftools.cxx:1289
rtl::Reference< MetaFontAction > maCurrentMetaFontAction
Definition: mtftools.hxx:620
void evaluateAlternativeFontScale(OUString const &rText, tools::Long nImportedTextLength)
Definition: mtftools.cxx:374
std::vector< double > maAlternativeFontScales
Definition: mtftools.hxx:621
std::vector< std::pair< rtl::Reference< MetaFontAction >, double > > maPositiveIdentifiedCases
Definition: mtftools.hxx:622
std::vector< std::pair< rtl::Reference< MetaFontAction >, double > > maNegativeIdentifiedCases
Definition: mtftools.hxx:623
void newCurrentMetaFontAction(const rtl::Reference< MetaFontAction > &rNewMetaFontAction)
Definition: mtftools.cxx:349
void setClipPath(const basegfx::B2DPolyPolygon &, RegionMode nClippingMode)
Definition: mtftools.cxx:79
basegfx::B2DPolyPolygon const & getClipPath() const
Definition: mtftools.cxx:114
void excludeClip(const basegfx::B2DPolyPolygon &rPolyPolygon)
Definition: mtftools.cxx:74
void intersectClip(const basegfx::B2DPolyPolygon &rPolyPolygon)
Definition: mtftools.cxx:69
bool isEmpty() const
Definition: mtftools.hxx:348
basegfx::utils::B2DClipState const & getClip() const
Definition: mtftools.hxx:350
bool operator==(const WinMtfClipPath &rPath) const
Definition: mtftools.hxx:353
basegfx::utils::B2DClipState maClip
Definition: mtftools.hxx:337
void moveClipRegion(const Size &rSize)
Definition: mtftools.cxx:101
void AddPolyPolygon(const tools::PolyPolygon &rPolyPolygon)
Definition: mtftools.cxx:143
void AddPolyLine(const tools::Polygon &rPoly)
Definition: mtftools.cxx:128
void AddPoint(const Point &rPoint)
Definition: mtftools.cxx:119
void AddPolygon(const tools::Polygon &rPoly)
Definition: mtftools.cxx:137
rtl_TextEncoding GetCharSet() const
constexpr ::Color COL_BLACK(0x00, 0x00, 0x00)
#define EMFIO_DLLPUBLIC
Definition: emfiodllapi.h:28
NONE
static SvStream & operator>>(SvStream &rStream, sal_Int16 &n)
Definition: emfreader.cxx:629
TextAlignmentMode
Definition: mtftools.hxx:172
@ TA_TOP
Definition: mtftools.hxx:179
@ TA_BASELINE
Definition: mtftools.hxx:183
@ TA_BOTTOM
Definition: mtftools.hxx:180
@ TA_RIGHT_CENTER
Definition: mtftools.hxx:178
@ TA_NOUPDATECP
Definition: mtftools.hxx:173
@ TA_CENTER
Definition: mtftools.hxx:177
@ TA_UPDATECP
Definition: mtftools.hxx:174
@ TA_RIGHT
Definition: mtftools.hxx:176
@ TA_LEFT
Definition: mtftools.hxx:175
@ TA_RTLREADING
Definition: mtftools.hxx:184
TernaryRasterOperation
Definition: mtftools.hxx:191
@ SRCCOPY
Definition: mtftools.hxx:192
@ BLACKNESS
Definition: mtftools.hxx:199
@ SRCPAINT
Definition: mtftools.hxx:193
@ SRCAND
Definition: mtftools.hxx:194
@ PATINVERT
Definition: mtftools.hxx:198
@ PATCOPY
Definition: mtftools.hxx:197
@ SRCINVERT
Definition: mtftools.hxx:195
@ WHITENESS
Definition: mtftools.hxx:200
@ SRCERASE
Definition: mtftools.hxx:196
GraphicsMode
Definition: mtftools.hxx:116
constexpr sal_uInt32 ENHMETA_STOCK_OBJECT
Definition: mtftools.hxx:63
WeightFont
Definition: mtftools.hxx:292
@ FW_MEDIUM
Definition: mtftools.hxx:297
@ FW_EXTRALIGHT
Definition: mtftools.hxx:294
@ FW_ULTRALIGHT
Definition: mtftools.hxx:301
@ FW_LIGHT
Definition: mtftools.hxx:295
@ FW_ULTRABOLD
Definition: mtftools.hxx:302
@ FW_SEMIBOLD
Definition: mtftools.hxx:298
@ FW_NORMAL
Definition: mtftools.hxx:296
@ FW_THIN
Definition: mtftools.hxx:293
@ FW_BOLD
Definition: mtftools.hxx:299
@ FW_EXTRABOLD
Definition: mtftools.hxx:300
@ FW_BLACK
Definition: mtftools.hxx:303
@ PS_DASHDOTDOT
Definition: mtftools.hxx:211
@ PS_JOIN_MITER
Definition: mtftools.hxx:225
@ PS_GEOMETRIC
Definition: mtftools.hxx:228
@ PS_NULL
Definition: mtftools.hxx:212
@ PS_STYLE_MASK
Definition: mtftools.hxx:216
@ PS_ENDCAP_SQUARE
Definition: mtftools.hxx:219
@ PS_ENDCAP_FLAT
Definition: mtftools.hxx:220
@ PS_ALTERNATE
Definition: mtftools.hxx:215
@ PS_DASHDOT
Definition: mtftools.hxx:210
@ PS_DOT
Definition: mtftools.hxx:209
@ PS_DASH
Definition: mtftools.hxx:208
@ PS_COSMETIC
Definition: mtftools.hxx:206
@ PS_USERSTYLE
Definition: mtftools.hxx:214
@ PS_INSIDEFRAME
Definition: mtftools.hxx:213
@ PS_JOIN_BEVEL
Definition: mtftools.hxx:224
@ PS_SOLID
Definition: mtftools.hxx:207
@ PS_ENDCAP_STYLE_MASK
Definition: mtftools.hxx:221
@ PS_JOIN_STYLE_MASK
Definition: mtftools.hxx:226
@ PS_JOIN_ROUND
Definition: mtftools.hxx:223
@ PS_ENDCAP_ROUND
Definition: mtftools.hxx:218
constexpr sal_Int32 LF_FACESIZE
Definition: mtftools.hxx:134
RegionMode
Definition: mtftools.hxx:37
constexpr sal_Int32 PRIVATE_ESCAPE_UNICODE
Definition: mtftools.hxx:324
BrushStyle
Definition: mtftools.hxx:308
ModifyWorldTransformMode
Definition: mtftools.hxx:56
WMFRasterOp
Definition: mtftools.hxx:86
constexpr sal_Int32 MS_FIXPOINT_BITCOUNT_28_4
Definition: mtftools.hxx:328
BackgroundMode
Definition: mtftools.hxx:47
MappingMode
Definition: mtftools.hxx:99
@ MM_HIMETRIC
Definition: mtftools.hxx:102
@ MM_LOENGLISH
Definition: mtftools.hxx:103
@ MM_TEXT
Definition: mtftools.hxx:100
@ MM_HIENGLISH
Definition: mtftools.hxx:104
@ MM_ISOTROPIC
Definition: mtftools.hxx:106
@ MM_TWIPS
Definition: mtftools.hxx:105
@ MM_ANISOTROPIC
Definition: mtftools.hxx:107
@ MM_LOMETRIC
Definition: mtftools.hxx:101
StockObject
Definition: mtftools.hxx:68
constexpr sal_Int32 RDH_RECTANGLES
Definition: mtftools.hxx:322
WinMtfFillStyleType
Definition: mtftools.hxx:398
constexpr sal_Int32 UNDOCUMENTED_WIN_RCL_RELATION
Definition: mtftools.hxx:327
CharacterSet
Definition: mtftools.hxx:234
@ HANGUL_CHARSET
Definition: mtftools.hxx:239
@ ANSI_CHARSET
Definition: mtftools.hxx:235
@ DEFAULT_CHARSET
Definition: mtftools.hxx:236
@ JOHAB_CHARSET
Definition: mtftools.hxx:245
@ BALTIC_CHARSET
Definition: mtftools.hxx:251
@ GREEK_CHARSET
Definition: mtftools.hxx:246
@ THAI_CHARSET
Definition: mtftools.hxx:253
@ GB2312_CHARSET
Definition: mtftools.hxx:240
@ MAC_CHARSET
Definition: mtftools.hxx:244
@ VIETNAMESE_CHARSET
Definition: mtftools.hxx:248
@ SHIFTJIS_CHARSET
Definition: mtftools.hxx:238
@ EASTEUROPE_CHARSET
Definition: mtftools.hxx:254
@ RUSSIAN_CHARSET
Definition: mtftools.hxx:252
@ TURKISH_CHARSET
Definition: mtftools.hxx:247
@ OEM_CHARSET
Definition: mtftools.hxx:242
@ CHINESEBIG5_CHARSET
Definition: mtftools.hxx:241
@ HEBREW_CHARSET
Definition: mtftools.hxx:249
@ SYMBOL_CHARSET
Definition: mtftools.hxx:237
@ ARABIC_CHARSET
Definition: mtftools.hxx:250
ExtTextOutOptions
Definition: mtftools.hxx:260
@ ETO_NO_RECT
Definition: mtftools.hxx:267
@ ETO_GLYPH_INDEX
Definition: mtftools.hxx:264
@ ETO_CLIPPED
Definition: mtftools.hxx:262
@ ETO_PDY
Definition: mtftools.hxx:268
@ ETO_RTLREADING
Definition: mtftools.hxx:265
@ ETO_OPAQUE
Definition: mtftools.hxx:261
StretchMode
Definition: mtftools.hxx:124
FamilyFont
Definition: mtftools.hxx:282
@ FF_SCRIPT
Definition: mtftools.hxx:287
@ FF_DECORATIVE
Definition: mtftools.hxx:288
@ FF_DONTCARE
Definition: mtftools.hxx:283
@ FF_ROMAN
Definition: mtftools.hxx:284
@ FF_SWISS
Definition: mtftools.hxx:285
@ FF_MODERN
Definition: mtftools.hxx:286
constexpr sal_Int32 W_MFCOMMENT
Definition: mtftools.hxx:323
@ VARIABLE_PITCH
Definition: mtftools.hxx:277
@ FIXED_PITCH
Definition: mtftools.hxx:276
@ DEFAULT_PITCH
Definition: mtftools.hxx:275
const Color Black(0x000000)
long Long
ComplexTextLayoutFlags
BSaveStruct(const Bitmap &rBmp, const tools::Rectangle &rOutRect, sal_uInt32 nRop)
Definition: mtftools.hxx:600
sal_uInt32 nWinRop
Definition: mtftools.hxx:597
BSaveStruct(const BitmapEx &rBmpEx, const tools::Rectangle &rOutRect, sal_uInt32 nRop, bool bForceAlpha=false)
Definition: mtftools.hxx:606
tools::Rectangle aOutRect
Definition: mtftools.hxx:596
GDIObj(GDIObj const &)=default
GDIObj()=default
virtual ~GDIObj()=default
sal_uInt8 lfUnderline
Definition: mtftools.hxx:144
sal_Int32 lfEscapement
Definition: mtftools.hxx:140
sal_uInt8 lfPitchAndFamily
Definition: mtftools.hxx:150
sal_Int32 lfWeight
Definition: mtftools.hxx:142
sal_uInt8 lfClipPrecision
Definition: mtftools.hxx:148
sal_uInt8 lfStrikeOut
Definition: mtftools.hxx:145
sal_Int32 lfWidth
Definition: mtftools.hxx:139
sal_Int32 lfOrientation
Definition: mtftools.hxx:141
sal_uInt8 lfItalic
Definition: mtftools.hxx:143
sal_Int32 lfHeight
Definition: mtftools.hxx:138
sal_uInt8 lfCharSet
Definition: mtftools.hxx:146
sal_uInt8 lfOutPrecision
Definition: mtftools.hxx:147
OUString alfFaceName
Definition: mtftools.hxx:151
sal_uInt8 lfQuality
Definition: mtftools.hxx:149
RasterOp eRasterOp
Definition: mtftools.hxx:582
BackgroundMode nBkMode
Definition: mtftools.hxx:568
sal_Int32 nWinOrgY
Definition: mtftools.hxx:572
sal_Int32 nWinExtY
Definition: mtftools.hxx:572
GraphicsMode eGfxMode
Definition: mtftools.hxx:570
vcl::Font aFont
Definition: mtftools.hxx:578
bool bClockWiseArcDirection
Definition: mtftools.hxx:589
MappingMode eMapMode
Definition: mtftools.hxx:569
WinMtfPathObj maPathObj
Definition: mtftools.hxx:585
WinMtfClipPath maClipPath
Definition: mtftools.hxx:586
vcl::text::ComplexTextLayoutFlags nTextLayoutMode
Definition: mtftools.hxx:571
sal_Int32 nDevWidth
Definition: mtftools.hxx:573
sal_Int32 nWinExtX
Definition: mtftools.hxx:572
sal_Int32 nDevOrgX
Definition: mtftools.hxx:573
sal_uInt32 nTextAlign
Definition: mtftools.hxx:581
sal_Int32 nWinOrgX
Definition: mtftools.hxx:572
sal_Int32 nDevHeight
Definition: mtftools.hxx:573
sal_Int32 nDevOrgY
Definition: mtftools.hxx:573
WinMtfFillStyle aFillStyle
Definition: mtftools.hxx:576
WinMtfLineStyle aLineStyle
Definition: mtftools.hxx:575
WinMtfFillStyleType aType
Definition: mtftools.hxx:406
WinMtfFillStyle(const Color &rColor, bool bTrans=false)
Definition: mtftools.hxx:415
WinMtfFillStyle(Bitmap const &rBmp)
Definition: mtftools.hxx:421
bool operator==(const WinMtfFillStyle &rStyle) const
Definition: mtftools.hxx:427
WinMtfLineStyle(const Color &rColor, const sal_uInt32 nStyle, const sal_Int32 nPenWidth)
Definition: mtftools.hxx:467
WinMtfLineStyle(const Color &rColor, bool bTrans=false)
Definition: mtftools.hxx:462
bool operator==(const WinMtfLineStyle &rStyle) const
Definition: mtftools.hxx:537
std::vector< Color > aPaletteColors
Definition: mtftools.hxx:438
WinMtfPalette(const std::vector< Color > rPaletteColors)
Definition: mtftools.hxx:444
#define OPAQUE
unsigned char sal_uInt8