OSDN Git Service

daf6f13fa151af8f68cf3d1e3166e229003f262b
[bluetank/bluetank.git] / soft / utils / lcdtool / canvas.c
1
2 #include "canvas.h"
3
4 /**
5  * @brief ピクセル値を書き込む。
6  * @details
7  * インターフェースでは、何にどのように書き込むかについて一切感知していない。
8  * この関数では、何にどのように書き込むかについて解決する。
9  *
10  * @param x X座標。
11  * @param y Y座標。
12  * @param r 赤。
13  * @param g 緑。
14  * @param b 青。
15  * @param extobj ユーザが指定した拡張オブジェクト。
16  */
17 void canvas_pixel_writer(const int x, const int y, const uint8_t r, const uint8_t g, const uint8_t b, void *extobj)
18 {
19     canvas_t *canvas = (canvas_t *)extobj;
20     bmpcol_t *buffer = canvas->buffer + (canvas->w * y) + x;
21     buffer->r = r;
22     buffer->g = g;
23     buffer->b = b;
24 }
25
26 /**
27  * @brief ピクセル値を読み込む。
28  * @details
29  * インターフェースでは、何からどのように読み込むかについて一切感知していない。
30  * この関数では、何からどのように読み込むかについて解決する。
31  *
32  * @param x X座標。
33  * @param y Y座標。
34  * @param r 赤。
35  * @param g 緑。
36  * @param b 青。
37  * @param extobj ユーザが指定した拡張オブジェクト。
38  */
39 void canvas_pixel_reader(const int x, const int y, uint8_t *r, uint8_t *g, uint8_t *b, void *extobj)
40 {
41     canvas_t *canvas = (canvas_t *)extobj;
42     bmpcol_t *buffer = canvas->buffer + (canvas->w * y) + x;
43     *r = buffer->r;
44     *g = buffer->g;
45     *b = buffer->b;
46 }
47
48 void canvas_drawer(const int px, const int py, bool on, void *extobj)
49 {
50     canvas_t *canvas = (canvas_t *)extobj;
51     bmpcol_t *buffer = canvas->buffer + (canvas->w * py) + px;
52     buffer->r = on ? 255 : 127;
53     buffer->g = on ? 255 : 129;
54     buffer->b = on ? 255 : 240;
55 }
56