commit f60ae1114f2a48d64aafa0aef5722ff4514734d7
parent 6d2e2b48a8e99d30c4cf554718d65127700dc9b9
Author: Michael Forney <mforney@mforney.org>
Date: Fri, 14 Jun 2013 03:52:21 -0700
Draw borders on windows
Diffstat:
3 files changed, 43 insertions(+), 1 deletion(-)
diff --git a/renderer.c b/renderer.c
@@ -90,9 +90,43 @@ static void repaint_surface_for_output(struct swc_renderer * renderer,
xy_src_copy_blt(&renderer->batch, src, src_pitch, 0, 0,
back_buffer->bo, back_buffer->pitch,
- surface->geometry.x, surface->geometry.y,
+ surface->geometry.x + surface->border.width,
+ surface->geometry.y + surface->border.width,
surface->geometry.width, surface->geometry.height);
}
+
+ /* Draw border */
+ {
+ switch_context(renderer, SWC_RENDERER_CONTEXT_BATCH, back_buffer);
+
+ /* Top */
+ xy_color_blt(&renderer->batch, back_buffer->bo, back_buffer->pitch,
+ surface->geometry.x, surface->geometry.y,
+ surface->geometry.x + surface->geometry.width + 2 * surface->border.width,
+ surface->geometry.y + surface->border.width,
+ surface->border.color);
+ /* Bottom */
+ xy_color_blt(&renderer->batch, back_buffer->bo, back_buffer->pitch,
+ surface->geometry.x,
+ surface->geometry.y + surface->border.width + surface->geometry.height,
+ surface->geometry.x + surface->geometry.width + 2 * surface->border.width,
+ surface->geometry.y + surface->geometry.height + 2 * surface->border.width,
+ surface->border.color);
+ /* Left */
+ xy_color_blt(&renderer->batch, back_buffer->bo, back_buffer->pitch,
+ surface->geometry.x, surface->geometry.y + surface->border.width,
+ surface->geometry.x + surface->border.width,
+ surface->geometry.y + + surface->border.width + surface->geometry.height,
+ surface->border.color);
+ /* Right */
+ xy_color_blt(&renderer->batch, back_buffer->bo, back_buffer->pitch,
+ surface->geometry.x + surface->border.width + surface->geometry.width,
+ surface->geometry.y + surface->border.width,
+ surface->geometry.x + surface->geometry.width + 2 * surface->border.width,
+ surface->geometry.y + surface->border.width + surface->geometry.height,
+ surface->border.color);
+
+ }
}
bool swc_renderer_initialize(struct swc_renderer * renderer,
diff --git a/surface.c b/surface.c
@@ -164,6 +164,8 @@ bool swc_surface_initialize(struct swc_surface * surface,
wl_signal_init(&surface->event_signal);
surface->output_mask = 0;
+ surface->border.width = 0;
+ surface->border.color = 0x000000;
return true;
}
diff --git a/surface.h b/surface.h
@@ -50,6 +50,12 @@ struct swc_surface
uint32_t width, height;
} geometry;
+ struct
+ {
+ uint32_t width;
+ uint32_t color;
+ } border;
+
uint32_t output_mask;
struct wl_signal event_signal;