SVGPaintServerCairo.cpp [plain text]
#include "config.h"
#if ENABLE(SVG)
#include "SVGPaintServer.h"
#include "GraphicsContext.h"
#include "SVGPaintServer.h"
#include "RenderPath.h"
#include <cairo.h>
namespace WebCore {
void SVGPaintServer::draw(GraphicsContext*& context, const RenderObject* path, SVGPaintTargetType type) const
{
if (!setup(context, path, type))
return;
renderPath(context, path, type);
teardown(context, path, type);
}
void SVGPaintServer::teardown(GraphicsContext*&, const RenderObject*, SVGPaintTargetType, bool isPaintingText) const
{
}
void SVGPaintServer::renderPath(GraphicsContext*& context, const RenderObject* path, SVGPaintTargetType type) const
{
cairo_t* cr = context->platformContext();
const SVGRenderStyle* style = path->style()->svgStyle();
cairo_set_fill_rule(cr, style->fillRule() == RULE_EVENODD ? CAIRO_FILL_RULE_EVEN_ODD : CAIRO_FILL_RULE_WINDING);
if ((type & ApplyToFillTargetType) && style->hasFill())
cairo_fill_preserve(cr);
if ((type & ApplyToStrokeTargetType) && style->hasStroke())
cairo_stroke_preserve(cr);
cairo_new_path(cr);
}
}
#endif