cssvalue: Add GtkCssShadowsValue

This is necessary because shadows get treated differently from other
lists when transitioning.
This commit is contained in:
Benjamin Otte
2012-04-03 15:15:24 +02:00
parent 8f240275fd
commit ac6d61f6bb
7 changed files with 310 additions and 45 deletions

View File

@ -31,7 +31,7 @@
#include "gtkcssarrayvalueprivate.h"
#include "gtkcssenumvalueprivate.h"
#include "gtkcssrgbavalueprivate.h"
#include "gtkcssshadowvalueprivate.h"
#include "gtkcssshadowsvalueprivate.h"
#include "gtkcsstypesprivate.h"
#include "gtkthemingengineprivate.h"
#include "gtkroundedboxprivate.h"
@ -2101,11 +2101,9 @@ gtk_theming_engine_render_layout (GtkThemingEngine *engine,
PangoLayout *layout)
{
GdkRGBA fg_color;
GtkCssValue *shadows;
GtkStateFlags flags;
gdouble progress;
gboolean running;
guint i;
cairo_save (cr);
flags = gtk_theming_engine_get_state (engine);
@ -2134,14 +2132,10 @@ gtk_theming_engine_render_layout (GtkThemingEngine *engine,
fg_color.alpha = CLAMP (fg_color.alpha + ((other_fg.alpha - fg_color.alpha) * progress), 0, 1);
}
shadows = _gtk_theming_engine_peek_property (engine, GTK_CSS_PROPERTY_TEXT_SHADOW);
prepare_context_for_layout (cr, x, y, layout);
for (i = 0; i < _gtk_css_array_value_get_n_values (shadows); i++)
{
_gtk_css_shadow_value_paint_layout (_gtk_css_array_value_get_nth (shadows, i), cr, layout);
}
_gtk_css_shadows_value_paint_layout (_gtk_theming_engine_peek_property (engine, GTK_CSS_PROPERTY_TEXT_SHADOW),
cr, layout);
gdk_cairo_set_source_rgba (cr, &fg_color);
pango_cairo_show_layout (cr, layout);
@ -2755,11 +2749,9 @@ render_spinner (GtkThemingEngine *engine,
gdouble height)
{
GtkStateFlags state;
GtkCssValue *shadows;
GdkRGBA color;
gdouble progress;
gdouble radius;
guint i;
state = gtk_theming_engine_get_state (engine);
@ -2769,18 +2761,14 @@ render_spinner (GtkThemingEngine *engine,
radius = MIN (width / 2, height / 2);
gtk_theming_engine_get_color (engine, state, &color);
shadows = _gtk_theming_engine_peek_property (engine, GTK_CSS_PROPERTY_ICON_SHADOW);
cairo_save (cr);
cairo_translate (cr, x + width / 2, y + height / 2);
for (i = 0; i < _gtk_css_array_value_get_n_values (shadows); i++)
{
_gtk_css_shadow_value_paint_spinner (_gtk_css_array_value_get_nth (shadows, i),
cr,
radius,
progress);
}
_gtk_css_shadows_value_paint_spinner (_gtk_theming_engine_peek_property (engine, GTK_CSS_PROPERTY_ICON_SHADOW),
cr,
radius,
progress);
_gtk_theming_engine_paint_spinner (cr,
radius,
@ -2947,18 +2935,11 @@ gtk_theming_engine_render_icon (GtkThemingEngine *engine,
gdouble x,
gdouble y)
{
GtkCssValue *shadows;
guint i;
cairo_save (cr);
gdk_cairo_set_source_pixbuf (cr, pixbuf, x, y);
shadows = _gtk_theming_engine_peek_property (engine, GTK_CSS_PROPERTY_ICON_SHADOW);
for (i = 0; i < _gtk_css_array_value_get_n_values (shadows); i++)
{
_gtk_css_shadow_value_paint_icon (_gtk_css_array_value_get_nth (shadows, i), cr);
}
_gtk_css_shadows_value_paint_icon (_gtk_theming_engine_peek_property (engine, GTK_CSS_PROPERTY_ICON_SHADOW), cr);
cairo_paint (cr);