3 #include "game/level/boxes.h"
4 #include "system/stacktrace.h"
5 #include "game/camera.h"
6 #include "proto_rect.h"
7 #include "color_picker.h"
10 #define COLOR_CELL_WIDTH 50.0f
11 #define COLOR_CELL_HEIGHT 50.0f
13 // TODO: Colors of ColorPicker are poor
14 static Color colors[] = {
15 {1.0f, 0.0f, 0.0f, 1.0f},
16 {0.0f, 1.0f, 0.0f, 1.0f},
17 {0.0f, 0.0f, 1.0f, 1.0f}
19 static const size_t colors_count = sizeof(colors) / sizeof(Color);
21 int color_picker_render(const ColorPicker *color_picker,
24 trace_assert(color_picker);
27 for (size_t i = 0; i < colors_count; ++i) {
28 if (camera_fill_rect_screen(
30 rect(COLOR_CELL_WIDTH * (float) i, 0,
41 int color_picker_update(ColorPicker *color_picker,
44 trace_assert(color_picker);
49 int color_picker_event(ColorPicker *color_picker,
50 const SDL_Event *event)
52 trace_assert(color_picker);
55 switch (event->type) {
56 case SDL_MOUSEBUTTONDOWN: {
57 switch (event->button.button) {
58 case SDL_BUTTON_LEFT: {
59 for (size_t i = 0; i < colors_count; ++i) {
60 const Vec mouse_position = vec((float) event->button.x, (float) event->button.y);
61 const Rect color_cell =
62 rect(COLOR_CELL_WIDTH * (float) i, 0,
65 if (rect_contains_point(color_cell, mouse_position)) {
66 color_picker->proto_rect->color = colors[i];