drawinglayer/source/tools/primitive2dxmldump.cxx | 130 +++++++++------------- include/drawinglayer/tools/primitive2dxmldump.hxx | 1 2 files changed, 60 insertions(+), 71 deletions(-)
New commits: commit 0c534406b00062459638b12df4bddcab4505da8d Author: Tomaž Vajngerl <[email protected]> AuthorDate: Wed Sep 25 15:19:03 2024 +0200 Commit: Tomaž Vajngerl <[email protected]> CommitDate: Thu Sep 26 16:44:43 2024 +0200 Clean-up Primitive2D XML dump Use static_cast instead of dynamic_cast when it makes more sense to do so and use auto to make the code more readable (when we write the type 2 times). Change-Id: I433885ab11437b1e086e0b8e255ed9dbe7e43b90 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173978 Reviewed-by: Tomaž Vajngerl <[email protected]> Tested-by: Jenkins diff --git a/drawinglayer/source/tools/primitive2dxmldump.cxx b/drawinglayer/source/tools/primitive2dxmldump.cxx index 91567d8aabac..218d4c8a3cc3 100644 --- a/drawinglayer/source/tools/primitive2dxmldump.cxx +++ b/drawinglayer/source/tools/primitive2dxmldump.cxx @@ -670,6 +670,15 @@ OUString Primitive2dXmlDump::idToString(sal_uInt32 nId) return drawinglayer::primitive2d::idToString(nId); } +void Primitive2dXmlDump::runDecomposeAndRecurse(const BasePrimitive2D* pBasePrimitive, + ::tools::XmlWriter& rWriter) +{ + drawinglayer::primitive2d::Primitive2DContainer aPrimitiveContainer; + pBasePrimitive->get2DDecomposition(aPrimitiveContainer, + drawinglayer::geometry::ViewInformation2D()); + decomposeAndWrite(aPrimitiveContainer, rWriter); +} + void Primitive2dXmlDump::decomposeAndWrite( const drawinglayer::primitive2d::Primitive2DContainer& rPrimitive2DSequence, ::tools::XmlWriter& rWriter) @@ -691,8 +700,8 @@ void Primitive2dXmlDump::decomposeAndWrite( { case PRIMITIVE2D_ID_BITMAPPRIMITIVE2D: { - const BitmapPrimitive2D& rBitmapPrimitive2D - = dynamic_cast<const BitmapPrimitive2D&>(*pBasePrimitive); + const auto& rBitmapPrimitive2D + = static_cast<const BitmapPrimitive2D&>(*pBasePrimitive); rWriter.startElement("bitmap"); writeMatrix(rWriter, rBitmapPrimitive2D.getTransform()); @@ -721,8 +730,8 @@ void Primitive2dXmlDump::decomposeAndWrite( break; case PRIMITIVE2D_ID_HIDDENGEOMETRYPRIMITIVE2D: { - const HiddenGeometryPrimitive2D& rHiddenGeometryPrimitive2D - = dynamic_cast<const HiddenGeometryPrimitive2D&>(*pBasePrimitive); + const auto& rHiddenGeometryPrimitive2D + = static_cast<const HiddenGeometryPrimitive2D&>(*pBasePrimitive); rWriter.startElement("hiddengeometry"); decomposeAndWrite(rHiddenGeometryPrimitive2D.getChildren(), rWriter); rWriter.endElement(); @@ -731,8 +740,8 @@ void Primitive2dXmlDump::decomposeAndWrite( case PRIMITIVE2D_ID_TRANSFORMPRIMITIVE2D: { - const TransformPrimitive2D& rTransformPrimitive2D - = dynamic_cast<const TransformPrimitive2D&>(*pBasePrimitive); + const auto& rTransformPrimitive2D + = static_cast<const TransformPrimitive2D&>(*pBasePrimitive); rWriter.startElement("transform"); writeMatrix(rWriter, rTransformPrimitive2D.getTransformation()); decomposeAndWrite(rTransformPrimitive2D.getChildren(), rWriter); @@ -742,8 +751,8 @@ void Primitive2dXmlDump::decomposeAndWrite( case PRIMITIVE2D_ID_POLYPOLYGONCOLORPRIMITIVE2D: { - const PolyPolygonColorPrimitive2D& rPolyPolygonColorPrimitive2D - = dynamic_cast<const PolyPolygonColorPrimitive2D&>(*pBasePrimitive); + const auto& rPolyPolygonColorPrimitive2D + = static_cast<const PolyPolygonColorPrimitive2D&>(*pBasePrimitive); rWriter.startElement("polypolygoncolor"); rWriter.attribute("color", @@ -758,8 +767,8 @@ void Primitive2dXmlDump::decomposeAndWrite( break; case PRIMITIVE2D_ID_POINTARRAYPRIMITIVE2D: { - const PointArrayPrimitive2D& rPointArrayPrimitive2D - = dynamic_cast<const PointArrayPrimitive2D&>(*pBasePrimitive); + const auto& rPointArrayPrimitive2D + = static_cast<const PointArrayPrimitive2D&>(*pBasePrimitive); rWriter.startElement("pointarray"); rWriter.attribute("color", @@ -782,8 +791,8 @@ void Primitive2dXmlDump::decomposeAndWrite( case PRIMITIVE2D_ID_POLYGONSTROKEARROWPRIMITIVE2D: { - const PolygonStrokeArrowPrimitive2D& rPolygonStrokeArrowPrimitive2D - = dynamic_cast<const PolygonStrokeArrowPrimitive2D&>(*pBasePrimitive); + const auto& rPolygonStrokeArrowPrimitive2D + = static_cast<const PolygonStrokeArrowPrimitive2D&>(*pBasePrimitive); rWriter.startElement("polygonstrokearrow"); rWriter.startElement("polygon"); @@ -824,8 +833,8 @@ void Primitive2dXmlDump::decomposeAndWrite( case PRIMITIVE2D_ID_POLYGONSTROKEPRIMITIVE2D: { - const PolygonStrokePrimitive2D& rPolygonStrokePrimitive2D - = dynamic_cast<const PolygonStrokePrimitive2D&>(*pBasePrimitive); + const auto& rPolygonStrokePrimitive2D + = static_cast<const PolygonStrokePrimitive2D&>(*pBasePrimitive); rWriter.startElement("polygonstroke"); rWriter.startElement("polygon"); @@ -840,8 +849,8 @@ void Primitive2dXmlDump::decomposeAndWrite( break; case PRIMITIVE2D_ID_POLYPOLYGONSTROKEPRIMITIVE2D: { - const PolyPolygonStrokePrimitive2D& rPolyPolygonStrokePrimitive2D - = dynamic_cast<const PolyPolygonStrokePrimitive2D&>(*pBasePrimitive); + const auto& rPolyPolygonStrokePrimitive2D + = static_cast<const PolyPolygonStrokePrimitive2D&>(*pBasePrimitive); rWriter.startElement("polypolygonstroke"); writeLineAttribute(rWriter, rPolyPolygonStrokePrimitive2D.getLineAttribute()); @@ -854,8 +863,8 @@ void Primitive2dXmlDump::decomposeAndWrite( case PRIMITIVE2D_ID_POLYGONHAIRLINEPRIMITIVE2D: { - const PolygonHairlinePrimitive2D& rPolygonHairlinePrimitive2D - = dynamic_cast<const PolygonHairlinePrimitive2D&>(*pBasePrimitive); + const auto& rPolygonHairlinePrimitive2D + = static_cast<const PolygonHairlinePrimitive2D&>(*pBasePrimitive); rWriter.startElement("polygonhairline"); rWriter.attribute("color", @@ -872,8 +881,8 @@ void Primitive2dXmlDump::decomposeAndWrite( case PRIMITIVE2D_ID_TEXTDECORATEDPORTIONPRIMITIVE2D: { - const TextDecoratedPortionPrimitive2D& rTextDecoratedPortionPrimitive2D - = dynamic_cast<const TextDecoratedPortionPrimitive2D&>(*pBasePrimitive); + const auto& rTextDecoratedPortionPrimitive2D + = static_cast<const TextDecoratedPortionPrimitive2D&>(*pBasePrimitive); rWriter.startElement("textdecoratedportion"); writeMatrix(rWriter, rTextDecoratedPortionPrimitive2D.getTextTransform()); @@ -891,8 +900,8 @@ void Primitive2dXmlDump::decomposeAndWrite( case PRIMITIVE2D_ID_TEXTLINEPRIMITIVE2D: { - const TextLinePrimitive2D& rTextLinePrimitive2D - = dynamic_cast<const TextLinePrimitive2D&>(*pBasePrimitive); + const auto& rTextLinePrimitive2D + = static_cast<const TextLinePrimitive2D&>(*pBasePrimitive); rWriter.startElement("textline"); writeMatrix(rWriter, rTextLinePrimitive2D.getObjectTransformation()); @@ -907,8 +916,8 @@ void Primitive2dXmlDump::decomposeAndWrite( case PRIMITIVE2D_ID_TEXTSIMPLEPORTIONPRIMITIVE2D: { - const TextSimplePortionPrimitive2D& rTextSimplePortionPrimitive2D - = dynamic_cast<const TextSimplePortionPrimitive2D&>(*pBasePrimitive); + const auto& rTextSimplePortionPrimitive2D + = static_cast<const TextSimplePortionPrimitive2D&>(*pBasePrimitive); rWriter.startElement("textsimpleportion"); basegfx::B2DVector aScale, aTranslate; @@ -951,8 +960,8 @@ void Primitive2dXmlDump::decomposeAndWrite( case PRIMITIVE2D_ID_GROUPPRIMITIVE2D: { - const GroupPrimitive2D& rGroupPrimitive2D - = dynamic_cast<const GroupPrimitive2D&>(*pBasePrimitive); + const auto& rGroupPrimitive2D + = static_cast<const GroupPrimitive2D&>(*pBasePrimitive); rWriter.startElement("group"); decomposeAndWrite(rGroupPrimitive2D.getChildren(), rWriter); rWriter.endElement(); @@ -961,8 +970,7 @@ void Primitive2dXmlDump::decomposeAndWrite( case PRIMITIVE2D_ID_MASKPRIMITIVE2D: { - const MaskPrimitive2D& rMaskPrimitive2D - = dynamic_cast<const MaskPrimitive2D&>(*pBasePrimitive); + const auto& rMaskPrimitive2D = static_cast<const MaskPrimitive2D&>(*pBasePrimitive); rWriter.startElement("mask"); writePolyPolygon(rWriter, rMaskPrimitive2D.getMask()); decomposeAndWrite(rMaskPrimitive2D.getChildren(), rWriter); @@ -972,8 +980,8 @@ void Primitive2dXmlDump::decomposeAndWrite( case PRIMITIVE2D_ID_UNIFIEDTRANSPARENCEPRIMITIVE2D: { - const UnifiedTransparencePrimitive2D& rUnifiedTransparencePrimitive2D - = dynamic_cast<const UnifiedTransparencePrimitive2D&>(*pBasePrimitive); + const auto& rUnifiedTransparencePrimitive2D + = static_cast<const UnifiedTransparencePrimitive2D&>(*pBasePrimitive); rWriter.startElement("unifiedtransparence"); rWriter.attribute( "transparence", @@ -985,8 +993,8 @@ void Primitive2dXmlDump::decomposeAndWrite( case PRIMITIVE2D_ID_OBJECTINFOPRIMITIVE2D: { - const ObjectInfoPrimitive2D& rObjectInfoPrimitive2D - = dynamic_cast<const ObjectInfoPrimitive2D&>(*pBasePrimitive); + const auto& rObjectInfoPrimitive2D + = static_cast<const ObjectInfoPrimitive2D&>(*pBasePrimitive); rWriter.startElement("objectinfo"); decomposeAndWrite(rObjectInfoPrimitive2D.getChildren(), rWriter); @@ -996,8 +1004,8 @@ void Primitive2dXmlDump::decomposeAndWrite( case PRIMITIVE2D_ID_STRUCTURETAGPRIMITIVE2D: { - const StructureTagPrimitive2D& rStructureTagPrimitive2D - = dynamic_cast<const StructureTagPrimitive2D&>(*pBasePrimitive); + const auto& rStructureTagPrimitive2D + = static_cast<const StructureTagPrimitive2D&>(*pBasePrimitive); rWriter.startElement("structuretag"); rWriter.attribute("structureelement", rStructureTagPrimitive2D.getStructureElement()); @@ -1009,8 +1017,8 @@ void Primitive2dXmlDump::decomposeAndWrite( case PRIMITIVE2D_ID_SVGRADIALGRADIENTPRIMITIVE2D: { - const SvgRadialGradientPrimitive2D& rSvgRadialGradientPrimitive2D - = dynamic_cast<const SvgRadialGradientPrimitive2D&>(*pBasePrimitive); + const auto& rSvgRadialGradientPrimitive2D + = static_cast<const SvgRadialGradientPrimitive2D&>(*pBasePrimitive); rWriter.startElement("svgradialgradient"); if (rSvgRadialGradientPrimitive2D.isFocalSet()) { @@ -1040,8 +1048,8 @@ void Primitive2dXmlDump::decomposeAndWrite( case PRIMITIVE2D_ID_SVGLINEARGRADIENTPRIMITIVE2D: { - const SvgLinearGradientPrimitive2D& rSvgLinearGradientPrimitive2D - = dynamic_cast<const SvgLinearGradientPrimitive2D&>(*pBasePrimitive); + const auto& rSvgLinearGradientPrimitive2D + = static_cast<const SvgLinearGradientPrimitive2D&>(*pBasePrimitive); rWriter.startElement("svglineargradient"); basegfx::B2DPoint aStartAttribute = rSvgLinearGradientPrimitive2D.getStart(); basegfx::B2DPoint aEndAttribute = rSvgLinearGradientPrimitive2D.getEnd(); @@ -1067,14 +1075,9 @@ void Primitive2dXmlDump::decomposeAndWrite( case PRIMITIVE2D_ID_METAFILEPRIMITIVE2D: { - const MetafilePrimitive2D& rMetafilePrimitive2D - = dynamic_cast<const MetafilePrimitive2D&>(*pBasePrimitive); rWriter.startElement("metafile"); - drawinglayer::primitive2d::Primitive2DContainer aPrimitiveContainer; // since the graphic is not rendered in a document, we do not need a concrete view information - rMetafilePrimitive2D.get2DDecomposition( - aPrimitiveContainer, drawinglayer::geometry::ViewInformation2D()); - decomposeAndWrite(aPrimitiveContainer, rWriter); + runDecomposeAndRecurse(pBasePrimitive, rWriter); rWriter.endElement(); } @@ -1084,10 +1087,7 @@ void Primitive2dXmlDump::decomposeAndWrite( { // SdrRectanglePrimitive2D is private to us. rWriter.startElement("sdrrectangle"); - drawinglayer::primitive2d::Primitive2DContainer aPrimitiveContainer; - pBasePrimitive->get2DDecomposition(aPrimitiveContainer, - drawinglayer::geometry::ViewInformation2D()); - decomposeAndWrite(aPrimitiveContainer, rWriter); + runDecomposeAndRecurse(pBasePrimitive, rWriter); rWriter.endElement(); break; } @@ -1096,10 +1096,7 @@ void Primitive2dXmlDump::decomposeAndWrite( { // SdrBlockTextPrimitive2D is private to us. rWriter.startElement("sdrblocktext"); - drawinglayer::primitive2d::Primitive2DContainer aPrimitiveContainer; - pBasePrimitive->get2DDecomposition(aPrimitiveContainer, - drawinglayer::geometry::ViewInformation2D()); - decomposeAndWrite(aPrimitiveContainer, rWriter); + runDecomposeAndRecurse(pBasePrimitive, rWriter); rWriter.endElement(); break; } @@ -1108,10 +1105,7 @@ void Primitive2dXmlDump::decomposeAndWrite( { // TextHierarchyBlockPrimitive2D. rWriter.startElement("texthierarchyblock"); - drawinglayer::primitive2d::Primitive2DContainer aPrimitiveContainer; - pBasePrimitive->get2DDecomposition(aPrimitiveContainer, - drawinglayer::geometry::ViewInformation2D()); - decomposeAndWrite(aPrimitiveContainer, rWriter); + runDecomposeAndRecurse(pBasePrimitive, rWriter); rWriter.endElement(); break; } @@ -1120,10 +1114,7 @@ void Primitive2dXmlDump::decomposeAndWrite( { // TextHierarchyParagraphPrimitive2D. rWriter.startElement("texthierarchyparagraph"); - drawinglayer::primitive2d::Primitive2DContainer aPrimitiveContainer; - pBasePrimitive->get2DDecomposition(aPrimitiveContainer, - drawinglayer::geometry::ViewInformation2D()); - decomposeAndWrite(aPrimitiveContainer, rWriter); + runDecomposeAndRecurse(pBasePrimitive, rWriter); rWriter.endElement(); break; } @@ -1132,10 +1123,7 @@ void Primitive2dXmlDump::decomposeAndWrite( { // TextHierarchyLinePrimitive2D. rWriter.startElement("texthierarchyline"); - drawinglayer::primitive2d::Primitive2DContainer aPrimitiveContainer; - pBasePrimitive->get2DDecomposition(aPrimitiveContainer, - drawinglayer::geometry::ViewInformation2D()); - decomposeAndWrite(aPrimitiveContainer, rWriter); + runDecomposeAndRecurse(pBasePrimitive, rWriter); rWriter.endElement(); break; } @@ -1143,8 +1131,8 @@ void Primitive2dXmlDump::decomposeAndWrite( case PRIMITIVE2D_ID_SHADOWPRIMITIVE2D: { // ShadowPrimitive2D. - const ShadowPrimitive2D& rShadowPrimitive2D - = dynamic_cast<const ShadowPrimitive2D&>(*pBasePrimitive); + const auto& rShadowPrimitive2D + = static_cast<const ShadowPrimitive2D&>(*pBasePrimitive); rWriter.startElement("shadow"); rWriter.attribute("color", convertColorToString(rShadowPrimitive2D.getShadowColor())); @@ -1161,8 +1149,8 @@ void Primitive2dXmlDump::decomposeAndWrite( case PRIMITIVE2D_ID_MODIFIEDCOLORPRIMITIVE2D: { // ModifiedColorPrimitive2D. - const ModifiedColorPrimitive2D& rModifiedColorPrimitive2D - = dynamic_cast<const ModifiedColorPrimitive2D&>(*pBasePrimitive); + const auto& rModifiedColorPrimitive2D + = static_cast<const ModifiedColorPrimitive2D&>(*pBasePrimitive); rWriter.startElement("modifiedColor"); const basegfx::BColorModifierSharedPtr& aColorModifier = rModifiedColorPrimitive2D.getColorModifier(); @@ -1175,8 +1163,8 @@ void Primitive2dXmlDump::decomposeAndWrite( case PRIMITIVE2D_ID_SOFTEDGEPRIMITIVE2D: { // SoftEdgePrimitive2D. - const SoftEdgePrimitive2D& rSoftEdgePrimitive2D - = dynamic_cast<const SoftEdgePrimitive2D&>(*pBasePrimitive); + const auto& rSoftEdgePrimitive2D + = static_cast<const SoftEdgePrimitive2D&>(*pBasePrimitive); rWriter.startElement("softedge"); rWriter.attribute("radius", OUString::number(rSoftEdgePrimitive2D.getRadius())); @@ -1188,7 +1176,7 @@ void Primitive2dXmlDump::decomposeAndWrite( case PRIMITIVE2D_ID_SCENEPRIMITIVE2D: { const auto& rScenePrimitive2D - = dynamic_cast<const drawinglayer::primitive2d::ScenePrimitive2D&>( + = static_cast<const drawinglayer::primitive2d::ScenePrimitive2D&>( *pBasePrimitive); rWriter.startElement("scene"); diff --git a/include/drawinglayer/tools/primitive2dxmldump.hxx b/include/drawinglayer/tools/primitive2dxmldump.hxx index 29c432f24680..9fc10c2bea49 100644 --- a/include/drawinglayer/tools/primitive2dxmldump.hxx +++ b/include/drawinglayer/tools/primitive2dxmldump.hxx @@ -28,6 +28,7 @@ private: std::vector<bool> maFilter; protected: + void runDecomposeAndRecurse(const drawinglayer::primitive2d::BasePrimitive2D* pBasePrimitive, tools::XmlWriter& rWriter); void decomposeAndWrite(const drawinglayer::primitive2d::Primitive2DContainer& rPrimitive2DSequence, tools::XmlWriter& rWriter); static OUString idToString(sal_uInt32 nId);
