void GraphicsContext::strokePath(const Path& path) { if (paintingDisabled() || path.isEmpty()) return; cairo_t* cr = platformContext()->cr(); setPathOnCairoContext(cr, path.platformPath()->context()); shadowAndStrokeCurrentCairoPath(this); }
void GraphicsContext::fillPath(const Path& path) { if (paintingDisabled()) return; cairo_t* cr = platformContext()->cr(); setPathOnCairoContext(cr, path.platformPath()->context()); shadowAndFillCurrentCairoPath(this); }
void GraphicsContext::clipPath(const Path& path, WindRule clipRule) { if (paintingDisabled()) return; cairo_t* cr = platformContext()->cr(); setPathOnCairoContext(cr, path.platformPath()->context()); cairo_set_fill_rule(cr, clipRule == RULE_EVENODD ? CAIRO_FILL_RULE_EVEN_ODD : CAIRO_FILL_RULE_WINDING); cairo_clip(cr); }
void GraphicsContext::fillRectWithRoundedHole(const IntRect& rect, const RoundedRect& roundedHoleRect, const Color& color, ColorSpace) { if (paintingDisabled() || !color.isValid()) return; if (this->mustUseShadowBlur()) platformContext()->shadowBlur().drawInsetShadow(this, rect, roundedHoleRect.rect(), roundedHoleRect.radii()); Path path; path.addRect(rect); if (!roundedHoleRect.radii().isZero()) path.addRoundedRect(roundedHoleRect); else path.addRect(roundedHoleRect.rect()); cairo_t* cr = platformContext()->cr(); cairo_save(cr); setPathOnCairoContext(platformContext()->cr(), path.platformPath()->context()); fillCurrentCairoPath(this); cairo_restore(cr); }