@@ -440,33 +440,35 @@ static unique_ptr<SVGElement> create_path_element (XMLElement *srcPathElement, b
440440}
441441
442442
443+ static const char * attribute_value (const string &attr, XMLElement *elem) {
444+ const char *val = elem->getAttributeValue (attr);
445+ if (val == nullptr ) {
446+ if (XMLElement *parent = elem->parent ()->toElement ())
447+ val = parent->getAttributeValue (attr);
448+ }
449+ return val;
450+ }
451+
452+
443453void PDFHandler::doFillPath (XMLElement *trcFillPathElement) {
444454 if (auto pathElement = create_path_element (trcFillPathElement, false )) {
445- if (XMLElement *parent = trcFillPathElement->parent ()->toElement ()) {
446- if (parent->name () == " group" ) {
447- if (const char *valstr = parent->getAttributeValue (" blendmode" ))
448- pathElement->setFillOpacity (Opacity::blendMode (valstr));
449- if (const char *valstr = parent->getAttributeValue (" alpha" ))
450- pathElement->setFillOpacity (OpacityAlpha (parse_value<double >(valstr)));
451- }
452- }
455+ if (const char *valstr = attribute_value (" blendmode" , trcFillPathElement))
456+ pathElement->setFillOpacity (Opacity::blendMode (valstr));
457+ if (const char *valstr = attribute_value (" alpha" , trcFillPathElement))
458+ pathElement->setFillOpacity (OpacityAlpha (parse_value<double >(valstr)));
453459 _svg->appendToPage (std::move (pathElement));
454460 }
455461}
456462
457463
458464void PDFHandler::doStrokePath (XMLElement *trcStrokePathElement) {
459465 if (auto pathElement = create_path_element (trcStrokePathElement, true )) {
460- if (XMLElement *parent = trcStrokePathElement->parent ()->toElement ()) {
461- if (parent->name () == " group" ) {
462- Opacity opacity;
463- if (const char *valstr = parent->getAttributeValue (" blendmode" ))
464- opacity.setBlendMode (Opacity::blendMode (valstr));
465- if (const char *valstr = parent->getAttributeValue (" alpha" ))
466- opacity.strokealpha ().setConstAlpha (parse_value<double >(valstr));
467- pathElement->setStrokeOpacity (opacity);
468- }
469- }
466+ Opacity opacity;
467+ if (const char *valstr = attribute_value (" blendmode" , trcStrokePathElement))
468+ opacity.setBlendMode (Opacity::blendMode (valstr));
469+ if (const char *valstr = attribute_value (" alpha" , trcStrokePathElement))
470+ opacity.strokealpha ().setConstAlpha (parse_value<double >(valstr));
471+ pathElement->setStrokeOpacity (opacity);
470472 _svg->appendToPage (std::move (pathElement));
471473 }
472474}
0 commit comments