bnc#798309 inherit group style from parent

Change-Id: Ie4f1d244f1c9b4935305742d12cabaee3e38647c
This commit is contained in:
Noel Power 2013-03-12 20:37:15 +00:00
parent 856756ec77
commit 1dbd088e4f
8 changed files with 23 additions and 13 deletions

View file

@ -149,6 +149,7 @@ public:
const Theme* pTheme,
const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes >& rxShapes,
basegfx::B2DHomMatrix& aTransformation,
FillProperties& rShapeOrParentShapeFillProps,
const ::com::sun::star::awt::Rectangle* pShapeRect = 0,
ShapeIdMap* pShapeMap = 0 );
@ -183,7 +184,9 @@ protected:
const ::com::sun::star::awt::Rectangle* pShapeRect,
sal_Bool bClearText,
sal_Bool bDoNotInsertEmptyTextBody,
basegfx::B2DHomMatrix& aTransformation );
basegfx::B2DHomMatrix& aTransformation,
FillProperties& rShapeOrParentShapeFillProps
);
void addChildren(
::oox::core::XmlFilterBase& rFilterBase,

View file

@ -215,7 +215,7 @@ void ChartDrawingFragment::onEndElement()
getLimitedValue< sal_Int32, sal_Int64 >( aShapeRectEmu.Width, 0, SAL_MAX_INT32 ),
getLimitedValue< sal_Int32, sal_Int64 >( aShapeRectEmu.Height, 0, SAL_MAX_INT32 ) );
basegfx::B2DHomMatrix aMatrix;
mxShape->addShape( getFilter(), getFilter().getCurrentTheme(), mxDrawPage, aMatrix, &aShapeRectEmu32 );
mxShape->addShape( getFilter(), getFilter().getCurrentTheme(), mxDrawPage, aMatrix, mxShape->getFillProperties(), &aShapeRectEmu32 );
}
}
mxShape.reset();

View file

