commit f60ae11
Michael Forney
·
2013-06-14 10:52:21 +0000 UTC
parent 6d2e2b4
Draw borders on windows
3 files changed,
+43,
-1
+35,
-1
1@@ -90,9 +90,43 @@ static void repaint_surface_for_output(struct swc_renderer * renderer,
2
3 xy_src_copy_blt(&renderer->batch, src, src_pitch, 0, 0,
4 back_buffer->bo, back_buffer->pitch,
5- surface->geometry.x, surface->geometry.y,
6+ surface->geometry.x + surface->border.width,
7+ surface->geometry.y + surface->border.width,
8 surface->geometry.width, surface->geometry.height);
9 }
10+
11+ /* Draw border */
12+ {
13+ switch_context(renderer, SWC_RENDERER_CONTEXT_BATCH, back_buffer);
14+
15+ /* Top */
16+ xy_color_blt(&renderer->batch, back_buffer->bo, back_buffer->pitch,
17+ surface->geometry.x, surface->geometry.y,
18+ surface->geometry.x + surface->geometry.width + 2 * surface->border.width,
19+ surface->geometry.y + surface->border.width,
20+ surface->border.color);
21+ /* Bottom */
22+ xy_color_blt(&renderer->batch, back_buffer->bo, back_buffer->pitch,
23+ surface->geometry.x,
24+ surface->geometry.y + surface->border.width + surface->geometry.height,
25+ surface->geometry.x + surface->geometry.width + 2 * surface->border.width,
26+ surface->geometry.y + surface->geometry.height + 2 * surface->border.width,
27+ surface->border.color);
28+ /* Left */
29+ xy_color_blt(&renderer->batch, back_buffer->bo, back_buffer->pitch,
30+ surface->geometry.x, surface->geometry.y + surface->border.width,
31+ surface->geometry.x + surface->border.width,
32+ surface->geometry.y + + surface->border.width + surface->geometry.height,
33+ surface->border.color);
34+ /* Right */
35+ xy_color_blt(&renderer->batch, back_buffer->bo, back_buffer->pitch,
36+ surface->geometry.x + surface->border.width + surface->geometry.width,
37+ surface->geometry.y + surface->border.width,
38+ surface->geometry.x + surface->geometry.width + 2 * surface->border.width,
39+ surface->geometry.y + surface->border.width + surface->geometry.height,
40+ surface->border.color);
41+
42+ }
43 }
44
45 bool swc_renderer_initialize(struct swc_renderer * renderer,
+2,
-0
1@@ -164,6 +164,8 @@ bool swc_surface_initialize(struct swc_surface * surface,
2 wl_signal_init(&surface->event_signal);
3
4 surface->output_mask = 0;
5+ surface->border.width = 0;
6+ surface->border.color = 0x000000;
7
8 return true;
9 }
+6,
-0
1@@ -50,6 +50,12 @@ struct swc_surface
2 uint32_t width, height;
3 } geometry;
4
5+ struct
6+ {
7+ uint32_t width;
8+ uint32_t color;
9+ } border;
10+
11 uint32_t output_mask;
12
13 struct wl_signal event_signal;