4 #include "system/stacktrace.h"
5 #include "game/camera.h"
8 #include "background_layer.h"
9 #include "undo_history.h"
12 BackgroundLayer create_background_layer(Color color)
14 BackgroundLayer layer = {
15 .color_picker = create_color_picker_from_rgba(color),
21 int background_layer_read_from_line_stream(BackgroundLayer *layer,
22 LineStream *line_stream)
24 if (color_picker_read_from_line_stream(
30 layer->prev_color = color_picker_rgba(&layer->color_picker);
35 int background_layer_render(BackgroundLayer *layer,
43 return color_picker_render(
52 BackgroundLayer *layer;
57 void background_undo_color(void *context, size_t context_size)
59 trace_assert(context);
60 trace_assert(sizeof(UndoContext) == context_size);
62 UndoContext *undo_context = context;
63 BackgroundLayer *background_layer = undo_context->layer;
65 background_layer->color_picker = create_color_picker_from_rgba(undo_context->color);
68 int background_layer_event(BackgroundLayer *layer,
69 const SDL_Event *event,
71 UndoHistory *undo_history)
76 trace_assert(undo_history);
80 if (color_picker_event(
88 if (selected && !color_picker_drag(&layer->color_picker)) {
89 UndoContext context = {
91 .color = layer->prev_color
96 background_undo_color,
97 &context, sizeof(context));
98 layer->prev_color = color_picker_rgba(&layer->color_picker);
104 int background_layer_dump_stream(BackgroundLayer *layer,
108 trace_assert(stream);
111 color_picker_rgba(&layer->color_picker),
114 return fprintf(stream, "\n");