summaryrefslogtreecommitdiff
path: root/payloads/libpayload/include
diff options
context:
space:
mode:
authorDaisuke Nojiri <dnojiri@chromium.org>2015-08-26 14:47:06 -0700
committerPatrick Georgi <pgeorgi@google.com>2015-10-27 15:21:53 +0100
commitdd49eccb50b99ca34d3cecc844e38266a0f6a6cf (patch)
tree0003f6cafdd68d5b2bdb52284e8f79e7a59c4d46 /payloads/libpayload/include
parent09ad206cdad1b427c331a8f04a63c198e41b5ae9 (diff)
cbgfx: allow draw_bitmap to render outside canvas
This change allows draw_bitmap to draw an image outside the canvas with the original size if the scale parameter is zero. This is used for example when drawing a splash screen which has to be positioned at a pixel perfect location. BUG=none BRANCH=master TEST=Draw pictures and boxes on Samus and Ryu Change-Id: Ia2d8799184d1aa192e2c50850e248bee8f234006 Signed-off-by: Patrick Georgi <pgeorgi@google.com> Original-Commit-Id: 45d4717fe5c3e3554bd79b63ade490d88cf00bbe Original-Change-Id: I48aa21122cfc2ee43bcb1b8f87b00c66abdc230e Original-Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org> Original-Reviewed-on: https://chromium-review.googlesource.com/295961 Original-Reviewed-by: Aaron Durbin <adurbin@chromium.org> Reviewed-on: http://review.coreboot.org/11923 Tested-by: build bot (Jenkins)
Diffstat (limited to 'payloads/libpayload/include')
-rw-r--r--payloads/libpayload/include/cbgfx.h50
1 files changed, 34 insertions, 16 deletions
diff --git a/payloads/libpayload/include/cbgfx.h b/payloads/libpayload/include/cbgfx.h
index 074a42d408..2d6b6e938a 100644
--- a/payloads/libpayload/include/cbgfx.h
+++ b/payloads/libpayload/include/cbgfx.h
@@ -11,13 +11,15 @@
/*
* API error codes
*/
-#define CBGFX_SUCCESS 0
+#define CBGFX_SUCCESS 0
/* unknown error */
-#define CBGFX_ERROR_UNKNOWN 1
+#define CBGFX_ERROR_UNKNOWN 1
/* failed to initialize cbgfx library */
-#define CBGFX_ERROR_INIT 2
+#define CBGFX_ERROR_INIT 2
+/* drawing beyond screen boundary */
+#define CBGFX_ERROR_SCREEN_BOUNDARY 3
/* drawing beyond canvas boundary */
-#define CBGFX_ERROR_BOUNDARY 3
+#define CBGFX_ERROR_CANVAS_BOUNDARY 4
/* bitmap error: signature mismatch */
#define CBGFX_ERROR_BITMAP_SIGNATURE 0x10
/* bitmap error: unsupported format */
@@ -27,17 +29,32 @@
/* bitmap error: scaling out of range */
#define CBGFX_ERROR_SCALE_OUT_OF_RANGE 0x13
+struct fraction {
+ int32_t nume;
+ int32_t deno;
+};
+
+struct scale {
+ struct fraction x;
+ struct fraction y;
+};
+
struct vector {
union {
- uint32_t x;
- uint32_t width;
+ int32_t x;
+ int32_t width;
};
union {
- uint32_t y;
- uint32_t height;
+ int32_t y;
+ int32_t height;
};
};
+struct rect {
+ struct vector offset;
+ struct vector size;
+};
+
struct rgb_color {
uint8_t red;
uint8_t green;
@@ -59,16 +76,14 @@ struct rgb_color {
/*
* draw a box filled with a color on screen
*
- * top_left_rel: coordinate of top left corner of the box, relative to canvas.
- * (0 - CANVAS_SCALE).
- * size_rel: width and height of the box, relative to canvas. (0 - CANVAS_SCALE)
+ * box: .offset points the coordinate of the top left corner and .size specifies
+ * width and height of the box. Both are relative to the canvas size thus scale
+ * from 0 to CANVAS_SCALE (0 to 100%).
* rgb: RGB color of the box.
*
* return: CBGFX_* error codes
*/
-int draw_box(const struct vector *top_left_rel,
- const struct vector *size_rel,
- const struct rgb_color *rgb);
+int draw_box(const struct rect *box, const struct rgb_color *rgb);
/*
* Clear the canvas
@@ -79,8 +94,11 @@ int clear_canvas(struct rgb_color *rgb);
* Draw a bitmap image on screen.
*
* top_left_rel: coordinate of the top left corner of the image relative to the
- * canvas (0 - CANVAS_SCALE).
- * scale_rel: scale factor relative to the canvas width (0 - CANVAS_SCALE).
+ * canvas (0 - CANVAS_SCALE). If scale_rel is zero, this is treated as absolute
+ * coordinate.
+ * scale_rel: scale factor relative to the canvas width (0 - CANVAS_SCALE). If
+ * this is zero, scaling is turned off and the image is rendered with the
+ * original size.
* bitmap: pointer to the bitmap data, starting from the file header.
* size: size of the bitmap data
*