drawing-context.h revision d2e42b9425ccd4c2d4c20c2217455da177035e48
f30a3d27abf3baff3c4cc30512d9dbf19224a65ajaspervdg * Cairo drawing context with Inkscape extensions.
f30a3d27abf3baff3c4cc30512d9dbf19224a65ajaspervdg * Krzysztof Kosiński <tweenk.pl@gmail.com>
f30a3d27abf3baff3c4cc30512d9dbf19224a65ajaspervdg * Copyright (C) 2011 Authors
f30a3d27abf3baff3c4cc30512d9dbf19224a65ajaspervdg * Released under GNU GPL, read the file 'COPYING' for more information
f30a3d27abf3baff3c4cc30512d9dbf19224a65ajaspervdgtypedef unsigned int guint32;
f30a3d27abf3baff3c4cc30512d9dbf19224a65ajaspervdg DrawingContext(cairo_t *ct, Geom::Point const &origin);
f30a3d27abf3baff3c4cc30512d9dbf19224a65ajaspervdg DrawingContext(cairo_surface_t *surface, Geom::Point const &origin);
f30a3d27abf3baff3c4cc30512d9dbf19224a65ajaspervdg void pushAlphaGroup() { cairo_push_group_with_content(_ct, CAIRO_CONTENT_ALPHA); }
f30a3d27abf3baff3c4cc30512d9dbf19224a65ajaspervdg void popGroupToSource() { cairo_pop_group_to_source(_ct); }
dc401b1fae917f8655e605efcd95904ebedd79e3Krzysztof Kosiński void translate(Geom::Point const &t) { cairo_translate(_ct, t[Geom::X], t[Geom::Y]); } // todo: take Translate
f30a3d27abf3baff3c4cc30512d9dbf19224a65ajaspervdg void translate(double dx, double dy) { cairo_translate(_ct, dx, dy); }
f30a3d27abf3baff3c4cc30512d9dbf19224a65ajaspervdg void scale(Geom::Scale const &s) { cairo_scale(_ct, s[Geom::X], s[Geom::Y]); }
f30a3d27abf3baff3c4cc30512d9dbf19224a65ajaspervdg void scale(double sx, double sy) { cairo_scale(_ct, sx, sy); }
f30a3d27abf3baff3c4cc30512d9dbf19224a65ajaspervdg void moveTo(Geom::Point const &p) { cairo_move_to(_ct, p[Geom::X], p[Geom::Y]); }
f30a3d27abf3baff3c4cc30512d9dbf19224a65ajaspervdg void lineTo(Geom::Point const &p) { cairo_line_to(_ct, p[Geom::X], p[Geom::Y]); }
f30a3d27abf3baff3c4cc30512d9dbf19224a65ajaspervdg void curveTo(Geom::Point const &p1, Geom::Point const &p2, Geom::Point const &p3) {
f30a3d27abf3baff3c4cc30512d9dbf19224a65ajaspervdg cairo_curve_to(_ct, p1[Geom::X], p1[Geom::Y], p2[Geom::X], p2[Geom::Y], p3[Geom::X], p3[Geom::Y]);
dc401b1fae917f8655e605efcd95904ebedd79e3Krzysztof Kosiński void arc(Geom::Point const ¢er, double radius, Geom::AngleInterval const &angle);
f30a3d27abf3baff3c4cc30512d9dbf19224a65ajaspervdg cairo_rectangle(_ct, r.left(), r.top(), r.width(), r.height());
f30a3d27abf3baff3c4cc30512d9dbf19224a65ajaspervdg cairo_rectangle(_ct, r.left(), r.top(), r.width(), r.height());
f30a3d27abf3baff3c4cc30512d9dbf19224a65ajaspervdg // Used in drawing-text.cpp to overwrite glyphs, which have the opposite path rotation as a regular rect
1bc4dd6dd6f59d7b59bc923ea565ebd1321684aejohanengelen void strokePreserve() { cairo_stroke_preserve(_ct); }
f30a3d27abf3baff3c4cc30512d9dbf19224a65ajaspervdg void setLineWidth(double w) { cairo_set_line_width(_ct, w); }
f30a3d27abf3baff3c4cc30512d9dbf19224a65ajaspervdg void setLineCap(cairo_line_cap_t cap) { cairo_set_line_cap(_ct, cap); }
fe9eeff08e8901ae06ce3b24392a2ce3ec57c131jaspervdg void setLineJoin(cairo_line_join_t join) { cairo_set_line_join(_ct, join); }
fe9eeff08e8901ae06ce3b24392a2ce3ec57c131jaspervdg void setMiterLimit(double miter) { cairo_set_miter_limit(_ct, miter); }
f30a3d27abf3baff3c4cc30512d9dbf19224a65ajaspervdg void setFillRule(cairo_fill_rule_t rule) { cairo_set_fill_rule(_ct, rule); }
f30a3d27abf3baff3c4cc30512d9dbf19224a65ajaspervdg void setOperator(cairo_operator_t op) { cairo_set_operator(_ct, op); }
f30a3d27abf3baff3c4cc30512d9dbf19224a65ajaspervdg void setTolerance(double tol) { cairo_set_tolerance(_ct, tol); }
f30a3d27abf3baff3c4cc30512d9dbf19224a65ajaspervdg void setSource(cairo_pattern_t *source) { cairo_set_source(_ct, source); }
f30a3d27abf3baff3c4cc30512d9dbf19224a65ajaspervdg void setSource(cairo_surface_t *surface, double x, double y) {
f30a3d27abf3baff3c4cc30512d9dbf19224a65ajaspervdg void setSource(double r, double g, double b, double a = 1.0) {
dc401b1fae917f8655e605efcd95904ebedd79e3Krzysztof Kosiński cairo_pattern_set_filter(cairo_get_source(_ct), filter);
f30a3d27abf3baff3c4cc30512d9dbf19224a65ajaspervdg cairo_surface_t *rawTarget() { return cairo_get_group_target(_ct); }
29c9448f89266af28fee59a311378b94d562de45johanengelen DrawingSurface *surface() { return _surface; } // Needed to find scale in drawing-item.cpp
f30a3d27abf3baff3c4cc30512d9dbf19224a65ajaspervdg DrawingContext(cairo_t *ct, DrawingSurface *surface, bool destroy);
dc401b1fae917f8655e605efcd95904ebedd79e3Krzysztof Kosiński} // end namespace Inkscape
f30a3d27abf3baff3c4cc30512d9dbf19224a65ajaspervdg#endif // !SEEN_INKSCAPE_DISPLAY_DRAWING_ITEM_H
f30a3d27abf3baff3c4cc30512d9dbf19224a65ajaspervdg Local Variables:
f30a3d27abf3baff3c4cc30512d9dbf19224a65ajaspervdg c-file-style:"stroustrup"
f30a3d27abf3baff3c4cc30512d9dbf19224a65ajaspervdg c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
f30a3d27abf3baff3c4cc30512d9dbf19224a65ajaspervdg indent-tabs-mode:nil
f30a3d27abf3baff3c4cc30512d9dbf19224a65ajaspervdg fill-column:99
f30a3d27abf3baff3c4cc30512d9dbf19224a65ajaspervdg// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 :