summaryrefslogtreecommitdiff
path: root/oox
diff options
context:
space:
mode:
Diffstat (limited to 'oox')
-rw-r--r--oox/source/drawingml/diagram/diagram.cxx39
-rw-r--r--oox/source/drawingml/diagram/diagramfragmenthandler.cxx49
-rw-r--r--oox/source/ppt/pptshapegroupcontext.cxx13
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();