24#include <rtl/ustring.hxx>
30#include <config_global.h>
71#include <com/sun/star/awt/XControl.hpp>
72#include <com/sun/star/i18n/BreakIterator.hpp>
73#include <com/sun/star/i18n/CharacterIteratorMode.hpp>
74#include <com/sun/star/i18n/WordType.hpp>
75#include <com/sun/star/beans/XPropertySet.hpp>
83#define MAX_POLYGON_POINT_COUNT_METAFILE (0x0000fff0)
95 const sal_uInt32 nHalfCount((
nCount - 1) >> 1);
124 const sal_uInt32 nPolyCount(rPolyPolygon.
count());
131 for (sal_uInt32
a(0);
a < nPolyCount;
a++)
134 const sal_uInt32 nPointCount(aCandidate.
count());
135 bool bNeedToSplit(
false);
158 aCandidate,
false,
true, aCenter.
getX(),
false));
160 aCandidate,
false,
false, aCenter.
getX(),
false));
169 aCandidate,
true,
true, aCenter.
getY(),
false));
171 aCandidate,
true,
false, aCenter.
getY(),
false));
174 aSplitted.
append(aBottom);
179 aSplitted.
append(aCandidate);
183 if (aSplitted.
count() != nPolyCount)
185 rPolyPolygon = aSplitted;
202 sal_uInt32
nCount(rPoly.count());
236 aContentVDev->EnableOutput(
false);
237 aContentVDev->SetMapMode(pLastOutputDevice->
GetMapMode());
238 o_rContentMetafile.
Record(aContentVDev.
get());
239 aContentVDev->SetLineColor(pLastOutputDevice->
GetLineColor());
240 aContentVDev->SetFillColor(pLastOutputDevice->
GetFillColor());
241 aContentVDev->SetFont(pLastOutputDevice->
GetFont());
242 aContentVDev->SetDrawMode(pLastOutputDevice->
GetDrawMode());
243 aContentVDev->SetSettings(pLastOutputDevice->
GetSettings());
244 aContentVDev->SetRefPoint(pLastOutputDevice->
GetRefPoint());
250 o_rContentMetafile.
Stop();
258 return aPrimitiveRectangle;
263 bool bIsTransparenceGradient)
const
268 if (bIsTransparenceGradient)
282 Degree10(
static_cast<sal_uInt32
>(basegfx::rad2deg<10>(rFiGrAtt.
getAngle()))));
336 std::unique_ptr<SvtGraphicStroke> pRetval;
347 aStrokeColor = *pColor;
349 else if (pLineAttribute)
360 double fPolyLength(0.0);
370 fPolyLength, pStart->
isCentered() ? 0.5 : 0.0, &fStart);
385 if (0.0 != fStart || 0.0 != fEnd)
389 fPolyLength - fEnd, fPolyLength);
395 double fLineWidth(0.0);
396 double fMiterLength(0.0);
421 fMiterLength /= std::sin(M_PI / 12);
439 case css::drawing::LineCap_ROUND:
444 case css::drawing::LineCap_SQUARE:
452 if (pStrokeAttribute)
472 fLineWidth, eCap, eJoin, fMiterLength, std::move(aDashArray)));
486 "XPATHSTROKE_SEQ_BEGIN", 0,
static_cast<const sal_uInt8*
>(aMemStm.
GetData()),
529 , mpMetaFile(rOutDev.GetConnectMetaFile())
530 , mnSvtGraphicFillCount(0)
531 , mnSvtGraphicStrokeCount(0)
532 , mfCurrentUnifiedTransparence(0.0)
533 , mpPDFExtOutDevData(dynamic_cast<
vcl::PDFExtOutDevData*>(rOutDev.GetExtOutDevData()))
534 , mnCurrentOutlineLevel(-1)
535 , mbInListItem(false)
536 , mbBulletPresent(false)
539 "VclMetafileProcessor2D: Used on OutDev which has no MetaFile Target (!)");
942 OUString aAlternateDescription;
944 if (!rObjectInfoPrimitive2D.
getTitle().isEmpty())
946 aAlternateDescription += rObjectInfoPrimitive2D.
getTitle();
949 if (!rObjectInfoPrimitive2D.
getDesc().isEmpty())
951 if (!aAlternateDescription.isEmpty())
953 aAlternateDescription +=
" - ";
956 aAlternateDescription += rObjectInfoPrimitive2D.
getDesc();
964 if (!aAlternateDescription.isEmpty())
975 bool bUsingPDFExtOutDevData(
false);
977 static bool bSuppressPDFExtOutDevDataSupport(
false);
992 double fRotate, fShearX;
993 rTransform.
decompose(aScale, aTranslate, fRotate, fShearX);
996 && (aScale.
getY() > 0.0))
998 bUsingPDFExtOutDevData =
true;
1008 if (!bUsingPDFExtOutDevData)
1015 aTranslate.
getY() + aScale.
getY());
1017 sal_Int32(floor(aCurrentRange.
getMinX())), sal_Int32(floor(aCurrentRange.
getMinY())),
1018 sal_Int32(ceil(aCurrentRange.
getMaxX())), sal_Int32(ceil(aCurrentRange.
getMaxY())));
1027 double fFactorX(1.0);
1028 double fFactorY(1.0);
1031 const MapMode aMapMode100thmm(MapUnit::Map100thMM);
1040 fFactorX = aScale.
getX() / fDivX;
1045 fFactorY = aScale.
getY() / fDivY;
1059 sal_Int32(floor(aCropRange.
getMinX())), sal_Int32(floor(aCropRange.
getMinY())),
1060 sal_Int32(ceil(aCropRange.
getMaxX())), sal_Int32(ceil(aCropRange.
getMaxY())));
1067 255 - rAttr.
GetAlpha(), aCropRect, aCurrentRect);
1073 const uno::Reference<awt::XControl>& rXControl(rControlPrimitive.
getXControl());
1074 bool bIsPrintableControl(
false);
1081 uno::Reference<beans::XPropertySet> xModelProperties(rXControl->getModel(),
1083 uno::Reference<beans::XPropertySetInfo> xPropertyInfo(
1084 xModelProperties.is() ? xModelProperties->getPropertySetInfo()
1085 : uno::Reference<beans::XPropertySetInfo>());
1086 static constexpr OUStringLiteral sPrintablePropertyName(
u"Printable");
1088 if (xPropertyInfo.is() && xPropertyInfo->hasPropertyByName(sPrintablePropertyName))
1090 OSL_VERIFY(xModelProperties->getPropertyValue(sPrintablePropertyName)
1091 >>= bIsPrintableControl);
1094 catch (
const uno::Exception&)
1097 "VclMetafileProcessor2D: No access to printable flag of Control");
1102 if (!bIsPrintableControl)
1106 bool bDoProcessRecursively(
true);
1111 std::unique_ptr<vcl::PDFWriter::AnyWidget> pPDFControl(
1120 static_cast<sal_Int32
>(floor(aRangeLogic.
getMinY())),
1121 static_cast<sal_Int32
>(ceil(aRangeLogic.
getMaxX())),
1122 static_cast<sal_Int32
>(ceil(aRangeLogic.
getMaxY())));
1123 pPDFControl->Location = aRectLogic;
1125 Size aFontSize(pPDFControl->TextFont.GetFontSize());
1128 pPDFControl->TextFont.SetFontSize(aFontSize);
1132 switch (pPDFControl->Type)
1150 OUString
const& rAltText(rControlPrimitive.
GetAltText());
1151 if (!rAltText.isEmpty())
1160 bDoProcessRecursively =
false;
1170 if (!bDoProcessRecursively)
1184 OUString
const& rAltText(rControlPrimitive.
GetAltText());
1185 if (!rAltText.isEmpty())
1192 if (bDoProcessRecursively)
1198 uno::Reference<awt::XView> xControlView(rXControl, uno::UNO_QUERY_THROW);
1199 const uno::Reference<awt::XGraphics> xOriginalGraphics(xControlView->getGraphics());
1200 const uno::Reference<awt::XGraphics> xNewGraphics(
mpOutputDevice->CreateUnoGraphics());
1202 if (xNewGraphics.is())
1205 xControlView->setGraphics(xNewGraphics);
1217 bDoProcessRecursively =
false;
1220 xControlView->setGraphics(xOriginalGraphics);
1223 catch (
const uno::Exception&)
1226 "VclMetafileProcessor2D: Printing of Control failed");
1231 if (bDoProcessRecursively)
1247 static constexpr OStringLiteral aCommentStringCommon(
"FIELD_SEQ_BEGIN");
1250 switch (rFieldPrimitive.
getType())
1266 if (!
aURL.isEmpty())
1269 aCommentStringCommon, 0,
reinterpret_cast<const sal_uInt8*
>(
aURL.getStr()),
1270 2 *
aURL.getLength()));
1292 static_cast<sal_Int32
>(floor(aViewRange.
getMinY())),
1293 static_cast<sal_Int32
>(ceil(aViewRange.
getMaxX())),
1294 static_cast<sal_Int32
>(ceil(aViewRange.
getMaxY())));
1296 OUString
const content(rFieldPrimitive.
getValue(
"Representation"));
1300 rBookmarks.push_back(aBookmark);
1341 static constexpr OStringLiteral aCommentString(
"XTEXT_EOP");
1342 static bool bSuppressPDFExtOutDevDataSupport(
false);
1371 const sal_Int16 nNewOutlineLevel(
1372 std::max(
static_cast<sal_Int16
>(-1), rParagraphPrimitive.
getOutlineLevel()));
1410 if (bDumpAsListItem)
1427 if (bDumpAsListItem)
1481 uno::Reference<uno::XComponentContext> xContext(
1482 ::comphelper::getProcessComponentContext());
1487 const OUString& rTxt = rTextCandidate.
getText();
1488 const sal_Int32 nTextLength(rTextCandidate.
getTextLength());
1492 const css::lang::Locale& rLocale = rTextCandidate.
getLocale();
1496 sal_Int32 nNextCellBreak(rBreakIterator.nextCharacters(
1497 rTxt, nTextPosition, rLocale, css::i18n::CharacterIteratorMode::SKIPCELL, 0,
1499 css::i18n::Boundary nNextWordBoundary(rBreakIterator.getWordBoundary(
1500 rTxt, nTextPosition, rLocale, css::i18n::WordType::ANY_WORD,
true));
1501 sal_Int32 nNextSentenceBreak(
1502 rBreakIterator.endOfSentence(rTxt, nTextPosition, rLocale));
1503 static constexpr OStringLiteral aCommentStringA(
"XTEXT_EOC");
1504 static constexpr OStringLiteral aCommentStringB(
"XTEXT_EOW");
1505 static constexpr OStringLiteral aCommentStringC(
"XTEXT_EOS");
1507 for (sal_Int32
i(nTextPosition);
i < nTextPosition + nTextLength;
i++)
1510 if (
i == nNextCellBreak)
1514 nNextCellBreak = rBreakIterator.nextCharacters(
1515 rTxt,
i, rLocale, css::i18n::CharacterIteratorMode::SKIPCELL, 1, nDone);
1517 if (
i == nNextWordBoundary.endPos)
1521 nNextWordBoundary = rBreakIterator.getWordBoundary(
1522 rTxt,
i + 1, rLocale, css::i18n::WordType::ANY_WORD,
true);
1524 if (
i == nNextSentenceBreak)
1528 nNextSentenceBreak = rBreakIterator.endOfSentence(rTxt,
i + 1, rLocale);
1545 splitLinePolygon(rBasePolygon, aLeft, aRight);
1562 std::unique_ptr<SvtGraphicStroke> pSvtGraphicStroke;
1567 const bool bSupportSvtGraphicStroke(
false);
1569 if (bSupportSvtGraphicStroke)
1573 nullptr,
nullptr,
nullptr,
nullptr);
1580 if (bSupportSvtGraphicStroke)
1597 splitLinePolygon(rBasePolygon, aLeft, aRight);
1633 LineInfo aLineInfo(LineStyle::Solid,
1641 aHairLinePolyPolygon.
append(rBasePolygon);
1651 if (!array.empty() && array.size() % 2 == 0)
1653 double dashLen = array[0];
1659 while (
pos + 2 <= array.size())
1668 dotLen = array[
pos];
1671 while (
pos + 2 <= array.size())
1679 if (array.size() ==
pos)
1681 aHairLinePolyPolygon.
append(rBasePolygon);
1683 aLineInfo.
SetStyle(LineStyle::Dash);
1699 SAL_WARN(
"drawinglayer",
"dotdash array cannot be converted to LineInfo");
1701 &aHairLinePolyPolygon,
nullptr,
1707 for (sal_uInt32
a(0);
a < aHairLinePolyPolygon.
count();
a++)
1711 if (aCandidate.
count() > 1)
1740 splitLinePolygon(rBasePolygon, aLeft, aRight);
1751 rStrokeArrowPrimitive.
getEnd()));
1762 &rStrokeArrowPrimitive.
getEnd());
1776 const bool bDrawmodeChange(nOldDrawMode & DrawModeFlags::WhiteFill
1779 if (bDrawmodeChange)
1781 mpOutputDevice->SetDrawMode((nOldDrawMode & ~DrawModeFlags::WhiteFill)
1782 | DrawModeFlags::BlackFill);
1786 process(rStrokeArrowPrimitive);
1788 if (bDrawmodeChange)
1814 fillPolyPolygonNeededToBeSplit(aLocalPolyPolygon);
1816 std::unique_ptr<SvtGraphicFill> pSvtGraphicFill;
1840 std::max(1.0,
double(aBmpSizePixel.
Height())))
1849 aTransform.
matrix[0] = aTransformScale.
getX();
1850 aTransform.
matrix[4] = aTransformScale.
getY();
1853 aTransform.
matrix[2] = aTransformPosition.
getX();
1854 aTransform.
matrix[5] = aTransformPosition.
getY();
1887 fillPolyPolygonNeededToBeSplit(aLocalPolyPolygon);
1901 std::unique_ptr<SvtGraphicFill> pSvtGraphicFill;
1909 switch (rFillHatchAttribute.
getStyle())
1956 ? HatchStyle::Single
1958 : HatchStyle::Triple);
1973 bool useDecompose(
false);
1978 double fRotate, fShearX;
1984 || aScale.
getX() < 0.0 || aScale.
getY() < 0.0)
2003 useDecompose =
true;
2010 useDecompose =
true;
2020 useDecompose =
true;
2030 useDecompose =
true;
2038 if (
nullptr != pMetaFile && pMetaFile->
getSVG())
2045 sal_uInt16 nTmp(sal::static_int_cast<sal_uInt16>(rColorStops.size()));
2048 for (
auto const& rCand : rColorStops)
2074 fillPolyPolygonNeededToBeSplit(aLocalPolyPolygon);
2087 if (
nullptr != pMetaFile && pMetaFile->
getSVG())
2098 fillPolyPolygonNeededToBeSplit(aLocalPolyPolygon);
2116 std::unique_ptr<SvtGraphicFill> pSvtGraphicFill;
2126 case css::awt::GradientStyle_AXIAL:
2129 case css::awt::GradientStyle_RADIAL:
2130 case css::awt::GradientStyle_ELLIPTICAL:
2133 case css::awt::GradientStyle_SQUARE:
2134 case css::awt::GradientStyle_RECT:
2160 fillPolyPolygonNeededToBeSplit(aLocalPolyPolygon);
2242 if (!rContent.empty())
2255 static bool bForceToMetafile(
false);
2257 if (!bForceToMetafile && 1 == rContent.size())
2277 fillPolyPolygonNeededToBeSplit(aLocalPolyPolygon);
2283 const sal_uInt16 nTransPercentVcl(
static_cast<sal_uInt16
>(
2319 const Color aTransColor(nTransPercentVcl, nTransPercentVcl, nTransPercentVcl);
2321 aVCLGradient.
SetStyle(css::awt::GradientStyle_LINEAR);
2334 aPrimitiveRectangle.
GetSize(), aVCLGradient);
2355 if (rContent.empty() || rTransparence.empty())
2365 static bool bForceToBigTransparentVDev(
false);
2368 if (!bForceToBigTransparentVDev && 1 == rTransparence.size())
2376 pFiGradient =
nullptr;
2380 bool bSVGTransparencyColorStops(
false);
2407 bSVGTransparencyColorStops =
true;
2413 pFiGradient =
nullptr;
2417 if (
nullptr != pFiGradient)
2434 if (bSVGTransparencyColorStops)
2447 aPrimitiveRectangle.
GetSize(), aVCLGradient));
2449 pAction->addSVGTransparencyColorStops(aSVGTransparencyColorStops);
2456 aPrimitiveRectangle.
GetSize(), aVCLGradient);
2492 const double fLogicWidth(
2494 const double fLogicHeight(
2497 aDiscreteRange.
getHeight() / fLogicHeight);
2503 rTransparenceCandidate) };
2505 aEmbedding, std::move(xEmbedSeq)) };
2510 const sal_uInt32 nMaximumQuadraticPixels(500000);
2530 bool bNeedEndAnchor(
false);
2547 bNeedEndAnchor =
true;
2550 switch (rTagElement)
2577 switch (rTagElement)
2608 if (rStructureTagCandidate.
isImage())
void SetStyle(css::awt::GradientStyle eStyle)
void SetOfsX(sal_uInt16 nOfsX)
void SetStartIntensity(sal_uInt16 nIntens)
const Color & GetEndColor() const
void SetBorder(sal_uInt16 nBorder)
const Color & GetStartColor() const
void SetStartColor(const Color &rColor)
void SetSteps(sal_uInt16 nSteps)
css::awt::GradientStyle GetStyle() const
sal_uInt16 GetSteps() const
void SetOfsY(sal_uInt16 nOfsY)
void SetAngle(Degree10 nAngle)
void SetEndColor(const Color &rColor)
void SetEndIntensity(sal_uInt16 nIntens)
tools::Long GetTopCrop() const
bool IsSpecialDrawMode() const
tools::Long GetBottomCrop() const
tools::Long GetRightCrop() const
sal_uInt8 GetAlpha() const
tools::Long GetLeftCrop() const
MapMode GetPrefMapMode() const
const Graphic & GetGraphic() const
Size GetSizePixel(const OutputDevice *pRefDevice=nullptr) const
void SetDashCount(sal_uInt16 nDashCount)
void SetDashLen(double nDashLen)
void SetDotCount(sal_uInt16 nDotCount)
void SetLineJoin(basegfx::B2DLineJoin eLineJoin)
void SetLineCap(css::drawing::LineCap eLineCap)
void SetDistance(double nDistance)
void SetStyle(LineStyle eStyle)
void SetDotLen(double nDotLen)
void SetOrigin(const Point &rOrigin)
GDIMetaFile * GetConnectMetaFile() const
const vcl::Font & GetFont() const
const Point & GetRefPoint() const
SAL_WARN_UNUSED_RESULT Point LogicToLogic(const Point &rPtSource, const MapMode *pMapModeSource, const MapMode *pMapModeDest) const
const Color & GetLineColor() const
const MapMode & GetMapMode() const
DrawModeFlags GetDrawMode() const
const AllSettings & GetSettings() const
const Color & GetFillColor() const
constexpr tools::Long Height() const
constexpr tools::Long Width() const
virtual sal_uInt64 TellEnd() override
SvStream & WriteDouble(const double &rDouble)
SvStream & WriteUInt16(sal_uInt16 nUInt16)
::std::vector< double > DashArray
reference_type * get() const
bool decompose(B2DTuple &rScale, B2DTuple &rTranslate, double &rRotate, double &rShearX) const
void scale(double fX, double fY)
B2DPolygon const & getB2DPolygon(sal_uInt32 nIndex) const
void append(const B2DPolygon &rPolygon, sal_uInt32 nCount=1)
void transform(const basegfx::B2DHomMatrix &rMatrix)
B2DRange getB2DRange() const
basegfx::B2DPoint const & getB2DPoint(sal_uInt32 nIndex) const
void transform(const basegfx::B2DHomMatrix &rMatrix)
basegfx::B2DPoint getPrevControlPoint(sal_uInt32 nIndex) const
void setControlPoints(sal_uInt32 nIndex, const basegfx::B2DPoint &rPrev, const basegfx::B2DPoint &rNext)
bool areControlPointsUsed() const
void append(const basegfx::B2DPoint &rPoint, sal_uInt32 nCount)
B2DRange const & getB2DRange() const
void setClosed(bool bNew)
basegfx::B2DPoint getNextControlPoint(sal_uInt32 nIndex) const
B2DPoint getMaximum() const
BASEGFX_DLLPUBLIC void transform(const B2DHomMatrix &rMatrix)
B2DVector getRange() const
B2DPoint getCenter() const
B2DPoint getMinimum() const
::basegfx::BColor getModifiedColor(const ::basegfx::BColor &rSource) const
void expand(const Tuple2D< TYPE > &rTuple)
sal_uInt16 getSteps() const
double getOffsetY() const
bool cannotBeHandledByVCL() const
css::awt::GradientStyle getStyle() const
const basegfx::BColorStops & getColorStops() const
double getOffsetX() const
const Graphic & getGraphic() const
const basegfx::B2DRange & getGraphicRange() const
double getDistance() const
bool isFillBackground() const
const basegfx::BColor & getColor() const
HatchStyle getStyle() const
basegfx::B2DLineJoin getLineJoin() const
css::drawing::LineCap getLineCap() const
const basegfx::BColor & getColor() const
const basegfx::B2DPolyPolygon & getB2DPolyPolygon() const
const ::std::vector< double > & getDotDashArray() const
double getFullDotDashLen() const
virtual sal_uInt32 getPrimitive2DID() const =0
provide unique ID for fast identifying of known primitive implementations in renderers.
virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D &rViewInformation) const
The default implementation will use getDecomposition results to create the range.
ControlPrimitive2D class.
const css::uno::Reference< css::awt::XControl > & getXControl() const
mxControl access.
virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D &rViewInformation) const override
get range
const basegfx::B2DHomMatrix & getTransform() const
data read access
OUString const & GetAltText() const
FillGradientPrimitive2D class.
const attribute::FillGradientAttribute & getFillGradient() const
virtual sal_uInt32 getPrimitive2DID() const override
provide unique ID
GraphicPrimitive2D class.
const basegfx::B2DHomMatrix & getTransform() const
data read access
const GraphicAttr & getGraphicAttr() const
const GraphicObject & getGraphicObject() const
virtual void get2DDecomposition(Primitive2DDecompositionVisitor &rVisitor, const geometry::ViewInformation2D &rViewInformation) const override
local decomposition. Implementation will just return children
const Primitive2DContainer & getChildren() const
data read access
MarkerArrayPrimitive2D class.
const basegfx::B2DPolyPolygon & getMask() const
data read access
ModifiedColorPrimitive2D class.
ObjectInfoPrimitive2D class.
const OUString & getDesc() const
const OUString & getTitle() const
PagePreviewPrimitive2D class.
PointArrayPrimitive2D class.
PolyPolygonColorPrimitive2D class.
const basegfx::BColor & getBColor() const
virtual sal_uInt32 getPrimitive2DID() const override
provide unique ID
const basegfx::B2DPolyPolygon & getB2DPolyPolygon() const
data read access
PolyPolygonColorPrimitive2D class.
const basegfx::B2DRange & getDefinitionRange() const
const basegfx::B2DPolyPolygon & getB2DPolyPolygon() const
data read access
const attribute::FillGradientAttribute & getFillGradient() const
PolyPolygonGraphicPrimitive2D class.
const attribute::FillGraphicAttribute & getFillGraphic() const
const basegfx::B2DRange & getDefinitionRange() const
const basegfx::B2DPolyPolygon & getB2DPolyPolygon() const
data read access
PolyPolygonHatchPrimitive2D class.
const basegfx::B2DPolyPolygon & getB2DPolyPolygon() const
data read access
const basegfx::BColor & getBackgroundColor() const
const attribute::FillHatchAttribute & getFillHatch() const
const basegfx::B2DRange & getDefinitionRange() const
PolygonHairlinePrimitive2D class.
const basegfx::BColor & getBColor() const
const basegfx::B2DPolygon & getB2DPolygon() const
data read access
PolygonStrokeArrowPrimitive2D class.
const attribute::LineStartEndAttribute & getStart() const
data read access
const attribute::LineStartEndAttribute & getEnd() const
PolygonStrokePrimitive2D class.
const attribute::StrokeAttribute & getStrokeAttribute() const
const basegfx::B2DPolygon & getB2DPolygon() const
data read access
const attribute::LineAttribute & getLineAttribute() const
basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D &aViewInformation) const
StructureTagPrimitive2D class.
::std::vector< sal_Int32 > GetAnnotIds() const
const vcl::PDFWriter::StructElement & getStructureElement() const
data read access
bool isTaggedSdrObject() const
bool isBackground() const
void const * GetAnchorStructureElementKey() const
TextHierarchyBlockPrimitive2D class.
TextHierarchyBulletPrimitive2D class.
TextHierarchyEditPrimitive2D class.
TextHierarchyFieldPrimitive2D class.
OUString getValue(const OUString &rName) const
FieldType getType() const
data read access
TextHierarchyLinePrimitive2D class.
TextHierarchyParagraphPrimitive2D class.
sal_Int16 getOutlineLevel() const
data read access
TextSimplePortionPrimitive2D class.
sal_Int32 getTextLength() const
sal_Int32 getTextPosition() const
const css::lang::Locale & getLocale() const
const OUString & getText() const
TransparencePrimitive2D class.
const Primitive2DContainer & getTransparence() const
data read access
UnifiedTransparencePrimitive2D class.
double getTransparence() const
data read access
void process(const primitive2d::BasePrimitive2D &rCandidate)
const geometry::ViewInformation2D & getViewInformation2D() const
data read access
void RenderPointArrayPrimitive2D(const primitive2d::PointArrayPrimitive2D &rPointArrayCandidate)
void RenderEpsPrimitive2D(const primitive2d::EpsPrimitive2D &rEpsPrimitive2D)
basegfx::BColorModifierStack maBColorModifierStack
void RenderPolygonHairlinePrimitive2D(const primitive2d::PolygonHairlinePrimitive2D &rPolygonCandidate, bool bPixelBased)
void adaptTextToFillDrawMode() const
VclPtr< OutputDevice > mpOutputDevice
void RenderTransformPrimitive2D(const primitive2d::TransformPrimitive2D &rTransformCandidate)
void RenderPagePreviewPrimitive2D(const primitive2d::PagePreviewPrimitive2D &rPagePreviewCandidate)
basegfx::B2DHomMatrix maCurrentTransformation
void RenderModifiedColorPrimitive2D(const primitive2d::ModifiedColorPrimitive2D &rModifiedCandidate)
void RenderMarkerArrayPrimitive2D(const primitive2d::MarkerArrayPrimitive2D &rMarkerArrayCandidate)
void RenderTextSimpleOrDecoratedPortionPrimitive2D(const primitive2d::TextSimplePortionPrimitive2D &rTextCandidate)
void RenderBitmapPrimitive2D(const primitive2d::BitmapPrimitive2D &rBitmapCandidate)
std::optional< T > set(Args &&... args)
void SetStructureBoundingBox(const tools::Rectangle &rRect)
sal_Int32 EnsureStructureElement(void const *key)
std::vector< PDFExtOutDevBookmarkEntry > & GetBookmarks()
void SetStructureAnnotIds(::std::vector< sal_Int32 > const &rAnnotIds)
bool GetIsExportTaggedPDF() const
void BeginStructureElement(sal_Int32 id)
void SetAlternateText(const OUString &rText)
void SetStructureAttribute(PDFWriter::StructAttribute eAttr, PDFWriter::StructAttributeValue eVal)
bool GetIsExportFormFields() const
void EndGroup(const Graphic &rGraphic, sal_uInt8 nTransparency, const tools::Rectangle &rOutputRect, const tools::Rectangle &rVisibleOutputRect)
void CreateControl(const PDFWriter::AnyWidget &rControlType)
sal_Int32 WrapBeginStructureElement(PDFWriter::StructElement eType, const OUString &rAlias=OUString())
sal_Int32 CreateLink(const tools::Rectangle &rRect, OUString const &rAltText, sal_Int32 nPageNr=-1)
void EndStructureElement()
#define TOOLS_WARN_EXCEPTION(area, stream)
#define PRIMITIVE2D_ID_TEXTDECORATEDPORTIONPRIMITIVE2D
#define PRIMITIVE2D_ID_FILLGRADIENTPRIMITIVE2D
#define PRIMITIVE2D_ID_TEXTHIERARCHYBLOCKPRIMITIVE2D
#define PRIMITIVE2D_ID_TEXTHIERARCHYBULLETPRIMITIVE2D
#define PRIMITIVE2D_ID_CONTROLPRIMITIVE2D
#define PRIMITIVE2D_ID_TEXTHIERARCHYLINEPRIMITIVE2D
#define PRIMITIVE2D_ID_UNIFIEDTRANSPARENCEPRIMITIVE2D
#define PRIMITIVE2D_ID_TRANSFORMPRIMITIVE2D
#define PRIMITIVE2D_ID_TEXTHIERARCHYPARAGRAPHPRIMITIVE2D
#define PRIMITIVE2D_ID_POLYPOLYGONGRADIENTPRIMITIVE2D
#define PRIMITIVE2D_ID_POLYPOLYGONCOLORPRIMITIVE2D
#define PRIMITIVE2D_ID_POLYGONHAIRLINEPRIMITIVE2D
#define PRIMITIVE2D_ID_TEXTHIERARCHYEDITPRIMITIVE2D
#define PRIMITIVE2D_ID_GRAPHICPRIMITIVE2D
#define PRIMITIVE2D_ID_TRANSPARENCEPRIMITIVE2D
#define PRIMITIVE2D_ID_MODIFIEDCOLORPRIMITIVE2D
#define PRIMITIVE2D_ID_STRUCTURETAGPRIMITIVE2D
#define PRIMITIVE2D_ID_POINTARRAYPRIMITIVE2D
#define PRIMITIVE2D_ID_POLYPOLYGONGRAPHICPRIMITIVE2D
#define PRIMITIVE2D_ID_EPSPRIMITIVE2D
#define PRIMITIVE2D_ID_PAGEPREVIEWPRIMITIVE2D
#define PRIMITIVE2D_ID_WRONGSPELLPRIMITIVE2D
#define PRIMITIVE2D_ID_MASKPRIMITIVE2D
#define PRIMITIVE2D_ID_POLYGONSTROKEPRIMITIVE2D
#define PRIMITIVE2D_ID_BITMAPPRIMITIVE2D
#define PRIMITIVE2D_ID_POLYPOLYGONHATCHPRIMITIVE2D
#define PRIMITIVE2D_ID_POLYGONSTROKEARROWPRIMITIVE2D
#define PRIMITIVE2D_ID_OBJECTINFOPRIMITIVE2D
#define PRIMITIVE2D_ID_MARKERARRAYPRIMITIVE2D
#define PRIMITIVE2D_ID_TEXTSIMPLEPORTIONPRIMITIVE2D
#define PRIMITIVE2D_ID_TEXTHIERARCHYFIELDPRIMITIVE2D
#define SAL_WARN(area, stream)
double getLength(const B2DPolygon &rCandidate)
void applyLineDashing(const B2DPolygon &rCandidate, const std::vector< double > &rDotDashArray, B2DPolyPolygon *pLineTarget, B2DPolyPolygon *pGapTarget, double fDotDashLength)
B2DPolygon adaptiveSubdivideByAngle(const B2DPolygon &rCandidate, double fAngleBound)
B2DPolyPolygon clipPolyPolygonOnPolyPolygon(const B2DPolyPolygon &rCandidate, const B2DPolyPolygon &rClip, bool bInside, bool bStroke, size_t *pPointLimit)
B2DPolygon getSnippetAbsolute(const B2DPolygon &rCandidate, double fFrom, double fTo, double fLength)
B2DPolyPolygon clipPolygonOnParallelAxis(const B2DPolygon &rCandidate, bool bParallelToXAxis, bool bAboveAxis, double fValueOnOtherAxis, bool bStroke)
B2DHomMatrix createTranslateB2DHomMatrix(double fTranslateX, double fTranslateY)
B2DPolyPolygon createAreaGeometryForLineStartEnd(const B2DPolygon &rCandidate, const B2DPolyPolygon &rArrow, bool bStart, double fWidth, double fCandidateLength, double fDockingPosition, double *pConsumedLength=nullptr, double fShift=0.0)
B2IRange fround(const B2DRange &rRange)
ViewInformation2D createViewInformation2D(const css::uno::Sequence< css::beans::PropertyValue > &rViewParameters)
@ FIELD_TYPE_URL
uses URL as string -> special handling
@ FIELD_TYPE_PAGE
uses "FIELD_SEQ_BEGIN;PageField" -> special handling
BitmapEx convertToBitmapEx(drawinglayer::primitive2d::Primitive2DContainer &&rSeq, const geometry::ViewInformation2D &rViewInformation2D, sal_uInt32 nDiscreteWidth, sal_uInt32 nDiscreteHeight, sal_uInt32 nMaxSquarePixels)