4 #include "system/stacktrace.h"
5 #include "game/camera.h"
8 #include "background_layer.h"
9 #include "undo_history.h"
11 BackgroundLayer create_background_layer(Color color)
13 BackgroundLayer layer = {
14 .color_picker = create_color_picker_from_rgba(color),
20 int background_layer_read_from_line_stream(BackgroundLayer *layer,
21 LineStream *line_stream)
23 if (color_picker_read_from_line_stream(
29 layer->prev_color = color_picker_rgba(&layer->color_picker);
34 int background_layer_render(BackgroundLayer *layer,
42 return color_picker_render(
51 BackgroundLayer *layer;
53 } BackgroundUndoContext;
56 void background_undo_color(void *context, size_t context_size)
58 trace_assert(context);
59 trace_assert(sizeof(BackgroundUndoContext) == context_size);
61 BackgroundUndoContext *undo_context = context;
62 BackgroundLayer *background_layer = undo_context->layer;
64 background_layer->color_picker = create_color_picker_from_rgba(undo_context->color);
67 int background_layer_event(BackgroundLayer *layer,
68 const SDL_Event *event,
70 UndoHistory *undo_history)
75 trace_assert(undo_history);
79 if (color_picker_event(
87 if (selected && !color_picker_drag(&layer->color_picker)) {
88 BackgroundUndoContext context = {
90 .color = layer->prev_color
95 background_undo_color,
96 &context, sizeof(context));
97 layer->prev_color = color_picker_rgba(&layer->color_picker);
103 int background_layer_dump_stream(BackgroundLayer *layer,
107 trace_assert(stream);
110 color_picker_rgba(&layer->color_picker),
113 return fprintf(stream, "\n");