diff --git a/particle.c b/particle.c index bb9d15e..514740b 100644 --- a/particle.c +++ b/particle.c @@ -40,6 +40,16 @@ exposable_default_destroy(struct exposable *exposable) free(exposable); } +void +exposable_render_deco(const struct exposable *exposable, + cairo_t *cr, int x, int y, int height) +{ + const struct deco *deco = exposable->particle->deco; + if (deco != NULL) + deco->expose(deco, cr, x, y, exposable->width, height); + +} + void exposable_default_on_mouse(struct exposable *exposable, struct bar *bar, enum mouse_event event, int x, int y) diff --git a/particle.h b/particle.h index 4d5c2db..bab485b 100644 --- a/particle.h +++ b/particle.h @@ -50,6 +50,9 @@ void particle_default_destroy(struct particle *particle); struct exposable *exposable_common_new( const struct particle *particle, const char *on_click); void exposable_default_destroy(struct exposable *exposable); +void exposable_render_deco( + const struct exposable *exposable, cairo_t *cr, int x, int y, int height); + void exposable_default_on_mouse( struct exposable *exposable, struct bar *bar, enum mouse_event event, int x, int y); diff --git a/particles/empty.c b/particles/empty.c index 3694151..0ec888e 100644 --- a/particles/empty.c +++ b/particles/empty.c @@ -13,9 +13,7 @@ begin_expose(struct exposable *exposable, cairo_t *cr) static void expose(const struct exposable *exposable, cairo_t *cr, int x, int y, int height) { - const struct deco *deco = exposable->particle->deco; - if (deco != NULL) - deco->expose(deco, cr, x, y, exposable->width, height); + exposable_render_deco(exposable, cr, x, y, height); } static struct exposable * diff --git a/particles/list.c b/particles/list.c index e92a9b6..f37c2c2 100644 --- a/particles/list.c +++ b/particles/list.c @@ -56,9 +56,7 @@ expose(const struct exposable *exposable, cairo_t *cr, int x, int y, int height) { const struct eprivate *e = exposable->private; - const struct deco *deco = exposable->particle->deco; - if (deco != NULL) - deco->expose(deco, cr, x, y, exposable->width, height); + exposable_render_deco(exposable, cr, x, y, height); int left_margin = exposable->particle->left_margin; int left_spacing = e->left_spacing; diff --git a/particles/map.c b/particles/map.c index 34d65ea..242a7b8 100644 --- a/particles/map.c +++ b/particles/map.c @@ -41,11 +41,9 @@ begin_expose(struct exposable *exposable, cairo_t *cr) static void expose(const struct exposable *exposable, cairo_t *cr, int x, int y, int height) { - const struct deco *deco = exposable->particle->deco; - if (deco != NULL) - deco->expose(deco, cr, x, y, exposable->width, height); - struct eprivate *e = exposable->private; + + exposable_render_deco(exposable, cr, x, y, height); e->exposable->expose( e->exposable, cr, x + exposable->particle->left_margin, y, height); } diff --git a/particles/progress_bar.c b/particles/progress_bar.c index 21b4a8a..1a40db0 100644 --- a/particles/progress_bar.c +++ b/particles/progress_bar.c @@ -72,9 +72,7 @@ expose(const struct exposable *exposable, cairo_t *cr, int x, int y, int height) { const struct eprivate *e = exposable->private; - const struct deco *deco = exposable->particle->deco; - if (deco != NULL) - deco->expose(deco, cr, x, y, exposable->width, height); + exposable_render_deco(exposable, cr, x, y, height); x += exposable->particle->left_margin; for (size_t i = 0; i < e->count; i++) { diff --git a/particles/ramp.c b/particles/ramp.c index fa4268a..4a746b1 100644 --- a/particles/ramp.c +++ b/particles/ramp.c @@ -42,11 +42,9 @@ begin_expose(struct exposable *exposable, cairo_t *cr) static void expose(const struct exposable *exposable, cairo_t *cr, int x, int y, int height) { - const struct deco *deco = exposable->particle->deco; - if (deco != NULL) - deco->expose(deco, cr, x, y, exposable->width, height); - struct eprivate *e = exposable->private; + + exposable_render_deco(exposable, cr, x, y, height); e->exposable->expose( e->exposable, cr, x + exposable->particle->left_margin, y, height); } diff --git a/particles/string.c b/particles/string.c index 6f3b099..b1b3daa 100644 --- a/particles/string.c +++ b/particles/string.c @@ -57,9 +57,7 @@ expose(const struct exposable *exposable, cairo_t *cr, int x, int y, int height) e->text, strlen(e->text), &glyphs, &num_glyphs, &clusters, &num_clusters, &cluster_flags); - const struct deco *deco = exposable->particle->deco; - if (deco != NULL) - deco->expose(deco, cr, x, y, exposable->width, height); + exposable_render_deco(exposable, cr, x, y, height); cairo_set_source_rgba(cr, e->foreground.red,