summaryrefslogtreecommitdiff
path: root/src/render.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/render.c')
-rw-r--r--src/render.c68
1 files changed, 32 insertions, 36 deletions
diff --git a/src/render.c b/src/render.c
index 975b393..c672c83 100644
--- a/src/render.c
+++ b/src/render.c
@@ -31,11 +31,10 @@ static void rounded_rectangle (cairo_t *cairo, uint32_t x, uint32_t y, uint32_t
cairo_close_path(cairo);
}
-static void draw_background (cairo_t *cairo, struct Wlclock_dimensions *dimensions,
- int32_t scale, struct Wlclock *clock)
+static void draw_background (cairo_t *cairo, struct Wlclock_dimensions *dimensions, int32_t scale)
{
- if ( colour_is_transparent(&clock->background_colour)
- && colour_is_transparent(&clock->border_colour) )
+ if ( colour_is_transparent(&context.background_colour)
+ && colour_is_transparent(&context.border_colour) )
return;
int32_t w = scale * dimensions->w;
@@ -43,10 +42,10 @@ static void draw_background (cairo_t *cairo, struct Wlclock_dimensions *dimensio
int32_t center_x = scale * dimensions->center_x;
int32_t center_y = scale * dimensions->center_y;
int32_t center_size = scale * dimensions->center_size;
- int32_t radius_top_left = scale * clock->radius_top_left;
- int32_t radius_top_right = scale * clock->radius_top_right;
- int32_t radius_bottom_left = scale * clock->radius_bottom_left;
- int32_t radius_bottom_right = scale * clock->radius_bottom_right;
+ int32_t radius_top_left = scale * context.radius_top_left;
+ int32_t radius_top_right = scale * context.radius_top_right;
+ int32_t radius_bottom_left = scale * context.radius_bottom_left;
+ int32_t radius_bottom_right = scale * context.radius_bottom_right;
/* Avoid too radii so big that they cause unexpected drawing behaviour. */
if ( radius_top_left > center_size / 2 )
@@ -58,7 +57,7 @@ static void draw_background (cairo_t *cairo, struct Wlclock_dimensions *dimensio
if ( radius_bottom_right > center_size / 2 )
radius_bottom_right = center_size / 2;
- clocklog(clock, 3, "[render] Render dimensions (scaled): size=%d cx=%d cy=%d w=%d h=%d\n",
+ clocklog(3, "[render] Render dimensions (scaled): size=%d cx=%d cy=%d w=%d h=%d\n",
center_size, center_x, center_y, w, h);
cairo_save(cairo);
@@ -70,17 +69,17 @@ static void draw_background (cairo_t *cairo, struct Wlclock_dimensions *dimensio
if ( center_x == 0 && center_y == 0 && center_size == w && center_size == h )
{
cairo_rectangle(cairo, 0, 0, w, h);
- colour_set_cairo_source(cairo, &clock->background_colour);
+ colour_set_cairo_source(cairo, &context.background_colour);
cairo_fill(cairo);
}
else
{
cairo_rectangle(cairo, 0, 0, w, h);
- colour_set_cairo_source(cairo, &clock->border_colour);
+ colour_set_cairo_source(cairo, &context.border_colour);
cairo_fill(cairo);
cairo_rectangle(cairo, center_x, center_y, center_size, center_size);
- colour_set_cairo_source(cairo, &clock->background_colour);
+ colour_set_cairo_source(cairo, &context.background_colour);
cairo_fill(cairo);
}
}
@@ -91,7 +90,7 @@ static void draw_background (cairo_t *cairo, struct Wlclock_dimensions *dimensio
rounded_rectangle(cairo, 0, 0, w, h,
radius_top_left, radius_top_right,
radius_bottom_left, radius_bottom_right);
- colour_set_cairo_source(cairo, &clock->background_colour);
+ colour_set_cairo_source(cairo, &context.background_colour);
cairo_fill(cairo);
}
else
@@ -99,13 +98,13 @@ static void draw_background (cairo_t *cairo, struct Wlclock_dimensions *dimensio
rounded_rectangle(cairo, 0, 0, w, h,
radius_top_left, radius_top_right,
radius_bottom_left, radius_bottom_right);
- colour_set_cairo_source(cairo, &clock->border_colour);
+ colour_set_cairo_source(cairo, &context.border_colour);
cairo_fill(cairo);
rounded_rectangle(cairo, center_x, center_y, center_size, center_size,
radius_top_left, radius_top_right,
radius_bottom_left, radius_bottom_right);
- colour_set_cairo_source(cairo, &clock->background_colour);
+ colour_set_cairo_source(cairo, &context.background_colour);
cairo_fill(cairo);
}
}
@@ -113,13 +112,12 @@ static void draw_background (cairo_t *cairo, struct Wlclock_dimensions *dimensio
cairo_restore(cairo);
}
-static void draw_clock_face (cairo_t *cairo, struct Wlclock_dimensions *dimensions,
- int32_t scale, struct Wlclock *clock)
+static void draw_clock_face (cairo_t *cairo, struct Wlclock_dimensions *dimensions, int32_t scale)
{
- if ( clock->marking_width == 0 )
+ if ( context.marking_width == 0 )
return;
- /* Radii are choosen to roughly mimic xclock. */
+ /* Radii are choosen to roughly mimic xcontext. */
double cx = scale * (dimensions->center_x + (dimensions->center_size / 2));
double cy = scale * (dimensions->center_y + (dimensions->center_size / 2));
double or = scale * 0.9 * dimensions->center_size / 2;
@@ -137,15 +135,15 @@ static void draw_clock_face (cairo_t *cairo, struct Wlclock_dimensions *dimensio
else
cairo_line_to(cairo, cx + ir * cos(phi), cy + ir * sin(phi));
}
- cairo_set_line_width(cairo, clock->marking_width * scale);
- colour_set_cairo_source(cairo, &clock->clock_colour);
+ cairo_set_line_width(cairo, context.marking_width * scale);
+ colour_set_cairo_source(cairo, &context.clock_colour);
cairo_stroke(cairo);
cairo_restore(cairo);
}
-static void draw_clock_hands (cairo_t *cairo, int32_t size, int32_t scale, struct Wlclock *clock)
+static void draw_clock_hands (cairo_t *cairo, int32_t size, int32_t scale)
{
- /* Radii are choosen to roughly mimic xclock. */
+ /* Radii are choosen to roughly mimic xcontext. */
double cxy = scale * size / 2;
double mr = scale * 0.6 * size / 2;
double hr = scale * 0.4 * size / 2;
@@ -158,13 +156,13 @@ static void draw_clock_hands (cairo_t *cairo, int32_t size, int32_t scale, struc
double phi_min = phi_min_step * (tm.tm_min + 45);
double phi_h_step = 2 * PI / 12;
double phi_h = phi_h_step * (tm.tm_hour + 9);
- if (! clock->snap)
+ if (! context.snap)
phi_h += tm.tm_min * phi_h_step / 60.0;
cairo_save(cairo);
- colour_set_cairo_source(cairo, &clock->clock_colour);
+ colour_set_cairo_source(cairo, &context.clock_colour);
- if ( clock->hand_width == 0 )
+ if ( context.hand_width == 0 )
{
/* Xclock-esque clock hands. Not pixel-perfect, but close enough. */
@@ -197,7 +195,7 @@ static void draw_clock_hands (cairo_t *cairo, int32_t size, int32_t scale, struc
cairo_move_to(cairo, cxy + hr * cos(phi_h), cxy + hr * sin(phi_h));
cairo_line_to(cairo, cxy + ir * cos(phi_h + PI), cxy + ir * sin(phi_h +PI));
- cairo_set_line_width(cairo, scale * clock->hand_width);
+ cairo_set_line_width(cairo, scale * context.hand_width);
cairo_stroke(cairo);
}
@@ -215,13 +213,12 @@ static void clear_buffer (cairo_t *cairo)
void render_background_frame (struct Wlclock_surface *surface)
{
struct Wlclock_output *output = surface->output;
- struct Wlclock *clock = output->clock;
uint32_t scale = output->scale;
- clocklog(clock, 2, "[render] Render background frame: global_name=%d\n",
+ clocklog(2, "[render] Render background frame: global_name=%d\n",
output->global_name);
- if (! next_buffer(&surface->current_background_buffer, clock->shm,
+ if (! next_buffer(&surface->current_background_buffer, context.shm,
surface->background_buffers,
surface->dimensions.w * scale,
surface->dimensions.h * scale))
@@ -231,8 +228,8 @@ void render_background_frame (struct Wlclock_surface *surface)
cairo_t *cairo = surface->current_background_buffer->cairo;
clear_buffer(cairo);
- draw_background(cairo, &surface->dimensions, scale, clock);
- draw_clock_face(cairo, &surface->dimensions, scale, clock);
+ draw_background(cairo, &surface->dimensions, scale);
+ draw_clock_face(cairo, &surface->dimensions, scale);
wl_surface_set_buffer_scale(surface->background_surface, scale);
wl_surface_damage_buffer(surface->background_surface, 0, 0, INT32_MAX, INT32_MAX);
@@ -242,13 +239,12 @@ void render_background_frame (struct Wlclock_surface *surface)
void render_hands_frame (struct Wlclock_surface *surface)
{
struct Wlclock_output *output = surface->output;
- struct Wlclock *clock = output->clock;
uint32_t scale = output->scale;
- clocklog(clock, 2, "[render] Render hands frame: global_name=%d\n",
+ clocklog(2, "[render] Render hands frame: global_name=%d\n",
output->global_name);
- if (! next_buffer(&surface->current_hands_buffer, clock->shm,
+ if (! next_buffer(&surface->current_hands_buffer, context.shm,
surface->hands_buffers,
surface->dimensions.center_size * scale,
surface->dimensions.center_size * scale))
@@ -258,7 +254,7 @@ void render_hands_frame (struct Wlclock_surface *surface)
cairo_t *cairo = surface->current_hands_buffer->cairo;
clear_buffer(cairo);
- draw_clock_hands(cairo, surface->dimensions.center_size, scale, clock);
+ draw_clock_hands(cairo, surface->dimensions.center_size, scale);
wl_surface_set_buffer_scale(surface->hands_surface, scale);
wl_surface_damage_buffer(surface->hands_surface, 0, 0, INT32_MAX, INT32_MAX);