/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * Version: MPL 1.1 / GPLv3+ / LGPLv3+ * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License or as specified alternatively below. You may obtain a copy of * the License at http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * Major Contributor(s): * Copyright (C) 2012 Artur Dorda (initial developer) * * All Rights Reserved. * * For minor contributions see the git repository. * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 3 or later (the "GPLv3+"), or * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"), * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable * instead of those above. */ #include #include #include using namespace com::sun::star; // ------------------------------------------------------ // ---------- EnhancedCustomShapeExtrusion.idl ---------- // ------------------------------------------------------ void EnhancedShapeDumper::dumpEnhancedCustomShapeExtrusionService(uno::Reference< beans::XPropertySet > xPropSet) { { uno::Any anotherAny = xPropSet->getPropertyValue("Extrusion"); sal_Bool bExtrusion; if(anotherAny >>= bExtrusion) dumpExtrusionAsAttribute(bExtrusion); } { uno::Any anotherAny = xPropSet->getPropertyValue("Brightness"); double aBrightness; if(anotherAny >>= aBrightness) dumpBrightnessAsAttribute(aBrightness); } { uno::Any anotherAny = xPropSet->getPropertyValue("Depth"); drawing::EnhancedCustomShapeParameterPair aDepth; if(anotherAny >>= aDepth) dumpDepthAsElement(aDepth); } { uno::Any anotherAny = xPropSet->getPropertyValue("Diffusion"); double aDiffusion; if(anotherAny >>= aDiffusion) dumpDiffusionAsAttribute(aDiffusion); } { uno::Any anotherAny = xPropSet->getPropertyValue("NumberOfLineSegments"); sal_Int32 aNumberOfLineSegments; if(anotherAny >>= aNumberOfLineSegments) dumpNumberOfLineSegmentsAsAttribute(aNumberOfLineSegments); } { uno::Any anotherAny = xPropSet->getPropertyValue("LightFace"); sal_Bool bLightFace; if(anotherAny >>= bLightFace) dumpLightFaceAsAttribute(bLightFace); } { uno::Any anotherAny = xPropSet->getPropertyValue("FirstLightHarsh"); sal_Bool bFirstLightHarsh; if(anotherAny >>= bFirstLightHarsh) dumpFirstLightHarshAsAttribute(bFirstLightHarsh); } { uno::Any anotherAny = xPropSet->getPropertyValue("SecondLightHarsh"); sal_Bool bSecondLightHarsh; if(anotherAny >>= bSecondLightHarsh) dumpSecondLightHarshAsAttribute(bSecondLightHarsh); } { uno::Any anotherAny = xPropSet->getPropertyValue("FirstLightLevel"); double aFirstLightLevel; if(anotherAny >>= aFirstLightLevel) dumpFirstLightLevelAsAttribute(aFirstLightLevel); } { uno::Any anotherAny = xPropSet->getPropertyValue("SecondLightLevel"); double aSecondLightLevel; if(anotherAny >>= aSecondLightLevel) dumpSecondLightLevelAsAttribute(aSecondLightLevel); } { uno::Any anotherAny = xPropSet->getPropertyValue("FirstLightDirection"); drawing::Direction3D aFirstLightDirection; if(anotherAny >>= aFirstLightDirection) dumpFirstLightDirectionAsElement(aFirstLightDirection); } { uno::Any anotherAny = xPropSet->getPropertyValue("SecondLightDirection"); drawing::Direction3D aSecondLightDirection; if(anotherAny >>= aSecondLightDirection) dumpSecondLightDirectionAsElement(aSecondLightDirection); } { uno::Any anotherAny = xPropSet->getPropertyValue("Metal"); sal_Bool bMetal; if(anotherAny >>= bMetal) dumpMetalAsAttribute(bMetal); } { uno::Any anotherAny = xPropSet->getPropertyValue("ShadeMode"); drawing::ShadeMode eShadeMode; if(anotherAny >>= eShadeMode) dumpShadeModeAsAttribute(eShadeMode); } { uno::Any anotherAny = xPropSet->getPropertyValue("RotateAngle"); drawing::EnhancedCustomShapeParameterPair aRotateAngle; if(anotherAny >>= aRotateAngle) dumpRotateAngleAsElement(aRotateAngle); } { uno::Any anotherAny = xPropSet->getPropertyValue("RotationCenter"); drawing::Direction3D aRotationCenter; if(anotherAny >>= aRotationCenter) dumpRotationCenterAsElement(aRotationCenter); } { uno::Any anotherAny = xPropSet->getPropertyValue("Shininess"); double aShininess; if(anotherAny >>= aShininess) dumpShininessAsAttribute(aShininess); } { uno::Any anotherAny = xPropSet->getPropertyValue("Skew"); drawing::EnhancedCustomShapeParameterPair aSkew; if(anotherAny >>= aSkew) dumpSkewAsElement(aSkew); } { uno::Any anotherAny = xPropSet->getPropertyValue("Specularity"); double aSpecularity; if(anotherAny >>= aSpecularity) dumpSpecularityAsAttribute(aSpecularity); } { uno::Any anotherAny = xPropSet->getPropertyValue("ProjectionMode"); drawing::ProjectionMode eProjectionMode; if(anotherAny >>= eProjectionMode) dumpProjectionModeAsAttribute(eProjectionMode); } { uno::Any anotherAny = xPropSet->getPropertyValue("ViewPoint"); drawing::Position3D aViewPoint; if(anotherAny >>= aViewPoint) dumpViewPointAsElement(aViewPoint); } { uno::Any anotherAny = xPropSet->getPropertyValue("Origin"); drawing::EnhancedCustomShapeParameterPair aOrigin; if(anotherAny >>= aOrigin) dumpOriginAsElement(aOrigin); } { uno::Any anotherAny = xPropSet->getPropertyValue("ExtrusionColor"); sal_Bool bExtrusionColor; if(anotherAny >>= bExtrusionColor) dumpExtrusionColorAsAttribute(bExtrusionColor); } } void EnhancedShapeDumper::dumpExtrusionAsAttribute(sal_Bool bExtrusion) { if(bExtrusion) xmlTextWriterWriteFormatAttribute( xmlWriter, BAD_CAST("extrusion"), "%s", "true"); else xmlTextWriterWriteFormatAttribute( xmlWriter, BAD_CAST("extrusion"), "%s", "false"); } void EnhancedShapeDumper::dumpBrightnessAsAttribute(double aBrightness) { xmlTextWriterWriteFormatAttribute( xmlWriter, BAD_CAST("brightness"), "%f", aBrightness); } void EnhancedShapeDumper::dumpEnhancedCustomShapeParameterPair(drawing::EnhancedCustomShapeParameterPair aParameterPair) { { xmlTextWriterStartElement(xmlWriter, BAD_CAST( "First" )); uno::Any aAny = aParameterPair.First.Value; rtl::OUString sValue; if(aAny >>= sValue) { xmlTextWriterWriteFormatAttribute(xmlWriter, BAD_CAST("value"), "%s", rtl::OUStringToOString(sValue, RTL_TEXTENCODING_UTF8).getStr()); } sal_Int32 aType = aParameterPair.First.Type; xmlTextWriterWriteFormatAttribute(xmlWriter, BAD_CAST("type"), "%" SAL_PRIdINT32, aType); xmlTextWriterEndElement( xmlWriter ); } { xmlTextWriterStartElement(xmlWriter, BAD_CAST( "Second" )); uno::Any aAny = aParameterPair.Second.Value; rtl::OUString sValue; if(aAny >>= sValue) { xmlTextWriterWriteFormatAttribute(xmlWriter, BAD_CAST("value"), "%s", rtl::OUStringToOString(sValue, RTL_TEXTENCODING_UTF8).getStr()); } sal_Int32 aType = aParameterPair.First.Type; xmlTextWriterWriteFormatAttribute(xmlWriter, BAD_CAST("type"), "%" SAL_PRIdINT32, aType); xmlTextWriterEndElement( xmlWriter ); } } void EnhancedShapeDumper::dumpDepthAsElement(drawing::EnhancedCustomShapeParameterPair aDepth) { xmlTextWriterStartElement(xmlWriter, BAD_CAST( "Depth" )); dumpEnhancedCustomShapeParameterPair(aDepth); xmlTextWriterEndElement( xmlWriter ); } void EnhancedShapeDumper::dumpDiffusionAsAttribute(double aDiffusion) { xmlTextWriterWriteFormatAttribute( xmlWriter, BAD_CAST("diffusion"), "%f", aDiffusion); } void EnhancedShapeDumper::dumpNumberOfLineSegmentsAsAttribute(sal_Int32 aNumberOfLineSegments) { xmlTextWriterWriteFormatAttribute(xmlWriter, BAD_CAST("numberOfLineSegments"), "%" SAL_PRIdINT32, aNumberOfLineSegments); } void EnhancedShapeDumper::dumpLightFaceAsAttribute(sal_Bool bLightFace) { if(bLightFace) xmlTextWriterWriteFormatAttribute( xmlWriter, BAD_CAST("lightFace"), "%s", "true"); else xmlTextWriterWriteFormatAttribute( xmlWriter, BAD_CAST("lightFace"), "%s", "false"); } void EnhancedShapeDumper::dumpFirstLightHarshAsAttribute(sal_Bool bFirstLightHarsh) { if(bFirstLightHarsh) xmlTextWriterWriteFormatAttribute( xmlWriter, BAD_CAST("firstLightHarsh"), "%s", "true"); else xmlTextWriterWriteFormatAttribute( xmlWriter, BAD_CAST("firstLightHarsh"), "%s", "false"); } void EnhancedShapeDumper::dumpSecondLightHarshAsAttribute(sal_Bool bSecondLightHarsh) { if(bSecondLightHarsh) xmlTextWriterWriteFormatAttribute( xmlWriter, BAD_CAST("secondLightHarsh"), "%s", "true"); else xmlTextWriterWriteFormatAttribute( xmlWriter, BAD_CAST("secondLightHarsh"), "%s", "false"); } void EnhancedShapeDumper::dumpFirstLightLevelAsAttribute(double aFirstLightLevel) { xmlTextWriterWriteFormatAttribute( xmlWriter, BAD_CAST("firstLightLevel"), "%f", aFirstLightLevel); } void EnhancedShapeDumper::dumpSecondLightLevelAsAttribute(double aSecondLightLevel) { xmlTextWriterWriteFormatAttribute( xmlWriter, BAD_CAST("secondLightLevel"), "%f", aSecondLightLevel); } void EnhancedShapeDumper::dumpDirection3D(drawing::Direction3D aDirection3D) { xmlTextWriterWriteFormatAttribute( xmlWriter, BAD_CAST("directionX"), "%f", aDirection3D.DirectionX); xmlTextWriterWriteFormatAttribute( xmlWriter, BAD_CAST("directionY"), "%f", aDirection3D.DirectionY); xmlTextWriterWriteFormatAttribute( xmlWriter, BAD_CAST("directionZ"), "%f", aDirection3D.DirectionZ); } void EnhancedShapeDumper::dumpFirstLightDirectionAsElement(drawing::Direction3D aFirstLightDirection) { xmlTextWriterStartElement(xmlWriter, BAD_CAST( "FirstLightDirection" )); dumpDirection3D(aFirstLightDirection); xmlTextWriterEndElement( xmlWriter ); } void EnhancedShapeDumper::dumpSecondLightDirectionAsElement(drawing::Direction3D aSecondLightDirection) { xmlTextWriterStartElement(xmlWriter, BAD_CAST( "SecondLightDirection" )); dumpDirection3D(aSecondLightDirection); xmlTextWriterEndElement( xmlWriter ); } void EnhancedShapeDumper::dumpMetalAsAttribute(sal_Bool bMetal) { if(bMetal) xmlTextWriterWriteFormatAttribute( xmlWriter, BAD_CAST("metal"), "%s", "true"); else xmlTextWriterWriteFormatAttribute( xmlWriter, BAD_CAST("metal"), "%s", "false"); } void EnhancedShapeDumper::dumpShadeModeAsAttribute(drawing::ShadeMode eShadeMode) { switch(eShadeMode) { case drawing::ShadeMode_FLAT: xmlTextWriterWriteFormatAttribute( xmlWriter, BAD_CAST("shadeMode"), "%s", "FLAT"); break; case drawing::ShadeMode_PHONG: xmlTextWriterWriteFormatAttribute( xmlWriter, BAD_CAST("shadeMode"), "%s", "PHONG"); break; case drawing::ShadeMode_SMOOTH: xmlTextWriterWriteFormatAttribute( xmlWriter, BAD_CAST("shadeMode"), "%s", "SMOOTH"); break; case drawing::ShadeMode_DRAFT: xmlTextWriterWriteFormatAttribute( xmlWriter, BAD_CAST("shadeMode"), "%s", "DRAFT"); break; default: break; } } void EnhancedShapeDumper::dumpRotateAngleAsElement(drawing::EnhancedCustomShapeParameterPair aRotateAngle) { xmlTextWriterStartElement(xmlWriter, BAD_CAST( "RotateAngle" )); dumpEnhancedCustomShapeParameterPair(aRotateAngle); xmlTextWriterEndElement( xmlWriter ); } void EnhancedShapeDumper::dumpRotationCenterAsElement(drawing::Direction3D aRotationCenter) { xmlTextWriterStartElement(xmlWriter, BAD_CAST( "RotationCenter" )); dumpDirection3D(aRotationCenter); xmlTextWriterEndElement( xmlWriter ); } void EnhancedShapeDumper::dumpShininessAsAttribute(double aShininess) { xmlTextWriterWriteFormatAttribute( xmlWriter, BAD_CAST("shininess"), "%f", aShininess); } void EnhancedShapeDumper::dumpSkewAsElement(drawing::EnhancedCustomShapeParameterPair aSkew) { xmlTextWriterStartElement(xmlWriter, BAD_CAST( "Skew" )); dumpEnhancedCustomShapeParameterPair(aSkew); xmlTextWriterEndElement( xmlWriter ); } void EnhancedShapeDumper::dumpSpecularityAsAttribute(double aSpecularity) { xmlTextWriterWriteFormatAttribute( xmlWriter, BAD_CAST("specularity"), "%f", aSpecularity); } void EnhancedShapeDumper::dumpProjectionModeAsAttribute(drawing::ProjectionMode eProjectionMode) { switch(eProjectionMode) { case drawing::ProjectionMode_PARALLEL: xmlTextWriterWriteFormatAttribute( xmlWriter, BAD_CAST("projectionMode"), "%s", "PARALLEL"); break; case drawing::ProjectionMode_PERSPECTIVE: xmlTextWriterWriteFormatAttribute( xmlWriter, BAD_CAST("projectionMode"), "%s", "PERSPECTIVE"); break; default: break; } } void EnhancedShapeDumper::dumpViewPointAsElement(drawing::Position3D aViewPoint) { xmlTextWriterStartElement(xmlWriter, BAD_CAST( "ViewPoint" )); xmlTextWriterWriteFormatAttribute( xmlWriter, BAD_CAST("positionX"), "%f", aViewPoint.PositionX); xmlTextWriterWriteFormatAttribute( xmlWriter, BAD_CAST("positionY"), "%f", aViewPoint.PositionY); xmlTextWriterWriteFormatAttribute( xmlWriter, BAD_CAST("positionZ"), "%f", aViewPoint.PositionZ); xmlTextWriterEndElement( xmlWriter ); } void EnhancedShapeDumper::dumpOriginAsElement(drawing::EnhancedCustomShapeParameterPair aOrigin) { xmlTextWriterStartElement(xmlWriter, BAD_CAST( "Origin" )); dumpEnhancedCustomShapeParameterPair(aOrigin); xmlTextWriterEndElement( xmlWriter ); } void EnhancedShapeDumper::dumpExtrusionColorAsAttribute(sal_Bool bExtrusionColor) { if(bExtrusionColor) xmlTextWriterWriteFormatAttribute( xmlWriter, BAD_CAST("extrusionColor"), "%s", "true"); else xmlTextWriterWriteFormatAttribute( xmlWriter, BAD_CAST("extrusionColor"), "%s", "false"); } // ------------------------------------------------------ // ---------- EnhancedCustomShapeGeometry.idl ----------- // ------------------------------------------------------ void EnhancedShapeDumper::dumpEnhancedCustomShapeGeometryService(uno::Reference< beans::XPropertySet > xPropSet) { { uno::Any anotherAny = xPropSet->getPropertyValue("Type"); rtl::OUString sType; if(anotherAny >>= sType) dumpTypeAsAttribute(sType); } { uno::Any anotherAny = xPropSet->getPropertyValue("ViewBox"); awt::Rectangle aViewBox; if(anotherAny >>= aViewBox) dumpViewBoxAsElement(aViewBox); } { uno::Any anotherAny = xPropSet->getPropertyValue("MirroredX"); sal_Bool bMirroredX; if(anotherAny >>= bMirroredX) dumpMirroredXAsAttribute(bMirroredX); } { uno::Any anotherAny = xPropSet->getPropertyValue("MirroredY"); sal_Bool bMirroredY; if(anotherAny >>= bMirroredY) dumpMirroredYAsAttribute(bMirroredY); } { uno::Any anotherAny = xPropSet->getPropertyValue("TextRotateAngle"); double aTextRotateAngle; if(anotherAny >>= aTextRotateAngle) dumpTextRotateAngleAsAttribute(aTextRotateAngle); } { uno::Any anotherAny = xPropSet->getPropertyValue("AdjustmentValues"); uno::Sequence< drawing::EnhancedCustomShapeAdjustmentValue> aAdjustmentValues; if(anotherAny >>= aAdjustmentValues) dumpAdjustmentValuesAsElement(aAdjustmentValues); } { uno::Any anotherAny = xPropSet->getPropertyValue("Extrusion"); uno::Sequence< beans::PropertyValue > aExtrusion; if(anotherAny >>= aExtrusion) dumpExtrusionAsElement(aExtrusion); } { uno::Any anotherAny = xPropSet->getPropertyValue("Path"); uno::Sequence< beans::PropertyValue > aPath; if(anotherAny >>= aPath) dumpPathAsElement(aPath); } { uno::Any anotherAny = xPropSet->getPropertyValue("TextPath"); uno::Sequence< beans::PropertyValue > aTextPath; if(anotherAny >>= aTextPath) dumpTextPathAsElement(aTextPath); } { uno::Any anotherAny = xPropSet->getPropertyValue("Equations"); uno::Sequence< rtl::OUString > aEquations; if(anotherAny >>= aEquations) dumpEquationsAsElement(aEquations); } { uno::Any anotherAny = xPropSet->getPropertyValue("Handles"); uno::Sequence< beans::PropertyValues > aHandles; if(anotherAny >>= aHandles) dumpHandlesAsElement(aHandles); } } void EnhancedShapeDumper::dumpTypeAsAttribute(rtl::OUString sType) { xmlTextWriterWriteFormatAttribute(xmlWriter, BAD_CAST("type"), "%s", rtl::OUStringToOString(sType, RTL_TEXTENCODING_UTF8).getStr()); } void EnhancedShapeDumper::dumpViewBoxAsElement(awt::Rectangle aViewBox) { xmlTextWriterStartElement(xmlWriter, BAD_CAST( "ViewBox" )); xmlTextWriterWriteFormatAttribute(xmlWriter, BAD_CAST("x"), "%" SAL_PRIdINT32, aViewBox.X); xmlTextWriterWriteFormatAttribute(xmlWriter, BAD_CAST("y"), "%" SAL_PRIdINT32, aViewBox.Y); xmlTextWriterWriteFormatAttribute(xmlWriter, BAD_CAST("width"), "%" SAL_PRIdINT32, aViewBox.Width); xmlTextWriterWriteFormatAttribute(xmlWriter, BAD_CAST("height"), "%" SAL_PRIdINT32, aViewBox.Height); xmlTextWriterEndElement( xmlWriter ); } void EnhancedShapeDumper::dumpMirroredXAsAttribute(sal_Bool bMirroredX) { if(bMirroredX) xmlTextWriterWriteFormatAttribute( xmlWriter, BAD_CAST("mirroredX"), "%s", "true"); else xmlTextWriterWriteFormatAttribute( xmlWriter, BAD_CAST("mirroredX"), "%s", "false"); } void EnhancedShapeDumper::dumpMirroredYAsAttribute(sal_Bool bMirroredY) { if(bMirroredY) xmlTextWriterWriteFormatAttribute( xmlWriter, BAD_CAST("mirroredY"), "%s", "true"); else xmlTextWriterWriteFormatAttribute( xmlWriter, BAD_CAST("mirroredY"), "%s", "false"); } void EnhancedShapeDumper::dumpTextRotateAngleAsAttribute(double aTextRotateAngle) { xmlTextWriterWriteFormatAttribute( xmlWriter, BAD_CAST("textRotateAngle"), "%f", aTextRotateAngle); } void EnhancedShapeDumper::dumpAdjustmentValuesAsElement(uno::Sequence< drawing::EnhancedCustomShapeAdjustmentValue> aAdjustmentValues) { xmlTextWriterStartElement(xmlWriter, BAD_CAST( "AdjustmentValues" )); sal_Int32 nLength = aAdjustmentValues.getLength(); for (sal_Int32 i = 0; i < nLength; ++i) { xmlTextWriterStartElement(xmlWriter, BAD_CAST( "EnhancedCustomShapeAdjustmentValue" )); uno::Any aAny = aAdjustmentValues[i].Value; rtl::OUString sValue; if(aAny >>= sValue) { xmlTextWriterWriteFormatAttribute(xmlWriter, BAD_CAST("value"), "%s", rtl::OUStringToOString(sValue, RTL_TEXTENCODING_UTF8).getStr()); } switch(aAdjustmentValues[i].State) { case beans::PropertyState_DIRECT_VALUE: xmlTextWriterWriteFormatAttribute( xmlWriter, BAD_CAST("propertyState"), "%s", "DIRECT_VALUE"); break; case beans::PropertyState_DEFAULT_VALUE: xmlTextWriterWriteFormatAttribute( xmlWriter, BAD_CAST("propertyState"), "%s", "DEFAULT_VALUE"); break; case beans::PropertyState_AMBIGUOUS_VALUE: xmlTextWriterWriteFormatAttribute( xmlWriter, BAD_CAST("propertyState"), "%s", "AMBIGUOUS_VALUE"); break; default: break; } xmlTextWriterEndElement( xmlWriter ); } xmlTextWriterEndElement( xmlWriter ); } void EnhancedShapeDumper::dumpPropertyValueAsElement(beans::PropertyValue aPropertyValue) { xmlTextWriterStartElement(xmlWriter, BAD_CAST( "PropertyValue" )); xmlTextWriterWriteFormatAttribute(xmlWriter, BAD_CAST("name"), "%s", rtl::OUStringToOString(aPropertyValue.Name, RTL_TEXTENCODING_UTF8).getStr()); xmlTextWriterWriteFormatAttribute(xmlWriter, BAD_CAST("handle"), "%" SAL_PRIdINT32, aPropertyValue.Handle); uno::Any aAny = aPropertyValue.Value; rtl::OUString sValue; if(aAny >>= sValue) { xmlTextWriterWriteFormatAttribute(xmlWriter, BAD_CAST("value"), "%s", rtl::OUStringToOString(sValue, RTL_TEXTENCODING_UTF8).getStr()); } switch(aPropertyValue.State) { case beans::PropertyState_DIRECT_VALUE: xmlTextWriterWriteFormatAttribute( xmlWriter, BAD_CAST("propertyState"), "%s", "DIRECT_VALUE"); break; case beans::PropertyState_DEFAULT_VALUE: xmlTextWriterWriteFormatAttribute( xmlWriter, BAD_CAST("propertyState"), "%s", "DEFAULT_VALUE"); break; case beans::PropertyState_AMBIGUOUS_VALUE: xmlTextWriterWriteFormatAttribute( xmlWriter, BAD_CAST("propertyState"), "%s", "AMBIGUOUS_VALUE"); break; default: break; } xmlTextWriterEndElement( xmlWriter ); } void EnhancedShapeDumper::dumpExtrusionAsElement(uno::Sequence< beans::PropertyValue > aExtrusion) { xmlTextWriterStartElement(xmlWriter, BAD_CAST( "Extrusion" )); sal_Int32 nLength = aExtrusion.getLength(); for (sal_Int32 i = 0; i < nLength; ++i) { dumpPropertyValueAsElement(aExtrusion[i]); } xmlTextWriterEndElement( xmlWriter ); } void EnhancedShapeDumper::dumpPathAsElement(uno::Sequence< beans::PropertyValue > aPath) { xmlTextWriterStartElement(xmlWriter, BAD_CAST( "Path" )); sal_Int32 nLength = aPath.getLength(); for (sal_Int32 i = 0; i < nLength; ++i) { dumpPropertyValueAsElement(aPath[i]); } xmlTextWriterEndElement( xmlWriter ); } void EnhancedShapeDumper::dumpTextPathAsElement(uno::Sequence< beans::PropertyValue > aTextPath) { xmlTextWriterStartElement(xmlWriter, BAD_CAST( "TextPath" )); sal_Int32 nLength = aTextPath.getLength(); for (sal_Int32 i = 0; i < nLength; ++i) { dumpPropertyValueAsElement(aTextPath[i]); } xmlTextWriterEndElement( xmlWriter ); } void EnhancedShapeDumper::dumpEquationsAsElement(uno::Sequence< rtl::OUString > aEquations) { xmlTextWriterStartElement(xmlWriter, BAD_CAST( "Equations" )); sal_Int32 nLength = aEquations.getLength(); for (sal_Int32 i = 0; i < nLength; ++i) { xmlTextWriterWriteFormatAttribute(xmlWriter, BAD_CAST("name"), "%s", rtl::OUStringToOString(aEquations[i], RTL_TEXTENCODING_UTF8).getStr()); } xmlTextWriterEndElement( xmlWriter ); } // PropertyValues specifies a sequence of PropertyValue instances. // so in this case it's a Sequence of a Sequence of a PropertyValue instances. // Welcome to Sequenception again. void EnhancedShapeDumper::dumpHandlesAsElement(uno::Sequence< beans::PropertyValues > aHandles) { xmlTextWriterStartElement(xmlWriter, BAD_CAST( "Handles" )); sal_Int32 nSequenceLength = aHandles.getLength(); for (sal_Int32 i = 0; i < nSequenceLength; ++i) { xmlTextWriterStartElement(xmlWriter, BAD_CAST( "PropertyValues" )); uno::Sequence< beans::PropertyValue > propertyValueSequence = aHandles[i]; sal_Int32 nLength = propertyValueSequence.getLength(); for (sal_Int32 j = 0; j < nLength; ++j) { dumpPropertyValueAsElement(propertyValueSequence[j]); } xmlTextWriterEndElement( xmlWriter ); } xmlTextWriterEndElement( xmlWriter ); } // ------------------------------------------------------ // ---------- EnhancedCustomShapeHandle.idl ----------- // ------------------------------------------------------ void EnhancedShapeDumper::dumpEnhancedCustomShapeHandleService(uno::Reference< beans::XPropertySet > xPropSet) { { uno::Any anotherAny = xPropSet->getPropertyValue("MirroredX"); sal_Bool bMirroredX; if(anotherAny >>= bMirroredX) dumpMirroredXAsAttribute(bMirroredX); } { uno::Any anotherAny = xPropSet->getPropertyValue("MirroredY"); sal_Bool bMirroredY; if(anotherAny >>= bMirroredY) dumpMirroredYAsAttribute(bMirroredY); } { uno::Any anotherAny = xPropSet->getPropertyValue("Switched"); sal_Bool bSwitched; if(anotherAny >>= bSwitched) dumpSwitchedAsAttribute(bSwitched); } { uno::Any anotherAny = xPropSet->getPropertyValue("Position"); drawing::EnhancedCustomShapeParameterPair aPosition; if(anotherAny >>= aPosition) dumpPositionAsElement(aPosition); } } void EnhancedShapeDumper::dumpSwitchedAsAttribute(sal_Bool bSwitched) { if(bSwitched) xmlTextWriterWriteFormatAttribute( xmlWriter, BAD_CAST("switched"), "%s", "true"); else xmlTextWriterWriteFormatAttribute( xmlWriter, BAD_CAST("switched"), "%s", "false"); } void EnhancedShapeDumper::dumpPositionAsElement(drawing::EnhancedCustomShapeParameterPair aPosition) { xmlTextWriterStartElement(xmlWriter, BAD_CAST( "Position" )); dumpEnhancedCustomShapeParameterPair(aPosition); xmlTextWriterEndElement( xmlWriter ); }