summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2015-01-17 05:54:36 +0100
committerBenjamin Otte <otte@redhat.com>2015-01-20 01:23:19 +0100
commitd25b4105d61243dc5943dc5c6d649b123d81b86f (patch)
tree705f6de0df8cc92b9095713b0daf2d42ef317ad4
parentd0a12d477e965958c3943a565485ad25789136e4 (diff)
downloadgtk+-d25b4105d61243dc5943dc5c6d649b123d81b86f.tar.gz
render: Take a GtkCssStyle for rendering frames
... and move the whole function into gtkthemingbackground.c
-rw-r--r--gtk/gtkrender.c192
-rw-r--r--gtk/gtkthemingbackground.c14
-rw-r--r--gtk/gtkthemingbackgroundprivate.h17
3 files changed, 107 insertions, 116 deletions
diff --git a/gtk/gtkrender.c b/gtk/gtkrender.c
index db81b0efe6..21c549b6e9 100644
--- a/gtk/gtkrender.c
+++ b/gtk/gtkrender.c
@@ -492,21 +492,6 @@ color_shade (const GdkRGBA *color,
_gdk_rgba_init_from_hsla (color_return, &hsla);
}
-static void
-gtk_do_render_background (GtkStyleContext *context,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- gdouble width,
- gdouble height)
-{
- gtk_theming_background_render (gtk_style_context_lookup_style (context),
- cr,
- x, y,
- width, height,
- gtk_style_context_get_junction_sides (context));
-}
-
/**
* gtk_render_background:
* @context: a #GtkStyleContext
@@ -542,7 +527,9 @@ gtk_render_background (GtkStyleContext *context,
cairo_save (cr);
cairo_new_path (cr);
- gtk_do_render_background (context, cr, x, y, width, height);
+ gtk_css_style_render_background (gtk_style_context_lookup_style (context),
+ cr, x, y, width, height,
+ gtk_style_context_get_junction_sides (context));
cairo_restore (cr);
}
@@ -892,24 +879,24 @@ render_border (cairo_t *cr,
}
static void
-render_frame_internal (GtkStyleContext *context,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- gdouble width,
- gdouble height,
- guint hidden_side,
- GtkJunctionSides junction)
+gtk_css_style_render_frame (GtkCssStyle *style,
+ cairo_t *cr,
+ gdouble x,
+ gdouble y,
+ gdouble width,
+ gdouble height,
+ guint hidden_side,
+ GtkJunctionSides junction)
{
GtkBorderImage border_image;
double border_width[4];
- border_width[0] = _gtk_css_number_value_get (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_BORDER_TOP_WIDTH), 100);
- border_width[1] = _gtk_css_number_value_get (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_BORDER_RIGHT_WIDTH), 100);
- border_width[2] = _gtk_css_number_value_get (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_BORDER_BOTTOM_WIDTH), 100);
- border_width[3] = _gtk_css_number_value_get (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_BORDER_LEFT_WIDTH), 100);
+ border_width[0] = _gtk_css_number_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_BORDER_TOP_WIDTH), 100);
+ border_width[1] = _gtk_css_number_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_BORDER_RIGHT_WIDTH), 100);
+ border_width[2] = _gtk_css_number_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_BORDER_BOTTOM_WIDTH), 100);
+ border_width[3] = _gtk_css_number_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_BORDER_LEFT_WIDTH), 100);
- if (_gtk_border_image_init (&border_image, gtk_style_context_lookup_style (context)))
+ if (_gtk_border_image_init (&border_image, style))
{
_gtk_border_image_render (&border_image, border_width, cr, x, y, width, height);
}
@@ -926,42 +913,25 @@ render_frame_internal (GtkStyleContext *context,
border_width[3] == 0)
return;
- border_style[0] = _gtk_css_border_style_value_get (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_BORDER_TOP_STYLE));
- border_style[1] = _gtk_css_border_style_value_get (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_BORDER_RIGHT_STYLE));
- border_style[2] = _gtk_css_border_style_value_get (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_BORDER_BOTTOM_STYLE));
- border_style[3] = _gtk_css_border_style_value_get (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_BORDER_LEFT_STYLE));
+ border_style[0] = _gtk_css_border_style_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_BORDER_TOP_STYLE));
+ border_style[1] = _gtk_css_border_style_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_BORDER_RIGHT_STYLE));
+ border_style[2] = _gtk_css_border_style_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_BORDER_BOTTOM_STYLE));
+ border_style[3] = _gtk_css_border_style_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_BORDER_LEFT_STYLE));
hide_border_sides (border_width, border_style, hidden_side);
- colors[0] = *_gtk_css_rgba_value_get_rgba (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_BORDER_TOP_COLOR));
- colors[1] = *_gtk_css_rgba_value_get_rgba (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_BORDER_RIGHT_COLOR));
- colors[2] = *_gtk_css_rgba_value_get_rgba (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_BORDER_BOTTOM_COLOR));
- colors[3] = *_gtk_css_rgba_value_get_rgba (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_BORDER_LEFT_COLOR));
+ colors[0] = *_gtk_css_rgba_value_get_rgba (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_BORDER_TOP_COLOR));
+ colors[1] = *_gtk_css_rgba_value_get_rgba (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_BORDER_RIGHT_COLOR));
+ colors[2] = *_gtk_css_rgba_value_get_rgba (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_BORDER_BOTTOM_COLOR));
+ colors[3] = *_gtk_css_rgba_value_get_rgba (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_BORDER_LEFT_COLOR));
_gtk_rounded_box_init_rect (&border_box, x, y, width, height);
- _gtk_rounded_box_apply_border_radius_for_style (&border_box, gtk_style_context_lookup_style (context), junction);
+ _gtk_rounded_box_apply_border_radius_for_style (&border_box, style, junction);
render_border (cr, &border_box, border_width, hidden_side, colors, border_style);
}
}
-static void
-gtk_do_render_frame (GtkStyleContext *context,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- gdouble width,
- gdouble height)
-{
- GtkJunctionSides junction;
-
- junction = gtk_style_context_get_junction_sides (context);
-
- render_frame_internal (context, cr,
- x, y, width, height,
- 0, junction);
-}
-
/**
* gtk_render_frame:
* @context: a #GtkStyleContext
@@ -997,7 +967,12 @@ gtk_render_frame (GtkStyleContext *context,
cairo_save (cr);
cairo_new_path (cr);
- gtk_do_render_frame (context, cr, x, y, width, height);
+ gtk_css_style_render_frame (gtk_style_context_lookup_style (context),
+ cr,
+ x, y, width, height,
+ 0,
+ gtk_style_context_get_junction_sides (context));
+
cairo_restore (cr);
}
@@ -1376,8 +1351,21 @@ gtk_do_render_slider (GtkStyleContext *context,
gdouble height,
GtkOrientation orientation)
{
- gtk_do_render_background (context, cr, x, y, width, height);
- gtk_do_render_frame (context, cr, x, y, width, height);
+ GtkCssStyle *style;
+ GtkJunctionSides junction;
+
+ style = gtk_style_context_lookup_style (context);
+ junction = gtk_style_context_get_junction_sides (context);
+
+ gtk_css_style_render_background (style,
+ cr,
+ x, y, width, height,
+ junction);
+ gtk_css_style_render_frame (style,
+ cr,
+ x, y, width, height,
+ 0,
+ junction);
}
/**
@@ -1424,32 +1412,30 @@ gtk_render_slider (GtkStyleContext *context,
}
static void
-gtk_do_render_frame_gap (GtkStyleContext *context,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- gdouble width,
- gdouble height,
- GtkPositionType gap_side,
- gdouble xy0_gap,
- gdouble xy1_gap)
+gtk_css_style_render_frame_gap (GtkCssStyle *style,
+ cairo_t *cr,
+ gdouble x,
+ gdouble y,
+ gdouble width,
+ gdouble height,
+ GtkPositionType gap_side,
+ gdouble xy0_gap,
+ gdouble xy1_gap,
+ GtkJunctionSides junction)
{
- GtkJunctionSides junction;
gint border_width;
GtkCssValue *corner[4];
gdouble x0, y0, x1, y1, xc = 0.0, yc = 0.0, wc = 0.0, hc = 0.0;
GtkBorder border;
- junction = gtk_style_context_get_junction_sides (context);
-
- border.top = _gtk_css_number_value_get (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_BORDER_TOP_WIDTH), 100);
- border.right = _gtk_css_number_value_get (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_BORDER_RIGHT_WIDTH), 100);
- border.bottom = _gtk_css_number_value_get (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_BORDER_BOTTOM_WIDTH), 100);
- border.left = _gtk_css_number_value_get (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_BORDER_LEFT_WIDTH), 100);
- corner[GTK_CSS_TOP_LEFT] = _gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_BORDER_TOP_LEFT_RADIUS);
- corner[GTK_CSS_TOP_RIGHT] = _gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_BORDER_TOP_RIGHT_RADIUS);
- corner[GTK_CSS_BOTTOM_LEFT] = _gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_BORDER_BOTTOM_LEFT_RADIUS);
- corner[GTK_CSS_BOTTOM_RIGHT] = _gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_BORDER_BOTTOM_RIGHT_RADIUS);
+ border.top = _gtk_css_number_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_BORDER_TOP_WIDTH), 100);
+ border.right = _gtk_css_number_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_BORDER_RIGHT_WIDTH), 100);
+ border.bottom = _gtk_css_number_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_BORDER_BOTTOM_WIDTH), 100);
+ border.left = _gtk_css_number_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_BORDER_LEFT_WIDTH), 100);
+ corner[GTK_CSS_TOP_LEFT] = gtk_css_style_get_value (style, GTK_CSS_PROPERTY_BORDER_TOP_LEFT_RADIUS);
+ corner[GTK_CSS_TOP_RIGHT] = gtk_css_style_get_value (style, GTK_CSS_PROPERTY_BORDER_TOP_RIGHT_RADIUS);
+ corner[GTK_CSS_BOTTOM_LEFT] = gtk_css_style_get_value (style, GTK_CSS_PROPERTY_BORDER_BOTTOM_LEFT_RADIUS);
+ corner[GTK_CSS_BOTTOM_RIGHT] = gtk_css_style_get_value (style, GTK_CSS_PROPERTY_BORDER_BOTTOM_RIGHT_RADIUS);
border_width = MIN (MIN (border.top, border.bottom),
MIN (border.left, border.right));
@@ -1518,9 +1504,9 @@ gtk_do_render_frame_gap (GtkStyleContext *context,
cairo_rectangle (cr, x0, yc + hc, x1 - x0, y1 - (yc + hc));
cairo_clip (cr);
- render_frame_internal (context, cr,
- x, y, width, height,
- 0, junction);
+ gtk_css_style_render_frame (style, cr,
+ x, y, width, height,
+ 0, junction);
cairo_restore (cr);
}
@@ -1576,21 +1562,24 @@ gtk_render_frame_gap (GtkStyleContext *context,
cairo_save (cr);
cairo_new_path (cr);
- gtk_do_render_frame_gap (context, cr,
- x, y, width, height, gap_side,
- xy0_gap, xy1_gap);
+ gtk_css_style_render_frame_gap (gtk_style_context_lookup_style (context),
+ cr,
+ x, y, width, height, gap_side,
+ xy0_gap, xy1_gap,
+ gtk_style_context_get_junction_sides (context));
+
cairo_restore (cr);
}
static void
-gtk_do_render_extension (GtkStyleContext *context,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- gdouble width,
- gdouble height,
- GtkPositionType gap_side)
+gtk_css_style_render_extension (GtkCssStyle *style,
+ cairo_t *cr,
+ gdouble x,
+ gdouble y,
+ gdouble width,
+ gdouble height,
+ GtkPositionType gap_side)
{
GtkJunctionSides junction = 0;
guint hidden_side = 0;
@@ -1615,15 +1604,15 @@ gtk_do_render_extension (GtkStyleContext *context,
break;
}
- gtk_theming_background_render (gtk_style_context_lookup_style (context),
- cr,
- x, y,
- width, height,
- junction);
+ gtk_css_style_render_background (style,
+ cr,
+ x, y,
+ width, height,
+ junction);
- render_frame_internal (context, cr,
- x, y, width, height,
- hidden_side, junction);
+ gtk_css_style_render_frame (style, cr,
+ x, y, width, height,
+ hidden_side, junction);
}
/**
@@ -1664,7 +1653,10 @@ gtk_render_extension (GtkStyleContext *context,
cairo_save (cr);
cairo_new_path (cr);
- gtk_do_render_extension (context, cr, x, y, width, height, gap_side);
+ gtk_css_style_render_extension (gtk_style_context_lookup_style (context),
+ cr,
+ x, y, width, height,
+ gap_side);
cairo_restore (cr);
}
diff --git a/gtk/gtkthemingbackground.c b/gtk/gtkthemingbackground.c
index 6a9bc75a38..55f584e355 100644
--- a/gtk/gtkthemingbackground.c
+++ b/gtk/gtkthemingbackground.c
@@ -292,13 +292,13 @@ _gtk_theming_background_init_style (GtkThemingBackground *bg,
}
void
-gtk_theming_background_render (GtkCssStyle *style,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- gdouble width,
- gdouble height,
- GtkJunctionSides junction)
+gtk_css_style_render_background (GtkCssStyle *style,
+ cairo_t *cr,
+ gdouble x,
+ gdouble y,
+ gdouble width,
+ gdouble height,
+ GtkJunctionSides junction)
{
GtkThemingBackground bg;
gint idx;
diff --git a/gtk/gtkthemingbackgroundprivate.h b/gtk/gtkthemingbackgroundprivate.h
index df29fa4c87..b0eae96954 100644
--- a/gtk/gtkthemingbackgroundprivate.h
+++ b/gtk/gtkthemingbackgroundprivate.h
@@ -23,19 +23,18 @@
#include <glib-object.h>
#include <cairo.h>
-#include "gtkcssimageprivate.h"
-#include "gtkroundedboxprivate.h"
+#include "gtkcsstypesprivate.h"
#include "gtktypes.h"
G_BEGIN_DECLS
-void gtk_theming_background_render (GtkCssStyle *style,
- cairo_t *cr,
- gdouble x,
- gdouble y,
- gdouble width,
- gdouble height,
- GtkJunctionSides junction);
+void gtk_css_style_render_background (GtkCssStyle *style,
+ cairo_t *cr,
+ gdouble x,
+ gdouble y,
+ gdouble width,
+ gdouble height,
+ GtkJunctionSides junction);
G_END_DECLS