20#include <com/sun/star/rendering/PathCapType.hpp>
23#include <rtl/ustrbuf.hxx>
46 , customStartCapLen(0)
57 rtl::OUStringBuffer sFlags;
60 sFlags.append(
"\nEMF+\t\t\tEmfPlusPenDataTransform");
63 sFlags.append(
"\nEMF+\t\t\tEmfPlusPenDataStartCap");
66 sFlags.append(
"\nEMF+\t\t\tEmfPlusPenDataEndCap");
69 sFlags.append(
"\nEMF+\t\t\tEmfPlusPenDataJoin");
72 sFlags.append(
"\nEMF+\t\t\tEmfPlusPenDataMiterLimit");
75 sFlags.append(
"\nEMF+\t\t\tEmfPlusPenDataLineStyle");
78 sFlags.append(
"\nEMF+\t\t\tEmfPlusPenDataDashedLineCap");
81 sFlags.append(
"\nEMF+\t\t\tEmfPlusPenDataDashedLineOffset");
84 sFlags.append(
"\nEMF+\t\t\tEmfPlusPenDataDashedLine");
87 sFlags.append(
"\nEMF+\t\t\tEmfPlusPenDataAlignment");
90 sFlags.append(
"\nEMF+\t\t\tEmfPlusPenDataCompoundLine");
93 sFlags.append(
"\nEMF+\t\t\tEmfPlusPenDataCustomStartCap");
96 sFlags.append(
"\nEMF+\t\t\tEmfPlusPenDataCustomEndCap");
98 return sFlags.makeStringAndClear();
122 switch (dashedlinecaptype)
150 const double pw = aTransformation *
penWidth;
169 const double pw = aTransformation *
penWidth;
172 for (
size_t i = 0;
i < aPattern.size();
i++)
186 sal_uInt32 graphicsVersion, penType;
188 SAL_INFO(
"drawinglayer.emf",
"EMF+\t\tGraphics version: 0x" << std::hex << graphicsVersion);
189 SAL_INFO(
"drawinglayer.emf",
"EMF+\t\tType: " << penType);
230 SAL_INFO(
"drawinglayer.emf",
"EMF+\t\t LineJoin: " << lineJoin);
257 miterLimit = 3.0 * miterLimit;
259 if (
abs(miterLimit) > 1.0)
265 "EMF+\t\t MiterLimit: " << std::dec << miterLimit
285 SAL_WARN(
"drawinglayer.emf",
"EMF+\t\t TODO PenDataDashedLineCap: 0x" << std::hex <<
dashCap);
295 SAL_WARN(
"drawinglayer.emf",
"EMF+\t\t TODO PenDataDashedLineOffset: 0x" << std::hex <<
dashOffset);
305 sal_uInt32 dashPatternLen;
308 SAL_INFO(
"drawinglayer.emf",
"EMF+\t\t\tdashPatternLen: " << dashPatternLen);
312 for (sal_uInt32
i = 0;
i < dashPatternLen;
i++)
331 SAL_WARN(
"drawinglayer.emf",
"EMF+\t\t\tTODO PenDataCompoundLine");
332 sal_uInt32 compoundArrayLen;
337 for (sal_uInt32
i = 0;
i < compoundArrayLen;
i++)
348 sal_uInt64
const pos = s.
Tell();
365 sal_uInt64
const pos = s.
Tell();
SvStream & ReadFloat(float &rFloat)
SvStream & ReadUInt32(sal_uInt32 &rUInt32)
sal_uInt64 Seek(sal_uInt64 nPos)
SvStream & ReadInt32(sal_Int32 &rInt32)
#define SAL_WARN(area, stream)
#define SAL_INFO(area, stream)
constexpr double deg2rad(double v)
const sal_Int32 EmfPlusLineStyleCustom
const sal_uInt32 EmfPlusPenDataCompoundLine
@ DashedLineCapTypeTriangle
OUString UnitTypeToString(sal_uInt16 nType)
const sal_uInt32 EmfPlusPenDataCustomStartCap
const sal_uInt32 EmfPlusPenDataDashedLineOffset
const sal_uInt32 EmfPlusPenDataTransform
const sal_uInt32 EmfPlusPenDataDashedLine
const sal_uInt32 EmfPlusLineJoinTypeRound
const sal_Int32 EmfPlusLineStyleDash
const sal_uInt32 EmfPlusPenDataEndCap
const sal_uInt32 EmfPlusLineJoinTypeMiter
const sal_uInt32 EmfPlusLineJoinTypeBevel
const sal_uInt32 EmfPlusPenDataDashedLineCap
@ LineCapTypeSquareAnchor
@ LineCapTypeDiamondAnchor
const sal_uInt32 EmfPlusPenDataStartCap
const sal_uInt32 EmfPlusLineJoinTypeMiterClipped
static OUString PenAlignmentToString(sal_uInt32 alignment)
static OUString PenDataFlagsToString(sal_uInt32 flags)
const sal_Int32 EmfPlusLineStyleDot
const sal_uInt32 EmfPlusPenDataMiterLimit
const sal_uInt32 EmfPlusPenDataJoin
const sal_Int32 EmfPlusLineStyleDashDot
const sal_uInt32 EmfPlusPenDataLineStyle
const sal_uInt32 EmfPlusPenDataAlignment
static OUString DashedLineCapTypeToString(sal_uInt32 dashedlinecaptype)
const sal_uInt32 EmfPlusPenDataCustomEndCap
const sal_Int32 EmfPlusLineStyleDashDotDot
static OUString LineCapTypeToString(sal_uInt32 linecap)
SwNodeOffset abs(const SwNodeOffset &a)
void Read(SvStream &s, EmfPlusHelperData const &rR)
virtual ~EMFPPen() override
sal_uInt32 customStartCapLen
double fMiterMinimumAngle
sal_uInt32 customEndCapLen
basegfx::B2DLineJoin maLineJoin
std::unique_ptr< EMFPCustomLineCap > customEndCap
std::unique_ptr< EMFPCustomLineCap > customStartCap
std::vector< float > compoundArray
void Read(SvStream &s, EmfPlusHelperData const &rR)
std::vector< float > dashPattern
drawinglayer::attribute::StrokeAttribute GetStrokeAttribute(const double aTransformation) const
basegfx::B2DHomMatrix pen_transformation
static bool readXForm(SvStream &rIn, basegfx::B2DHomMatrix &rTarget)