[PATCH] Moved duplicate code into methods
Christina Rossmanith
ChrRossmanith at web.de
Mon May 2 07:44:54 PDT 2011
---
svx/source/svdraw/svdoashp.cxx | 737 ++++++++++++++--------------------------
1 files changed, 255 insertions(+), 482 deletions(-)
diff --git a/svx/source/svdraw/svdoashp.cxx b/svx/source/svdraw/svdoashp.cxx
index 5fdd50c..85f1082 100644
--- a/svx/source/svdraw/svdoashp.cxx
+++ b/svx/source/svdraw/svdoashp.cxx
@@ -104,6 +104,118 @@ using namespace ::com::sun::star::lang;
using namespace ::com::sun::star::beans;
using namespace ::com::sun::star::drawing;
+
+void rSegInfo_nSDat_method (EnhancedCustomShapeSegment& rSegInfo, sal_uInt16 nSDat)
+{
+ switch( nSDat >> 8 )
+ {
+ case 0x00 :
+ {
+ rSegInfo.Command = EnhancedCustomShapeSegmentCommand::LINETO;
+ rSegInfo.Count = nSDat & 0xff;
+ if ( !rSegInfo.Count )
+ rSegInfo.Count = 1;
+ }
+ break;
+ case 0x20 :
+ {
+ rSegInfo.Command = EnhancedCustomShapeSegmentCommand::CURVETO;
+ rSegInfo.Count = nSDat & 0xff;
+ if ( !rSegInfo.Count )
+ rSegInfo.Count = 1;
+ }
+ break;
+ case 0x40 :
+ {
+ rSegInfo.Command = EnhancedCustomShapeSegmentCommand::MOVETO;
+ rSegInfo.Count = nSDat & 0xff;
+ if ( !rSegInfo.Count )
+ rSegInfo.Count = 1;
+ }
+ break;
+ case 0x60 :
+ {
+ rSegInfo.Command = EnhancedCustomShapeSegmentCommand::CLOSESUBPATH;
+ rSegInfo.Count = 0;
+ }
+ break;
+ case 0x80 :
+ {
+ rSegInfo.Command = EnhancedCustomShapeSegmentCommand::ENDSUBPATH;
+ rSegInfo.Count = 0;
+ }
+ break;
+ case 0xa1 :
+ {
+ rSegInfo.Command = EnhancedCustomShapeSegmentCommand::ANGLEELLIPSETO;
+ rSegInfo.Count = ( nSDat & 0xff ) / 3;
+ }
+ break;
+ case 0xa2 :
+ {
+ rSegInfo.Command = EnhancedCustomShapeSegmentCommand::ANGLEELLIPSE;
+ rSegInfo.Count = ( nSDat & 0xff ) / 3;
+ }
+ break;
+ case 0xa3 :
+ {
+ rSegInfo.Command = EnhancedCustomShapeSegmentCommand::ARCTO;
+ rSegInfo.Count = ( nSDat & 0xff ) >> 2;
+ }
+ break;
+ case 0xa4 :
+ {
+ rSegInfo.Command = EnhancedCustomShapeSegmentCommand::ARC;
+ rSegInfo.Count = ( nSDat & 0xff ) >> 2;
+ }
+ break;
+ case 0xa5 :
+ {
+ rSegInfo.Command = EnhancedCustomShapeSegmentCommand::CLOCKWISEARCTO;
+ rSegInfo.Count = ( nSDat & 0xff ) >> 2;
+ }
+ break;
+ case 0xa6 :
+ {
+ rSegInfo.Command = EnhancedCustomShapeSegmentCommand::CLOCKWISEARC;
+ rSegInfo.Count = ( nSDat & 0xff ) >> 2;
+ }
+ break;
+ case 0xa7 :
+ {
+ rSegInfo.Command = EnhancedCustomShapeSegmentCommand::ELLIPTICALQUADRANTX;
+ rSegInfo.Count = nSDat & 0xff;
+ }
+ break;
+ case 0xa8 :
+ {
+ rSegInfo.Command = EnhancedCustomShapeSegmentCommand::ELLIPTICALQUADRANTY;
+ rSegInfo.Count = nSDat & 0xff;
+ }
+ break;
+ case 0xaa :
+ {
+ rSegInfo.Command = EnhancedCustomShapeSegmentCommand::NOFILL;
+ rSegInfo.Count = 0;
+ }
+ break;
+ case 0xab :
+ {
+ rSegInfo.Command = EnhancedCustomShapeSegmentCommand::NOSTROKE;
+ rSegInfo.Count = 0;
+ }
+ break;
+ default:
+ case 0xf8 :
+ {
+ rSegInfo.Command = EnhancedCustomShapeSegmentCommand::UNKNOWN;
+ rSegInfo.Count = nSDat;
+ }
+ break;
+ }
+ return;
+}
+
static MSO_SPT ImpGetCustomShapeType( const SdrObjCustomShape& rCustoShape )
{
MSO_SPT eRetValue = mso_sptNil;
@@ -620,6 +732,139 @@ std::vector< SdrCustomShapeInteraction > SdrObjCustomShape::GetInteractionHandle
#define DEFAULT_MINIMUM_SIGNED_COMPARE ((sal_Int32)0x80000000)
#define DEFAULT_MAXIMUM_SIGNED_COMPARE ((sal_Int32)0x7fffffff)
+sal_Int32 GetNumberOfProperties ( const SvxMSDffHandle* pData )
+{
+ sal_Int32 nPropertiesNeeded=1; // position is always needed
+ sal_Int32 nFlags = pData->nFlags;
+
+ if ( nFlags & MSDFF_HANDLE_FLAGS_MIRRORED_X )
+ nPropertiesNeeded++;
+ if ( nFlags & MSDFF_HANDLE_FLAGS_MIRRORED_Y )
+ nPropertiesNeeded++;
+ if ( nFlags & MSDFF_HANDLE_FLAGS_SWITCHED )
+ nPropertiesNeeded++;
+ if ( nFlags & MSDFF_HANDLE_FLAGS_POLAR )
+ {
+ nPropertiesNeeded++;
+ if ( nFlags & MSDFF_HANDLE_FLAGS_RADIUS_RANGE )
+ {
+ if ( pData->nRangeXMin != DEFAULT_MINIMUM_SIGNED_COMPARE )
+ nPropertiesNeeded++;
+ if ( pData->nRangeXMax != DEFAULT_MAXIMUM_SIGNED_COMPARE )
+ nPropertiesNeeded++;
+ }
+ }
+ else if ( nFlags & MSDFF_HANDLE_FLAGS_RANGE )
+ {
+ if ( pData->nRangeXMin != DEFAULT_MINIMUM_SIGNED_COMPARE )
+ nPropertiesNeeded++;
+ if ( pData->nRangeXMax != DEFAULT_MAXIMUM_SIGNED_COMPARE )
+ nPropertiesNeeded++;
+ if ( pData->nRangeYMin != DEFAULT_MINIMUM_SIGNED_COMPARE )
+ nPropertiesNeeded++;
+ if ( pData->nRangeYMax != DEFAULT_MAXIMUM_SIGNED_COMPARE )
+ nPropertiesNeeded++;
+ }
+
+ return nPropertiesNeeded;
+}
+
+void SetProperties (const SvxMSDffHandle* pData, com::sun::star::beans::PropertyValues& rPropValues)
+{
+ sal_Int32 nFlags = pData->nFlags, n=0;
+
+ // POSITION
+ {
+ const rtl::OUString sPosition( RTL_CONSTASCII_USTRINGPARAM ( "Position" ) );
+ ::com::sun::star::drawing::EnhancedCustomShapeParameterPair aPosition;
+ EnhancedCustomShape2d::SetEnhancedCustomShapeHandleParameter( aPosition.First, pData->nPositionX, sal_True, sal_True );
+ EnhancedCustomShape2d::SetEnhancedCustomShapeHandleParameter( aPosition.Second, pData->nPositionY, sal_True, sal_False );
+ rPropValues[ n ].Name = sPosition;
+ rPropValues[ n++ ].Value <<= aPosition;
+ }
+ if ( nFlags & MSDFF_HANDLE_FLAGS_MIRRORED_X ) {
+ const rtl::OUString sMirroredX( RTL_CONSTASCII_USTRINGPARAM ( "MirroredX" ) );
+ sal_Bool bMirroredX = sal_True;
+ rPropValues[ n ].Name = sMirroredX;
+ rPropValues[ n++ ].Value <<= bMirroredX;
+ }
+ if ( nFlags & MSDFF_HANDLE_FLAGS_MIRRORED_Y ) {
+ const rtl::OUString sMirroredY( RTL_CONSTASCII_USTRINGPARAM ( "MirroredY" ) );
+ sal_Bool bMirroredY = sal_True;
+ rPropValues[ n ].Name = sMirroredY;
+ rPropValues[ n++ ].Value <<= bMirroredY;
+ }
+ if ( nFlags & MSDFF_HANDLE_FLAGS_SWITCHED ) {
+ const rtl::OUString sSwitched( RTL_CONSTASCII_USTRINGPARAM ( "Switched" ) );
+ sal_Bool bSwitched = sal_True;
+ rPropValues[ n ].Name = sSwitched;
+ rPropValues[ n++ ].Value <<= bSwitched;
+ }
+ if ( nFlags & MSDFF_HANDLE_FLAGS_POLAR ) {
+ const rtl::OUString sPolar( RTL_CONSTASCII_USTRINGPARAM ( "Polar" ) );
+ ::com::sun::star::drawing::EnhancedCustomShapeParameterPair aCenter;
+ EnhancedCustomShape2d::SetEnhancedCustomShapeHandleParameter( aCenter.First, pData->nCenterX,
+ ( nFlags & MSDFF_HANDLE_FLAGS_CENTER_X_IS_SPECIAL ) != 0, sal_True );
+ EnhancedCustomShape2d::SetEnhancedCustomShapeHandleParameter( aCenter.Second, pData->nCenterY,
+ ( nFlags & MSDFF_HANDLE_FLAGS_CENTER_Y_IS_SPECIAL ) != 0, sal_False );
+ rPropValues[ n ].Name = sPolar;
+ rPropValues[ n++ ].Value <<= aCenter;
+ if ( nFlags & MSDFF_HANDLE_FLAGS_RADIUS_RANGE ) {
+ if ( pData->nRangeXMin != DEFAULT_MINIMUM_SIGNED_COMPARE ) {
+ const rtl::OUString sRadiusRangeMinimum( RTL_CONSTASCII_USTRINGPARAM ( "RadiusRangeMinimum" ) );
+ ::com::sun::star::drawing::EnhancedCustomShapeParameter aRadiusRangeMinimum;
+ EnhancedCustomShape2d::SetEnhancedCustomShapeHandleParameter( aRadiusRangeMinimum, pData->nRangeXMin,
+ ( nFlags & MSDFF_HANDLE_FLAGS_RANGE_X_MIN_IS_SPECIAL ) != 0, sal_True );
+ rPropValues[ n ].Name = sRadiusRangeMinimum;
+ rPropValues[ n++ ].Value <<= aRadiusRangeMinimum;
+ }
+ if ( pData->nRangeXMax != DEFAULT_MAXIMUM_SIGNED_COMPARE ) {
+ const rtl::OUString sRadiusRangeMaximum( RTL_CONSTASCII_USTRINGPARAM ( "RadiusRangeMaximum" ) );
+ ::com::sun::star::drawing::EnhancedCustomShapeParameter aRadiusRangeMaximum;
+ EnhancedCustomShape2d::SetEnhancedCustomShapeHandleParameter( aRadiusRangeMaximum, pData->nRangeXMax,
+ ( nFlags & MSDFF_HANDLE_FLAGS_RANGE_X_MAX_IS_SPECIAL ) != 0, sal_False );
+ rPropValues[ n ].Name = sRadiusRangeMaximum;
+ rPropValues[ n++ ].Value <<= aRadiusRangeMaximum;
+ }
+ }
+ }
+ else if ( nFlags & MSDFF_HANDLE_FLAGS_RANGE ) {
+ if ( pData->nRangeXMin != DEFAULT_MINIMUM_SIGNED_COMPARE ) {
+ const rtl::OUString sRangeXMinimum( RTL_CONSTASCII_USTRINGPARAM ( "RangeXMinimum" ) );
+ ::com::sun::star::drawing::EnhancedCustomShapeParameter aRangeXMinimum;
+ EnhancedCustomShape2d::SetEnhancedCustomShapeHandleParameter( aRangeXMinimum, pData->nRangeXMin,
+ ( nFlags & MSDFF_HANDLE_FLAGS_RANGE_X_MIN_IS_SPECIAL ) != 0, sal_True );
+ rPropValues[ n ].Name = sRangeXMinimum;
+ rPropValues[ n++ ].Value <<= aRangeXMinimum;
+ }
+ if ( pData->nRangeXMax != DEFAULT_MAXIMUM_SIGNED_COMPARE ) {
+ const rtl::OUString sRangeXMaximum( RTL_CONSTASCII_USTRINGPARAM ( "RangeXMaximum" ) );
+ ::com::sun::star::drawing::EnhancedCustomShapeParameter aRangeXMaximum;
+ EnhancedCustomShape2d::SetEnhancedCustomShapeHandleParameter( aRangeXMaximum, pData->nRangeXMax,
+ ( nFlags & MSDFF_HANDLE_FLAGS_RANGE_X_MAX_IS_SPECIAL ) != 0, sal_False );
+ rPropValues[ n ].Name = sRangeXMaximum;
+ rPropValues[ n++ ].Value <<= aRangeXMaximum;
+ }
+ if ( pData->nRangeYMin != DEFAULT_MINIMUM_SIGNED_COMPARE ) {
+ const rtl::OUString sRangeYMinimum( RTL_CONSTASCII_USTRINGPARAM ( "RangeYMinimum" ) );
+ ::com::sun::star::drawing::EnhancedCustomShapeParameter aRangeYMinimum;
+ EnhancedCustomShape2d::SetEnhancedCustomShapeHandleParameter( aRangeYMinimum, pData->nRangeYMin,
+ ( nFlags & MSDFF_HANDLE_FLAGS_RANGE_Y_MIN_IS_SPECIAL ) != 0, sal_True );
+ rPropValues[ n ].Name = sRangeYMinimum;
+ rPropValues[ n++ ].Value <<= aRangeYMinimum;
+ }
+ if ( pData->nRangeYMax != DEFAULT_MAXIMUM_SIGNED_COMPARE ) {
+ const rtl::OUString sRangeYMaximum( RTL_CONSTASCII_USTRINGPARAM ( "RangeYMaximum" ) );
+ ::com::sun::star::drawing::EnhancedCustomShapeParameter aRangeYMaximum;
+ EnhancedCustomShape2d::SetEnhancedCustomShapeHandleParameter( aRangeYMaximum, pData->nRangeYMax,
+ ( nFlags & MSDFF_HANDLE_FLAGS_RANGE_Y_MAX_IS_SPECIAL ) != 0, sal_False );
+ rPropValues[ n ].Name = sRangeYMaximum;
+ rPropValues[ n++ ].Value <<= aRangeYMaximum;
+ }
+ }
+ return;
+}
+
sdr::properties::BaseProperties* SdrObjCustomShape::CreateObjectSpecificProperties()
{
return new sdr::properties::CustomShapeProperties(*this);
@@ -787,112 +1032,7 @@ void SdrObjCustomShape::MergeDefaultAttributes( const rtl::OUString* pType )
{
EnhancedCustomShapeSegment& rSegInfo = seqSegments[ i ];
sal_uInt16 nSDat = pDefCustomShape->pElements[ i ];
- switch( nSDat >> 8 )
- {
- case 0x00 :
- {
- rSegInfo.Command = EnhancedCustomShapeSegmentCommand::LINETO;
- rSegInfo.Count = nSDat & 0xff;
- if ( !rSegInfo.Count )
- rSegInfo.Count = 1;
- }
- break;
- case 0x20 :
- {
- rSegInfo.Command = EnhancedCustomShapeSegmentCommand::CURVETO;
- rSegInfo.Count = nSDat & 0xff;
- if ( !rSegInfo.Count )
- rSegInfo.Count = 1;
- }
- break;
- case 0x40 :
- {
- rSegInfo.Command = EnhancedCustomShapeSegmentCommand::MOVETO;
- rSegInfo.Count = nSDat & 0xff;
- if ( !rSegInfo.Count )
- rSegInfo.Count = 1;
- }
- break;
- case 0x60 :
- {
- rSegInfo.Command = EnhancedCustomShapeSegmentCommand::CLOSESUBPATH;
- rSegInfo.Count = 0;
- }
- break;
- case 0x80 :
- {
- rSegInfo.Command = EnhancedCustomShapeSegmentCommand::ENDSUBPATH;
- rSegInfo.Count = 0;
- }
- break;
- case 0xa1 :
- {
- rSegInfo.Command = EnhancedCustomShapeSegmentCommand::ANGLEELLIPSETO;
- rSegInfo.Count = ( nSDat & 0xff ) / 3;
- }
- break;
- case 0xa2 :
- {
- rSegInfo.Command = EnhancedCustomShapeSegmentCommand::ANGLEELLIPSE;
- rSegInfo.Count = ( nSDat & 0xff ) / 3;
- }
- break;
- case 0xa3 :
- {
- rSegInfo.Command = EnhancedCustomShapeSegmentCommand::ARCTO;
- rSegInfo.Count = ( nSDat & 0xff ) >> 2;
- }
- break;
- case 0xa4 :
- {
- rSegInfo.Command = EnhancedCustomShapeSegmentCommand::ARC;
- rSegInfo.Count = ( nSDat & 0xff ) >> 2;
- }
- break;
- case 0xa5 :
- {
- rSegInfo.Command = EnhancedCustomShapeSegmentCommand::CLOCKWISEARCTO;
- rSegInfo.Count = ( nSDat & 0xff ) >> 2;
- }
- break;
- case 0xa6 :
- {
- rSegInfo.Command = EnhancedCustomShapeSegmentCommand::CLOCKWISEARC;
- rSegInfo.Count = ( nSDat & 0xff ) >> 2;
- }
- break;
- case 0xa7 :
- {
- rSegInfo.Command = EnhancedCustomShapeSegmentCommand::ELLIPTICALQUADRANTX;
- rSegInfo.Count = nSDat & 0xff;
- }
- break;
- case 0xa8 :
- {
- rSegInfo.Command = EnhancedCustomShapeSegmentCommand::ELLIPTICALQUADRANTY;
- rSegInfo.Count = nSDat & 0xff;
- }
- break;
- case 0xaa :
- {
- rSegInfo.Command = EnhancedCustomShapeSegmentCommand::NOFILL;
- rSegInfo.Count = 0;
- }
- break;
- case 0xab :
- {
- rSegInfo.Command = EnhancedCustomShapeSegmentCommand::NOSTROKE;
- rSegInfo.Count = 0;
- }
- break;
- default:
- case 0xf8 :
- {
- rSegInfo.Command = EnhancedCustomShapeSegmentCommand::UNKNOWN;
- rSegInfo.Count = nSDat;
- }
- break;
- }
+ rSegInfo_nSDat_method (rSegInfo, nSDat);
}
aPropVal.Name = sSegments;
aPropVal.Value <<= seqSegments;
@@ -983,147 +1123,16 @@ void SdrObjCustomShape::MergeDefaultAttributes( const rtl::OUString* pType )
{
com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValues > seqHandles;
- sal_Int32 i, n, nCount = pDefCustomShape->nHandles;
+ sal_Int32 i, nCount = pDefCustomShape->nHandles;
const SvxMSDffHandle* pData = pDefCustomShape->pHandles;
seqHandles.realloc( nCount );
for ( i = 0; i < nCount; i++, pData++ )
{
- sal_Int32 nPropertiesNeeded = 1; // position is always needed
- sal_Int32 nFlags = pData->nFlags;
- if ( nFlags & MSDFF_HANDLE_FLAGS_MIRRORED_X )
- nPropertiesNeeded++;
- if ( nFlags & MSDFF_HANDLE_FLAGS_MIRRORED_Y )
- nPropertiesNeeded++;
- if ( nFlags & MSDFF_HANDLE_FLAGS_SWITCHED )
- nPropertiesNeeded++;
- if ( nFlags & MSDFF_HANDLE_FLAGS_POLAR )
- {
- nPropertiesNeeded++;
- if ( nFlags & MSDFF_HANDLE_FLAGS_RADIUS_RANGE )
- {
- if ( pData->nRangeXMin != DEFAULT_MINIMUM_SIGNED_COMPARE )
- nPropertiesNeeded++;
- if ( pData->nRangeXMax != DEFAULT_MAXIMUM_SIGNED_COMPARE )
- nPropertiesNeeded++;
- }
- }
- else if ( nFlags & MSDFF_HANDLE_FLAGS_RANGE )
- {
- if ( pData->nRangeXMin != DEFAULT_MINIMUM_SIGNED_COMPARE )
- nPropertiesNeeded++;
- if ( pData->nRangeXMax != DEFAULT_MAXIMUM_SIGNED_COMPARE )
- nPropertiesNeeded++;
- if ( pData->nRangeYMin != DEFAULT_MINIMUM_SIGNED_COMPARE )
- nPropertiesNeeded++;
- if ( pData->nRangeYMax != DEFAULT_MAXIMUM_SIGNED_COMPARE )
- nPropertiesNeeded++;
- }
-
- n = 0;
+ sal_Int32 nPropertiesNeeded;
com::sun::star::beans::PropertyValues& rPropValues = seqHandles[ i ];
+ nPropertiesNeeded = GetNumberOfProperties ( pData );
rPropValues.realloc( nPropertiesNeeded );
-
- // POSITION
- {
- const rtl::OUString sPosition( RTL_CONSTASCII_USTRINGPARAM ( "Position" ) );
- ::com::sun::star::drawing::EnhancedCustomShapeParameterPair aPosition;
- EnhancedCustomShape2d::SetEnhancedCustomShapeHandleParameter( aPosition.First, pData->nPositionX, sal_True, sal_True );
- EnhancedCustomShape2d::SetEnhancedCustomShapeHandleParameter( aPosition.Second, pData->nPositionY, sal_True, sal_False );
- rPropValues[ n ].Name = sPosition;
- rPropValues[ n++ ].Value <<= aPosition;
- }
- if ( nFlags & MSDFF_HANDLE_FLAGS_MIRRORED_X )
- {
- const rtl::OUString sMirroredX( RTL_CONSTASCII_USTRINGPARAM ( "MirroredX" ) );
- sal_Bool bMirroredX = sal_True;
- rPropValues[ n ].Name = sMirroredX;
- rPropValues[ n++ ].Value <<= bMirroredX;
- }
- if ( nFlags & MSDFF_HANDLE_FLAGS_MIRRORED_Y )
- {
- const rtl::OUString sMirroredY( RTL_CONSTASCII_USTRINGPARAM ( "MirroredY" ) );
- sal_Bool bMirroredY = sal_True;
- rPropValues[ n ].Name = sMirroredY;
- rPropValues[ n++ ].Value <<= bMirroredY;
- }
- if ( nFlags & MSDFF_HANDLE_FLAGS_SWITCHED )
- {
- const rtl::OUString sSwitched( RTL_CONSTASCII_USTRINGPARAM ( "Switched" ) );
- sal_Bool bSwitched = sal_True;
- rPropValues[ n ].Name = sSwitched;
- rPropValues[ n++ ].Value <<= bSwitched;
- }
- if ( nFlags & MSDFF_HANDLE_FLAGS_POLAR )
- {
- const rtl::OUString sPolar( RTL_CONSTASCII_USTRINGPARAM ( "Polar" ) );
- ::com::sun::star::drawing::EnhancedCustomShapeParameterPair aCenter;
- EnhancedCustomShape2d::SetEnhancedCustomShapeHandleParameter( aCenter.First, pData->nCenterX,
- ( nFlags & MSDFF_HANDLE_FLAGS_CENTER_X_IS_SPECIAL ) != 0, sal_True );
- EnhancedCustomShape2d::SetEnhancedCustomShapeHandleParameter( aCenter.Second, pData->nCenterY,
- ( nFlags & MSDFF_HANDLE_FLAGS_CENTER_Y_IS_SPECIAL ) != 0, sal_False );
- rPropValues[ n ].Name = sPolar;
- rPropValues[ n++ ].Value <<= aCenter;
- if ( nFlags & MSDFF_HANDLE_FLAGS_RADIUS_RANGE )
- {
- if ( pData->nRangeXMin != DEFAULT_MINIMUM_SIGNED_COMPARE )
- {
- const rtl::OUString sRadiusRangeMinimum( RTL_CONSTASCII_USTRINGPARAM ( "RadiusRangeMinimum" ) );
- ::com::sun::star::drawing::EnhancedCustomShapeParameter aRadiusRangeMinimum;
- EnhancedCustomShape2d::SetEnhancedCustomShapeHandleParameter( aRadiusRangeMinimum, pData->nRangeXMin,
- ( nFlags & MSDFF_HANDLE_FLAGS_RANGE_X_MIN_IS_SPECIAL ) != 0, sal_True );
- rPropValues[ n ].Name = sRadiusRangeMinimum;
- rPropValues[ n++ ].Value <<= aRadiusRangeMinimum;
- }
- if ( pData->nRangeXMax != DEFAULT_MAXIMUM_SIGNED_COMPARE )
- {
- const rtl::OUString sRadiusRangeMaximum( RTL_CONSTASCII_USTRINGPARAM ( "RadiusRangeMaximum" ) );
- ::com::sun::star::drawing::EnhancedCustomShapeParameter aRadiusRangeMaximum;
- EnhancedCustomShape2d::SetEnhancedCustomShapeHandleParameter( aRadiusRangeMaximum, pData->nRangeXMax,
- ( nFlags & MSDFF_HANDLE_FLAGS_RANGE_X_MAX_IS_SPECIAL ) != 0, sal_False );
- rPropValues[ n ].Name = sRadiusRangeMaximum;
- rPropValues[ n++ ].Value <<= aRadiusRangeMaximum;
- }
- }
- }
- else if ( nFlags & MSDFF_HANDLE_FLAGS_RANGE )
- {
- if ( pData->nRangeXMin != DEFAULT_MINIMUM_SIGNED_COMPARE )
- {
- const rtl::OUString sRangeXMinimum( RTL_CONSTASCII_USTRINGPARAM ( "RangeXMinimum" ) );
- ::com::sun::star::drawing::EnhancedCustomShapeParameter aRangeXMinimum;
- EnhancedCustomShape2d::SetEnhancedCustomShapeHandleParameter( aRangeXMinimum, pData->nRangeXMin,
- ( nFlags & MSDFF_HANDLE_FLAGS_RANGE_X_MIN_IS_SPECIAL ) != 0, sal_True );
- rPropValues[ n ].Name = sRangeXMinimum;
- rPropValues[ n++ ].Value <<= aRangeXMinimum;
- }
- if ( pData->nRangeXMax != DEFAULT_MAXIMUM_SIGNED_COMPARE )
- {
- const rtl::OUString sRangeXMaximum( RTL_CONSTASCII_USTRINGPARAM ( "RangeXMaximum" ) );
- ::com::sun::star::drawing::EnhancedCustomShapeParameter aRangeXMaximum;
- EnhancedCustomShape2d::SetEnhancedCustomShapeHandleParameter( aRangeXMaximum, pData->nRangeXMax,
- ( nFlags & MSDFF_HANDLE_FLAGS_RANGE_X_MAX_IS_SPECIAL ) != 0, sal_False );
- rPropValues[ n ].Name = sRangeXMaximum;
- rPropValues[ n++ ].Value <<= aRangeXMaximum;
- }
- if ( pData->nRangeYMin != DEFAULT_MINIMUM_SIGNED_COMPARE )
- {
- const rtl::OUString sRangeYMinimum( RTL_CONSTASCII_USTRINGPARAM ( "RangeYMinimum" ) );
- ::com::sun::star::drawing::EnhancedCustomShapeParameter aRangeYMinimum;
- EnhancedCustomShape2d::SetEnhancedCustomShapeHandleParameter( aRangeYMinimum, pData->nRangeYMin,
- ( nFlags & MSDFF_HANDLE_FLAGS_RANGE_Y_MIN_IS_SPECIAL ) != 0, sal_True );
- rPropValues[ n ].Name = sRangeYMinimum;
- rPropValues[ n++ ].Value <<= aRangeYMinimum;
- }
- if ( pData->nRangeYMax != DEFAULT_MAXIMUM_SIGNED_COMPARE )
- {
- const rtl::OUString sRangeYMaximum( RTL_CONSTASCII_USTRINGPARAM ( "RangeYMaximum" ) );
- ::com::sun::star::drawing::EnhancedCustomShapeParameter aRangeYMaximum;
- EnhancedCustomShape2d::SetEnhancedCustomShapeHandleParameter( aRangeYMaximum, pData->nRangeYMax,
- ( nFlags & MSDFF_HANDLE_FLAGS_RANGE_Y_MAX_IS_SPECIAL ) != 0, sal_False );
- rPropValues[ n ].Name = sRangeYMaximum;
- rPropValues[ n++ ].Value <<= aRangeYMaximum;
- }
- }
+ SetProperties ( pData, rPropValues );
}
aPropVal.Name = sHandles;
aPropVal.Value <<= seqHandles;
@@ -1237,112 +1246,7 @@ sal_Bool SdrObjCustomShape::IsDefaultGeometry( const DefaultType eDefaultType )
{
EnhancedCustomShapeSegment& rSegInfo = seqSegments2[ i ];
sal_uInt16 nSDat = pDefCustomShape->pElements[ i ];
- switch( nSDat >> 8 )
- {
- case 0x00 :
- {
- rSegInfo.Command = EnhancedCustomShapeSegmentCommand::LINETO;
- rSegInfo.Count = nSDat & 0xff;
- if ( !rSegInfo.Count )
- rSegInfo.Count = 1;
- }
- break;
- case 0x20 :
- {
- rSegInfo.Command = EnhancedCustomShapeSegmentCommand::CURVETO;
- rSegInfo.Count = nSDat & 0xff;
- if ( !rSegInfo.Count )
- rSegInfo.Count = 1;
- }
- break;
- case 0x40 :
- {
- rSegInfo.Command = EnhancedCustomShapeSegmentCommand::MOVETO;
- rSegInfo.Count = nSDat & 0xff;
- if ( !rSegInfo.Count )
- rSegInfo.Count = 1;
- }
- break;
- case 0x60 :
- {
- rSegInfo.Command = EnhancedCustomShapeSegmentCommand::CLOSESUBPATH;
- rSegInfo.Count = 0;
- }
- break;
- case 0x80 :
- {
- rSegInfo.Command = EnhancedCustomShapeSegmentCommand::ENDSUBPATH;
- rSegInfo.Count = 0;
- }
- break;
- case 0xa1 :
- {
- rSegInfo.Command = EnhancedCustomShapeSegmentCommand::ANGLEELLIPSETO;
- rSegInfo.Count = ( nSDat & 0xff ) / 3;
- }
- break;
- case 0xa2 :
- {
- rSegInfo.Command = EnhancedCustomShapeSegmentCommand::ANGLEELLIPSE;
- rSegInfo.Count = ( nSDat & 0xff ) / 3;
- }
- break;
- case 0xa3 :
- {
- rSegInfo.Command = EnhancedCustomShapeSegmentCommand::ARCTO;
- rSegInfo.Count = ( nSDat & 0xff ) >> 2;
- }
- break;
- case 0xa4 :
- {
- rSegInfo.Command = EnhancedCustomShapeSegmentCommand::ARC;
- rSegInfo.Count = ( nSDat & 0xff ) >> 2;
- }
- break;
- case 0xa5 :
- {
- rSegInfo.Command = EnhancedCustomShapeSegmentCommand::CLOCKWISEARCTO;
- rSegInfo.Count = ( nSDat & 0xff ) >> 2;
- }
- break;
- case 0xa6 :
- {
- rSegInfo.Command = EnhancedCustomShapeSegmentCommand::CLOCKWISEARC;
- rSegInfo.Count = ( nSDat & 0xff ) >> 2;
- }
- break;
- case 0xa7 :
- {
- rSegInfo.Command = EnhancedCustomShapeSegmentCommand::ELLIPTICALQUADRANTX;
- rSegInfo.Count = nSDat & 0xff;
- }
- break;
- case 0xa8 :
- {
- rSegInfo.Command = EnhancedCustomShapeSegmentCommand::ELLIPTICALQUADRANTY;
- rSegInfo.Count = nSDat & 0xff;
- }
- break;
- case 0xaa :
- {
- rSegInfo.Command = EnhancedCustomShapeSegmentCommand::NOFILL;
- rSegInfo.Count = 0;
- }
- break;
- case 0xab :
- {
- rSegInfo.Command = EnhancedCustomShapeSegmentCommand::NOSTROKE;
- rSegInfo.Count = 0;
- }
- break;
- default:
- case 0xf8 :
- {
- rSegInfo.Command = EnhancedCustomShapeSegmentCommand::UNKNOWN;
- rSegInfo.Count = nSDat;
- }
- break;
- }
+ rSegInfo_nSDat_method ( rSegInfo, nSDat );
}
if ( seqSegments1 == seqSegments2 )
bIsDefaultGeometry = sal_True;
@@ -1465,147 +1369,16 @@ sal_Bool SdrObjCustomShape::IsDefaultGeometry( const DefaultType eDefaultType )
com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValues > seqHandles1, seqHandles2;
if ( *pAny >>= seqHandles1 )
{
- sal_Int32 i, n, nCount = pDefCustomShape->nHandles;
+ sal_Int32 i, nCount = pDefCustomShape->nHandles;
const SvxMSDffHandle* pData = pDefCustomShape->pHandles;
seqHandles2.realloc( nCount );
for ( i = 0; i < nCount; i++, pData++ )
{
- sal_Int32 nPropertiesNeeded = 1; // position is always needed
- sal_Int32 nFlags = pData->nFlags;
- if ( nFlags & MSDFF_HANDLE_FLAGS_MIRRORED_X )
- nPropertiesNeeded++;
- if ( nFlags & MSDFF_HANDLE_FLAGS_MIRRORED_Y )
- nPropertiesNeeded++;
- if ( nFlags & MSDFF_HANDLE_FLAGS_SWITCHED )
- nPropertiesNeeded++;
- if ( nFlags & MSDFF_HANDLE_FLAGS_POLAR )
- {
- nPropertiesNeeded++;
- if ( nFlags & MSDFF_HANDLE_FLAGS_RADIUS_RANGE )
- {
- if ( pData->nRangeXMin != DEFAULT_MINIMUM_SIGNED_COMPARE )
- nPropertiesNeeded++;
- if ( pData->nRangeXMax != DEFAULT_MAXIMUM_SIGNED_COMPARE )
- nPropertiesNeeded++;
- }
- }
- else if ( nFlags & MSDFF_HANDLE_FLAGS_RANGE )
- {
- if ( pData->nRangeXMin != DEFAULT_MINIMUM_SIGNED_COMPARE )
- nPropertiesNeeded++;
- if ( pData->nRangeXMax != DEFAULT_MAXIMUM_SIGNED_COMPARE )
- nPropertiesNeeded++;
- if ( pData->nRangeYMin != DEFAULT_MINIMUM_SIGNED_COMPARE )
- nPropertiesNeeded++;
- if ( pData->nRangeYMax != DEFAULT_MAXIMUM_SIGNED_COMPARE )
- nPropertiesNeeded++;
- }
-
- n = 0;
+ sal_Int32 nPropertiesNeeded;
com::sun::star::beans::PropertyValues& rPropValues = seqHandles2[ i ];
+ nPropertiesNeeded = GetNumberOfProperties ( pData );
rPropValues.realloc( nPropertiesNeeded );
-
- // POSITION
- {
- const rtl::OUString sPosition( RTL_CONSTASCII_USTRINGPARAM ( "Position" ) );
- ::com::sun::star::drawing::EnhancedCustomShapeParameterPair aPosition;
- EnhancedCustomShape2d::SetEnhancedCustomShapeHandleParameter( aPosition.First, pData->nPositionX, sal_True, sal_True );
- EnhancedCustomShape2d::SetEnhancedCustomShapeHandleParameter( aPosition.Second, pData->nPositionY, sal_True, sal_False );
- rPropValues[ n ].Name = sPosition;
- rPropValues[ n++ ].Value <<= aPosition;
- }
- if ( nFlags & MSDFF_HANDLE_FLAGS_MIRRORED_X )
- {
- const rtl::OUString sMirroredX( RTL_CONSTASCII_USTRINGPARAM ( "MirroredX" ) );
- sal_Bool bMirroredX = sal_True;
- rPropValues[ n ].Name = sMirroredX;
- rPropValues[ n++ ].Value <<= bMirroredX;
- }
- if ( nFlags & MSDFF_HANDLE_FLAGS_MIRRORED_Y )
- {
- const rtl::OUString sMirroredY( RTL_CONSTASCII_USTRINGPARAM ( "MirroredY" ) );
- sal_Bool bMirroredY = sal_True;
- rPropValues[ n ].Name = sMirroredY;
- rPropValues[ n++ ].Value <<= bMirroredY;
- }
- if ( nFlags & MSDFF_HANDLE_FLAGS_SWITCHED )
- {
- const rtl::OUString sSwitched( RTL_CONSTASCII_USTRINGPARAM ( "Switched" ) );
- sal_Bool bSwitched = sal_True;
- rPropValues[ n ].Name = sSwitched;
- rPropValues[ n++ ].Value <<= bSwitched;
- }
- if ( nFlags & MSDFF_HANDLE_FLAGS_POLAR )
- {
- const rtl::OUString sPolar( RTL_CONSTASCII_USTRINGPARAM ( "Polar" ) );
- ::com::sun::star::drawing::EnhancedCustomShapeParameterPair aCenter;
- EnhancedCustomShape2d::SetEnhancedCustomShapeHandleParameter( aCenter.First, pData->nCenterX,
- ( nFlags & MSDFF_HANDLE_FLAGS_CENTER_X_IS_SPECIAL ) != 0, sal_True );
- EnhancedCustomShape2d::SetEnhancedCustomShapeHandleParameter( aCenter.Second, pData->nCenterY,
- ( nFlags & MSDFF_HANDLE_FLAGS_CENTER_Y_IS_SPECIAL ) != 0, sal_False );
- rPropValues[ n ].Name = sPolar;
- rPropValues[ n++ ].Value <<= aCenter;
- if ( nFlags & MSDFF_HANDLE_FLAGS_RADIUS_RANGE )
- {
- if ( pData->nRangeXMin != DEFAULT_MINIMUM_SIGNED_COMPARE )
- {
- const rtl::OUString sRadiusRangeMinimum( RTL_CONSTASCII_USTRINGPARAM ( "RadiusRangeMinimum" ) );
- ::com::sun::star::drawing::EnhancedCustomShapeParameter aRadiusRangeMinimum;
- EnhancedCustomShape2d::SetEnhancedCustomShapeHandleParameter( aRadiusRangeMinimum, pData->nRangeXMin,
- ( nFlags & MSDFF_HANDLE_FLAGS_RANGE_X_MIN_IS_SPECIAL ) != 0, sal_True );
- rPropValues[ n ].Name = sRadiusRangeMinimum;
- rPropValues[ n++ ].Value <<= aRadiusRangeMinimum;
- }
- if ( pData->nRangeXMax != DEFAULT_MAXIMUM_SIGNED_COMPARE )
- {
- const rtl::OUString sRadiusRangeMaximum( RTL_CONSTASCII_USTRINGPARAM ( "RadiusRangeMaximum" ) );
- ::com::sun::star::drawing::EnhancedCustomShapeParameter aRadiusRangeMaximum;
- EnhancedCustomShape2d::SetEnhancedCustomShapeHandleParameter( aRadiusRangeMaximum, pData->nRangeXMax,
- ( nFlags & MSDFF_HANDLE_FLAGS_RANGE_X_MAX_IS_SPECIAL ) != 0, sal_False );
- rPropValues[ n ].Name = sRadiusRangeMaximum;
- rPropValues[ n++ ].Value <<= aRadiusRangeMaximum;
- }
- }
- }
- else if ( nFlags & MSDFF_HANDLE_FLAGS_RANGE )
- {
- if ( pData->nRangeXMin != DEFAULT_MINIMUM_SIGNED_COMPARE )
- {
- const rtl::OUString sRangeXMinimum( RTL_CONSTASCII_USTRINGPARAM ( "RangeXMinimum" ) );
- ::com::sun::star::drawing::EnhancedCustomShapeParameter aRangeXMinimum;
- EnhancedCustomShape2d::SetEnhancedCustomShapeHandleParameter( aRangeXMinimum, pData->nRangeXMin,
- ( nFlags & MSDFF_HANDLE_FLAGS_RANGE_X_MIN_IS_SPECIAL ) != 0, sal_True );
- rPropValues[ n ].Name = sRangeXMinimum;
- rPropValues[ n++ ].Value <<= aRangeXMinimum;
- }
- if ( pData->nRangeXMax != DEFAULT_MAXIMUM_SIGNED_COMPARE )
- {
- const rtl::OUString sRangeXMaximum( RTL_CONSTASCII_USTRINGPARAM ( "RangeXMaximum" ) );
- ::com::sun::star::drawing::EnhancedCustomShapeParameter aRangeXMaximum;
- EnhancedCustomShape2d::SetEnhancedCustomShapeHandleParameter( aRangeXMaximum, pData->nRangeXMax,
- ( nFlags & MSDFF_HANDLE_FLAGS_RANGE_X_MAX_IS_SPECIAL ) != 0, sal_False );
- rPropValues[ n ].Name = sRangeXMaximum;
- rPropValues[ n++ ].Value <<= aRangeXMaximum;
- }
- if ( pData->nRangeYMin != DEFAULT_MINIMUM_SIGNED_COMPARE )
- {
- const rtl::OUString sRangeYMinimum( RTL_CONSTASCII_USTRINGPARAM ( "RangeYMinimum" ) );
- ::com::sun::star::drawing::EnhancedCustomShapeParameter aRangeYMinimum;
- EnhancedCustomShape2d::SetEnhancedCustomShapeHandleParameter( aRangeYMinimum, pData->nRangeYMin,
- ( nFlags & MSDFF_HANDLE_FLAGS_RANGE_Y_MIN_IS_SPECIAL ) != 0, sal_True );
- rPropValues[ n ].Name = sRangeYMinimum;
- rPropValues[ n++ ].Value <<= aRangeYMinimum;
- }
- if ( pData->nRangeYMax != DEFAULT_MAXIMUM_SIGNED_COMPARE )
- {
- const rtl::OUString sRangeYMaximum( RTL_CONSTASCII_USTRINGPARAM ( "RangeYMaximum" ) );
- ::com::sun::star::drawing::EnhancedCustomShapeParameter aRangeYMaximum;
- EnhancedCustomShape2d::SetEnhancedCustomShapeHandleParameter( aRangeYMaximum, pData->nRangeYMax,
- ( nFlags & MSDFF_HANDLE_FLAGS_RANGE_Y_MAX_IS_SPECIAL ) != 0, sal_False );
- rPropValues[ n ].Name = sRangeYMaximum;
- rPropValues[ n++ ].Value <<= aRangeYMaximum;
- }
- }
+ SetProperties ( pData, rPropValues );
}
if ( seqHandles1 == seqHandles2 )
bIsDefaultGeometry = sal_True;
--
1.7.0.4
--------------070802070603090409000409--
More information about the LibreOffice
mailing list