@ -193,6 +193,7 @@ void Shape::addShape(
const Theme* pTheme,
const Reference< XShapes >& rxShapes,
basegfx::B2DHomMatrix& aTransformation,
FillProperties& rShapeOrParentShapeFillProps,
const awt::Rectangle* pShapeRect,
ShapeIdMap* pShapeMap )
{
@ -204,7 +205,7 @@ void Shape::addShape(
if( !sServiceName.isEmpty() )
{
basegfx::B2DHomMatrix aMatrix( aTransformation );
Reference< XShape > xShape( createAndInsert( rFilterBase, sServiceName, pTheme, rxShapes, pShapeRect, sal_False, sal_False, aMatrix ) );
Reference< XShape > xShape( createAndInsert( rFilterBase, sServiceName, pTheme, rxShapes, pShapeRect, sal_False, sal_False, aMatrix, rShapeOrParentShapeFillProps ) );
if( pShapeMap && !msId.isEmpty() )
{
@ -309,7 +310,7 @@ void Shape::addChildren(
std::vector< ShapePtr >::iterator aIter( rMaster.maChildren.begin() );
while( aIter != rMaster.maChildren.end() ) {
(*aIter)->setMasterTextListStyle( mpMasterTextListStyle );
(*aIter++)->addShape( rFilterBase, pTheme, rxShapes, aChildTransformation, NULL, pShapeMap );
(*aIter++)->addShape( rFilterBase, pTheme, rxShapes, aChildTransformation, getFillProperties(), NULL, pShapeMap );
}
}
@ -321,7 +322,8 @@ Reference< XShape > Shape::createAndInsert(
const awt::Rectangle* /* pShapeRect */,
sal_Bool bClearText,
sal_Bool bDoNotInsertEmptyTextBody,
basegfx::B2DHomMatrix& aParentTransformation )
basegfx::B2DHomMatrix& aParentTransformation,
FillProperties& rShapeOrParentShapeFillProps )
{
bool bIsEmbMedia = false;
SAL_INFO("oox", OSL_THIS_FUNC << " id: " << msId);
@ -516,7 +518,12 @@ Reference< XShape > Shape::createAndInsert(
}
aLineProperties.assignUsed( getLineProperties() );
aFillProperties.assignUsed( getFillProperties() );
// group fill inherits from parent
if ( getFillProperties().moFillType.has() && getFillProperties().moFillType.get() == XML_grpFill )
aFillProperties.assignUsed( rShapeOrParentShapeFillProps );
else
aFillProperties.assignUsed( getFillProperties() );
aEffectProperties.assignUsed ( getEffectProperties() );
ShapePropertyMap aShapeProps( rFilterBase.getModelObjectHelper() );

View file

@ -78,7 +78,7 @@ bool QuickDiagrammingImport::importDocument() throw()
pShape->addShape( *this,
pTheme.get(),
xParentShape,
aMatrix );
aMatrix, pShape->getFillProperties() );
return true;
}

View file

@ -328,7 +328,7 @@ void PPTShape::addShape(
} else
setMasterTextListStyle( aMasterTextListStyle );
Reference< XShape > xShape( createAndInsert( rFilterBase, sServiceName, pTheme, rxShapes, pShapeRect, bClearText, mpPlaceholder.get() != NULL, aTransformation ) );
Reference< XShape > xShape( createAndInsert( rFilterBase, sServiceName, pTheme, rxShapes, pShapeRect, bClearText, mpPlaceholder.get() != NULL, aTransformation, getFillProperties() ) );
if ( !rSlidePersist.isMasterPage() && rSlidePersist.getPage().is() && ( (sal_Int32)mnSubType == XML_title ) )
{
try

View file

@ -136,7 +136,7 @@ void SlidePersist::createXShapes( XmlFilterBase& rFilterBase )
if ( pPPTShape )
pPPTShape->addShape( rFilterBase, *this, getTheme().get(), xShapes, aTransformation, 0, &getShapeMap() );
else
(*aChildIter)->addShape( rFilterBase, getTheme().get(), xShapes, aTransformation, 0, &getShapeMap() );
(*aChildIter)->addShape( rFilterBase, getTheme().get(), xShapes, aTransformation, maShapesPtr->getFillProperties(), 0, &getShapeMap() );
aChildIter++;
}
}

View file

@ -290,7 +290,7 @@ ShapeContextHandler::getShape() throw (uno::RuntimeException)
basegfx::B2DHomMatrix aMatrix;
if (mpShape->getExtDrawings().size() == 0)
{
mpShape->addShape( *mxFilterBase, mpThemePtr.get(), xShapes, aMatrix );
mpShape->addShape( *mxFilterBase, mpThemePtr.get(), xShapes, aMatrix, mpShape->getFillProperties() );
xResult = mpShape->getXShape();
}
else
@ -302,7 +302,7 @@ ShapeContextHandler::getShape() throw (uno::RuntimeException)
OUString aFragmentPath(pDiagramGraphicDataContext->getFragmentPathFromRelId(*aIt));
oox::drawingml::ShapePtr pShapePtr( new Shape( "com.sun.star.drawing.GroupShape" ) );
mxFilterBase->importFragment(new ShapeDrawingFragmentHandler(*mxFilterBase, aFragmentPath, pShapePtr));
pShapePtr->addShape( *mxFilterBase, mpThemePtr.get(), xShapes, aMatrix );
pShapePtr->addShape( *mxFilterBase, mpThemePtr.get(), xShapes, aMatrix, pShapePtr->getFillProperties() );
xResult = pShapePtr->getXShape();
}
mpShape.reset((Shape*)0);
@ -312,7 +312,7 @@ ShapeContextHandler::getShape() throw (uno::RuntimeException)
else if (mpShape.get() != NULL)
{
basegfx::B2DHomMatrix aTransformation;
mpShape->addShape(*mxFilterBase, mpThemePtr.get(), xShapes, aTransformation);
mpShape->addShape(*mxFilterBase, mpThemePtr.get(), xShapes, aTransformation, mpShape->getFillProperties() );
xResult.set(mpShape->getXShape());
mxGraphicShapeContext.clear( );
}

View file

@ -281,7 +281,7 @@ void DrawingFragment::onEndElement()
mxShape->setSize(Size(aShapeRectEmu.Width, aShapeRectEmu.Height));
basegfx::B2DHomMatrix aTransformation;
mxShape->addShape( getOoxFilter(), &getTheme(), mxDrawPage, aTransformation, &aShapeRectEmu32 );
mxShape->addShape( getOoxFilter(), &getTheme(), mxDrawPage, aTransformation, mxShape->getFillProperties(), &aShapeRectEmu32 );
/* Collect all shape positions in the WorksheetHelper base
class. But first, scale EMUs to 1/100 mm. */