KCanvasMarker *SVGMarkerElement::canvasResource() { if(!m_marker) m_marker = static_cast<KCanvasMarker *>(renderingDevice()->createResource(RS_MARKER)); m_marker->setMarker(renderer()); // Spec: If the attribute is not specified, the effect is as if a // value of "0" were specified. if(!m_orientType) { SVGAngle *angle = SVGSVGElement::createSVGAngle(); angle->setValueAsString(String("0").impl()); setOrientToAngle(angle); } if(orientType()->baseVal() == SVG_MARKER_ORIENT_ANGLE) m_marker->setAngle(orientAngle()->baseVal()->value()); else m_marker->setAutoAngle(); m_marker->setRef(refX()->baseVal()->value(), refY()->baseVal()->value()); m_marker->setUseStrokeWidth(markerUnits()->baseVal() == SVG_MARKERUNITS_STROKEWIDTH); double w = markerWidth()->baseVal()->value(); double h = markerHeight()->baseVal()->value(); RefPtr<SVGMatrix> viewBox = viewBoxToViewTransform(w, h); m_marker->setScale(viewBox->matrix().m11(), viewBox->matrix().m22()); return m_marker; }
SVGResource *SVGMarkerElement::canvasResource() { if (!m_marker) { m_marker = SVGResourceMarker::create(); } m_marker->setMarker(static_cast<RenderSVGViewportContainer *>(renderer())); // Spec: If the attribute is not specified, the effect is as if a // value of "0" were specified. if (!m_orientType) { setOrientToAngle(SVGSVGElement::createSVGAngle()); } if (orientType() == SVG_MARKER_ORIENT_ANGLE) { m_marker->setAngle(orientAngle()->value()); } else { m_marker->setAutoAngle(); } m_marker->setRef(refX().value(), refY().value()); m_marker->setUseStrokeWidth(markerUnits() == SVG_MARKERUNITS_STROKEWIDTH); return m_marker.get(); }
void SVGMarkerElement::setOrientToAngle(SVGAngle *angle) { orientType()->setBaseVal(SVG_MARKER_ORIENT_ANGLE); orientAngle()->setBaseVal(angle); }