Kaydet (Commit) 1c44b263 authored tarafından Muthu Subramanian's avatar Muthu Subramanian

fdo43752: PPTX import fix affected odp imports.

Related bugs: n#719989, n#719997
üst 161fb178
...@@ -158,6 +158,7 @@ void CustomShapeProperties::pushToPropSet( const ::oox::core::FilterBase& /* rFi ...@@ -158,6 +158,7 @@ void CustomShapeProperties::pushToPropSet( const ::oox::core::FilterBase& /* rFi
aPropertyMap[ PROP_MirroredX ] <<= Any( mbMirroredX ); aPropertyMap[ PROP_MirroredX ] <<= Any( mbMirroredX );
aPropertyMap[ PROP_MirroredY ] <<= Any( mbMirroredY ); aPropertyMap[ PROP_MirroredY ] <<= Any( mbMirroredY );
aPropertyMap[ PROP_TextPreRotateAngle ] <<= Any( mnTextRotateAngle ); aPropertyMap[ PROP_TextPreRotateAngle ] <<= Any( mnTextRotateAngle );
aPropertyMap[ PROP_IsPostRotateAngle ] <<= true; // For OpenXML Imports
Sequence< PropertyValue > aSeq = aPropertyMap.makePropertyValueSequence(); Sequence< PropertyValue > aSeq = aPropertyMap.makePropertyValueSequence();
aPropSet.setProperty( PROP_CustomShapeGeometry, aSeq ); aPropSet.setProperty( PROP_CustomShapeGeometry, aSeq );
......
...@@ -244,6 +244,7 @@ IsLoaded ...@@ -244,6 +244,7 @@ IsLoaded
IsNumbering IsNumbering
IsOutlineSymbolsSet IsOutlineSymbolsSet
IsPlaceholderDependent IsPlaceholderDependent
IsPostRotateAngle
IsSharedFormula IsSharedFormula
IsStartOfNewPage IsStartOfNewPage
IsTextWrapped IsTextWrapped
......
...@@ -182,6 +182,7 @@ class EnhancedCustomShape2d : public SfxItemSet ...@@ -182,6 +182,7 @@ class EnhancedCustomShape2d : public SfxItemSet
sal_Bool IsFlipVert() { return bFlipV; }; sal_Bool IsFlipVert() { return bFlipV; };
sal_Bool IsFlipHorz() { return bFlipH; }; sal_Bool IsFlipHorz() { return bFlipH; };
sal_Int32 GetRotateAngle() { return nRotateAngle; }; sal_Int32 GetRotateAngle() { return nRotateAngle; };
SVX_DLLPUBLIC bool IsPostRotate() const;
SVX_DLLPUBLIC SdrObject* CreateLineGeometry(); SVX_DLLPUBLIC SdrObject* CreateLineGeometry();
SVX_DLLPUBLIC SdrObject* CreateObject( sal_Bool bLineGeometryNeededOnly ); SVX_DLLPUBLIC SdrObject* CreateObject( sal_Bool bLineGeometryNeededOnly );
......
...@@ -145,6 +145,7 @@ public: ...@@ -145,6 +145,7 @@ public:
sal_Bool IsMirroredX() const; sal_Bool IsMirroredX() const;
sal_Bool IsMirroredY() const; sal_Bool IsMirroredY() const;
bool IsPostRotate() const;
void SetMirroredX( const sal_Bool bMirroredX ); void SetMirroredX( const sal_Bool bMirroredX );
void SetMirroredY( const sal_Bool bMirroredY ); void SetMirroredY( const sal_Bool bMirroredY );
......
...@@ -2332,6 +2332,11 @@ void EnhancedCustomShape2d::ApplyGluePoints( SdrObject* pObj ) ...@@ -2332,6 +2332,11 @@ void EnhancedCustomShape2d::ApplyGluePoints( SdrObject* pObj )
} }
} }
bool EnhancedCustomShape2d::IsPostRotate() const
{
return pCustomShapeObj->ISA( SdrObjCustomShape ) ? ((SdrObjCustomShape*)pCustomShapeObj)->IsPostRotate() : false;
}
SdrObject* EnhancedCustomShape2d::CreateLineGeometry() SdrObject* EnhancedCustomShape2d::CreateLineGeometry()
{ {
return CreateObject( sal_True ); return CreateObject( sal_True );
......
...@@ -276,6 +276,7 @@ REF( com::sun::star::drawing::XShape ) SAL_CALL EnhancedCustomShapeEngine::rende ...@@ -276,6 +276,7 @@ REF( com::sun::star::drawing::XShape ) SAL_CALL EnhancedCustomShapeEngine::rende
EnhancedCustomShape2d aCustomShape2d( pSdrObjCustomShape ); EnhancedCustomShape2d aCustomShape2d( pSdrObjCustomShape );
sal_Int32 nRotateAngle = aCustomShape2d.GetRotateAngle(); sal_Int32 nRotateAngle = aCustomShape2d.GetRotateAngle();
bool bPostRotateAngle = aCustomShape2d.IsPostRotate();
sal_Bool bFlipV = aCustomShape2d.IsFlipVert(); sal_Bool bFlipV = aCustomShape2d.IsFlipVert();
sal_Bool bFlipH = aCustomShape2d.IsFlipHorz(); sal_Bool bFlipH = aCustomShape2d.IsFlipHorz();
...@@ -315,6 +316,11 @@ REF( com::sun::star::drawing::XShape ) SAL_CALL EnhancedCustomShapeEngine::rende ...@@ -315,6 +316,11 @@ REF( com::sun::star::drawing::XShape ) SAL_CALL EnhancedCustomShapeEngine::rende
} }
pRenderedShape->Shear( pSdrObjCustomShape->GetSnapRect().Center(), nShearWink, nTan, sal_False); pRenderedShape->Shear( pSdrObjCustomShape->GetSnapRect().Center(), nShearWink, nTan, sal_False);
} }
if( !bPostRotateAngle && nRotateAngle )
{
double a = nRotateAngle * F_PI18000;
pRenderedShape->NbcRotate( pSdrObjCustomShape->GetSnapRect().Center(), nRotateAngle, sin( a ), cos( a ) );
}
if ( bFlipV ) if ( bFlipV )
{ {
Point aLeft( aRect.Left(), ( aRect.Top() + aRect.Bottom() ) >> 1 ); Point aLeft( aRect.Left(), ( aRect.Top() + aRect.Bottom() ) >> 1 );
...@@ -327,8 +333,8 @@ REF( com::sun::star::drawing::XShape ) SAL_CALL EnhancedCustomShapeEngine::rende ...@@ -327,8 +333,8 @@ REF( com::sun::star::drawing::XShape ) SAL_CALL EnhancedCustomShapeEngine::rende
Point aBottom( aTop.X(), aTop.Y() + 1000 ); Point aBottom( aTop.X(), aTop.Y() + 1000 );
pRenderedShape->NbcMirror( aTop, aBottom ); pRenderedShape->NbcMirror( aTop, aBottom );
} }
// Note that the rotation needs be done after flipping // Specifically for pptx imports
if( nRotateAngle ) if( bPostRotateAngle && nRotateAngle )
{ {
double a = nRotateAngle * F_PI18000; double a = nRotateAngle * F_PI18000;
pRenderedShape->NbcRotate( pSdrObjCustomShape->GetSnapRect().Center(), nRotateAngle, sin( a ), cos( a ) ); pRenderedShape->NbcRotate( pSdrObjCustomShape->GetSnapRect().Center(), nRotateAngle, sin( a ), cos( a ) );
......
...@@ -536,6 +536,17 @@ double SdrObjCustomShape::GetObjectRotation() const ...@@ -536,6 +536,17 @@ double SdrObjCustomShape::GetObjectRotation() const
return fObjectRotation; return fObjectRotation;
} }
bool SdrObjCustomShape::IsPostRotate() const
{
const com::sun::star::uno::Any* pAny;
bool bPostRotate = false;
SdrCustomShapeGeometryItem& rGeometryItem = (SdrCustomShapeGeometryItem&)GetMergedItem( SDRATTR_CUSTOMSHAPE_GEOMETRY );
pAny = rGeometryItem.GetPropertyValueByName( "IsPostRotateAngle" );
if ( pAny )
*pAny >>= bPostRotate;
return bPostRotate;
}
double SdrObjCustomShape::GetExtraTextRotation( const bool bPreRotation ) const double SdrObjCustomShape::GetExtraTextRotation( const bool bPreRotation ) const
{ {
const com::sun::star::uno::Any* pAny; const com::sun::star::uno::Any* pAny;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment