16#include <rtl/string.hxx>
17#include <rtl/ustrbuf.hxx>
31 std::vector<OUString> aStrings;
34 aStrings.emplace_back(
"PushLineColor");
36 aStrings.emplace_back(
"PushFillColor");
38 aStrings.emplace_back(
"PushFont");
40 aStrings.emplace_back(
"PushTextColor");
42 aStrings.emplace_back(
"PushMapMode");
44 aStrings.emplace_back(
"PushClipRegion");
46 aStrings.emplace_back(
"PushRasterOp");
48 aStrings.emplace_back(
"PushTextFillColor");
50 aStrings.emplace_back(
"PushTextAlign");
52 aStrings.emplace_back(
"PushRefPoint");
54 aStrings.emplace_back(
"PushTextLineColor");
56 aStrings.emplace_back(
"PushTextLayoutMode");
58 aStrings.emplace_back(
"PushTextLanguage");
60 aStrings.emplace_back(
"PushOverlineColor");
67 aString = aStrings[0];
68 for (
size_t i = 1;
i < aStrings.size(); ++
i)
70 aString +=
", " + aStrings[
i];
75OUString convertDrawTextFlagsToString(
DrawTextFlags eDrawTextFlags)
77 std::vector<OUString> aStrings;
79 aStrings.emplace_back(
"Disable");
81 aStrings.emplace_back(
"Mnemonic");
83 aStrings.emplace_back(
"Mono");
85 aStrings.emplace_back(
"Clip");
87 aStrings.emplace_back(
"Left");
89 aStrings.emplace_back(
"Center");
91 aStrings.emplace_back(
"Right");
93 aStrings.emplace_back(
"Top");
95 aStrings.emplace_back(
"VCenter");
97 aStrings.emplace_back(
"Bottom");
99 aStrings.emplace_back(
"EndEllipsis");
101 aStrings.emplace_back(
"PathEllipsis");
103 aStrings.emplace_back(
"MultiLine");
105 aStrings.emplace_back(
"WordBreak");
107 aStrings.emplace_back(
"NewsEllipsis");
109 aStrings.emplace_back(
"WordBreakHyphenation");
111 aStrings.emplace_back(
"CenterEllipsis");
113 aStrings.emplace_back(
"HideMnemonic");
117 if (aStrings.empty())
120 aString = aStrings[0];
121 for (
size_t i = 1;
i < aStrings.size(); ++
i)
123 aString +=
" " + aStrings[
i];
128OUString convertRopToString(
RasterOp eRop)
141OUString convertTextAlignToString(
TextAlign eAlign)
153OUString convertColorToString(
Color aColor)
156 return "#" + aRGBString;
159OUString convertLineStyleToString(
LineStyle eAlign)
183OUString convertLineCapToString(css::drawing::LineCap eCap)
188 case css::drawing::LineCap_BUTT:
return "butt";
189 case css::drawing::LineCap_ROUND:
return "round";
190 case css::drawing::LineCap_SQUARE:
return "square";
194OUString convertPolygonFlags(
PolyFlags eFlags)
199 case PolyFlags::Normal:
return "normal";
200 case PolyFlags::Control:
return "control";
201 case PolyFlags::Smooth:
return "smooth";
202 case PolyFlags::Symmetric:
return "symmetric";
206OUString convertFontWeightToString(
FontWeight eFontWeight)
226OUString convertFontStrikeoutToString(
FontStrikeout eFontStrikeout)
228 switch (eFontStrikeout)
242OUString convertFontLineStyleToString(
FontLineStyle eFontLineStyle)
244 switch (eFontLineStyle)
332OUString convertBitmapExTransparentType(
BitmapEx const & rBitmapEx)
340OUString convertMapUnitToString(
MapUnit eUnit)
345 case MapUnit::LASTENUMDUMMY:
return "LASTENUMDUMMY";
346 case MapUnit::Map1000thInch:
return "Map1000thInch";
347 case MapUnit::Map100thInch:
return "Map100thInch";
348 case MapUnit::Map100thMM:
return "Map100thMM";
349 case MapUnit::Map10thInch:
return "Map10thInch";
350 case MapUnit::Map10thMM:
return "Map10thMM";
351 case MapUnit::MapAppFont:
return "MapAppFont";
352 case MapUnit::MapCM:
return "MapCM";
353 case MapUnit::MapInch:
return "MapInch";
354 case MapUnit::MapMM:
return "MapMM";
355 case MapUnit::MapPixel:
return "MapPixel";
356 case MapUnit::MapPoint:
return "MapPoint";
357 case MapUnit::MapRelative:
return "MapRelative";
358 case MapUnit::MapSysFont:
return "MapSysFont";
359 case MapUnit::MapTwip:
return "MapTwip";
363OUString convertFractionToString(
const Fraction& aFraction)
365 std::stringstream ss;
369 return OUString::createFromAscii(ss.str().c_str());
376 case GradientStyle::Linear:
return "Linear";
377 case GradientStyle::Axial:
return "Axial";
378 case GradientStyle::Radial:
return "Radial";
379 case GradientStyle::Elliptical:
return "Elliptical";
380 case GradientStyle::Square:
return "Square";
381 case GradientStyle::Rect:
return "Rect";
382 case GradientStyle::FORCE_EQUAL_SIZE:
return "ForceEqualSize";
391 case HatchStyle::Single:
return "Single";
392 case HatchStyle::Double:
return "Double";
393 case HatchStyle::Triple:
return "Triple";
394 case HatchStyle::FORCE_EQUAL_SIZE:
return "ForceEqualSize";
399OUString convertLanguageTypeToString(
LanguageType rLanguageType)
401 std::stringstream ss;
402 ss << std::hex << std::setfill (
'0') << std::setw(4) << rLanguageType.
get();
403 return "#" + OUString::createFromAscii(ss.str().c_str());
406OUString convertWallpaperStyleToString(
WallpaperStyle eWallpaperStyle)
408 switch (eWallpaperStyle)
429 switch (ePixelFormat)
442 switch(eComplexTestLayoutFlags)
453OUString convertGfxLinkTypeToString(
GfxLinkType eGfxLinkType)
475OUString hex32(sal_uInt32 nNumber)
477 std::stringstream ss;
478 ss << std::hex << std::setfill(
'0') << std::setw(8) << nNumber;
479 return OUString::createFromAscii(ss.str().c_str());
482OUString toHexString(
const sal_uInt8* nData, sal_uInt32 nDataSize){
484 std::stringstream aStrm;
485 for (sal_uInt32 i = 0;
i < nDataSize;
i++)
487 aStrm << std::setw(2) << std::setfill('0') << std::hex << static_cast<int>(nData[i]);
490 return OUString::createFromAscii(aStrm.str().c_str());
522 rWriter.
attribute(
"right", OString(
"empty"));
526 rWriter.
attribute(
"bottom", OString(
"empty"));
534 writePoint(rWriter, rMapMode.
GetOrigin());
541 rWriter.
attribute(
"style", convertLineStyleToString(rLineInfo.GetStyle()));
542 rWriter.
attribute(
"width", rLineInfo.GetWidth());
543 rWriter.
attribute(
"dashlen", rLineInfo.GetDashLen());
544 rWriter.
attribute(
"dashcount", rLineInfo.GetDashCount());
545 rWriter.
attribute(
"dotlen", rLineInfo.GetDotLen());
546 rWriter.
attribute(
"dotcount", rLineInfo.GetDotCount());
547 rWriter.
attribute(
"distance", rLineInfo.GetDistance());
548 rWriter.
attribute(
"join", convertLineJoinToString(rLineInfo.GetLineJoin()));
549 rWriter.
attribute(
"cap", convertLineCapToString(rLineInfo.GetLineCap()));
575 maFilter[nActionType] = bShouldFilter;
599 writePoint(rWriter, aMtfMapMode.
GetOrigin());
604 writeSize(rWriter, aMtfSize);
606 for(
size_t nAction = 0; nAction < rMetaFile.
GetActionSize(); ++nAction)
613 OString sCurrentElementTag = convertLineStyleToString(nActionType);
628 writePoint(rWriter, pMetaAction->GetPoint());
629 rWriter.
attribute(
"color", convertColorToString(pMetaAction->GetColor()));
638 writePoint(rWriter, pMetaAction->GetPoint());
648 writeEndPoint(rWriter, pMetaLineAction->
GetEndPoint());
650 writeLineInfo(rWriter, pMetaLineAction->
GetLineInfo());
659 writeRectangle(rWriter, pMetaAction->
GetRect());
668 writeRectangle(rWriter, pMetaAction->GetRect());
669 rWriter.
attribute(
"horizontalround", pMetaAction->GetHorzRound());
670 rWriter.
attribute(
"verticalround", pMetaAction->GetVertRound());
679 writeRectangle(rWriter, pMetaAction->GetRect());
688 writeRectangle(rWriter, pMetaAction->GetRect());
689 writeStartPoint(rWriter, pMetaAction->GetStartPoint());
690 writeEndPoint(rWriter, pMetaAction->GetEndPoint());
699 writeRectangle(rWriter, pMetaAction->GetRect());
700 writeStartPoint(rWriter, pMetaAction->GetStartPoint());
701 writeEndPoint(rWriter, pMetaAction->GetEndPoint());
710 writeRectangle(rWriter, pMetaAction->GetRect());
711 writeStartPoint(rWriter, pMetaAction->GetStartPoint());
712 writeEndPoint(rWriter, pMetaAction->GetEndPoint());
722 writeLineInfo(rWriter, pMetaPolyLineAction->
GetLineInfo());
726 for (sal_uInt16
i = 0;
i < aPolygon.
GetSize();
i++)
729 writePoint(rWriter, aPolygon[
i]);
746 for (sal_uInt16
i = 0;
i < aPolygon.
GetSize();
i++)
749 writePoint(rWriter, aPolygon[
i]);
766 for (sal_uInt16 j = 0; j < rPolyPolygon.
Count(); ++j)
771 for (sal_uInt16
i = 0;
i < rPolygon.
GetSize(); ++
i)
774 writePoint(rWriter, rPolygon[
i]);
789 writePoint(rWriter, pMeta->GetPoint());
790 rWriter.
attribute(
"index", pMeta->GetIndex());
791 rWriter.
attribute(
"length", pMeta->GetLen());
793 rWriter.
content(pMeta->GetText());
802 MetaTextArrayAction* pMetaTextArrayAction =
static_cast<MetaTextArrayAction*
>(pAction);
805 sal_Int32
aIndex = pMetaTextArrayAction->GetIndex();
806 sal_Int32 aLength = pMetaTextArrayAction->GetLen();
808 writePoint(rWriter, pMetaTextArrayAction->GetPoint());
812 if (!pMetaTextArrayAction->GetDXArray().empty())
815 OUStringBuffer sDxLengthString;
816 for (sal_Int32
i = 0;
i < aLength -
aIndex; ++
i)
818 sDxLengthString.append(pMetaTextArrayAction->GetDXArray()[
aIndex +
i]);
819 sDxLengthString.append(
" ");
821 rWriter.
content(sDxLengthString);
827 const OUString& rStr = pMetaTextArrayAction->GetText();
830 if ( rStr.indexOf(0x01) > -1 )
831 rWriter.
content(rStr.replaceAll(
"\001",
""));
846 writePoint(rWriter, pMeta->GetPoint());
847 rWriter.
attribute(
"index", pMeta->GetIndex());
848 rWriter.
attribute(
"length", pMeta->GetLen());
849 rWriter.
attribute(
"width", pMeta->GetWidth());
852 rWriter.
content(pMeta->GetText());
863 writeRectangle(rWriter, pMeta->GetRect());
865 rWriter.
content(pMeta->GetText());
869 rWriter.
content(convertDrawTextFlagsToString(pMeta->GetStyle()));
880 writePoint(rWriter, pMeta->GetPoint());
881 rWriter.
attribute(
"crc", hex32(pMeta->GetBitmap().GetChecksum()));
890 writePoint(rWriter, pMeta->GetPoint());
891 writeSize(rWriter, pMeta->GetSize());
892 rWriter.
attribute(
"crc", hex32(pMeta->GetBitmap().GetChecksum()));
899 auto pMeta =
static_cast<MetaBmpScalePartAction*
>(pAction);
901 rWriter.
attribute(
"destx", pMeta->GetDestPoint().X());
902 rWriter.
attribute(
"desty", pMeta->GetDestPoint().Y());
903 rWriter.
attribute(
"destwidth", pMeta->GetDestSize().Width());
904 rWriter.
attribute(
"destheight", pMeta->GetDestSize().Height());
905 rWriter.
attribute(
"srcx", pMeta->GetSrcPoint().X());
906 rWriter.
attribute(
"srcy", pMeta->GetSrcPoint().Y());
907 rWriter.
attribute(
"srcwidth", pMeta->GetSrcSize().Width());
908 rWriter.
attribute(
"srcheight", pMeta->GetSrcSize().Height());
909 rWriter.
attribute(
"crc", hex32(pMeta->GetBitmap().GetChecksum()));
918 writePoint(rWriter, pMeta->GetPoint());
919 rWriter.
attribute(
"crc", hex32(pMeta->GetBitmapEx().GetBitmap().GetChecksum()));
920 rWriter.
attribute(
"transparenttype", convertBitmapExTransparentType(pMeta->GetBitmapEx()));
929 writePoint(rWriter, pMeta->GetPoint());
930 writeSize(rWriter, pMeta->GetSize());
931 rWriter.
attribute(
"crc", hex32(pMeta->GetBitmapEx().GetBitmap().GetChecksum()));
932 rWriter.
attribute(
"transparenttype", convertBitmapExTransparentType(pMeta->GetBitmapEx()));
939 auto pMeta =
static_cast<MetaBmpExScalePartAction*
>(pAction);
941 rWriter.
attribute(
"destx", pMeta->GetDestPoint().X());
942 rWriter.
attribute(
"desty", pMeta->GetDestPoint().Y());
943 rWriter.
attribute(
"destwidth", pMeta->GetDestSize().Width());
944 rWriter.
attribute(
"destheight", pMeta->GetDestSize().Height());
945 rWriter.
attribute(
"srcx", pMeta->GetSrcPoint().X());
946 rWriter.
attribute(
"srcy", pMeta->GetSrcPoint().Y());
947 rWriter.
attribute(
"srcwidth", pMeta->GetSrcSize().Width());
948 rWriter.
attribute(
"srcheight", pMeta->GetSrcSize().Height());
949 rWriter.
attribute(
"crc", hex32(pMeta->GetBitmapEx().GetBitmap().GetChecksum()));
950 rWriter.
attribute(
"transparenttype", convertBitmapExTransparentType(pMeta->GetBitmapEx()));
959 writePoint(rWriter, pMeta->GetPoint());
960 rWriter.
attribute(
"crc", hex32(pMeta->GetBitmap().GetChecksum()));
961 rWriter.
attribute(
"color", convertColorToString(pMeta->GetColor()));
970 writePoint(rWriter, pMeta->GetPoint());
971 writeSize(rWriter, pMeta->GetSize());
972 rWriter.
attribute(
"crc", hex32(pMeta->GetBitmap().GetChecksum()));
973 rWriter.
attribute(
"color", convertColorToString(pMeta->GetColor()));
982 rWriter.
attribute(
"destx", pMeta->GetDestPoint().X());
983 rWriter.
attribute(
"desty", pMeta->GetDestPoint().Y());
984 rWriter.
attribute(
"destwidth", pMeta->GetDestSize().Width());
985 rWriter.
attribute(
"destheight", pMeta->GetDestSize().Height());
986 rWriter.
attribute(
"srcx", pMeta->GetSrcPoint().X());
987 rWriter.
attribute(
"srcy", pMeta->GetSrcPoint().Y());
988 rWriter.
attribute(
"srcwidth", pMeta->GetSrcSize().Width());
989 rWriter.
attribute(
"srcheight", pMeta->GetSrcSize().Height());
990 rWriter.
attribute(
"crc", hex32(pMeta->GetBitmap().GetChecksum()));
991 rWriter.
attribute(
"color", convertColorToString(pMeta->GetColor()));
1004 writeRectangle(rWriter, pMeta->
GetRect());
1013 auto*
const pMetaHatchAction =
static_cast<MetaHatchAction*
>(pAction);
1018 for (sal_uInt16 j = 0; j < rPolyPolygon.
Count(); ++j)
1023 for (sal_uInt16
i = 0;
i < rPolygon.
GetSize(); ++
i)
1026 writePoint(rWriter, rPolygon[
i]);
1035 const auto& rHatch = pMetaHatchAction->GetHatch();
1036 rWriter.
attribute(
"style", convertHatchStyle(rHatch.GetStyle()));
1037 rWriter.
attribute(
"color", convertColorToString(rHatch.GetColor()));
1038 rWriter.
attribute(
"distance", sal_Int32(rHatch.GetDistance()));
1039 rWriter.
attribute(
"angle", sal_Int32(rHatch.GetAngle().get()));
1048 const auto* pMetaAction =
static_cast<const MetaWallpaperAction*
>(pAction);
1051 writeRectangle(rWriter, pMetaAction->GetRect());
1054 const auto& rWallpaper = pMetaAction->GetWallpaper();
1056 rWriter.
attribute(
"color", convertColorToString(rWallpaper.GetColor()));
1059 rWriter.
attribute(
"style", convertWallpaperStyleToString(eStyle));
1061 if (rWallpaper.IsBitmap())
1066 rWriter.
attribute(
"transparenttype", convertBitmapExTransparentType(rBitmapEx));
1073 if (rWallpaper.IsGradient())
1076 Gradient aGradient = rWallpaper.GetGradient();
1077 writeGradient(rWriter, aGradient);
1081 if (rWallpaper.IsRect())
1085 writeRectangle(rWriter, aRect);
1089 rWriter.
attribute(
"fixed", rWallpaper.IsFixed() ?
"true" :
"false");
1090 rWriter.
attribute(
"scrollable", rWallpaper.IsScrollable() ?
"true" :
"false");
1103 tools::Rectangle aRectangle = pMetaClipRegionAction->GetRegion().GetBoundRect();
1104 writeRectangle(rWriter, aRectangle);
1106 vcl::Region aRegion = pMetaClipRegionAction->GetRegion();
1112 for (sal_uInt16 j = 0; j < aPolyPolygon.
Count(); ++j)
1117 for (sal_uInt16
i = 0;
i < rPolygon.
GetSize(); ++
i)
1120 writePoint(rWriter, rPolygon[
i]);
1139 writeRectangle(rWriter, aRectangle);
1153 writeRectangle(rWriter, aRectangle);
1163 rWriter.
attribute(
"horzmove", pMetaMoveClipRegionAction->GetHorzMove());
1164 rWriter.
attribute(
"vertmove", pMetaMoveClipRegionAction->GetVertMove());
1174 rWriter.
attribute(
"color", convertColorToString(pMetaLineColorAction->
GetColor()));
1184 rWriter.
attribute(
"color", convertColorToString(pMetaFillColorAction->
GetColor()));
1194 rWriter.
attribute(
"color", convertColorToString(pMetaTextColorAction->
GetColor()));
1204 rWriter.
attribute(
"color", convertColorToString(pMetaTextFillColorAction->
GetColor()));
1206 if (pMetaTextFillColorAction->
IsSetting())
1217 OUString sAlign = convertTextAlignToString(pMetaTextAlignAction->
GetTextAlign());
1218 if (!sAlign.isEmpty())
1230 writePoint(rWriter, aMapMode.
GetOrigin());
1295 for (sal_uInt16 j = 0; j < rPolyPolygon.
Count(); ++j)
1300 for (sal_uInt16
i = 0;
i < rPolygon.
GetSize(); ++
i)
1303 writePoint(rWriter, rPolygon[
i]);
1320 writePoint(rWriter, pMetaEPSAction->
GetPoint());
1321 writeSize(rWriter, pMetaEPSAction->
GetSize());
1349 writePoint(rWriter, pMeta->GetRefPoint());
1350 rWriter.
attribute(
"set", pMeta->IsSetting() ?
"true" :
"false");
1359 rWriter.
attribute(
"color", convertColorToString(pMeta->GetColor()));
1368 writePoint(rWriter, pMeta->GetStartPoint());
1369 rWriter.
attribute(
"width", pMeta->GetWidth());
1370 rWriter.
attribute(
"strikeout", convertFontStrikeoutToString(pMeta->GetStrikeout()));
1371 rWriter.
attribute(
"underline", convertFontLineStyleToString(pMeta->GetUnderline()));
1372 rWriter.
attribute(
"overline", convertFontLineStyleToString(pMeta->GetOverline()));
1381 writePoint(rWriter, pMeta->GetPoint());
1382 writeSize(rWriter, pMeta->GetSize());
1383 rWriter.
attribute(
"transparent", pMeta->IsTransparent() ?
"true" :
"false");
1386 writeGradient(rWriter, pMeta->GetGradient());
1390 writeXml(pMeta->GetGDIMetaFile(), rWriter);
1402 writeGradient(rWriter, pMetaGradientExAction->
GetGradient());
1405 for (sal_uInt16 j = 0; j < rPolyPolygon.
Count(); ++j)
1410 for (sal_uInt16
i = 0;
i < rPolygon.
GetSize(); ++
i)
1413 writePoint(rWriter, rPolygon[
i]);
1453 rWriter.
attribute(
"color", convertColorToString(pMetaAction->GetColor()));
1470 if (!pMetaCommentAction->
GetComment().isEmpty())
1483 rWriter.
attribute(
"note", OString(
"not implemented in xml dump"));
BitmapChecksum GetChecksum() const
Bitmap GetBitmap(Color aTransparentReplaceColor) const
const Size & GetSizePixel() const
vcl::PixelFormat getPixelFormat() const
OUString AsRGBHexString() const
bool IsPrefMapModeValid() const
const sal_uInt8 * GetData() const
const Size & GetPrefSize() const
sal_uInt32 GetDataSize() const
GfxLinkType GetType() const
const MapMode & GetPrefMapMode() const
sal_uInt32 GetUserId() const
sal_uInt16 GetStartIntensity() const
GradientStyle GetStyle() const
Degree10 GetAngle() const
sal_uInt16 GetEndIntensity() const
sal_uInt16 GetOfsX() const
sal_uInt16 GetBorder() const
const Color & GetEndColor() const
sal_uInt16 GetOfsY() const
const Color & GetStartColor() const
sal_uInt16 GetSteps() const
const Fraction & GetScaleX() const
MapUnit GetMapUnit() const
const Point & GetOrigin() const
const Fraction & GetScaleY() const
TextAlign GetTextAlign() const
const Color & GetColor() const
const Color & GetColor() const
LanguageType GetTextLanguage() const
constexpr tools::Long Height() const
constexpr tools::Long Width() const
const OUString & GetStyleName() const
const OUString & GetFamilyName() const
const Size & GetFontSize() const
const Color & GetColor() const
Degree10 GetOrientation() const
const Color & GetFillColor() const
tools::PolyPolygon GetAsPolyPolygon() const
bool HasPolyPolygonOrB2DPolyPolygon() const
tools::Rectangle GetBoundRect() const
std::deque< AttacherIndex_Impl > aIndex
FontLineStyle_FORCE_EQUAL_SIZE
FontStrikeout_FORCE_EQUAL_SIZE
TextAlign_FORCE_EQUAL_SIZE
FontWeight_FORCE_EQUAL_SIZE
GfxLinkType
GfxLink graphic types that are supported by GfxLink.
PixelFormat
Pixel format of the bitmap in bits per pixel.
UNDERLYING_TYPE get() const