diff options
Diffstat (limited to 'oox')
| -rw-r--r-- | oox/source/drawingml/diagram/diagram.cxx | 39 | ||||
| -rw-r--r-- | oox/source/drawingml/diagram/diagramfragmenthandler.cxx | 49 | ||||
| -rw-r--r-- | oox/source/ppt/pptshapegroupcontext.cxx | 13 |
3 files changed, 60 insertions, 41 deletions
diff --git a/oox/source/drawingml/diagram/diagram.cxx b/oox/source/drawingml/diagram/diagram.cxx index 70d938ad1ea2..a4ad2798a309 100644 --- a/oox/source/drawingml/diagram/diagram.cxx +++ b/oox/source/drawingml/diagram/diagram.cxx @@ -320,7 +320,6 @@ void Diagram::build( ) #endif } - void Diagram::addTo( const ShapePtr & pParentShape ) { // collect data, init maps @@ -432,7 +431,7 @@ void loadDiagram( ShapePtr& pShape, } // extLst is present, lets bet on that and ignore the rest of the data from here - if( !pData->getExtDrawings().size() ) + if( pData->getExtDrawings().empty() ) { // layout if( !rLayoutPath.isEmpty() ) @@ -459,25 +458,33 @@ void loadDiagram( ShapePtr& pShape, pDiagram, xRefQStyle); } - - // colors - if( !rColorStylePath.isEmpty() ) - { - rtl::Reference< core::FragmentHandler > xRefColorStyle( - new ColorFragmentHandler( rFilter, rColorStylePath, pDiagram->getColors() )); - - importFragment(rFilter, - loadFragment(rFilter,xRefColorStyle), - "OOXColor", - pDiagram, - xRefColorStyle); - } } else { // We still want to add the XDocuments to the DiagramDomMap DiagramDomMap& rMainDomMap = pDiagram->getDomMap(); rMainDomMap[OUString("OOXLayout")] = loadFragment(rFilter,rLayoutPath); rMainDomMap[OUString("OOXStyle")] = loadFragment(rFilter,rQStylePath); - rMainDomMap[OUString("OOXColor")] = loadFragment(rFilter,rColorStylePath); + } + + // colors + if( !rColorStylePath.isEmpty() ) + { + rtl::Reference< core::FragmentHandler > xRefColorStyle( + new ColorFragmentHandler( rFilter, rColorStylePath, pDiagram->getColors() )); + + importFragment(rFilter, + loadFragment(rFilter,xRefColorStyle), + "OOXColor", + pDiagram, + xRefColorStyle); + } + + if( !pData->getExtDrawings().empty() ) + { + const DiagramColorMap::const_iterator aColor = pDiagram->getColors().find("node0"); + if( aColor != pDiagram->getColors().end() ) + { + pShape->setFontRefColorForNodes(aColor->second.maTextFillColor); + } } // diagram loaded. now lump together & attach to shape diff --git a/oox/source/drawingml/diagram/diagramfragmenthandler.cxx b/oox/source/drawingml/diagram/diagramfragmenthandler.cxx index aa14178ed2b1..7c132340340e 100644 --- a/oox/source/drawingml/diagram/diagramfragmenthandler.cxx +++ b/oox/source/drawingml/diagram/diagramfragmenthandler.cxx @@ -166,7 +166,7 @@ DiagramQStylesFragmentHandler::DiagramQStylesFragmentHandler( XmlFilterBase& rFi void DiagramQStylesFragmentHandler::onStartElement( const AttributeList& rAttribs ) { - if( getCurrentElement() == DGM_TOKEN( styleDef ) ) + if( getCurrentElement() == DGM_TOKEN( styleLbl ) ) { maStyleName = rAttribs.getString( XML_name, OUString() ); maStyleEntry = mrStylesMap[maStyleName]; @@ -203,30 +203,29 @@ ColorFragmentHandler::ColorFragmentHandler( ::oox::core::XmlFilterBase& rFilter, case DGM_TOKEN(colorsDef): return nElement == DGM_TOKEN(styleLbl) ? this : NULL; case DGM_TOKEN(styleLbl): - return ((nElement == DGM_TOKEN(fillClrLst)) || - (nElement == DGM_TOKEN(linClrLst)) || - (nElement == DGM_TOKEN(effectClrLst)) || - (nElement == DGM_TOKEN(txLinClrLst)) || - (nElement == DGM_TOKEN(txFillClrLst)) || - (nElement == DGM_TOKEN(txEffectClrLst))) ? this : NULL; - - // the actual colors - defer to color fragment handlers. - - // TODO(F1): well, actually, there might be *several* color - // definitions in it, after all its called list. but - // apparently colorChoiceContext doesn't handle that anyway... - case DGM_TOKEN(fillClrLst): - return new ColorContext( *this, maColorEntry.maFillColor ); - case DGM_TOKEN(linClrLst): - return new ColorContext( *this, maColorEntry.maLineColor ); - case DGM_TOKEN(effectClrLst): - return new ColorContext( *this, maColorEntry.maEffectColor ); - case DGM_TOKEN(txFillClrLst): - return new ColorContext( *this, maColorEntry.maTextFillColor ); - case DGM_TOKEN(txLinClrLst): - return new ColorContext( *this, maColorEntry.maTextLineColor ); - case DGM_TOKEN(txEffectClrLst): - return new ColorContext( *this, maColorEntry.maTextEffectColor ); + { + switch( nElement ) + { + // the actual colors - defer to color fragment handlers. + + // TODO(F1): well, actually, there might be *several* color + // definitions in it, after all its called list. but + // apparently ColorContext doesn't handle that anyway... + case DGM_TOKEN(fillClrLst): + return new ColorContext( *this, maColorEntry.maFillColor ); + case DGM_TOKEN(linClrLst): + return new ColorContext( *this, maColorEntry.maLineColor ); + case DGM_TOKEN(effectClrLst): + return new ColorContext( *this, maColorEntry.maEffectColor ); + case DGM_TOKEN(txFillClrLst): + return new ColorContext( *this, maColorEntry.maTextFillColor ); + case DGM_TOKEN(txLinClrLst): + return new ColorContext( *this, maColorEntry.maTextLineColor ); + case DGM_TOKEN(txEffectClrLst): + return new ColorContext( *this, maColorEntry.maTextEffectColor ); + } + break; + } } return 0; diff --git a/oox/source/ppt/pptshapegroupcontext.cxx b/oox/source/ppt/pptshapegroupcontext.cxx index e25bf6561d0b..0fd517f0c14c 100644 --- a/oox/source/ppt/pptshapegroupcontext.cxx +++ b/oox/source/ppt/pptshapegroupcontext.cxx @@ -132,11 +132,24 @@ void PPTShapeGroupContext::importExtDrawings( ) mpMasterShapePtr, mpGroupShapePtr, pGraphicShape ) ); + // Apply font color imported from color fragment + if( pGraphicShape->getFontRefColorForNodes().isUsed() ) + applyFontRefColor(mpGroupShapePtr, pGraphicShape->getFontRefColorForNodes()); } pGraphicShape = oox::drawingml::ShapePtr( (PPTShape *)NULL ); } } +void PPTShapeGroupContext::applyFontRefColor(oox::drawingml::ShapePtr pShape, const oox::drawingml::Color& rFontRefColor) +{ + pShape->getShapeStyleRefs()[XML_fontRef].maPhClr = rFontRefColor; + std::vector< oox::drawingml::ShapePtr >& vChildren = pShape->getChildren(); + for( std::vector< oox::drawingml::ShapePtr >::iterator aIter = vChildren.begin(); aIter != vChildren.end(); ++aIter ) + { + applyFontRefColor( *aIter ,rFontRefColor); + } +} + void PPTShapeGroupContext::onEndElement() { importExtDrawings(); |
