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;