You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openoffice.apache.org by al...@apache.org on 2012/11/21 16:42:29 UTC

svn commit: r1412154 [3/3] - in /incubator/ooo/branches/alg/aw080/main: filter/inc/filter/msfilter/ filter/source/msfilter/ offapi/com/sun/star/drawing/ oox/inc/oox/drawingml/ oox/source/drawingml/ oox/source/export/ oox/source/token/ sd/source/filter/...

Modified: incubator/ooo/branches/alg/aw080/main/svx/inc/svx/unoshape.hxx
URL: http://svn.apache.org/viewvc/incubator/ooo/branches/alg/aw080/main/svx/inc/svx/unoshape.hxx?rev=1412154&r1=1412153&r2=1412154&view=diff
==============================================================================
--- incubator/ooo/branches/alg/aw080/main/svx/inc/svx/unoshape.hxx (original)
+++ incubator/ooo/branches/alg/aw080/main/svx/inc/svx/unoshape.hxx Wed Nov 21 15:42:23 2012
@@ -834,7 +834,9 @@ public:
 	SvxCustomShape( SdrObject* pObj ) throw ();
 	// overide these for special property handling in subcasses. Return true if property is handled
     //virtual bool setPropertyValueImpl( const ::rtl::OUString& rName, const SfxItemPropertyMapEntry* pProperty, const ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
-    virtual bool getPropertyValueImpl( const ::rtl::OUString& rName, const SfxItemPropertySimpleEntry* pProperty, ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
+
+    // TTTT: Should be obsolete, was only used for rotation angle
+    // virtual bool getPropertyValueImpl( const ::rtl::OUString& rName, const SfxItemPropertySimpleEntry* pProperty, ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
 
 
 	virtual ~SvxCustomShape() throw ();

Modified: incubator/ooo/branches/alg/aw080/main/svx/source/customshapes/EnhancedCustomShape2d.cxx
URL: http://svn.apache.org/viewvc/incubator/ooo/branches/alg/aw080/main/svx/source/customshapes/EnhancedCustomShape2d.cxx?rev=1412154&r1=1412153&r2=1412154&view=diff
==============================================================================
--- incubator/ooo/branches/alg/aw080/main/svx/source/customshapes/EnhancedCustomShape2d.cxx (original)
+++ incubator/ooo/branches/alg/aw080/main/svx/source/customshapes/EnhancedCustomShape2d.cxx Wed Nov 21 15:42:23 2012
@@ -473,8 +473,8 @@ sal_Bool EnhancedCustomShape2d::ConvertS
 			const com::sun::star::beans::PropertyValue& rPropVal = rHandleProperties[ i ];
 
 			const rtl::OUString	sPosition			( RTL_CONSTASCII_USTRINGPARAM( "Position" ) );
-//			const rtl::OUString	sMirroredX			( RTL_CONSTASCII_USTRINGPARAM( "MirroredX" ) );
-//			const rtl::OUString	sMirroredY			( RTL_CONSTASCII_USTRINGPARAM( "MirroredY" ) );
+			const rtl::OUString	sMirroredX			( RTL_CONSTASCII_USTRINGPARAM( "MirroredX" ) );
+			const rtl::OUString	sMirroredY			( RTL_CONSTASCII_USTRINGPARAM( "MirroredY" ) );
 			const rtl::OUString	sSwitched			( RTL_CONSTASCII_USTRINGPARAM( "Switched" ) );
 			const rtl::OUString	sPolar				( RTL_CONSTASCII_USTRINGPARAM( "Polar" ) );
 //			const rtl::OUString	sMap				( RTL_CONSTASCII_USTRINGPARAM( "Map" ) );
@@ -494,24 +494,24 @@ sal_Bool EnhancedCustomShape2d::ConvertS
 				if ( rPropVal.Value >>= rDestinationHandle.aPosition )
 					bRetValue = sal_True;
 			}
