fdo43752: PPTX import fix affected odp imports.
Related bugs: n#719989, n#719997
This commit is contained in:
@@ -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
|
|||||||
IsNumbering
|
IsNumbering
|
||||||
IsOutlineSymbolsSet
|
IsOutlineSymbolsSet
|
||||||
IsPlaceholderDependent
|
IsPlaceholderDependent
|
||||||
|
IsPostRotateAngle
|
||||||
IsSharedFormula
|
IsSharedFormula
|
||||||
IsStartOfNewPage
|
IsStartOfNewPage
|
||||||
IsTextWrapped
|
IsTextWrapped
|
||||||
|
@@ -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:
|
|||||||
|
|
||||||
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 )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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
|
|||||||
|
|
||||||
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
|
|||||||
}
|
}
|
||||||
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
|
|||||||
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
|
|||||||
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;
|
||||||
|
Reference in New Issue
Block a user