10#ifndef __UTILS_CAIRO_H__
11#define __UTILS_CAIRO_H__
13#include "common/utils/pango.h"
14#include "gui/backend/gtk_widgets/gtk_wrapper.h"
27#define Z_CAIRO_FONT "Bold 9"
32#define Z_CAIRO_TEXT_PADDING 2
35z_cairo_draw_horizontal_line (
44z_cairo_draw_vertical_line (
56z_cairo_rounded_rectangle (
65 double radius = corner_radius / aspect;
66 double degrees = G_PI / 180.0;
68 cairo_new_sub_path (cr);
70 cr, x + width - radius, y + radius, radius, -90 * degrees, 0 * degrees);
72 cr, x + width - radius, y + height - radius, radius, 0 * degrees,
75 cr, x + radius, y + height - radius, radius, 90 * degrees, 180 * degrees);
76 cairo_arc (cr, x + radius, y + radius, radius, 180 * degrees, 270 * degrees);
77 cairo_close_path (cr);
80#define z_cairo_get_text_extents_for_widget( \
81 _widget, _layout, _text, _width, _height) \
82 _z_cairo_get_text_extents_for_widget ( \
83 (GtkWidget *) _widget, _layout, _text, _width, _height)
106#define z_cairo_draw_text(cr, widget, layout, text) \
107 z_cairo_draw_text_full ( \
108 cr, widget, layout, text, Z_CAIRO_TEXT_PADDING, Z_CAIRO_TEXT_PADDING)
118 PangoLayout * layout,
127z_cairo_diamond (cairo_t * cr,
double x,
double y,
double width,
double height)
129 cairo_move_to (cr, x, height / 2);
130 cairo_line_to (cr, width / 2, y);
131 cairo_line_to (cr, width, height / 2);
132 cairo_line_to (cr, width / 2, height);
133 cairo_line_to (cr, x, height / 2);
134 cairo_close_path (cr);
145 PangoEllipsizeMode ellipsize_mode,
146 int ellipsize_padding);
155 PangoFontDescription * descr,
156 PangoEllipsizeMode ellipsize_mode,
157 int ellipsize_padding);
166z_cairo_set_source_color (cairo_t * cr, Color color);
PangoLayoutUniquePtr z_cairo_create_pango_layout_from_string(GtkWidget *widget, const char *font, PangoEllipsizeMode ellipsize_mode, int ellipsize_padding)
Creates a PangoLayout to be cached in widgets based on the given settings.
void z_cairo_draw_text_full(cairo_t *cr, GtkWidget *widget, PangoLayout *layout, const char *text, int start_x, int start_y)
Draws the given text using the given font starting at the given position.
PangoLayoutUniquePtr z_cairo_create_pango_layout_from_description(GtkWidget *widget, PangoFontDescription *descr, PangoEllipsizeMode ellipsize_mode, int ellipsize_padding)
Creates a PangoLayout to be cached in widgets based on the given settings.
void _z_cairo_get_text_extents_for_widget(GtkWidget *widget, PangoLayout *layout, const char *text, int *width, int *height)
Gets the width of the given text in pixels for the given widget.
PangoLayout * z_cairo_create_default_pango_layout(GtkWidget *widget)
Creates a PangoLayout with default settings.