diff options
Diffstat (limited to 'oox/inc/oox/drawingml/customshapeproperties.hxx')
-rw-r--r-- | oox/inc/oox/drawingml/customshapeproperties.hxx | 81 |
1 files changed, 75 insertions, 6 deletions
diff --git a/oox/inc/oox/drawingml/customshapeproperties.hxx b/oox/inc/oox/drawingml/customshapeproperties.hxx index ff1f26533036..171437095f03 100644 --- a/oox/inc/oox/drawingml/customshapeproperties.hxx +++ b/oox/inc/oox/drawingml/customshapeproperties.hxx @@ -30,9 +30,10 @@ #include "oox/helper/propertymap.hxx" #include "oox/drawingml/color.hxx" +#include "oox/core/xmlfilterbase.hxx" #include <com/sun/star/graphic/XGraphic.hpp> #include <boost/shared_ptr.hpp> -#include <basegfx/polygon/b2dpolypolygon.hxx> +#include "oox/helper/helper.hxx" #include "tokens.hxx" #include <vector> #include <map> @@ -44,7 +45,9 @@ #include <com/sun/star/drawing/EnhancedCustomShapeTextFrame.hpp> #include <com/sun/star/drawing/EnhancedCustomShapeAdjustmentValue.hpp> #include <com/sun/star/drawing/EnhancedCustomShapeTextPathMode.hpp> +#ifndef __com_sun_star_beans_PropertyValues_hpp__ #include <com/sun/star/beans/PropertyValues.hpp> +#endif #include <com/sun/star/drawing/ProjectionMode.hpp> #include <com/sun/star/drawing/XShape.hpp> @@ -60,6 +63,55 @@ struct CustomShapeGuide rtl::OUString maFormula; }; +struct AdjustHandle +{ + sal_Bool polar; + com::sun::star::drawing::EnhancedCustomShapeParameterPair + pos; + + // depending to the type (polar or not): + OptValue< rtl::OUString > gdRef1; // gdRefX or gdRefR + OptValue< com::sun::star::drawing::EnhancedCustomShapeParameter > + min1; // minX or minR + OptValue< com::sun::star::drawing::EnhancedCustomShapeParameter > + max1; // maxX or maxR + OptValue< rtl::OUString > gdRef2; // gdRefY or gdRefAng + OptValue< com::sun::star::drawing::EnhancedCustomShapeParameter > + min2; // minX or minAng + OptValue< com::sun::star::drawing::EnhancedCustomShapeParameter > + max2; // maxY or maxAng + + AdjustHandle( sal_Bool bPolar ) : polar( bPolar ) {}; +}; + +struct ConnectionSite +{ + com::sun::star::drawing::EnhancedCustomShapeParameterPair + pos; + com::sun::star::drawing::EnhancedCustomShapeParameter + ang; +}; + +struct GeomRect +{ + com::sun::star::drawing::EnhancedCustomShapeParameter l; + com::sun::star::drawing::EnhancedCustomShapeParameter t; + com::sun::star::drawing::EnhancedCustomShapeParameter r; + com::sun::star::drawing::EnhancedCustomShapeParameter b; +}; + +struct Path2D +{ + sal_Int64 w; + sal_Int64 h; + sal_Int32 fill; + sal_Bool stroke; + sal_Bool extrusionOk; + std::vector< com::sun::star::drawing::EnhancedCustomShapeParameterPair > parameter; + + Path2D() : w( 0 ), h( 0 ), fill( XML_norm ), stroke( sal_True ), extrusionOk( sal_True ) {}; +}; + class CustomShapeProperties { public: @@ -68,19 +120,36 @@ public: virtual ~CustomShapeProperties(); void apply( const CustomShapePropertiesPtr& ); - void pushToPropSet( const ::com::sun::star::uno::Reference < ::com::sun::star::beans::XPropertySet > & xPropSet, + void pushToPropSet( const ::oox::core::FilterBase& rFilterBase, + const ::com::sun::star::uno::Reference < ::com::sun::star::beans::XPropertySet > & xPropSet, const ::com::sun::star::uno::Reference < ::com::sun::star::drawing::XShape > & xShape) const; void setShapePresetType( const rtl::OUString& rShapePresetType ){ maShapePresetType = rShapePresetType; }; - std::vector< CustomShapeGuide >& getAdjustmentValues(){ return maAdjustmentValues; }; + + std::vector< CustomShapeGuide >& getAdjustmentGuideList(){ return maAdjustmentGuideList; }; + std::vector< CustomShapeGuide >& getGuideList(){ return maGuideList; }; + std::vector< AdjustHandle >& getAdjustHandleList(){ return maAdjustHandleList; }; + std::vector< ConnectionSite >& getConnectionSiteList(){ return maConnectionSiteList; }; + OptValue< GeomRect >& getTextRect(){ return maTextRect; }; + std::vector< Path2D >& getPath2DList(){ return maPath2DList; }; + std::vector< com::sun::star::drawing::EnhancedCustomShapeSegment >& getSegments(){ return maSegments; }; double getValue( const std::vector< CustomShapeGuide >&, sal_uInt32 nIndex ) const; - ::basegfx::B2DPolyPolygon& getPolygon() { return maPolygon; } + static sal_Int32 SetCustomShapeGuideValue( std::vector< CustomShapeGuide >& rGuideList, const CustomShapeGuide& rGuide ); + static sal_Int32 GetCustomShapeGuideValue( const std::vector< CustomShapeGuide >& rGuideList, const rtl::OUString& rFormulaName ); + private: rtl::OUString maShapePresetType; - std::vector< CustomShapeGuide > maAdjustmentValues; - ::basegfx::B2DPolyPolygon maPolygon; + std::vector< CustomShapeGuide > maAdjustmentGuideList; + std::vector< CustomShapeGuide > maGuideList; + std::vector< AdjustHandle > maAdjustHandleList; + std::vector< ConnectionSite > maConnectionSiteList; + OptValue< GeomRect > maTextRect; + std::vector< Path2D > maPath2DList; + + std::vector< com::sun::star::drawing::EnhancedCustomShapeSegment > + maSegments; }; } } |