diff options
author | Ian Moffett <ian@osmora.org> | 2025-08-04 01:46:01 -0400 |
---|---|---|
committer | Ian Moffett <ian@osmora.org> | 2025-08-04 01:46:01 -0400 |
commit | cf5c010fe47b9df2919ecbf248afe33b37c1263a (patch) | |
tree | e0d04d597f23b352bd73f77bff336f4903e0e1f8 /lib/libgfx/src/draw.c | |
parent | 14b9fc0a5f3dfb22adae90dd61961682eaf50931 (diff) |
libgfx: draw: Add gfx_get_pix() function
Introduce gfx routine to grab the RGB value of a specific pixel at a
specific location on the screen.
Signed-off-by: Ian Moffett <ian@osmora.org>
Diffstat (limited to 'lib/libgfx/src/draw.c')
-rw-r--r-- | lib/libgfx/src/draw.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/lib/libgfx/src/draw.c b/lib/libgfx/src/draw.c index 9ef8630..784110a 100644 --- a/lib/libgfx/src/draw.c +++ b/lib/libgfx/src/draw.c @@ -129,6 +129,34 @@ gfx_plot_point(struct gfx_ctx *ctx, const struct gfx_point *point) } /* + * Grab the RGB value of a single pixel on + * the scren. + * + * @ctx: Graphics context pointer + * @x: X position to sample + * @y: Y position to sample + */ +color_t +gfx_get_pix(struct gfx_ctx *ctx, uint32_t x, uint32_t y) +{ + const color_t ERROR_COLOR = GFX_BLACK; + uint32_t index; + + /* The 'ctx' argument is required */ + if (ctx == NULL) { + return ERROR_COLOR; + } + + /* Are we within bounds of the screen */ + if (gfx_pixel_bounds(ctx, x, y) < 0) { + return ERROR_COLOR; + } + + index = gfx_io_index(ctx, x, y); + return ctx->io[index]; +} + +/* * Draw a shape onto the screen * * @ctx: libgfx graphics context |