-//			else if ( rPropVal.Name.equals( sMirroredX ) )
-//			{
-//				sal_Bool bMirroredX = sal_Bool();
-//				if ( rPropVal.Value >>= bMirroredX )
-//				{
-//					if ( bMirroredX )
-//						rDestinationHandle.nFlags |= HANDLE_FLAGS_MIRRORED_X;
-//				}
-//			}
-//			else if ( rPropVal.Name.equals( sMirroredY ) )
-//			{
-//				sal_Bool bMirroredY = sal_Bool();
-//				if ( rPropVal.Value >>= bMirroredY )
-//				{
-//					if ( bMirroredY )
-//						rDestinationHandle.nFlags |= HANDLE_FLAGS_MIRRORED_Y;
-//				}
-//			}
+			else if ( rPropVal.Name.equals( sMirroredX ) )
+			{
+				sal_Bool bMirroredX = sal_Bool();
+				if ( rPropVal.Value >>= bMirroredX )
+				{
+					if ( bMirroredX )
+						rDestinationHandle.nFlags |= HANDLE_FLAGS_MIRRORED_X;
+				}
+			}
+			else if ( rPropVal.Name.equals( sMirroredY ) )
+			{
+				sal_Bool bMirroredY = sal_Bool();
+				if ( rPropVal.Value >>= bMirroredY )
+				{
+					if ( bMirroredY )
+						rDestinationHandle.nFlags |= HANDLE_FLAGS_MIRRORED_Y;
+				}
+			}
 			else if ( rPropVal.Name.equals( sSwitched ) )
 			{
 				sal_Bool bSwitched = sal_Bool();
@@ -743,6 +743,7 @@ EnhancedCustomShape2d::EnhancedCustomSha
 	maLogicScale = basegfx::absolute(pCustomShapeObj->getSdrObjectScale());
 
 	const rtl::OUString	sType( RTL_CONSTASCII_USTRINGPARAM ( "Type" ) );
+    // TTTT: MirroredX/Y removed
 //	const rtl::OUString sMirroredX( RTL_CONSTASCII_USTRINGPARAM ( "MirroredX" ) );
 //	const rtl::OUString sMirroredY( RTL_CONSTASCII_USTRINGPARAM ( "MirroredY" ) );
 
@@ -753,6 +754,7 @@ EnhancedCustomShape2d::EnhancedCustomSha
 		*pAny >>= sShapeType;
 	meSpType = EnhancedCustomShapeTypeNames::Get( sShapeType );
 
+// TTTT:
 //	pAny = rGeometryItem.GetPropertyValueByName( sMirroredX );
 //	if ( pAny )
 //		*pAny >>= bFlipH;

Modified: incubator/ooo/branches/alg/aw080/main/svx/source/customshapes/EnhancedCustomShape3d.cxx
URL: http://svn.apache.org/viewvc/incubator/ooo/branches/alg/aw080/main/svx/source/customshapes/EnhancedCustomShape3d.cxx?rev=1412154&r1=1412153&r2=1412154&view=diff
==============================================================================
--- incubator/ooo/branches/alg/aw080/main/svx/source/customshapes/EnhancedCustomShape3d.cxx (original)
+++ incubator/ooo/branches/alg/aw080/main/svx/source/customshapes/EnhancedCustomShape3d.cxx Wed Nov 21 15:42:23 2012
@@ -309,8 +309,8 @@ SdrObject* EnhancedCustomShape3d::Create
 
     if(GetBool(rGeometryItem, sExtrusion, false))
 	{
-		const bool bIsMirroredX(rCustomShape.IsMirroredX());
-		const bool bIsMirroredY(rCustomShape.IsMirroredY());
+		const bool bIsMirroredX(rShape2d.isMirroredX()); // TTTT: rCustomShape.IsMirroredX()); Check if rShape2d is correct here
+		const bool bIsMirroredY(rShape2d.isMirroredY()); // TTTT: rCustomShape.IsMirroredY()); And if needed at all...
         basegfx::B2DRange aSnapRange(basegfx::B2DRange::getUnitB2DRange());
 		SfxItemSet aSet(rCustomShape.GetMergedItemSet());
         std::vector< E3dCompoundObject* > aPlaceholderObjectList;
@@ -671,7 +671,8 @@ SdrObject* EnhancedCustomShape3d::Create
 
             GetRotateAngle(rGeometryItem, fXRotate, fYRotate);
 			
-            const double fZRotate(rCustomShape.GetObjectRotation() * F_PI180);
+            // TTTT: const double fZRotate(rCustomShape.GetObjectRotation() * F_PI180);
+            const double fZRotate(rCustomShape.getSdrObjectRotate());
 
             if(0.0 != fZRotate)
             {
@@ -881,7 +882,8 @@ basegfx::B2DRange EnhancedCustomShape3d:
 	
     GetRotateAngle(rGeometryItem, fXRotate, fYRotate);
 
-    double fZRotate(-rCustomShape.GetObjectRotation() * F_PI180);
+    // TTTT: double fZRotate(-rCustomShape.GetObjectRotation() * F_PI180);
+    double fZRotate(-rCustomShape.getSdrObjectRotate());
 
 	// rotating bound volume
 	basegfx::B3DHomMatrix aMatrix;
@@ -893,12 +895,12 @@ basegfx::B2DRange EnhancedCustomShape3d:
 		aMatrix.rotate(0.0, 0.0, fZRotate);
     }
 
-	if(rCustomShape.IsMirroredX())
+	if(rCustomShape.isMirroredX()) // TTTT: rCustomShape.IsMirroredX()) check if rCustomShape is correct
     {
 		aMatrix.scale(-1.0, 1.0, 1.0);
     }
 
-	if(rCustomShape.IsMirroredY())
+	if(rCustomShape.isMirroredY()) // TTTT: rCustomShape.IsMirroredY()) and if needed at all
     {
 		aMatrix.scale(1.0, -1.0, 1.0);
     }

Modified: incubator/ooo/branches/alg/aw080/main/svx/source/svdraw/svdoashp.cxx
URL: http://svn.apache.org/viewvc/incubator/ooo/branches/alg/aw080/main/svx/source/svdraw/svdoashp.cxx?rev=1412154&r1=1412153&r2=1412154&view=diff
==============================================================================
--- incubator/ooo/branches/alg/aw080/main/svx/source/svdraw/svdoashp.cxx (original)
+++ incubator/ooo/branches/alg/aw080/main/svx/source/svdraw/svdoashp.cxx Wed Nov 21 15:42:23 2012
@@ -442,53 +442,55 @@ bool SdrObjCustomShape::UseNoFillStyle()
 	return bRet;
 }
 
-bool SdrObjCustomShape::IsMirroredX() const
-{
-	bool bMirroredX = false;
-	SdrCustomShapeGeometryItem aGeometryItem( (SdrCustomShapeGeometryItem&)GetMergedItem( SDRATTR_CUSTOMSHAPE_GEOMETRY ) );
-	const rtl::OUString	sMirroredX( RTL_CONSTASCII_USTRINGPARAM ( "MirroredX" ) );
-	com::sun::star::uno::Any* pAny = aGeometryItem.GetPropertyValueByName( sMirroredX );
-	if ( pAny )
-		*pAny >>= bMirroredX;
-	return bMirroredX;
-}
-bool SdrObjCustomShape::IsMirroredY() const
-{
-	bool bMirroredY = false;
-	SdrCustomShapeGeometryItem aGeometryItem( (SdrCustomShapeGeometryItem&)GetMergedItem( SDRATTR_CUSTOMSHAPE_GEOMETRY ) );
-	const rtl::OUString	sMirroredY( RTL_CONSTASCII_USTRINGPARAM ( "MirroredY" ) );
-	com::sun::star::uno::Any* pAny = aGeometryItem.GetPropertyValueByName( sMirroredY );
-	if ( pAny )
-		*pAny >>= bMirroredY;
-	return bMirroredY;
-}
-void SdrObjCustomShape::SetMirroredX( const bool bMirrorX )
-{
-	SdrCustomShapeGeometryItem aGeometryItem( (SdrCustomShapeGeometryItem&)GetMergedItem( SDRATTR_CUSTOMSHAPE_GEOMETRY ) );
-	const rtl::OUString	sMirroredX( RTL_CONSTASCII_USTRINGPARAM ( "MirroredX" ) );
-	//com::sun::star::uno::Any* pAny = aGeometryItem.GetPropertyValueByName( sMirroredX );
-	PropertyValue aPropVal;
-	aPropVal.Name = sMirroredX;
-	aPropVal.Value <<= bMirrorX;
-	aGeometryItem.SetPropertyValue( aPropVal );
-	SetMergedItem( aGeometryItem );
-}
-void SdrObjCustomShape::SetMirroredY( const bool bMirrorY )
-{
-	SdrCustomShapeGeometryItem aGeometryItem( (SdrCustomShapeGeometryItem&)GetMergedItem( SDRATTR_CUSTOMSHAPE_GEOMETRY ) );
-	const rtl::OUString	sMirroredY( RTL_CONSTASCII_USTRINGPARAM ( "MirroredY" ) );
-	//com::sun::star::uno::Any* pAny = aGeometryItem.GetPropertyValueByName( sMirroredY );
-	PropertyValue aPropVal;
-	aPropVal.Name = sMirroredY;
-	aPropVal.Value <<= bMirrorY;
-	aGeometryItem.SetPropertyValue( aPropVal );
-	SetMergedItem( aGeometryItem );
-}
-
-double SdrObjCustomShape::GetObjectRotation() const
-{
-	return fObjectRotation;
-}
+// TTTT: MirroredX/Y removed
+//bool SdrObjCustomShape::IsMirroredX() const
+//{
+//	bool bMirroredX = false;
+//	SdrCustomShapeGeometryItem aGeometryItem( (SdrCustomShapeGeometryItem&)GetMergedItem( SDRATTR_CUSTOMSHAPE_GEOMETRY ) );
+//	const rtl::OUString	sMirroredX( RTL_CONSTASCII_USTRINGPARAM ( "MirroredX" ) );
+//	com::sun::star::uno::Any* pAny = aGeometryItem.GetPropertyValueByName( sMirroredX );
+//	if ( pAny )
+//		*pAny >>= bMirroredX;
+//	return bMirroredX;
+//}
+//bool SdrObjCustomShape::IsMirroredY() const
+//{
+//	bool bMirroredY = false;
+//	SdrCustomShapeGeometryItem aGeometryItem( (SdrCustomShapeGeometryItem&)GetMergedItem( SDRATTR_CUSTOMSHAPE_GEOMETRY ) );
+//	const rtl::OUString	sMirroredY( RTL_CONSTASCII_USTRINGPARAM ( "MirroredY" ) );
+//	com::sun::star::uno::Any* pAny = aGeometryItem.GetPropertyValueByName( sMirroredY );
+//	if ( pAny )
+//		*pAny >>= bMirroredY;
+//	return bMirroredY;
+//}
+//void SdrObjCustomShape::SetMirroredX( const bool bMirrorX )
+//{
+//	SdrCustomShapeGeometryItem aGeometryItem( (SdrCustomShapeGeometryItem&)GetMergedItem( SDRATTR_CUSTOMSHAPE_GEOMETRY ) );
+//	const rtl::OUString	sMirroredX( RTL_CONSTASCII_USTRINGPARAM ( "MirroredX" ) );
+//	//com::sun::star::uno::Any* pAny = aGeometryItem.GetPropertyValueByName( sMirroredX );
+//	PropertyValue aPropVal;
+//	aPropVal.Name = sMirroredX;
+//	aPropVal.Value <<= bMirrorX;
+//	aGeometryItem.SetPropertyValue( aPropVal );
+//	SetMergedItem( aGeometryItem );
+//}
+//void SdrObjCustomShape::SetMirroredY( const bool bMirrorY )
+//{
+//	SdrCustomShapeGeometryItem aGeometryItem( (SdrCustomShapeGeometryItem&)GetMergedItem( SDRATTR_CUSTOMSHAPE_GEOMETRY ) );
+//	const rtl::OUString	sMirroredY( RTL_CONSTASCII_USTRINGPARAM ( "MirroredY" ) );
+//	//com::sun::star::uno::Any* pAny = aGeometryItem.GetPropertyValueByName( sMirroredY );
+//	PropertyValue aPropVal;
+//	aPropVal.Name = sMirroredY;
+//	aPropVal.Value <<= bMirrorY;
+//	aGeometryItem.SetPropertyValue( aPropVal );
+//	SetMergedItem( aGeometryItem );
+//}
+
+// TTTT: Probably obsolete
+//double SdrObjCustomShape::GetObjectRotation() const
+//{
+//	return fObjectRotation;
+//}
 
 double SdrObjCustomShape::GetExtraTextRotation() const
 {
@@ -625,7 +627,7 @@ sdr::properties::BaseProperties* SdrObjC
 
 SdrObjCustomShape::SdrObjCustomShape(SdrModel& rSdrModel) 
 :	SdrTextObj(rSdrModel, basegfx::B2DHomMatrix(), OBJ_TEXT, true),
-	fObjectRotation( 0.0 ),
+	// TTTT: fObjectRotation( 0.0 ),
 	mpLastShadowGeometry(0)
 {
 }
@@ -649,7 +651,7 @@ void SdrObjCustomShape::copyDataFromSdrO
 
 			// copy local data
 			aName = pSource->aName;
-			fObjectRotation = pSource->fObjectRotation;
+			// TTTT: fObjectRotation = pSource->fObjectRotation;
 			InvalidateRenderGeometry();
 		}
 		else
@@ -1650,7 +1652,7 @@ bool SdrObjCustomShape::IsDefaultGeometr
 
 void SdrObjCustomShape::TakeObjInfo(SdrObjTransformInfoRec& rInfo) const
 {
-	rInfo.mbResizeFreeAllowed = 0.0 == fObjectRotation;
+	rInfo.mbResizeFreeAllowed = basegfx::fTools::equalZero(getSdrObjectRotate()); // TTTT: 0.0 == fObjectRotation;
 	rInfo.mbResizePropAllowed = true;
 	rInfo.mbRotateFreeAllowed = true;
 	rInfo.mbRotate90Allowed = true;
@@ -2000,9 +2002,11 @@ void SdrObjCustomShape::DragCreateObject
 	sal_uInt32 nDefaultObjectSizeWidth = 3000;		// default width from SDOptions ?
 	sal_uInt32 nDefaultObjectSizeHeight= 3000;
 
-	if ( ImpVerticalSwitch( *this ) )
+	if ( ImpVerticalSwitch( *this ) ) // TTTT: What is this good for?
 	{
-		SetMirroredX( aRange.getMinX() > aRange.getMaxX() );
+        // TTTT: Not possible, maybe (if needed) need to use rStat.GetNow() - rStat.GetStart()
+        // to detect mirroring
+		// SetMirroredX( aRange.getMinX() > aRange.getMaxX() );
 
 		aRange = basegfx::B2DRange( rStat.GetNow(), basegfx::B2DTuple( nDefaultObjectSizeWidth, nDefaultObjectSizeHeight ) );
 		// subtracting the horizontal difference of the latest handle from shape position
@@ -2722,35 +2726,57 @@ SdrObjGeoData* SdrObjCustomShape::NewGeo
 
 void SdrObjCustomShape::SaveGeoData(SdrObjGeoData& rGeo) const
 {
-	SdrTextObj::SaveGeoData( rGeo );
-	SdrAShapeObjGeoData& rAGeo=(SdrAShapeObjGeoData&)rGeo;
-	rAGeo.fObjectRotation = fObjectRotation;
-	rAGeo.bMirroredX = IsMirroredX();
-	rAGeo.bMirroredY = IsMirroredY();
+    // call parent
+    SdrTextObj::SaveGeoData( rGeo );
 
-	const rtl::OUString	sAdjustmentValues( RTL_CONSTASCII_USTRINGPARAM ( "AdjustmentValues" ) );
-	Any* pAny( ( (SdrCustomShapeGeometryItem&)GetMergedItem( SDRATTR_CUSTOMSHAPE_GEOMETRY ) ).GetPropertyValueByName( sAdjustmentValues ) );
-	if ( pAny )
-		*pAny >>= rAGeo.aAdjustmentSeq;
+    SdrAShapeObjGeoData* pSdrAShapeObjGeoData = dynamic_cast< SdrAShapeObjGeoData* >(&rGeo);
+
+    if(pSdrAShapeObjGeoData)
+    {
+    // TTTT: Should be obsolete
+    //rAGeo.fObjectRotation = fObjectRotation;
+    
+    // TTTT: MirrorX/Y removed
+	//rAGeo.bMirroredX = IsMirroredX();
+	//rAGeo.bMirroredY = IsMirroredY();
+
+        const rtl::OUString	sAdjustmentValues(RTL_CONSTASCII_USTRINGPARAM("AdjustmentValues"));
+        Any* pAny(((SdrCustomShapeGeometryItem&)GetMergedItem(SDRATTR_CUSTOMSHAPE_GEOMETRY)).GetPropertyValueByName(sAdjustmentValues));
+
+        if(pAny)
+        {
+            *pAny >>= pSdrAShapeObjGeoData->aAdjustmentSeq;
+        }
+    }
 }
 
 void SdrObjCustomShape::RestGeoData(const SdrObjGeoData& rGeo)
 {
-	SdrTextObj::RestGeoData( rGeo );
-	SdrAShapeObjGeoData& rAGeo=(SdrAShapeObjGeoData&)rGeo;
-	fObjectRotation = rAGeo.fObjectRotation;
-	SetMirroredX( rAGeo.bMirroredX );
-	SetMirroredY( rAGeo.bMirroredY );
+    // call parent
+    SdrTextObj::RestGeoData( rGeo );
 
-	SdrCustomShapeGeometryItem rGeometryItem = (SdrCustomShapeGeometryItem&)GetMergedItem( SDRATTR_CUSTOMSHAPE_GEOMETRY );
-	const rtl::OUString	sAdjustmentValues( RTL_CONSTASCII_USTRINGPARAM ( "AdjustmentValues" ) );
-	PropertyValue aPropVal;
-	aPropVal.Name = sAdjustmentValues;
-	aPropVal.Value <<= rAGeo.aAdjustmentSeq;
-	rGeometryItem.SetPropertyValue( aPropVal );
-	SetMergedItem( rGeometryItem );
+    const SdrAShapeObjGeoData* pSdrAShapeObjGeoData = dynamic_cast< const SdrAShapeObjGeoData* >(&rGeo);
 
-	InvalidateRenderGeometry();
+    if(pSdrAShapeObjGeoData)
+    {
+    // TTTT: Should be obsolete
+    //fObjectRotation = rAGeo.fObjectRotation;
+    
+    // TTTT: MirrorX/Y removed
+	//SetMirroredX( rAGeo.bMirroredX );
+	//SetMirroredY( rAGeo.bMirroredY );
+
+        SdrCustomShapeGeometryItem rGeometryItem = (SdrCustomShapeGeometryItem&)GetMergedItem(SDRATTR_CUSTOMSHAPE_GEOMETRY);
+        const rtl::OUString	sAdjustmentValues(RTL_CONSTASCII_USTRINGPARAM("AdjustmentValues"));
+        PropertyValue aPropVal;
+    
+        aPropVal.Name = sAdjustmentValues;
+        aPropVal.Value <<= pSdrAShapeObjGeoData->aAdjustmentSeq;
+        rGeometryItem.SetPropertyValue(aPropVal);
+        SetMergedItem(rGeometryItem);
+
+        InvalidateRenderGeometry();
+    }
 }
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////

Modified: incubator/ooo/branches/alg/aw080/main/svx/source/svdraw/svdview.cxx
URL: http://svn.apache.org/viewvc/incubator/ooo/branches/alg/aw080/main/svx/source/svdraw/svdview.cxx?rev=1412154&r1=1412153&r2=1412154&view=diff
==============================================================================
--- incubator/ooo/branches/alg/aw080/main/svx/source/svdraw/svdview.cxx (original)
+++ incubator/ooo/branches/alg/aw080/main/svx/source/svdraw/svdview.cxx Wed Nov 21 15:42:23 2012
@@ -1430,14 +1430,16 @@ Pointer SdrView::GetPreferedPointer(cons
 
 	const bool bMarkHit(SDRHIT_MARKEDOBJECT == eHit);
 	const SdrHdl* pHdl = aVEvt.mpHdl;
+    const bool bHandleFound(0 != pHdl); // remember pointer from handle, handle may be destroyed before used below
 
 	// Nun die Pointer fuer Dragging checken
 	if(pHdl || bMarkHit) 
 	{
-		const SdrHdlKind eHdl(pHdl  ? pHdl->GetKind() : HDL_MOVE);
+		const SdrHdlKind eHdl(pHdl ? pHdl->GetKind() : HDL_MOVE);
 		const bool bCorner(pHdl && pHdl->IsCornerHdl());
 		const bool bVertex(pHdl && pHdl->IsVertexHdl());
 		const bool bMov(HDL_MOVE == eHdl);
+        const Pointer aHdlPointer(pHdl  ? pHdl->GetPointer() : Pointer(POINTER_ARROW));
 		
 		if(bMov && (SDRDRAG_MOVE == GetDragMode() || SDRDRAG_RESIZE == GetDragMode() || IsMarkedHitMovesAlways())) 
 		{
@@ -1624,9 +1626,9 @@ Pointer SdrView::GetPreferedPointer(cons
 			}
 		}
 
-		if(pHdl) 
+		if(bHandleFound) 
 		{
-			return pHdl->GetPointer();
+			return aHdlPointer;
 		}
 
 		if(bMov) 

Modified: incubator/ooo/branches/alg/aw080/main/svx/source/unodraw/unoshap2.cxx
URL: http://svn.apache.org/viewvc/incubator/ooo/branches/alg/aw080/main/svx/source/unodraw/unoshap2.cxx?rev=1412154&r1=1412153&r2=1412154&view=diff
==============================================================================
--- incubator/ooo/branches/alg/aw080/main/svx/source/unodraw/unoshap2.cxx (original)
+++ incubator/ooo/branches/alg/aw080/main/svx/source/unodraw/unoshap2.cxx Wed Nov 21 15:42:23 2012
@@ -1921,158 +1921,170 @@ OUString SAL_CALL SvxCustomShape::getSha
 
 //------------------------------------------------------------------1----
 
-Polygon Rect2Poly(const Rectangle& rRect, long aOldRotation, long aOldShear) // TTTT needed?
-{
-	Polygon aPol(5);
-	aPol[0]=rRect.TopLeft();
-	aPol[1]=rRect.TopRight();
-	aPol[2]=rRect.BottomRight();
-	aPol[3]=rRect.BottomLeft();
-	aPol[4]=rRect.TopLeft();
-	
-    if (aOldShear) 
-        ShearPoly(aPol,rRect.TopLeft(),tan(aOldShear*nPi180));
-	
-    if (aOldRotation) 
-        RotatePoly(aPol,rRect.TopLeft(),sin(aOldRotation*nPi180), cos(aOldRotation*nPi180));
-
-	return aPol;
-}
-
-void Poly2Rect(const Polygon& rPol, Rectangle& rRect, long& rRotation, long& rShear) // TTTT needed?
-{
-	rRotation=GetAngle(rPol[1]-rPol[0]);
-	rShear=NormAngle360(rRotation);
-	// Drehung ist damit im Kasten
-
-	Point aPt1(rPol[1]-rPol[0]);
-	if (rRotation) RotatePoint(aPt1,Point(0,0),-sin(rRotation*nPi180), cos(rRotation*nPi180)); // -Sin fuer Rueckdrehung
-	long nWdt=aPt1.X();
-
-	Point aPt0(rPol[0]);
-	Point aPt3(rPol[3]-rPol[0]);
-	if (rRotation) RotatePoint(aPt3,Point(0,0),-sin(rRotation*nPi180), cos(rRotation*nPi180)); // -Sin fuer Rueckdrehung
-	long nHgt=aPt3.Y();
-
-	if(aPt3.X())
-	{
-		// #i74358# the axes are not orthogonal, so for getting the correct height, 
-		// calculate the length of aPt3
-
-		// #i74358# this change was wrong, in the field of the old geometry stuff
-		// it is not an error. The new height always is the same as before; shear
-		// does not change object height at all. This is different from the interactions,
-		// but obviously wanted in the old versions.
-		//
-		// nHgt = static_cast< long >(sqrt(static_cast< double >(aPt3.X() * aPt3.X() + aPt3.Y() * aPt3.Y())));
-	}
-
-    long nShW=GetAngle(aPt3);
-	nShW-=27000; // ShearWink wird zur Senkrechten gemessen
-	nShW=-nShW;  // Negieren, denn '+' ist Rechtskursivierung
-
-	bool bMirr=aPt3.Y()<0;
-	if (bMirr) { // "Punktetausch" bei Spiegelung
-		nHgt=-nHgt;
-		nShW+=18000;
-		aPt0=rPol[3];
-	}
-	nShW=NormAngle180(nShW);
-	if (nShW<-9000 || nShW>9000) {
-		nShW=NormAngle180(nShW+18000);
-	}
-	const long SDRMAXSHEAR(8900);
-	if (nShW<-SDRMAXSHEAR) nShW=-SDRMAXSHEAR; // ShearWinkel begrenzen auf +/- 89.00 deg
-	if (nShW>SDRMAXSHEAR)  nShW=SDRMAXSHEAR;
-	rShear=nShW;
-	Point aRU(aPt0);
-	aRU.X()+=nWdt;
-	aRU.Y()+=nHgt;
-	rRect=Rectangle(aPt0,aRU);
-}
+// TTTT: Not needed
+//Polygon Rect2Poly(const Rectangle& rRect, long aOldRotation, long aOldShear) // TTTT needed?
+//{
+//	Polygon aPol(5);
+//	aPol[0]=rRect.TopLeft();
+//	aPol[1]=rRect.TopRight();
+//	aPol[2]=rRect.BottomRight();
+//	aPol[3]=rRect.BottomLeft();
+//	aPol[4]=rRect.TopLeft();
+//	
+//    if (aOldShear) 
+//        ShearPoly(aPol,rRect.TopLeft(),tan(aOldShear*nPi180));
+//	
+//    if (aOldRotation) 
+//        RotatePoly(aPol,rRect.TopLeft(),sin(aOldRotation*nPi180), cos(aOldRotation*nPi180));
+//
+//	return aPol;
+//}
+//
+//void Poly2Rect(const Polygon& rPol, Rectangle& rRect, long& rRotation, long& rShear) // TTTT needed?
+//{
+//	rRotation=GetAngle(rPol[1]-rPol[0]);
+//	rShear=NormAngle360(rRotation);
+//	// Drehung ist damit im Kasten
+//
+//	Point aPt1(rPol[1]-rPol[0]);
+//	if (rRotation) RotatePoint(aPt1,Point(0,0),-sin(rRotation*nPi180), cos(rRotation*nPi180)); // -Sin fuer Rueckdrehung
+//	long nWdt=aPt1.X();
+//
+//	Point aPt0(rPol[0]);
+//	Point aPt3(rPol[3]-rPol[0]);
+//	if (rRotation) RotatePoint(aPt3,Point(0,0),-sin(rRotation*nPi180), cos(rRotation*nPi180)); // -Sin fuer Rueckdrehung
+//	long nHgt=aPt3.Y();
+//
+//	if(aPt3.X())
+//	{
+//		// #i74358# the axes are not orthogonal, so for getting the correct height, 
+//		// calculate the length of aPt3
+//
+//		// #i74358# this change was wrong, in the field of the old geometry stuff
+//		// it is not an error. The new height always is the same as before; shear
+//		// does not change object height at all. This is different from the interactions,
+//		// but obviously wanted in the old versions.
+//		//
+//		// nHgt = static_cast< long >(sqrt(static_cast< double >(aPt3.X() * aPt3.X() + aPt3.Y() * aPt3.Y())));
+//	}
+//
+//    long nShW=GetAngle(aPt3);
+//	nShW-=27000; // ShearWink wird zur Senkrechten gemessen
+//	nShW=-nShW;  // Negieren, denn '+' ist Rechtskursivierung
+//
+//	bool bMirr=aPt3.Y()<0;
+//	if (bMirr) { // "Punktetausch" bei Spiegelung
+//		nHgt=-nHgt;
+//		nShW+=18000;
+//		aPt0=rPol[3];
+//	}
+//	nShW=NormAngle180(nShW);
+//	if (nShW<-9000 || nShW>9000) {
+//		nShW=NormAngle180(nShW+18000);
+//	}
+//	const long SDRMAXSHEAR(8900);
+//	if (nShW<-SDRMAXSHEAR) nShW=-SDRMAXSHEAR; // ShearWinkel begrenzen auf +/- 89.00 deg
+//	if (nShW>SDRMAXSHEAR)  nShW=SDRMAXSHEAR;
+//	rShear=nShW;
+//	Point aRU(aPt0);
+//	aRU.X()+=nWdt;
+//	aRU.Y()+=nHgt;
+//	rRect=Rectangle(aPt0,aRU);
+//}
 
 awt::Point SAL_CALL SvxCustomShape::getPosition() throw(uno::RuntimeException)
 {
-	OGuard aGuard( Application::GetSolarMutex() );
-	if ( mpModel && mpObj.is() )
-	{
-		sal_Bool bMirroredX = sal_False;
-		sal_Bool bMirroredY = sal_False;
-
-		if ( mpObj.is() )
-		{
-			bMirroredX = ( ((SdrObjCustomShape*)mpObj.get())->IsMirroredX() );
-			bMirroredY = ( ((SdrObjCustomShape*)mpObj.get())->IsMirroredY() );
-		}
-		// get aRect, this is the unrotated snaprect
-		Rectangle aRect(sdr::legacy::GetLogicRect(*((SdrObjCustomShape*)mpObj.get())));
-		Rectangle aRectangle( aRect );
-
-		if ( bMirroredX || bMirroredY )
-		{	
-			// we have to retrieve the unmirrored rect
-			long aRotation(sdr::legacy::GetRotateAngle(*mpObj.get()));
-			long aShear(sdr::legacy::GetShearAngleX(*mpObj.get()));
-
-			if ( bMirroredX )
-			{
-				Polygon aPol( Rect2Poly( aRect, aRotation, aShear ) );
-				Rectangle aBoundRect( aPol.GetBoundRect() );
-
-				Point aRef1( ( aBoundRect.Left() + aBoundRect.Right() ) >> 1, aBoundRect.Top() );
-				Point aRef2( aRef1.X(), aRef1.Y() + 1000 );
-				sal_uInt16 i;
-				sal_uInt16 nPntAnz=aPol.GetSize();
-				for (i=0; i<nPntAnz; i++)
-				{
-					MirrorPoint(aPol[i],aRef1,aRef2);
-				}
-				// Polygon wenden und etwas schieben
-				Polygon aPol0(aPol);
-				aPol[0]=aPol0[1];
-				aPol[1]=aPol0[0];
-				aPol[2]=aPol0[3];
-				aPol[3]=aPol0[2];
-				aPol[4]=aPol0[1];
-				Poly2Rect(aPol,aRectangle,aRotation, aShear);
-			}
-			if ( bMirroredY )
-			{
-				Polygon aPol( Rect2Poly( aRectangle, aRotation, aShear ) );
-				Rectangle aBoundRect( aPol.GetBoundRect() );
-
-				Point aRef1( aBoundRect.Left(), ( aBoundRect.Top() + aBoundRect.Bottom() ) >> 1 );
-				Point aRef2( aRef1.X() + 1000, aRef1.Y() );
-				sal_uInt16 i;
-				sal_uInt16 nPntAnz=aPol.GetSize();
-				for (i=0; i<nPntAnz; i++)
-				{
-					MirrorPoint(aPol[i],aRef1,aRef2);
-				}
-				// Polygon wenden und etwas schieben
-				Polygon aPol0(aPol);
-				aPol[0]=aPol0[1];
-				aPol[1]=aPol0[0];
-				aPol[2]=aPol0[3];
-				aPol[3]=aPol0[2];
-				aPol[4]=aPol0[1];
-				Poly2Rect( aPol, aRectangle, aRotation, aShear );
-			}
-		}
-
-		basegfx::B2DPoint aPt( aRectangle.Left(), aRectangle.Top() );
-
-        if(isWriterAnchorUsed())
-        {
-			aPt -= mpObj->GetAnchorPos();
-        }
-
-		ForceMetricTo100th_mm(aPt);
-
-		return ::com::sun::star::awt::Point( basegfx::fround(aPt.getX()), basegfx::fround(aPt.getY()) );
-	}
-	else
-		return SvxShape::getPosition();
+    // TTTT: All exceptions because of mirroring should be obsolete
+    return SvxShape::getPosition();
+
+	//OGuard aGuard( Application::GetSolarMutex() );
+	//if ( mpModel && mpObj.is() )
+	//{
+	//	sal_Bool bMirroredX = sal_False;
+	//	sal_Bool bMirroredY = sal_False;
+    //
+	//	if ( mpObj.is() )
+	//	{
+    //        const SdrObjCustomShape* pSdrObjCustomShape = dynamic_cast< const SdrObjCustomShape* >(mpObj.get());
+    //
+    //        if(pSdrObjCustomShape)
+    //        {
+    //            bMirroredX = isMirroredX();
+    //            bMirroredY = isMirroredY();
+    //        }
+    //        // TTTT:
+	//		//bMirroredX = ( ((SdrObjCustomShape*)mpObj.get())->IsMirroredX() );
+	//		//bMirroredY = ( ((SdrObjCustomShape*)mpObj.get())->IsMirroredY() );
+	//	}
+	//	// get aRect, this is the unrotated snaprect
+	//	Rectangle aRect(sdr::legacy::GetLogicRect(*((SdrObjCustomShape*)mpObj.get())));
+	//	Rectangle aRectangle( aRect );
+    //
+	//	if ( bMirroredX || bMirroredY )
+	//	{	
+	//		// we have to retrieve the unmirrored rect
+	//		long aRotation(sdr::legacy::GetRotateAngle(*mpObj.get()));
+	//		long aShear(sdr::legacy::GetShearAngleX(*mpObj.get()));
+    //
+	//		if ( bMirroredX )
+	//		{
+	//			Polygon aPol( Rect2Poly( aRect, aRotation, aShear ) );
+	//			Rectangle aBoundRect( aPol.GetBoundRect() );
+    //
+	//			Point aRef1( ( aBoundRect.Left() + aBoundRect.Right() ) >> 1, aBoundRect.Top() );
+	//			Point aRef2( aRef1.X(), aRef1.Y() + 1000 );
+	//			sal_uInt16 i;
+	//			sal_uInt16 nPntAnz=aPol.GetSize();
+	//			for (i=0; i<nPntAnz; i++)
+	//			{
+	//				MirrorPoint(aPol[i],aRef1,aRef2);
+	//			}
+	//			// Polygon wenden und etwas schieben
+	//			Polygon aPol0(aPol);
+	//			aPol[0]=aPol0[1];
+	//			aPol[1]=aPol0[0];
+	//			aPol[2]=aPol0[3];
+	//			aPol[3]=aPol0[2];
+	//			aPol[4]=aPol0[1];
+	//			Poly2Rect(aPol,aRectangle,aRotation, aShear);
+	//		}
+	//		if ( bMirroredY )
+	//		{
+	//			Polygon aPol( Rect2Poly( aRectangle, aRotation, aShear ) );
+	//			Rectangle aBoundRect( aPol.GetBoundRect() );
+    //
+	//			Point aRef1( aBoundRect.Left(), ( aBoundRect.Top() + aBoundRect.Bottom() ) >> 1 );
+	//			Point aRef2( aRef1.X() + 1000, aRef1.Y() );
+	//			sal_uInt16 i;
+	//			sal_uInt16 nPntAnz=aPol.GetSize();
+	//			for (i=0; i<nPntAnz; i++)
+	//			{
+	//				MirrorPoint(aPol[i],aRef1,aRef2);
+	//			}
+	//			// Polygon wenden und etwas schieben
+	//			Polygon aPol0(aPol);
+	//			aPol[0]=aPol0[1];
+	//			aPol[1]=aPol0[0];
+	//			aPol[2]=aPol0[3];
+	//			aPol[3]=aPol0[2];
+	//			aPol[4]=aPol0[1];
+	//			Poly2Rect( aPol, aRectangle, aRotation, aShear );
+	//		}
+	//	}
+    //
+	//	basegfx::B2DPoint aPt( aRectangle.Left(), aRectangle.Top() );
+    //
+    //    if(isWriterAnchorUsed())
+    //    {
+	//		aPt -= mpObj->GetAnchorPos();
+    //    }
+    //
+	//	ForceMetricTo100th_mm(aPt);
+    //
+	//	return ::com::sun::star::awt::Point( basegfx::fround(aPt.getX()), basegfx::fround(aPt.getY()) );
+	//}
+	//else
+	//	return SvxShape::getPosition();
 }
 
 //----------------------------------------------------------------------
@@ -2101,83 +2113,87 @@ void SAL_CALL SvxCustomShape::setSize( c
 void SAL_CALL SvxCustomShape::setPropertyValue( const OUString& aPropertyName, const uno::Any& aValue )
 	throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException, com::sun::star::beans::PropertyVetoException, com::sun::star::lang::IllegalArgumentException)
 {
-	OGuard aGuard( Application::GetSolarMutex() );
-    SdrObject* pObject = mpObj.get();
-
-    const bool bCustomShapeGeometry(pObject && aPropertyName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "CustomShapeGeometry" ) ));
-	bool bMirroredX = false;
-	bool bMirroredY = false;
-
-	if ( bCustomShapeGeometry )
-	{
-		bMirroredX = ( ((SdrObjCustomShape*)pObject)->IsMirroredX() );
-		bMirroredY = ( ((SdrObjCustomShape*)pObject)->IsMirroredY() );
-	}
-
+    // TTTT: All exceptions because of mirroring should be obsolete
 	SvxShape::setPropertyValue( aPropertyName, aValue );
 
-	if ( bCustomShapeGeometry )
-	{
-		((SdrObjCustomShape*)pObject)->MergeDefaultAttributes(0);
-		const Rectangle aRect( sdr::legacy::GetSnapRect(*pObject) );
-
-		// #i38892#
-		const bool bNeedsMirrorX(((SdrObjCustomShape*)pObject)->IsMirroredX() != bMirroredX);
-		const bool bNeedsMirrorY(((SdrObjCustomShape*)pObject)->IsMirroredY() != bMirroredY);
-		boost::scoped_ptr< SdrGluePointList > pListCopy;
-
-		if( bNeedsMirrorX || bNeedsMirrorY )
-		{
-			const SdrGluePointList* pList = pObject->GetGluePointList();
-			if( pList )
-				pListCopy.reset( new SdrGluePointList(*pList) );
-		}
-
-        if ( bNeedsMirrorX )
-		{
-			Point aTop( ( aRect.Left() + aRect.Right() ) >> 1, aRect.Top() );
-			Point aBottom( aTop.X(), aTop.Y() + 1000 );
-			sdr::legacy::MirrorSdrObject(*pObject, aTop, aBottom );
-			// NbcMirroring is flipping the current mirror state,
-			// so we have to set the correct state again
-			((SdrObjCustomShape*)pObject)->SetMirroredX( bMirroredX ? sal_False : sal_True );
-		}
-		if ( bNeedsMirrorY )
-		{
-			Point aLeft( aRect.Left(), ( aRect.Top() + aRect.Bottom() ) >> 1 );
-			Point aRight( aLeft.X() + 1000, aLeft.Y() );
-			sdr::legacy::MirrorSdrObject(*pObject, aLeft, aRight );
-			// NbcMirroring is flipping the current mirror state,
-			// so we have to set the correct state again
-			((SdrObjCustomShape*)pObject)->SetMirroredY( bMirroredY ? sal_False : sal_True );
-		}
-
-		if( pListCopy )
-		{
-			SdrGluePointList* pNewList = const_cast< SdrGluePointList* >( pObject->GetGluePointList() );
-			if(pNewList)
-				*pNewList = *pListCopy;
-		}
-	}
+    //OGuard aGuard( Application::GetSolarMutex() );
+    //SdrObject* pObject = mpObj.get();
+    //
+    //const bool bCustomShapeGeometry(pObject && aPropertyName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "CustomShapeGeometry" ) ));
+	//bool bMirroredX = false;
+	//bool bMirroredY = false;
+    //
+	//if ( bCustomShapeGeometry )
+	//{
+	//	bMirroredX = ( ((SdrObjCustomShape*)pObject)->IsMirroredX() );
+	//	bMirroredY = ( ((SdrObjCustomShape*)pObject)->IsMirroredY() );
+	//}
+    //
+	//SvxShape::setPropertyValue( aPropertyName, aValue );
+    //
+	//if ( bCustomShapeGeometry )
+	//{
+	//	((SdrObjCustomShape*)pObject)->MergeDefaultAttributes(0);
+	//	const Rectangle aRect( sdr::legacy::GetSnapRect(*pObject) );
+    //
+	//	// #i38892#
+	//	const bool bNeedsMirrorX(((SdrObjCustomShape*)pObject)->IsMirroredX() != bMirroredX);
+	//	const bool bNeedsMirrorY(((SdrObjCustomShape*)pObject)->IsMirroredY() != bMirroredY);
+	//	boost::scoped_ptr< SdrGluePointList > pListCopy;
+    //
+	//	if( bNeedsMirrorX || bNeedsMirrorY )
+	//	{
+	//		const SdrGluePointList* pList = pObject->GetGluePointList();
+	//		if( pList )
+	//			pListCopy.reset( new SdrGluePointList(*pList) );
+	//	}
+    //
+    //    if ( bNeedsMirrorX )
+	//	{
+	//		Point aTop( ( aRect.Left() + aRect.Right() ) >> 1, aRect.Top() );
+	//		Point aBottom( aTop.X(), aTop.Y() + 1000 );
+	//		sdr::legacy::MirrorSdrObject(*pObject, aTop, aBottom );
+	//		// NbcMirroring is flipping the current mirror state,
+	//		// so we have to set the correct state again
+	//		((SdrObjCustomShape*)pObject)->SetMirroredX( bMirroredX ? sal_False : sal_True );
+	//	}
+	//	if ( bNeedsMirrorY )
+	//	{
+	//		Point aLeft( aRect.Left(), ( aRect.Top() + aRect.Bottom() ) >> 1 );
+	//		Point aRight( aLeft.X() + 1000, aLeft.Y() );
+	//		sdr::legacy::MirrorSdrObject(*pObject, aLeft, aRight );
+	//		// NbcMirroring is flipping the current mirror state,
+	//		// so we have to set the correct state again
+	//		((SdrObjCustomShape*)pObject)->SetMirroredY( bMirroredY ? sal_False : sal_True );
+	//	}
+    //
+	//	if( pListCopy )
+	//	{
+	//		SdrGluePointList* pNewList = const_cast< SdrGluePointList* >( pObject->GetGluePointList() );
+	//		if(pNewList)
+	//			*pNewList = *pListCopy;
+	//	}
+	//}
 }
 
-bool SvxCustomShape::getPropertyValueImpl( const ::rtl::OUString& rName, const SfxItemPropertySimpleEntry* pProperty, ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException)
-{
-	switch( pProperty->nWID )
-	{
-	    case SDRATTR_ROTATEANGLE:
-	    {
-		    double fAngle = static_cast<SdrObjCustomShape*>(mpObj.get())->GetObjectRotation();
-		    fAngle *= 100;
-		    rValue <<= (sal_Int32)fAngle;
-		    return true;
-	    }
-	    default:
-        {
-            return SvxShape::getPropertyValueImpl( rName, pProperty, rValue );
-	    }
-    }
-}
+// TTTT:
+//bool SvxCustomShape::getPropertyValueImpl( const ::rtl::OUString& rName, const SfxItemPropertySimpleEntry* pProperty, ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException)
+//{
+//	switch( pProperty->nWID )
+//	{
+//	    case SDRATTR_ROTATEANGLE:
+//	    {
+//		    double fAngle = static_cast<SdrObjCustomShape*>(mpObj.get())->GetObjectRotation();
+//		    fAngle *= 100;
+//		    rValue <<= (sal_Int32)fAngle;
+//		    return true;
+//	    }
+//	    default:
+//        {
+//            return SvxShape::getPropertyValueImpl( rName, pProperty, rValue );
+//	    }
+//    }
+//}
 //----------------------------------------------------------------------
 
 void SvxCustomShape::createCustomShapeDefaults( const rtl::OUString& rValueType ) throw (::com::sun::star::uno::RuntimeException)

Modified: incubator/ooo/branches/alg/aw080/main/xmloff/inc/EnhancedCustomShapeToken.hxx
URL: http://svn.apache.org/viewvc/incubator/ooo/branches/alg/aw080/main/xmloff/inc/EnhancedCustomShapeToken.hxx?rev=1412154&r1=1412153&r2=1412154&view=diff
==============================================================================
--- incubator/ooo/branches/alg/aw080/main/xmloff/inc/EnhancedCustomShapeToken.hxx (original)
+++ incubator/ooo/branches/alg/aw080/main/xmloff/inc/EnhancedCustomShapeToken.hxx Wed Nov 21 15:42:23 2012
@@ -92,9 +92,12 @@ namespace xmloff { namespace EnhancedCus
 		EAS_CustomShapeEngine,
 		EAS_CustomShapeData,
 		EAS_Type,
+        
+        //  TTTT: MirrorX/Y removed, but still used at import and for EnhancedCustomShapeHandle
 		EAS_MirroredX,
 		EAS_MirroredY,
-		EAS_ViewBox,
+		
+        EAS_ViewBox,
 		EAS_TextRotateAngle,
 		EAS_ExtrusionAllowed,
 		EAS_ConcentricGradientFillAllowed,

Modified: incubator/ooo/branches/alg/aw080/main/xmloff/inc/xmloff/xmltoken.hxx
URL: http://svn.apache.org/viewvc/incubator/ooo/branches/alg/aw080/main/xmloff/inc/xmloff/xmltoken.hxx?rev=1412154&r1=1412153&r2=1412154&view=diff
==============================================================================
--- incubator/ooo/branches/alg/aw080/main/xmloff/inc/xmloff/xmltoken.hxx (original)
+++ incubator/ooo/branches/alg/aw080/main/xmloff/inc/xmloff/xmltoken.hxx Wed Nov 21 15:42:23 2012
@@ -2243,8 +2243,9 @@ namespace xmloff { namespace token {
 		XML_ENGINE,
 		XML_ENHANCED_GEOMETRY,
 		XML_TEXT_ROTATE_ANGLE,
-		XML_MIRROR_VERTICAL,
-		XML_MIRROR_HORIZONTAL,
+        //  TTTT: MirrorX/Y removed
+		//XML_MIRROR_VERTICAL,
+		//XML_MIRROR_HORIZONTAL,
 		XML_EXTRUSION_ALLOWED,
 		XML_TEXT_PATH_ALLOWED,
 		XML_CONCENTRIC_GRADIENT_FILL_ALLOWED,

Modified: incubator/ooo/branches/alg/aw080/main/xmloff/source/core/xmltoken.cxx
URL: http://svn.apache.org/viewvc/incubator/ooo/branches/alg/aw080/main/xmloff/source/core/xmltoken.cxx?rev=1412154&r1=1412153&r2=1412154&view=diff
==============================================================================
--- incubator/ooo/branches/alg/aw080/main/xmloff/source/core/xmltoken.cxx (original)
+++ incubator/ooo/branches/alg/aw080/main/xmloff/source/core/xmltoken.cxx Wed Nov 21 15:42:23 2012
@@ -2254,8 +2254,9 @@ namespace xmloff { namespace token {
 		TOKEN( "engine" ,								XML_ENGINE ),
 		TOKEN( "enhanced-geometry" ,					XML_ENHANCED_GEOMETRY ),
 		TOKEN( "text-rotate-angle" ,					XML_TEXT_ROTATE_ANGLE ),
-		TOKEN( "mirror-vertical" ,						XML_MIRROR_VERTICAL ),
-		TOKEN( "mirror-horizontal" ,					XML_MIRROR_HORIZONTAL ),
+        //  TTTT: MirrorX/Y removed
+		//TOKEN( "mirror-vertical" ,						XML_MIRROR_VERTICAL ),
+		//TOKEN( "mirror-horizontal" ,					XML_MIRROR_HORIZONTAL ),
 		TOKEN( "extrusion-allowed" ,					XML_EXTRUSION_ALLOWED ),
 		TOKEN( "text-path-allowed" ,					XML_TEXT_PATH_ALLOWED ),
 		TOKEN( "concentric-gradient-fill-allowed" ,		XML_CONCENTRIC_GRADIENT_FILL_ALLOWED ),

Modified: incubator/ooo/branches/alg/aw080/main/xmloff/source/draw/EnhancedCustomShapeToken.cxx
URL: http://svn.apache.org/viewvc/incubator/ooo/branches/alg/aw080/main/xmloff/source/draw/EnhancedCustomShapeToken.cxx?rev=1412154&r1=1412153&r2=1412154&view=diff
==============================================================================
--- incubator/ooo/branches/alg/aw080/main/xmloff/source/draw/EnhancedCustomShapeToken.cxx (original)
+++ incubator/ooo/branches/alg/aw080/main/xmloff/source/draw/EnhancedCustomShapeToken.cxx Wed Nov 21 15:42:23 2012
@@ -115,9 +115,12 @@ static const TokenTable pTokenTableArray
 	{ "CustomShapeEngine",					EAS_CustomShapeEngine },
 	{ "CustomShapeData",					EAS_CustomShapeData },
 	{ "Type",								EAS_Type },
+    
+    // TTTT: MirrorX/Y removed, but still used at import and for EnhancedCustomShapeHandle
 	{ "MirroredX",							EAS_MirroredX },
 	{ "MirroredY",							EAS_MirroredY },
-	{ "ViewBox",							EAS_ViewBox },
+
+    { "ViewBox",							EAS_ViewBox },
 	{ "TextRotateAngle",					EAS_TextRotateAngle },
 	{ "ExtrusionAllowed",					EAS_ExtrusionAllowed },
 	{ "TextPathAllowed",					EAS_TextPathAllowed },
@@ -185,7 +188,7 @@ EnhancedCustomShapeTokenEnum EASGet( con
 		if ( !pHashMap )
 		{
 			TypeNameHashMap* pH = new TypeNameHashMap;
-			const TokenTable* pPtr = pTokenTableArray;
+			const TokenTable* pPtr = pTokenTableArray; //  TTTT: MirrorX/Y removed; when used here reactivate above in the table
 			const TokenTable* pEnd = pPtr + ( sizeof( pTokenTableArray ) / sizeof( TokenTable ) );
 			for ( ; pPtr < pEnd; pPtr++ )
 				(*pH)[ pPtr->pS ] = pPtr->pE;

Modified: incubator/ooo/branches/alg/aw080/main/xmloff/source/draw/shapeexport4.cxx
URL: http://svn.apache.org/viewvc/incubator/ooo/branches/alg/aw080/main/xmloff/source/draw/shapeexport4.cxx?rev=1412154&r1=1412153&r2=1412154&view=diff
==============================================================================
--- incubator/ooo/branches/alg/aw080/main/xmloff/source/draw/shapeexport4.cxx (original)
+++ incubator/ooo/branches/alg/aw080/main/xmloff/source/draw/shapeexport4.cxx Wed Nov 21 15:42:23 2012
@@ -487,22 +487,23 @@ void ImpExportEnhancedGeometry( SvXMLExp
 						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;
+                    //  TTTT: MirrorX/Y removed, no longer exported
+					//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;

Modified: incubator/ooo/branches/alg/aw080/main/xmloff/source/draw/ximpcustomshape.cxx
URL: http://svn.apache.org/viewvc/incubator/ooo/branches/alg/aw080/main/xmloff/source/draw/ximpcustomshape.cxx?rev=1412154&r1=1412153&r2=1412154&view=diff
==============================================================================
--- incubator/ooo/branches/alg/aw080/main/xmloff/source/draw/ximpcustomshape.cxx (original)
+++ incubator/ooo/branches/alg/aw080/main/xmloff/source/draw/ximpcustomshape.cxx Wed Nov 21 15:42:23 2012
@@ -52,6 +52,8 @@
 #include <com/sun/star/drawing/EnhancedCustomShapeSegmentCommand.hpp>
 #include <com/sun/star/drawing/EnhancedCustomShapeTextPathMode.hpp>
 #include <com/sun/star/drawing/ProjectionMode.hpp>
+#include <basegfx/matrix/b2dhommatrix.hxx>
+#include <basegfx/matrix/b2dhommatrixtools.hxx>
 #include <hash_map>
 
 using namespace ::com::sun::star;
@@ -65,7 +67,9 @@ XMLEnhancedCustomShapeContext::XMLEnhanc
 		SvXMLImportContext( rImport, nPrefix, rLocalName ),
 		mrUnitConverter( rImport.GetMM100UnitConverter() ),
 		mrxShape( rxShape ),
-		mrCustomShapeGeometry( rCustomShapeGeometry )
+		mrCustomShapeGeometry( rCustomShapeGeometry ),
+        mbCompatibilityMirroredX(false),
+        mbCompatibilityMirroredY(false)
 {
 }
 
@@ -827,13 +831,30 @@ void XMLEnhancedCustomShapeContext::Star
 				case EAS_type :
 					GetString( mrCustomShapeGeometry, rValue, EAS_Type );
 				break;
+
+                //  TTTT: MirrorX/Y removed, need to replace at import
 				case EAS_mirror_horizontal :
-					GetBool( mrCustomShapeGeometry, rValue, EAS_MirroredX );
-				break;
+                {
+                    sal_Bool bAttrBool(sal_False);
+                        
+                    if(SvXMLUnitConverter::convertBool(bAttrBool, rValue))
+                    {
+                        mbCompatibilityMirroredX = bAttrBool;
+                    }
+                    break;
+                }
 				case EAS_mirror_vertical :
-					GetBool( mrCustomShapeGeometry, rValue, EAS_MirroredY );
-				break;
-				case EAS_viewBox :
+                {
+                    sal_Bool bAttrBool(sal_False);
+                        
+                    if(SvXMLUnitConverter::convertBool(bAttrBool, rValue))
+                    {
+                        mbCompatibilityMirroredY = bAttrBool;
+                    }
+                    break;
+                }
+
+                case EAS_viewBox :
 				{
 					SdXMLImExViewBox aViewBox( rValue, GetImport().GetMM100UnitConverter() );
 					awt::Rectangle aRect( aViewBox.GetX(), aViewBox.GetY(), aViewBox.GetWidth(), aViewBox.GetHeight() );
@@ -1278,6 +1299,49 @@ void XMLEnhancedCustomShapeContext::EndE
 	SdXMLCustomShapePropertyMerge( mrCustomShapeGeometry, maEquations, EASGet( EAS_Equations ) );
 	if  ( !maHandles.empty() )
 		SdXMLCustomShapePropertyMerge( mrCustomShapeGeometry, maHandles, EASGet( EAS_Handles ) );
+
+    if(mbCompatibilityMirroredX || mbCompatibilityMirroredY)
+    {
+        // when saved, this EnhancedCustomShapeGeometry was mirrored in X and/or Y. This
+        // will now be expressed in the transformation of the EnhancedCustomShape itself,
+        // so apply it to the already transformed object
+        uno::Reference< beans::XPropertySet > xPropSet(mrxShape, uno::UNO_QUERY);
+
+        if(xPropSet.is())
+        {
+            uno::Any aAny;
+            drawing::HomogenMatrix3 aMatrix;
+            basegfx::B2DHomMatrix aB2DMatrix;
+            const rtl::OUString aTrans(RTL_CONSTASCII_USTRINGPARAM("Transformation"));
+
+            // get UNO API Matrix from xShape
+            aAny = xPropSet->getPropertyValue(aTrans);
+            aAny >>= aMatrix;
+
+            // pre-apply mirrorings
+            aB2DMatrix.translate(-0.5, -0.5);
+
+            if(mbCompatibilityMirroredX)
+            {
+                aB2DMatrix.scale(-1.0, 1.0);
+            }
+
+            if(mbCompatibilityMirroredY)
+            {
+                aB2DMatrix.scale(1.0, -1.0);
+            }
+
+            aB2DMatrix.translate(0.5, 0.5);
+            
+            // apply already valid transformation
+            aB2DMatrix = basegfx::tools::UnoHomogenMatrix3ToB2DHomMatrix(aMatrix) * aB2DMatrix;
+
+            // transform back to UNO API matrix and set at xShape
+            basegfx::tools::B2DHomMatrixToUnoHomogenMatrix3(aB2DMatrix, aMatrix);
+            aAny <<= aMatrix;
+            xPropSet->setPropertyValue(aTrans, aAny);
+        }
+    }
 }
 
 SvXMLImportContext* XMLEnhancedCustomShapeContext::CreateChildContext( sal_uInt16 nPrefix,const rtl::OUString& rLocalName,

Modified: incubator/ooo/branches/alg/aw080/main/xmloff/source/draw/ximpcustomshape.hxx
URL: http://svn.apache.org/viewvc/incubator/ooo/branches/alg/aw080/main/xmloff/source/draw/ximpcustomshape.hxx?rev=1412154&r1=1412153&r2=1412154&view=diff
==============================================================================
--- incubator/ooo/branches/alg/aw080/main/xmloff/source/draw/ximpcustomshape.hxx (original)
+++ incubator/ooo/branches/alg/aw080/main/xmloff/source/draw/ximpcustomshape.hxx Wed Nov 21 15:42:23 2012
@@ -56,6 +56,10 @@ class XMLEnhancedCustomShapeContext : pu
 	std::vector< rtl::OUString > maEquations;
 	std::vector< rtl::OUString > maEquationNames;
 
+    /// bitfield
+    bool                    mbCompatibilityMirroredX : 1;
+    bool                    mbCompatibilityMirroredY : 1;
+
 public:
 
 	XMLEnhancedCustomShapeContext( SvXMLImport& rImport, ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > &, sal_uInt16 nPrefix,