1 /* Helpful functions when dealing with cairo in gtk engines */
25 CairoColor text_aa
[5];
34 CR_CORNER_TOPLEFT
= 1,
35 CR_CORNER_TOPRIGHT
= 2,
36 CR_CORNER_BOTTOMLEFT
= 4,
37 CR_CORNER_BOTTOMRIGHT
= 8,
44 CR_MIRROR_HORIZONTAL
= 1 << 0,
45 CR_MIRROR_VERTICAL
= 1 << 1
48 /*****************************/
50 /*****************************/
52 GE_DIRECTION_VERTICAL
,
53 GE_DIRECTION_HORIZONTAL
,
58 #if ((CAIRO_VERSION_MAJOR < 1) || ((CAIRO_VERSION_MAJOR == 1) && (CAIRO_VERSION_MINOR < 2)))
59 typedef enum _cairo_pattern_type
{
60 CAIRO_PATTERN_TYPE_SOLID
,
61 CAIRO_PATTERN_TYPE_SURFACE
,
62 CAIRO_PATTERN_TYPE_LINEAR
,
63 CAIRO_PATTERN_TYPE_RADIAL
64 } cairo_pattern_type_t
;
66 # define CAIRO_PATTERN_TYPE(pattern) pattern->type;
68 # define CAIRO_PATTERN_TYPE(pattern) cairo_pattern_get_type (pattern->handle);
73 #if ((CAIRO_VERSION_MAJOR < 1) || ((CAIRO_VERSION_MAJOR == 1) && (CAIRO_VERSION_MINOR < 2)))
74 cairo_pattern_type_t type
;
77 GeDirection translate
;
79 cairo_pattern_t
*handle
;
80 cairo_operator_t
operator;
83 GE_INTERNAL
void ge_hsb_from_color (const CairoColor
*color
, gdouble
*hue
, gdouble
*saturation
, gdouble
*brightness
);
84 GE_INTERNAL
void ge_color_from_hsb (gdouble hue
, gdouble saturation
, gdouble brightness
, CairoColor
*color
);
86 GE_INTERNAL
void ge_gdk_color_to_cairo (const GdkColor
* gc
, CairoColor
* cc
);
87 GE_INTERNAL
void ge_cairo_color_to_gtk (const CairoColor
*cc
, GdkColor
*c
);
88 GE_INTERNAL
void ge_gtk_style_to_cairo_color_cube (GtkStyle
* style
, CairoColorCube
*cube
);
90 GE_INTERNAL
void ge_shade_color(const CairoColor
*base
, gdouble shade_ratio
, CairoColor
*composite
);
91 GE_INTERNAL
void ge_saturate_color (const CairoColor
* base
, gdouble saturate_level
, CairoColor
*composite
);
92 GE_INTERNAL
void ge_mix_color (const CairoColor
*color1
, const CairoColor
*color2
, gdouble mix_factor
, CairoColor
*composite
);
94 GE_INTERNAL cairo_t
* ge_gdk_drawable_to_cairo (GdkDrawable
*window
, GdkRectangle
*area
);
95 GE_INTERNAL
void ge_cairo_set_color (cairo_t
*cr
, const CairoColor
*color
);
96 GE_INTERNAL
void ge_cairo_set_gdk_color_with_alpha (cairo_t
*cr
, const GdkColor
*color
, gdouble alpha
);
97 GE_INTERNAL
void ge_cairo_pattern_add_color_stop_color (cairo_pattern_t
*pattern
, gfloat offset
, const CairoColor
*color
);
98 GE_INTERNAL
void ge_cairo_pattern_add_color_stop_shade (cairo_pattern_t
*pattern
, gdouble offset
, const CairoColor
*color
, gdouble shade
);
100 GE_INTERNAL
void ge_cairo_rounded_corner (cairo_t
*cr
, double x
, double y
, double radius
, CairoCorners corner
);
101 GE_INTERNAL
void ge_cairo_rounded_rectangle (cairo_t
*cr
, double x
, double y
, double w
, double h
, double radius
, CairoCorners corners
);
103 GE_INTERNAL
void ge_cairo_stroke_rectangle (cairo_t
*cr
, double x
, double y
, double w
, double h
);
104 GE_INTERNAL
void ge_cairo_simple_border (cairo_t
*cr
, const CairoColor
* tl
, const CairoColor
* br
, gint x
, gint y
, gint width
, gint height
, gboolean topleft_overlap
);
106 GE_INTERNAL
void ge_cairo_line (cairo_t
*cr
, const CairoColor
*color
, gint x1
, gint y1
, gint x2
, gint y2
);
107 GE_INTERNAL
void ge_cairo_polygon (cairo_t
*cr
, const CairoColor
*color
, GdkPoint
*points
, gint npoints
);
109 GE_INTERNAL
void ge_cairo_mirror (cairo_t
*cr
, CairoMirror mirror
, gint
*x
, gint
*y
, gint
*width
, gint
*height
);
110 GE_INTERNAL
void ge_cairo_exchange_axis (cairo_t
*cr
, gint
*x
, gint
*y
, gint
*width
, gint
*height
);
112 GE_INTERNAL
void ge_cairo_pattern_fill(cairo_t
*canvas
, CairoPattern
*pattern
, gint x
, gint y
, gint width
, gint height
);
114 GE_INTERNAL CairoPattern
*ge_cairo_color_pattern(CairoColor
*base
);
115 GE_INTERNAL CairoPattern
*ge_cairo_pixbuf_pattern(GdkPixbuf
*pixbuf
);
116 GE_INTERNAL CairoPattern
*ge_cairo_pixmap_pattern(GdkPixmap
*pixmap
);
117 GE_INTERNAL CairoPattern
*ge_cairo_linear_shade_gradient_pattern(CairoColor
*base
, gdouble shade1
, gdouble shade2
, gboolean vertical
);
118 GE_INTERNAL
void ge_cairo_pattern_destroy(CairoPattern
*pattern
);