oox/source/drawingml/customshapegeometry.cxx | 3 +++ oox/source/drawingml/customshapeproperties.cxx | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+)
New commits: commit 4c742c4726e9dee47f6ae9fa3654bfb486b86e54 Author: Mark Hung <[email protected]> Date: Sun Nov 6 12:28:00 2016 +0800 tdf#100733 oox: imports RefR and RefAngle of polar handles. RefR and RefAngle was ignored when importing polar handles for customshapes. Change-Id: I2d2aa1b0e54cf4946417c6dc81ecdbe58f6b50e9 Reviewed-on: https://gerrit.libreoffice.org/30601 Tested-by: Jenkins <[email protected]> Reviewed-by: Mark Hung <[email protected]> diff --git a/oox/source/drawingml/customshapegeometry.cxx b/oox/source/drawingml/customshapegeometry.cxx index 13a8198..56d00f322 100644 --- a/oox/source/drawingml/customshapegeometry.cxx +++ b/oox/source/drawingml/customshapegeometry.cxx @@ -706,6 +706,7 @@ PolarAdjustHandleContext::PolarAdjustHandleContext( ContextHandler2Helper& rPare const OUString aEmptyDefault; if ( rAttribs.hasAttribute( XML_gdRefR ) ) { + mrAdjustHandle.polar = true ; mrAdjustHandle.gdRef1 = GetGeomGuideName( rAttribs.getString( XML_gdRefR, aEmptyDefault ) ); } if ( rAttribs.hasAttribute( XML_minR ) ) @@ -718,6 +719,7 @@ PolarAdjustHandleContext::PolarAdjustHandleContext( ContextHandler2Helper& rPare } if ( rAttribs.hasAttribute( XML_gdRefAng ) ) { + mrAdjustHandle.polar = true ; mrAdjustHandle.gdRef2 = GetGeomGuideName( rAttribs.getString( XML_gdRefAng, aEmptyDefault ) ); } if ( rAttribs.hasAttribute( XML_minAng ) ) @@ -732,6 +734,7 @@ PolarAdjustHandleContext::PolarAdjustHandleContext( ContextHandler2Helper& rPare ContextHandlerRef PolarAdjustHandleContext::onCreateContext( sal_Int32 aElementToken, const AttributeList& rAttribs ) { + // mrAdjustHandle.pos uses planar coordinates. if ( aElementToken == A_TOKEN( pos ) ) return new AdjPoint2DContext( *this, rAttribs, mrCustomShapeProperties, mrAdjustHandle.pos ); // CT_AdjPoint2D return nullptr; diff --git a/oox/source/drawingml/customshapeproperties.cxx b/oox/source/drawingml/customshapeproperties.cxx index 3ef04b4..5fddf19 100644 --- a/oox/source/drawingml/customshapeproperties.cxx +++ b/oox/source/drawingml/customshapeproperties.cxx @@ -328,7 +328,25 @@ void CustomShapeProperties::pushToPropSet( const ::oox::core::FilterBase& /* rFi // adjustment value is decisive if ( maAdjustHandleList[ i ].polar ) { + // Polar handles in DrawingML + // 1. don't have reference center, so PROP_Polar isn't needed. + // 2. position always use planar coordinates. + // 3. use RefAngle and RefR to specify adjustment value to be updated. + // 4. The unit of angular adjustment values are 6000th degree. + aHandle.setProperty( PROP_Position, maAdjustHandleList[ i ].pos); + if ( maAdjustHandleList[ i ].gdRef1.has() ) + { + sal_Int32 nIndex = GetCustomShapeGuideValue( maAdjustmentGuideList, maAdjustHandleList[ i ].gdRef1.get() ); + if ( nIndex >= 0 ) + aHandle.setProperty( PROP_RefR, nIndex); + } + if ( maAdjustHandleList[ i ].gdRef2.has() ) + { + sal_Int32 nIndex = GetCustomShapeGuideValue( maAdjustmentGuideList, maAdjustHandleList[ i ].gdRef2.get() ); + if ( nIndex >= 0 ) + aHandle.setProperty( PROP_RefAngle, nIndex); + } if ( maAdjustHandleList[ i ].min1.has() ) aHandle.setProperty( PROP_RadiusRangeMinimum, maAdjustHandleList[ i ].min1.get()); if ( maAdjustHandleList[ i ].max1.has() ) _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
