summaryrefslogtreecommitdiff
path: root/xmloff/source/draw/shapeexport4.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'xmloff/source/draw/shapeexport4.cxx')
-rw-r--r--xmloff/source/draw/shapeexport4.cxx1314
1 files changed, 0 insertions, 1314 deletions
diff --git a/xmloff/source/draw/shapeexport4.cxx b/xmloff/source/draw/shapeexport4.cxx
deleted file mode 100644
index 472d6ae732cd..000000000000
--- a/xmloff/source/draw/shapeexport4.cxx
+++ /dev/null
@@ -1,1314 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-#include <com/sun/star/graphic/XGraphic.hpp>
-#include <com/sun/star/graphic/GraphicProvider.hpp>
-#include <com/sun/star/graphic/XGraphicProvider.hpp>
-#include <com/sun/star/embed/ElementModes.hpp>
-#include <com/sun/star/embed/XTransactedObject.hpp>
-#include <com/sun/star/io/XSeekableInputStream.hpp>
-#include <com/sun/star/drawing/HomogenMatrix.hpp>
-#include <com/sun/star/drawing/PolyPolygonShape3D.hpp>
-#include <com/sun/star/drawing/ProjectionMode.hpp>
-#include <com/sun/star/drawing/ShadeMode.hpp>
-#include <com/sun/star/drawing/Direction3D.hpp>
-#include <com/sun/star/drawing/Position3D.hpp>
-#include <com/sun/star/drawing/CameraGeometry.hpp>
-#include <com/sun/star/drawing/DoubleSequence.hpp>
-
-#include <com/sun/star/table/XColumnRowRange.hpp>
-
-#include <sax/tools/converter.hxx>
-
-#include <xmloff/shapeexport.hxx>
-#include "sdpropls.hxx"
-#include <tools/debug.hxx>
-#include <rtl/ustrbuf.hxx>
-#include <xmloff/xmlexp.hxx>
-#include <xmloff/xmluconv.hxx>
-#include "xexptran.hxx"
-#include <xmloff/xmltoken.hxx>
-#include "EnhancedCustomShapeToken.hxx"
-#include <com/sun/star/container/XIdentifierContainer.hpp>
-#include <com/sun/star/drawing/EnhancedCustomShapeParameterType.hpp>
-#include <com/sun/star/drawing/EnhancedCustomShapeParameterPair.hpp>
-#include <com/sun/star/drawing/EnhancedCustomShapeGluePointType.hpp>
-#include <com/sun/star/drawing/EnhancedCustomShapeTextFrame.hpp>
-#include <com/sun/star/drawing/EnhancedCustomShapeSegment.hpp>
-#include <com/sun/star/drawing/EnhancedCustomShapeSegmentCommand.hpp>
-#include <com/sun/star/drawing/EnhancedCustomShapeAdjustmentValue.hpp>
-#include <com/sun/star/drawing/EnhancedCustomShapeTextPathMode.hpp>
-#include <com/sun/star/beans/PropertyValues.hpp>
-#include <rtl/math.hxx>
-#include <basegfx/vector/b3dvector.hxx>
-
-#include "xmloff/xmlnmspe.hxx"
-#include "XMLBase64Export.hxx"
-#include <comphelper/processfactory.hxx>
-
-using namespace ::com::sun::star;
-using namespace ::com::sun::star::io;
-using namespace ::xmloff::token;
-using namespace ::xmloff::EnhancedCustomShapeToken;
-
-using ::com::sun::star::embed::XStorage;
-using ::com::sun::star::uno::UNO_QUERY;
-using ::com::sun::star::uno::UNO_QUERY_THROW;
-using ::com::sun::star::uno::Reference;
-using ::com::sun::star::uno::Sequence;
-
-void ExportParameter( OUStringBuffer& rStrBuffer, const com::sun::star::drawing::EnhancedCustomShapeParameter& rParameter )
-{
- if ( !rStrBuffer.isEmpty() )
- rStrBuffer.append( (sal_Unicode)' ' );
- if ( rParameter.Value.getValueTypeClass() == uno::TypeClass_DOUBLE )
- {
- double fNumber = 0.0;
- rParameter.Value >>= fNumber;
- ::rtl::math::doubleToUStringBuffer( rStrBuffer, fNumber, rtl_math_StringFormat_Automatic, rtl_math_DecimalPlaces_Max, '.', sal_True );
- }
- else
- {
- sal_Int32 nValue = 0;
- rParameter.Value >>= nValue;
-
- switch( rParameter.Type )
- {
- case com::sun::star::drawing::EnhancedCustomShapeParameterType::EQUATION :
- {
- rStrBuffer.append( "?f" + OUString::number( nValue ) );
- }
- break;
-
- case com::sun::star::drawing::EnhancedCustomShapeParameterType::ADJUSTMENT :
- {
- rStrBuffer.append( (sal_Unicode)'$' );
- rStrBuffer.append( OUString::number( nValue ) );
- }
- break;
-
- case com::sun::star::drawing::EnhancedCustomShapeParameterType::BOTTOM :
- rStrBuffer.append( GetXMLToken( XML_BOTTOM ) ); break;
- case com::sun::star::drawing::EnhancedCustomShapeParameterType::RIGHT :
- rStrBuffer.append( GetXMLToken( XML_RIGHT ) ); break;
- case com::sun::star::drawing::EnhancedCustomShapeParameterType::TOP :
- rStrBuffer.append( GetXMLToken( XML_TOP ) ); break;
- case com::sun::star::drawing::EnhancedCustomShapeParameterType::LEFT :
- rStrBuffer.append( GetXMLToken( XML_LEFT ) ); break;
- case com::sun::star::drawing::EnhancedCustomShapeParameterType::XSTRETCH :
- rStrBuffer.append( GetXMLToken( XML_XSTRETCH ) ); break;
- case com::sun::star::drawing::EnhancedCustomShapeParameterType::YSTRETCH :
- rStrBuffer.append( GetXMLToken( XML_YSTRETCH ) ); break;
- case com::sun::star::drawing::EnhancedCustomShapeParameterType::HASSTROKE :
- rStrBuffer.append( GetXMLToken( XML_HASSTROKE ) ); break;
- case com::sun::star::drawing::EnhancedCustomShapeParameterType::HASFILL :
- rStrBuffer.append( GetXMLToken( XML_HASFILL ) ); break;
- case com::sun::star::drawing::EnhancedCustomShapeParameterType::WIDTH :
- rStrBuffer.append( GetXMLToken( XML_WIDTH ) ); break;
- case com::sun::star::drawing::EnhancedCustomShapeParameterType::HEIGHT :
- rStrBuffer.append( GetXMLToken( XML_HEIGHT ) ); break;
- case com::sun::star::drawing::EnhancedCustomShapeParameterType::LOGWIDTH :
- rStrBuffer.append( GetXMLToken( XML_LOGWIDTH ) ); break;
- case com::sun::star::drawing::EnhancedCustomShapeParameterType::LOGHEIGHT :
- rStrBuffer.append( GetXMLToken( XML_LOGHEIGHT ) ); break;
- default :
- rStrBuffer.append( OUString::number( nValue ) );
- }
- }
-}
-
-void ImpExportEquations( SvXMLExport& rExport, const uno::Sequence< OUString >& rEquations )
-{
- sal_Int32 i;
- for ( i = 0; i < rEquations.getLength(); i++ )
- {
- OUString aStr(static_cast<sal_Unicode>('f'));
- aStr += OUString::number( i );
- rExport.AddAttribute( XML_NAMESPACE_DRAW, XML_NAME, aStr );
-
- aStr = rEquations[ i ];
- sal_Int32 nIndex = 0;
- do
- {
- nIndex = aStr.indexOf( (sal_Unicode)'?', nIndex );
- if ( nIndex != -1 )
- {
- OUString aNew( aStr.copy( 0, nIndex + 1 ) );
- aNew += OUString(static_cast<sal_Unicode>('f'));
- aNew += aStr.copy( nIndex + 1, ( aStr.getLength() - nIndex ) - 1 );
- aStr = aNew;
- nIndex++;
- }
- } while( nIndex != -1 );
- rExport.AddAttribute( XML_NAMESPACE_DRAW, XML_FORMULA, aStr );
- SvXMLElementExport aOBJ( rExport, XML_NAMESPACE_DRAW, XML_EQUATION, sal_True, sal_True );
- }
-}
-
-void ImpExportHandles( SvXMLExport& rExport, const uno::Sequence< beans::PropertyValues >& rHandles )
-{
- sal_uInt32 i, j, nElements = rHandles.getLength();
- if ( nElements )
- {
- OUString aStr;
- OUStringBuffer aStrBuffer;
-
- for ( i = 0; i < nElements; i++ )
- {
- sal_Bool bPosition = sal_False;
- const uno::Sequence< beans::PropertyValue >& rPropSeq = rHandles[ i ];
- for ( j = 0; j < (sal_uInt32)rPropSeq.getLength(); j++ )
- {
- const beans::PropertyValue& rPropVal = rPropSeq[ j ];
- switch( EASGet( rPropVal.Name ) )
- {
- case EAS_Position :
- {
- com::sun::star::drawing::EnhancedCustomShapeParameterPair aPosition;
- if ( rPropVal.Value >>= aPosition )
- {
- ExportParameter( aStrBuffer, aPosition.First );
- ExportParameter( aStrBuffer, aPosition.Second );
- aStr = aStrBuffer.makeStringAndClear();
- rExport.AddAttribute( XML_NAMESPACE_DRAW, XML_HANDLE_POSITION, aStr );
- bPosition = sal_True;
- }
- }
- break;
- case EAS_MirroredX :
- {
- sal_Bool bMirroredX = sal_Bool();
- if ( rPropVal.Value >>= bMirroredX )
- rExport.AddAttribute( XML_NAMESPACE_DRAW, XML_HANDLE_MIRROR_HORIZONTAL,
- bMirroredX ? GetXMLToken( XML_TRUE ) : GetXMLToken( XML_FALSE ) );
- }
- break;
- case EAS_MirroredY :
- {
- sal_Bool bMirroredY = sal_Bool();
- if ( rPropVal.Value >>= bMirroredY )
- rExport.AddAttribute( XML_NAMESPACE_DRAW, XML_HANDLE_MIRROR_VERTICAL,
- bMirroredY ? GetXMLToken( XML_TRUE ) : GetXMLToken( XML_FALSE ) );
- }
- break;
- case EAS_Switched :
- {
- sal_Bool bSwitched = sal_Bool();
- if ( rPropVal.Value >>= bSwitched )
- rExport.AddAttribute( XML_NAMESPACE_DRAW, XML_HANDLE_SWITCHED,
- bSwitched ? GetXMLToken( XML_TRUE ) : GetXMLToken( XML_FALSE ) );
- }
- break;
- case EAS_Polar :
- {
- com::sun::star::drawing::EnhancedCustomShapeParameterPair aPolar;
- if ( rPropVal.Value >>= aPolar )
- {
- ExportParameter( aStrBuffer, aPolar.First );
- ExportParameter( aStrBuffer, aPolar.Second );
- aStr = aStrBuffer.makeStringAndClear();
- rExport.AddAttribute( XML_NAMESPACE_DRAW, XML_HANDLE_POLAR, aStr );
- }
- }
- break;
- case EAS_RadiusRangeMinimum :
- {
- com::sun::star::drawing::EnhancedCustomShapeParameter aRadiusRangeMinimum;
- if ( rPropVal.Value >>= aRadiusRangeMinimum )
- {
- ExportParameter( aStrBuffer, aRadiusRangeMinimum );
- aStr = aStrBuffer.makeStringAndClear();
- rExport.AddAttribute( XML_NAMESPACE_DRAW, XML_HANDLE_RADIUS_RANGE_MINIMUM, aStr );
- }
- }
- break;
- case EAS_RadiusRangeMaximum :
- {
- com::sun::star::drawing::EnhancedCustomShapeParameter aRadiusRangeMaximum;
- if ( rPropVal.Value >>= aRadiusRangeMaximum )
- {
- ExportParameter( aStrBuffer, aRadiusRangeMaximum );
- aStr = aStrBuffer.makeStringAndClear();
- rExport.AddAttribute( XML_NAMESPACE_DRAW, XML_HANDLE_RADIUS_RANGE_MAXIMUM, aStr );
- }
- }
- break;
- case EAS_RangeXMinimum :
- {
- com::sun::star::drawing::EnhancedCustomShapeParameter aXRangeMinimum;
- if ( rPropVal.Value >>= aXRangeMinimum )
- {
- ExportParameter( aStrBuffer, aXRangeMinimum );
- aStr = aStrBuffer.makeStringAndClear();
- rExport.AddAttribute( XML_NAMESPACE_DRAW, XML_HANDLE_RANGE_X_MINIMUM, aStr );
- }
- }
- break;
- case EAS_RangeXMaximum :
- {
- com::sun::star::drawing::EnhancedCustomShapeParameter aXRangeMaximum;
- if ( rPropVal.Value >>= aXRangeMaximum )
- {
- ExportParameter( aStrBuffer, aXRangeMaximum );
- aStr = aStrBuffer.makeStringAndClear();
- rExport.AddAttribute( XML_NAMESPACE_DRAW, XML_HANDLE_RANGE_X_MAXIMUM, aStr );
- }
- }
- break;
- case EAS_RangeYMinimum :
- {
- com::sun::star::drawing::EnhancedCustomShapeParameter aYRangeMinimum;
- if ( rPropVal.Value >>= aYRangeMinimum )
- {
- ExportParameter( aStrBuffer, aYRangeMinimum );
- aStr = aStrBuffer.makeStringAndClear();
- rExport.AddAttribute( XML_NAMESPACE_DRAW, XML_HANDLE_RANGE_Y_MINIMUM, aStr );
- }
- }
- break;
- case EAS_RangeYMaximum :
- {
- com::sun::star::drawing::EnhancedCustomShapeParameter aYRangeMaximum;
- if ( rPropVal.Value >>= aYRangeMaximum )
- {
- ExportParameter( aStrBuffer, aYRangeMaximum );
- aStr = aStrBuffer.makeStringAndClear();
- rExport.AddAttribute( XML_NAMESPACE_DRAW, XML_HANDLE_RANGE_Y_MAXIMUM, aStr );
- }
- }
- break;
- default:
- break;
- }
- }
- if ( bPosition )
- SvXMLElementExport aOBJ( rExport, XML_NAMESPACE_DRAW, XML_HANDLE, sal_True, sal_True );
- else
- rExport.ClearAttrList();
- }
- }
-}
-
-void ImpExportEnhancedPath( SvXMLExport& rExport,
- const uno::Sequence< com::sun::star::drawing::EnhancedCustomShapeParameterPair >& rCoordinates,
- const uno::Sequence< com::sun::star::drawing::EnhancedCustomShapeSegment >& rSegments,
- bool bExtended = false )
-{
-
- OUString aStr;
- OUStringBuffer aStrBuffer;
- bool bNeedExtended = false;
-
- sal_Int32 i, j, k, l;
-
- sal_Int32 nCoords = rCoordinates.getLength();
- sal_Int32 nSegments = rSegments.getLength();
- sal_Bool bSimpleSegments = nSegments == 0;
- if ( bSimpleSegments )
- nSegments = 4;
- for ( j = i = 0; j < nSegments; j++ )
- {
- com::sun::star::drawing::EnhancedCustomShapeSegment aSegment;
- if ( bSimpleSegments )
- {
- // if there are not enough segments we will default them
- switch( j )
- {
- case 0 :
- {
- aSegment.Count = 1;
- aSegment.Command = com::sun::star::drawing::EnhancedCustomShapeSegmentCommand::MOVETO;
- }
- break;
- case 1 :
- {
- aSegment.Count = (sal_Int16)std::min( nCoords - 1, (sal_Int32)32767 );
- aSegment.Command = com::sun::star::drawing::EnhancedCustomShapeSegmentCommand::LINETO;
- }
- break;
- case 2 :
- {
- aSegment.Count = 1;
- aSegment.Command = com::sun::star::drawing::EnhancedCustomShapeSegmentCommand::CLOSESUBPATH;
- }
- break;
- case 3 :
- {
- aSegment.Count = 1;
- aSegment.Command = com::sun::star::drawing::EnhancedCustomShapeSegmentCommand::ENDSUBPATH;
- }
- break;
- }
- }
- else
- aSegment = rSegments[ j ];
-
- if ( !aStrBuffer.isEmpty() )
- aStrBuffer.append( (sal_Unicode)' ' );
-
- sal_Int32 nParameter = 0;
- switch( aSegment.Command )
- {
- case com::sun::star::drawing::EnhancedCustomShapeSegmentCommand::CLOSESUBPATH :
- aStrBuffer.append( (sal_Unicode)'Z' ); break;
- case com::sun::star::drawing::EnhancedCustomShapeSegmentCommand::ENDSUBPATH :
- aStrBuffer.append( (sal_Unicode)'N' ); break;
- case com::sun::star::drawing::EnhancedCustomShapeSegmentCommand::NOFILL :
- aStrBuffer.append( (sal_Unicode)'F' ); break;
- case com::sun::star::drawing::EnhancedCustomShapeSegmentCommand::NOSTROKE :
- aStrBuffer.append( (sal_Unicode)'S' ); break;
-
- case com::sun::star::drawing::EnhancedCustomShapeSegmentCommand::MOVETO :
- aStrBuffer.append( (sal_Unicode)'M' ); nParameter = 1; break;
- case com::sun::star::drawing::EnhancedCustomShapeSegmentCommand::LINETO :
- aStrBuffer.append( (sal_Unicode)'L' ); nParameter = 1; break;
- case com::sun::star::drawing::EnhancedCustomShapeSegmentCommand::CURVETO :
- aStrBuffer.append( (sal_Unicode)'C' ); nParameter = 3; break;
- case com::sun::star::drawing::EnhancedCustomShapeSegmentCommand::ANGLEELLIPSETO :
- aStrBuffer.append( (sal_Unicode)'T' ); nParameter = 3; break;
- case com::sun::star::drawing::EnhancedCustomShapeSegmentCommand::ANGLEELLIPSE :
- aStrBuffer.append( (sal_Unicode)'U' ); nParameter = 3; break;
- case com::sun::star::drawing::EnhancedCustomShapeSegmentCommand::ARCTO :
- aStrBuffer.append( (sal_Unicode)'A' ); nParameter = 4; break;
- case com::sun::star::drawing::EnhancedCustomShapeSegmentCommand::ARC :
- aStrBuffer.append( (sal_Unicode)'B' ); nParameter = 4; break;
- case com::sun::star::drawing::EnhancedCustomShapeSegmentCommand::CLOCKWISEARCTO :
- aStrBuffer.append( (sal_Unicode)'W' ); nParameter = 4; break;
- case com::sun::star::drawing::EnhancedCustomShapeSegmentCommand::CLOCKWISEARC :
- aStrBuffer.append( (sal_Unicode)'V' ); nParameter = 4; break;
- case com::sun::star::drawing::EnhancedCustomShapeSegmentCommand::ELLIPTICALQUADRANTX :
- aStrBuffer.append( (sal_Unicode)'X' ); nParameter = 1; break;
- case com::sun::star::drawing::EnhancedCustomShapeSegmentCommand::ELLIPTICALQUADRANTY :
- aStrBuffer.append( (sal_Unicode)'Y' ); nParameter = 1; break;
- case com::sun::star::drawing::EnhancedCustomShapeSegmentCommand::QUADRATICCURVETO :
- aStrBuffer.append( (sal_Unicode)'Q' ); nParameter = 2; break;
- case com::sun::star::drawing::EnhancedCustomShapeSegmentCommand::ARCANGLETO :
- if ( bExtended ) {
- aStrBuffer.append( (sal_Unicode)'G' );
- nParameter = 2;
- } else {
- aStrBuffer.setLength( aStrBuffer.getLength() - 1);
- bNeedExtended = true;
- i += 2;
- }
- break;
- case com::sun::star::drawing::EnhancedCustomShapeSegmentCommand::DARKEN :
- if ( bExtended )
- aStrBuffer.append( (sal_Unicode)'H' );
- else
- bNeedExtended = true;
- break;
- case com::sun::star::drawing::EnhancedCustomShapeSegmentCommand::DARKENLESS :
- if ( bExtended )
- aStrBuffer.append( (sal_Unicode)'I' );
- else
- bNeedExtended = true;
- break;
- case com::sun::star::drawing::EnhancedCustomShapeSegmentCommand::LIGHTEN :
- if ( bExtended )
- aStrBuffer.append( (sal_Unicode)'J' );
- else
- bNeedExtended = true;
- break;
- case com::sun::star::drawing::EnhancedCustomShapeSegmentCommand::LIGHTENLESS :
- if ( bExtended )
- aStrBuffer.append( (sal_Unicode)'K' );
- else
- bNeedExtended = true;
- break;
- default : // ups, seems to be something wrong
- {
- aSegment.Count = 1;
- aSegment.Command = com::sun::star::drawing::EnhancedCustomShapeSegmentCommand::LINETO;
- }
- break;
- }
- if ( nParameter )
- {
- for ( k = 0; k < aSegment.Count; k++ )
- {
- if ( ( i + nParameter ) <= nCoords )
- {
- for ( l = 0; l < nParameter; l++ )
- {
- ExportParameter( aStrBuffer, rCoordinates[ i ].First );
- ExportParameter( aStrBuffer, rCoordinates[ i++ ].Second );
- }
- }
- else
- {
- j = nSegments; // error -> exiting
- break;
- }
- }
- }
- }
- aStr = aStrBuffer.makeStringAndClear();
- rExport.AddAttribute( bExtended ? XML_NAMESPACE_DRAW_EXT : XML_NAMESPACE_DRAW, XML_ENHANCED_PATH, aStr );
- if ( !bExtended && bNeedExtended )
- ImpExportEnhancedPath( rExport, rCoordinates, rSegments, true );
-}
-
-void ImpExportEnhancedGeometry( SvXMLExport& rExport, const uno::Reference< beans::XPropertySet >& xPropSet )
-{
- sal_Bool bEquations = sal_False;
- uno::Sequence< OUString > aEquations;
-
- sal_Bool bHandles = sal_False;
- uno::Sequence< beans::PropertyValues > aHandles;
-
- sal_Bool bCoordinates = sal_False;
- uno::Sequence< com::sun::star::drawing::EnhancedCustomShapeSegment > aSegments;
- uno::Sequence< com::sun::star::drawing::EnhancedCustomShapeParameterPair > aCoordinates;
-
- uno::Sequence< com::sun::star::drawing::EnhancedCustomShapeAdjustmentValue > aAdjustmentValues;
-
- OUString aStr;
- OUStringBuffer aStrBuffer;
- SvXMLUnitConverter& rUnitConverter = rExport.GetMM100UnitConverter();
-
- uno::Reference< beans::XPropertySetInfo > xPropSetInfo( xPropSet->getPropertySetInfo() );
-
- // geometry
- const OUString sCustomShapeGeometry( "CustomShapeGeometry" );
- if ( xPropSetInfo.is() && xPropSetInfo->hasPropertyByName( sCustomShapeGeometry ) )
- {
- uno::Any aGeoPropSet( xPropSet->getPropertyValue( sCustomShapeGeometry ) );
- uno::Sequence< beans::PropertyValue > aGeoPropSeq;
-
- if ( aGeoPropSet >>= aGeoPropSeq )
- {
- const OUString sCustomShapeType( "non-primitive" );
- OUString aCustomShapeType( sCustomShapeType );
-
- sal_Int32 j, nGeoPropCount = aGeoPropSeq.getLength();
- for ( j = 0; j < nGeoPropCount; j++ )
- {
- const beans::PropertyValue& rGeoProp = aGeoPropSeq[ j ];
- switch( EASGet( rGeoProp.Name ) )
- {
- case EAS_Type :
- {
- rGeoProp.Value >>= aCustomShapeType;
- }
- break;
- case EAS_MirroredX :
- {
- sal_Bool bMirroredX = sal_Bool();
- if ( rGeoProp.Value >>= bMirroredX )
- rExport.AddAttribute( XML_NAMESPACE_DRAW, XML_MIRROR_HORIZONTAL,
- bMirroredX ? GetXMLToken( XML_TRUE ) : GetXMLToken( XML_FALSE ) );
- }
- break;
- case EAS_MirroredY :
- {
- sal_Bool bMirroredY = sal_Bool();
- if ( rGeoProp.Value >>= bMirroredY )
- rExport.AddAttribute( XML_NAMESPACE_DRAW, XML_MIRROR_VERTICAL,
- bMirroredY ? GetXMLToken( XML_TRUE ) : GetXMLToken( XML_FALSE ) );
- }
- break;
- case EAS_ViewBox :
- {
- awt::Rectangle aRect;
- if ( rGeoProp.Value >>= aRect )
- {
- SdXMLImExViewBox aViewBox( aRect.X, aRect.Y, aRect.Width, aRect.Height );
- rExport.AddAttribute( XML_NAMESPACE_SVG, XML_VIEWBOX, aViewBox.GetExportString() );
- }
- }
- break;
- case EAS_TextRotateAngle :
- {
- double fTextRotateAngle = 0;
- if ( rGeoProp.Value >>= fTextRotateAngle )
- {
- ::sax::Converter::convertDouble(
- aStrBuffer, fTextRotateAngle );
- aStr = aStrBuffer.makeStringAndClear();
- rExport.AddAttribute( XML_NAMESPACE_DRAW, XML_TEXT_ROTATE_ANGLE, aStr );
- }
- }
- break;
- case EAS_Extrusion :
- {
- uno::Sequence< beans::PropertyValue > aExtrusionPropSeq;
- if ( rGeoProp.Value >>= aExtrusionPropSeq )
- {
- sal_Int32 i, nCount = aExtrusionPropSeq.getLength();
- for ( i = 0; i < nCount; i++ )
- {
- const beans::PropertyValue& rProp = aExtrusionPropSeq[ i ];
- switch( EASGet( rProp.Name ) )
- {
- case EAS_Extrusion :
- {
- sal_Bool bExtrusionOn = sal_Bool();
- if ( rProp.Value >>= bExtrusionOn )
- rExport.AddAttribute( XML_NAMESPACE_DRAW, XML_EXTRUSION,
- bExtrusionOn ? GetXMLToken( XML_TRUE ) : GetXMLToken( XML_FALSE ) );
- }
- break;
- case EAS_Brightness :
- {
- double fExtrusionBrightness = 0;
- if ( rProp.Value >>= fExtrusionBrightness )
- {
- ::sax::Converter::convertDouble(
- aStrBuffer,
- fExtrusionBrightness,
- false,
- util::MeasureUnit::PERCENT,
- util::MeasureUnit::PERCENT);
- aStrBuffer.append( (sal_Unicode)'%' );
- aStr = aStrBuffer.makeStringAndClear();
- rExport.AddAttribute( XML_NAMESPACE_DRAW, XML_EXTRUSION_BRIGHTNESS, aStr );
- }
- }
- break;
- case EAS_Depth :
- {
- com::sun::star::drawing::EnhancedCustomShapeParameterPair aDepthParaPair;
- if ( rProp.Value >>= aDepthParaPair )
- {
- double fDepth = 0;
- if ( aDepthParaPair.First.Value >>= fDepth )
- {
- rExport.GetMM100UnitConverter().convertDouble( aStrBuffer, fDepth, sal_True );
- ExportParameter( aStrBuffer, aDepthParaPair.Second );
- aStr = aStrBuffer.makeStringAndClear();
- rExport.AddAttribute( XML_NAMESPACE_DRAW, XML_EXTRUSION_DEPTH, aStr );
- }
- }
- }
- break;
- case EAS_Diffusion :
- {
- double fExtrusionDiffusion = 0;
- if ( rProp.Value >>= fExtrusionDiffusion )
- {
- ::sax::Converter::convertDouble(
- aStrBuffer,
- fExtrusionDiffusion,
- false,
- util::MeasureUnit::PERCENT,
- util::MeasureUnit::PERCENT);
- aStrBuffer.append( (sal_Unicode)'%' );
- aStr = aStrBuffer.makeStringAndClear();
- rExport.AddAttribute( XML_NAMESPACE_DRAW, XML_EXTRUSION_DIFFUSION, aStr );
- }
- }
- break;
- case EAS_NumberOfLineSegments :
- {
- sal_Int32 nExtrusionNumberOfLineSegments = 0;
- if ( rProp.Value >>= nExtrusionNumberOfLineSegments )
- rExport.AddAttribute( XML_NAMESPACE_DRAW, XML_EXTRUSION_NUMBER_OF_LINE_SEGMENTS, OUString::number( nExtrusionNumberOfLineSegments ) );
- }
- break;
- case EAS_LightFace :
- {
- sal_Bool bExtrusionLightFace = sal_Bool();
- if ( rProp.Value >>= bExtrusionLightFace )
- rExport.AddAttribute( XML_NAMESPACE_DRAW, XML_EXTRUSION_LIGHT_FACE,
- bExtrusionLightFace ? GetXMLToken( XML_TRUE ) : GetXMLToken( XML_FALSE ) );
- }
- break;
- case EAS_FirstLightHarsh :
- {
- sal_Bool bExtrusionFirstLightHarsh = sal_Bool();
- if ( rProp.Value >>= bExtrusionFirstLightHarsh )
- rExport.AddAttribute( XML_NAMESPACE_DRAW, XML_EXTRUSION_FIRST_LIGHT_HARSH,
- bExtrusionFirstLightHarsh ? GetXMLToken( XML_TRUE ) : GetXMLToken( XML_FALSE ) );
- }
- break;
- case EAS_SecondLightHarsh :
- {
- sal_Bool bExtrusionSecondLightHarsh = sal_Bool();
- if ( rProp.Value >>= bExtrusionSecondLightHarsh )
- rExport.AddAttribute( XML_NAMESPACE_DRAW, XML_EXTRUSION_SECOND_LIGHT_HARSH,
- bExtrusionSecondLightHarsh ? GetXMLToken( XML_TRUE ) : GetXMLToken( XML_FALSE ) );
- }
- break;
- case EAS_FirstLightLevel :
- {
- double fExtrusionFirstLightLevel = 0;
- if ( rProp.Value >>= fExtrusionFirstLightLevel )
- {
- ::sax::Converter::convertDouble(
- aStrBuffer,
- fExtrusionFirstLightLevel,
- false,
- util::MeasureUnit::PERCENT,
- util::MeasureUnit::PERCENT);
- aStrBuffer.append( (sal_Unicode)'%' );
- aStr = aStrBuffer.makeStringAndClear();
- rExport.AddAttribute( XML_NAMESPACE_DRAW, XML_EXTRUSION_FIRST_LIGHT_LEVEL, aStr );
- }
- }
- break;
- case EAS_SecondLightLevel :
- {
- double fExtrusionSecondLightLevel = 0;
- if ( rProp.Value >>= fExtrusionSecondLightLevel )
- {
- ::sax::Converter::convertDouble(
- aStrBuffer,
- fExtrusionSecondLightLevel,
- false,
- util::MeasureUnit::PERCENT,
- util::MeasureUnit::PERCENT);
- aStrBuffer.append( (sal_Unicode)'%' );
- aStr = aStrBuffer.makeStringAndClear();
- rExport.AddAttribute( XML_NAMESPACE_DRAW, XML_EXTRUSION_SECOND_LIGHT_LEVEL, aStr );
- }
- }
- break;
- case EAS_FirstLightDirection :
- {
- drawing::Direction3D aExtrusionFirstLightDirection;
- if ( rProp.Value >>= aExtrusionFirstLightDirection )
- {
- ::basegfx::B3DVector aVec3D( aExtrusionFirstLightDirection.DirectionX, aExtrusionFirstLightDirection.DirectionY,
- aExtrusionFirstLightDirection.DirectionZ );
- rUnitConverter.convertB3DVector( aStrBuffer, aVec3D );
- aStr = aStrBuffer.makeStringAndClear();
- rExport.AddAttribute( XML_NAMESPACE_DRAW, XML_EXTRUSION_FIRST_LIGHT_DIRECTION, aStr );
- }
- }
- break;
- case EAS_SecondLightDirection :
- {
- drawing::Direction3D aExtrusionSecondLightDirection;
- if ( rProp.Value >>= aExtrusionSecondLightDirection )
- {
- ::basegfx::B3DVector aVec3D( aExtrusionSecondLightDirection.DirectionX, aExtrusionSecondLightDirection.DirectionY,
- aExtrusionSecondLightDirection.DirectionZ );
- rUnitConverter.convertB3DVector( aStrBuffer, aVec3D );
- aStr = aStrBuffer.makeStringAndClear();
- rExport.AddAttribute( XML_NAMESPACE_DRAW, XML_EXTRUSION_SECOND_LIGHT_DIRECTION, aStr );
- }
- }
- break;
- case EAS_Metal :
- {
- sal_Bool bExtrusionMetal = sal_Bool();
- if ( rProp.Value >>= bExtrusionMetal )
- rExport.AddAttribute( XML_NAMESPACE_DRAW, XML_EXTRUSION_METAL,
- bExtrusionMetal ? GetXMLToken( XML_TRUE ) : GetXMLToken( XML_FALSE ) );
- }
- break;
- case EAS_ShadeMode :
- {
- // shadeMode
- drawing::ShadeMode eShadeMode;
- if( rProp.Value >>= eShadeMode )
- {
- if( eShadeMode == drawing::ShadeMode_FLAT )
- aStr = GetXMLToken( XML_FLAT );
- else if( eShadeMode == drawing::ShadeMode_PHONG )
- aStr = GetXMLToken( XML_PHONG );
- else if( eShadeMode == drawing::ShadeMode_SMOOTH )
- aStr = GetXMLToken( XML_GOURAUD );
- else
- aStr = GetXMLToken( XML_DRAFT );
- }
- else
- {
- // ShadeMode enum not there, write default
- aStr = GetXMLToken( XML_FLAT);
- }
- rExport.AddAttribute( XML_NAMESPACE_DR3D, XML_SHADE_MODE, aStr );
- }
- break;
- case EAS_RotateAngle :
- {
- com::sun::star::drawing::EnhancedCustomShapeParameterPair aRotateAngleParaPair;
- if ( rProp.Value >>= aRotateAngleParaPair )
- {
- ExportParameter( aStrBuffer, aRotateAngleParaPair.First );
- ExportParameter( aStrBuffer, aRotateAngleParaPair.Second );
- aStr = aStrBuffer.makeStringAndClear();
- rExport.AddAttribute( XML_NAMESPACE_DRAW, XML_EXTRUSION_ROTATION_ANGLE, aStr );
- }
- }
- break;
- case EAS_RotationCenter :
- {
- drawing::Direction3D aExtrusionRotationCenter;
- if ( rProp.Value >>= aExtrusionRotationCenter )
- {
- ::basegfx::B3DVector aVec3D( aExtrusionRotationCenter.DirectionX, aExtrusionRotationCenter.DirectionY,
- aExtrusionRotationCenter.DirectionZ );
- rUnitConverter.convertB3DVector( aStrBuffer, aVec3D );
- aStr = aStrBuffer.makeStringAndClear();
- rExport.AddAttribute( XML_NAMESPACE_DRAW, XML_EXTRUSION_ROTATION_CENTER, aStr );
- }
- }
- break;
- case EAS_Shininess :
- {
- double fExtrusionShininess = 0;
- if ( rProp.Value >>= fExtrusionShininess )
- {
- ::sax::Converter::convertDouble(
- aStrBuffer,
- fExtrusionShininess,
- false,
- util::MeasureUnit::PERCENT,
- util::MeasureUnit::PERCENT);
- aStrBuffer.append( (sal_Unicode)'%' );
- aStr = aStrBuffer.makeStringAndClear();
- rExport.AddAttribute( XML_NAMESPACE_DRAW, XML_EXTRUSION_SHININESS, aStr );
- }
- }
- break;
- case EAS_Skew :
- {
- com::sun::star::drawing::EnhancedCustomShapeParameterPair aSkewParaPair;
- if ( rProp.Value >>= aSkewParaPair )
- {
- ExportParameter( aStrBuffer, aSkewParaPair.First );
- ExportParameter( aStrBuffer, aSkewParaPair.Second );
- aStr = aStrBuffer.makeStringAndClear();
- rExport.AddAttribute( XML_NAMESPACE_DRAW, XML_EXTRUSION_SKEW, aStr );
- }
- }
- break;
- case EAS_Specularity :
- {
- double fExtrusionSpecularity = 0;
- if ( rProp.Value >>= fExtrusionSpecularity )
- {
- ::sax::Converter::convertDouble(
- aStrBuffer,
- fExtrusionSpecularity,
- false,
- util::MeasureUnit::PERCENT,
- util::MeasureUnit::PERCENT);
- aStrBuffer.append( (sal_Unicode)'%' );
- aStr = aStrBuffer.makeStringAndClear();
- rExport.AddAttribute( XML_NAMESPACE_DRAW, XML_EXTRUSION_SPECULARITY, aStr );
- }
- }
- break;
- case EAS_ProjectionMode :
- {
- drawing::ProjectionMode eProjectionMode;
- if ( rProp.Value >>= eProjectionMode )
- rExport.AddAttribute( XML_NAMESPACE_DR3D, XML_PROJECTION,
- eProjectionMode == drawing::ProjectionMode_PARALLEL ? GetXMLToken( XML_PARALLEL ) : GetXMLToken( XML_PERSPECTIVE ) );
- }
- break;
- case EAS_ViewPoint :
- {
- drawing::Position3D aExtrusionViewPoint;
- if ( rProp.Value >>= aExtrusionViewPoint )
- {
- rUnitConverter.convertPosition3D( aStrBuffer, aExtrusionViewPoint );
- aStr = aStrBuffer.makeStringAndClear();
- rExport.AddAttribute( XML_NAMESPACE_DRAW, XML_EXTRUSION_VIEWPOINT, aStr );
- }
- }
- break;
- case EAS_Origin :
- {
- com::sun::star::drawing::EnhancedCustomShapeParameterPair aOriginParaPair;
- if ( rProp.Value >>= aOriginParaPair )
- {
- ExportParameter( aStrBuffer, aOriginParaPair.First );
- ExportParameter( aStrBuffer, aOriginParaPair.Second );
- aStr = aStrBuffer.makeStringAndClear();
- rExport.AddAttribute( XML_NAMESPACE_DRAW, XML_EXTRUSION_ORIGIN, aStr );
- }
- }
- break;
- case EAS_Color :
- {
- sal_Bool bExtrusionColor = sal_Bool();
- if ( rProp.Value >>= bExtrusionColor )
- {
- rExport.AddAttribute( XML_NAMESPACE_DRAW, XML_EXTRUSION_COLOR,
- bExtrusionColor ? GetXMLToken( XML_TRUE ) : GetXMLToken( XML_FALSE ) );
- }
- }
- break;
- default:
- break;
- }
- }
- }
- }
- break;
- case EAS_TextPath :
- {
- uno::Sequence< beans::PropertyValue > aTextPathPropSeq;
- if ( rGeoProp.Value >>= aTextPathPropSeq )
- {
- sal_Int32 i, nCount = aTextPathPropSeq.getLength();
- for ( i = 0; i < nCount; i++ )
- {
- const beans::PropertyValue& rProp = aTextPathPropSeq[ i ];
- switch( EASGet( rProp.Name ) )
- {
- case EAS_TextPath :
- {
- sal_Bool bTextPathOn = sal_Bool();
- if ( rProp.Value >>= bTextPathOn )
- rExport.AddAttribute( XML_NAMESPACE_DRAW, XML_TEXT_PATH,
- bTextPathOn ? GetXMLToken( XML_TRUE ) : GetXMLToken( XML_FALSE ) );
- }
- break;
- case EAS_TextPathMode :
- {
- com::sun::star::drawing::EnhancedCustomShapeTextPathMode eTextPathMode;
- if ( rProp.Value >>= eTextPathMode )
- {
- switch ( eTextPathMode )
- {
- case com::sun::star::drawing::EnhancedCustomShapeTextPathMode_NORMAL: aStr = GetXMLToken( XML_NORMAL ); break;
- case com::sun::star::drawing::EnhancedCustomShapeTextPathMode_PATH : aStr = GetXMLToken( XML_PATH ); break;
- case com::sun::star::drawing::EnhancedCustomShapeTextPathMode_SHAPE : aStr = GetXMLToken( XML_SHAPE ); break;
- default:
- break;
- }
- if ( !aStr.isEmpty() )
- rExport.AddAttribute( XML_NAMESPACE_DRAW, XML_TEXT_PATH_MODE, aStr );
- }
- }
- break;
- case EAS_ScaleX :
- {
- sal_Bool bScaleX = sal_Bool();
- if ( rProp.Value >>= bScaleX )
- {
- aStr = bScaleX ? GetXMLToken( XML_SHAPE ) : GetXMLToken( XML_PATH );
- rExport.AddAttribute( XML_NAMESPACE_DRAW, XML_TEXT_PATH_SCALE, aStr );
- }
- }
- break;
- case EAS_SameLetterHeights :
- {
- sal_Bool bSameLetterHeights = sal_Bool();
- if ( rProp.Value >>= bSameLetterHeights )
- rExport.AddAttribute( XML_NAMESPACE_DRAW, XML_TEXT_PATH_SAME_LETTER_HEIGHTS,
- bSameLetterHeights ? GetXMLToken( XML_TRUE ) : GetXMLToken( XML_FALSE ) );
- }
- break;
- default:
- break;
- }
- }
- }
- }
- break;
- case EAS_Path :
- {
- uno::Sequence< beans::PropertyValue > aPathPropSeq;
- if ( rGeoProp.Value >>= aPathPropSeq )
- {
- sal_Int32 i, nCount = aPathPropSeq.getLength();
- for ( i = 0; i < nCount; i++ )
- {
- const beans::PropertyValue& rProp = aPathPropSeq[ i ];
-
- switch( EASGet( rProp.Name ) )
- {
- case EAS_SubViewSize:
- {
- uno::Sequence< awt::Size > aSubViewSizes;
- rProp.Value >>= aSubViewSizes;
-
- for ( int nIdx = 0; nIdx < aSubViewSizes.getLength(); nIdx++ )
- {
- if ( nIdx )
- aStrBuffer.append(' ');
- ::sax::Converter::convertNumber( aStrBuffer, aSubViewSizes[nIdx].Width );
- aStrBuffer.append(' ');
- ::sax::Converter::convertNumber( aStrBuffer, aSubViewSizes[nIdx].Height );
- }
- aStr = aStrBuffer.makeStringAndClear();
- rExport.AddAttribute( XML_NAMESPACE_DRAW_EXT, XML_SUB_VIEW_SIZE, aStr );
- }
- break;
- case EAS_ExtrusionAllowed :
- {
- sal_Bool bExtrusionAllowed = sal_Bool();
- if ( rProp.Value >>= bExtrusionAllowed )
- rExport.AddAttribute( XML_NAMESPACE_DRAW, XML_EXTRUSION_ALLOWED,
- bExtrusionAllowed ? GetXMLToken( XML_TRUE ) : GetXMLToken( XML_FALSE ) );
- }
- break;
- case EAS_ConcentricGradientFillAllowed :
- {
- sal_Bool bConcentricGradientFillAllowed = sal_Bool();
- if ( rProp.Value >>= bConcentricGradientFillAllowed )
- rExport.AddAttribute( XML_NAMESPACE_DRAW, XML_CONCENTRIC_GRADIENT_FILL_ALLOWED,
- bConcentricGradientFillAllowed ? GetXMLToken( XML_TRUE ) : GetXMLToken( XML_FALSE ) );
- }
- break;
- case EAS_TextPathAllowed :
- {
- sal_Bool bTextPathAllowed = sal_Bool();
- if ( rProp.Value >>= bTextPathAllowed )
- rExport.AddAttribute( XML_NAMESPACE_DRAW, XML_TEXT_PATH_ALLOWED,
- bTextPathAllowed ? GetXMLToken( XML_TRUE ) : GetXMLToken( XML_FALSE ) );
- }
- break;
- case EAS_GluePoints :
- {
- com::sun::star::uno::Sequence< com::sun::star::drawing::EnhancedCustomShapeParameterPair> aGluePoints;
- if ( rProp.Value >>= aGluePoints )
- {
- sal_Int32 k, nElements = aGluePoints.getLength();
- if ( nElements )
- {
- for( k = 0; k < nElements; k++ )
- {
- ExportParameter( aStrBuffer, aGluePoints[ k ].First );
- ExportParameter( aStrBuffer, aGluePoints[ k ].Second );
- }
- aStr = aStrBuffer.makeStringAndClear();
- }
- rExport.AddAttribute( XML_NAMESPACE_DRAW, XML_GLUE_POINTS, aStr );
- }
- }
- break;
- case EAS_GluePointType :
- {
- sal_Int16 nGluePointType = sal_Int16();
- if ( rProp.Value >>= nGluePointType )
- {
- switch ( nGluePointType )
- {
- case com::sun::star::drawing::EnhancedCustomShapeGluePointType::NONE : aStr = GetXMLToken( XML_NONE ); break;
- case com::sun::star::drawing::EnhancedCustomShapeGluePointType::SEGMENTS : aStr = GetXMLToken( XML_SEGMENTS ); break;
- case com::sun::star::drawing::EnhancedCustomShapeGluePointType::RECT : aStr = GetXMLToken( XML_RECTANGLE ); break;
- }
- if ( !aStr.isEmpty() )
- rExport.AddAttribute( XML_NAMESPACE_DRAW, XML_GLUE_POINT_TYPE, aStr );
- }
- }
- break;
- case EAS_Coordinates :
- {
- bCoordinates = ( rProp.Value >>= aCoordinates );
- }
- break;
- case EAS_Segments :
- {
- rProp.Value >>= aSegments;
- }
- break;
- case EAS_StretchX :
- {
- sal_Int32 nStretchPoint = 0;
- if ( rProp.Value >>= nStretchPoint )
- rExport.AddAttribute( XML_NAMESPACE_DRAW, XML_PATH_STRETCHPOINT_X, OUString::number( nStretchPoint ) );
- }
- break;
- case EAS_StretchY :
- {
- sal_Int32 nStretchPoint = 0;
- if ( rProp.Value >>= nStretchPoint )
- rExport.AddAttribute( XML_NAMESPACE_DRAW, XML_PATH_STRETCHPOINT_Y, OUString::number( nStretchPoint ) );
- }
- break;
- case EAS_TextFrames :
- {
- com::sun::star::uno::Sequence< com::sun::star::drawing::EnhancedCustomShapeTextFrame > aPathTextFrames;
- if ( rProp.Value >>= aPathTextFrames )
- {
- if ( (sal_uInt16)aPathTextFrames.getLength() )
- {
- sal_uInt16 k, nElements = (sal_uInt16)aPathTextFrames.getLength();
- for ( k = 0; k < nElements; k++ )
- {
- ExportParameter( aStrBuffer, aPathTextFrames[ k ].TopLeft.First );
- ExportParameter( aStrBuffer, aPathTextFrames[ k ].TopLeft.Second );
- ExportParameter( aStrBuffer, aPathTextFrames[ k ].BottomRight.First );
- ExportParameter( aStrBuffer, aPathTextFrames[ k ].BottomRight.Second );
- }
- aStr = aStrBuffer.makeStringAndClear();
- }
- rExport.AddAttribute( XML_NAMESPACE_DRAW, XML_TEXT_AREAS, aStr );
- }
- }
- break;
- default:
- break;
- }
- }
- }
- }
- break;
- case EAS_Equations :
- {
- bEquations = ( rGeoProp.Value >>= aEquations );
- }
- break;
- case EAS_Handles :
- {
- bHandles = ( rGeoProp.Value >>= aHandles );
- }
- break;
- case EAS_AdjustmentValues :
- {
- rGeoProp.Value >>= aAdjustmentValues;
- }
- break;
- default:
- break;
- }
- } // for
- rExport.AddAttribute( XML_NAMESPACE_DRAW, XML_TYPE, aCustomShapeType );
-
- // adjustments
- sal_Int32 nAdjustmentValues = aAdjustmentValues.getLength();
- if ( nAdjustmentValues )
- {
- sal_Int32 i, nValue = 0;
- for ( i = 0; i < nAdjustmentValues; i++ )
- {
- if ( i )
- aStrBuffer.append( (sal_Unicode)' ' );
-
- const com::sun::star::drawing::EnhancedCustomShapeAdjustmentValue& rAdj = aAdjustmentValues[ i ];
- if ( rAdj.State == beans::PropertyState_DIRECT_VALUE )
- {
- if ( rAdj.Value.getValueTypeClass() == uno::TypeClass_DOUBLE )
- {
- double fValue = 0.0;
- rAdj.Value >>= fValue;
- ::sax::Converter::convertDouble(aStrBuffer, fValue);
- }
- else
- {
- rAdj.Value >>= nValue;
- ::sax::Converter::convertNumber(aStrBuffer, nValue);
- }
- }
- else
- {
- // this should not be, but better than setting nothing
- ::sax::Converter::convertNumber( aStrBuffer, 0 );
- }
- }
- aStr = aStrBuffer.makeStringAndClear();
- rExport.AddAttribute( XML_NAMESPACE_DRAW, XML_MODIFIERS, aStr );
- }
- if ( bCoordinates )
- ImpExportEnhancedPath( rExport, aCoordinates, aSegments );
- }
- }
- SvXMLElementExport aOBJ( rExport, XML_NAMESPACE_DRAW, XML_ENHANCED_GEOMETRY, sal_True, sal_True );
- if ( bEquations )
- ImpExportEquations( rExport, aEquations );
- if ( bHandles )
- ImpExportHandles( rExport, aHandles );
-}
-
-void XMLShapeExport::ImpExportCustomShape(
- const uno::Reference< drawing::XShape >& xShape,
- XmlShapeType, sal_Int32 nFeatures, com::sun::star::awt::Point* pRefPoint )
-{
- const uno::Reference< beans::XPropertySet > xPropSet(xShape, uno::UNO_QUERY);
- if ( xPropSet.is() )
- {
- OUString aStr;
- uno::Reference< beans::XPropertySetInfo > xPropSetInfo( xPropSet->getPropertySetInfo() );
-
- // Transformation
- ImpExportNewTrans( xPropSet, nFeatures, pRefPoint );
-
- if ( xPropSetInfo.is() )
- {
- const OUString sCustomShapeEngine( "CustomShapeEngine" );
- if ( xPropSetInfo->hasPropertyByName( sCustomShapeEngine ) )
- {
- uno::Any aEngine( xPropSet->getPropertyValue( sCustomShapeEngine ) );
- if ( ( aEngine >>= aStr ) && !aStr.isEmpty() )
- mrExport.AddAttribute( XML_NAMESPACE_DRAW, XML_ENGINE, aStr );
- }
- const OUString sCustomShapeData( "CustomShapeData" );
- if ( xPropSetInfo->hasPropertyByName( sCustomShapeData ) )
- {
- uno::Any aData( xPropSet->getPropertyValue( sCustomShapeData ) );
- if ( ( aData >>= aStr ) && !aStr.isEmpty() )
- mrExport.AddAttribute( XML_NAMESPACE_DRAW, XML_DATA, aStr );
- }
- }
- sal_Bool bCreateNewline( (nFeatures & SEF_EXPORT_NO_WS) == 0 ); // #86116#/#92210#
- SvXMLElementExport aOBJ( mrExport, XML_NAMESPACE_DRAW, XML_CUSTOM_SHAPE, bCreateNewline, sal_True );
- ImpExportDescription( xShape ); // #i68101#
- ImpExportEvents( xShape );
- ImpExportGluePoints( xShape );
- ImpExportText( xShape );
- ImpExportEnhancedGeometry( mrExport, xPropSet );
- }
-}
-
-void XMLShapeExport::ImpExportTableShape( const uno::Reference< drawing::XShape >& xShape, XmlShapeType eShapeType, sal_Int32 nFeatures, com::sun::star::awt::Point* pRefPoint )
-{
- uno::Reference< beans::XPropertySet > xPropSet(xShape, uno::UNO_QUERY);
- uno::Reference< container::XNamed > xNamed(xShape, uno::UNO_QUERY);
-
- DBG_ASSERT( xPropSet.is() && xNamed.is(), "xmloff::XMLShapeExport::ImpExportTableShape(), tabe shape is not implementing needed interfaces");
- if(xPropSet.is() && xNamed.is()) try
- {
- // Transformation
- ImpExportNewTrans(xPropSet, nFeatures, pRefPoint);
-
- sal_Bool bIsEmptyPresObj = sal_False;
-
- // presentation settings
- if(eShapeType == XmlShapeTypePresTableShape)
- bIsEmptyPresObj = ImpExportPresentationAttributes( xPropSet, GetXMLToken(XML_PRESENTATION_TABLE) );
-
- const bool bCreateNewline( (nFeatures & SEF_EXPORT_NO_WS) == 0 );
- const bool bExportEmbedded(0 != (mrExport.getExportFlags() & EXPORT_EMBEDDED));
-
- SvXMLElementExport aElement( mrExport, XML_NAMESPACE_DRAW, XML_FRAME, bCreateNewline, sal_True );
-
- // do not export in ODF 1.1 or older
- if( mrExport.getDefaultVersion() >= SvtSaveOptions::ODFVER_012 )
- {
- if( !bIsEmptyPresObj )
- {
- uno::Reference< container::XNamed > xTemplate( xPropSet->getPropertyValue("TableTemplate"), uno::UNO_QUERY );
- if( xTemplate.is() )
- {
- const OUString sTemplate( xTemplate->getName() );
- if( !sTemplate.isEmpty() )
- {
- mrExport.AddAttribute(XML_NAMESPACE_TABLE, XML_TEMPLATE_NAME, sTemplate );
-
- for( const XMLPropertyMapEntry* pEntry = &aXMLTableShapeAttributes[0]; pEntry->msApiName; pEntry++ )
- {
- try
- {
- sal_Bool bBool = sal_False;
- const OUString sAPIPropertyName( OUString(pEntry->msApiName, pEntry->nApiNameLength, RTL_TEXTENCODING_ASCII_US ) );
-
- xPropSet->getPropertyValue( sAPIPropertyName ) >>= bBool;
- if( bBool )
- mrExport.AddAttribute(pEntry->mnNameSpace, pEntry->meXMLName, XML_TRUE );
- }
- catch( uno::Exception& )
- {
- OSL_FAIL("XMLShapeExport::ImpExportTableShape(), exception caught!");
- }
- }
- }
- }
-
- uno::Reference< table::XColumnRowRange > xRange( xPropSet->getPropertyValue( msModel ), uno::UNO_QUERY_THROW );
- GetShapeTableExport()->exportTable( xRange );
- }
- }
-
- if( !bIsEmptyPresObj )
- {
- uno::Reference< graphic::XGraphic > xGraphic( xPropSet->getPropertyValue("ReplacementGraphic"), uno::UNO_QUERY );
- if( xGraphic.is() ) try
- {
- Reference< uno::XComponentContext > xContext = GetExport().getComponentContext();
-
- uno::Reference< embed::XStorage > xPictureStorage;
- uno::Reference< embed::XStorage > xStorage;
- uno::Reference< io::XStream > xPictureStream;
-
- OUString sPictureName;
- if( bExportEmbedded )
- {
- xPictureStream.set( xContext->getServiceManager()->createInstanceWithContext( "com.sun.star.comp.MemoryStream", xContext), UNO_QUERY_THROW );
- }
- else
- {
- xStorage.set( GetExport().GetTargetStorage(), UNO_QUERY_THROW );
-
- xPictureStorage.set( xStorage->openStorageElement( OUString( "Pictures" ), ::embed::ElementModes::READWRITE ), uno::UNO_QUERY_THROW );
- const OUString sPrefix( "TablePreview" );
- const OUString sSuffix( ".svm" );
-
- sal_Int32 nIndex = 0;
- do
- {
- sPictureName = sPrefix;
- sPictureName += OUString::number( ++nIndex );
- sPictureName += sSuffix;
- }
- while( xPictureStorage->hasByName( sPictureName ) );
-
- xPictureStream.set( xPictureStorage->openStreamElement( sPictureName, ::embed::ElementModes::READWRITE ), UNO_QUERY_THROW );
- }
-
- Reference< graphic::XGraphicProvider > xProvider( graphic::GraphicProvider::create(xContext) );
- Sequence< beans::PropertyValue > aArgs( 2 );
- aArgs[ 0 ].Name = OUString( "MimeType" );
- aArgs[ 0 ].Value <<= OUString( "image/x-vclgraphic" );
- aArgs[ 1 ].Name = OUString( "OutputStream" );
- aArgs[ 1 ].Value <<= xPictureStream->getOutputStream();
- xProvider->storeGraphic( xGraphic, aArgs );
-
- if( xPictureStorage.is() )
- {
- Reference< embed::XTransactedObject > xTrans( xPictureStorage, UNO_QUERY );
- if( xTrans.is() )
- xTrans->commit();
- }
-
- if( !bExportEmbedded )
- {
- OUString sURL( "Pictures/" );
- sURL += sPictureName;
- mrExport.AddAttribute(XML_NAMESPACE_XLINK, XML_HREF, sURL );
- mrExport.AddAttribute( XML_NAMESPACE_XLINK, XML_TYPE, XML_SIMPLE );
- mrExport.AddAttribute( XML_NAMESPACE_XLINK, XML_SHOW, XML_EMBED );
- mrExport.AddAttribute( XML_NAMESPACE_XLINK, XML_ACTUATE, XML_ONLOAD );
- }
-
- SvXMLElementExport aElem( GetExport(), XML_NAMESPACE_DRAW, XML_IMAGE, sal_False, sal_True );
-
- if( bExportEmbedded )
- {
- Reference< XSeekableInputStream > xSeekable( xPictureStream, UNO_QUERY_THROW );
- xSeekable->seek(0);
-
- XMLBase64Export aBase64Exp( GetExport() );
- aBase64Exp.exportOfficeBinaryDataElement( Reference < XInputStream >( xPictureStream, UNO_QUERY_THROW ) );
- }
- }
- catch( uno::Exception& )
- {
- OSL_FAIL("xmloff::XMLShapeExport::ImpExportTableShape(), exception caught!");
- }
- }
-
- ImpExportEvents( xShape );
- ImpExportGluePoints( xShape );
- ImpExportDescription( xShape ); // #i68101#
- }
- catch( uno::Exception& )
- {
- OSL_FAIL( "xmloff::XMLShapeExport::ImpExportTableShape(), exception caught!" );
- }
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */