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 BackgroundLayer chop_background_layer(String *input)
36 String line = trim(chop_by_delim(input, '\n'));
37 return create_background_layer(hexs(line));
40 int background_layer_render(BackgroundLayer *layer,
48 return color_picker_render(
57 BackgroundLayer *layer;
59 } BackgroundUndoContext;
62 void background_undo_color(void *context, size_t context_size)
64 trace_assert(context);
65 trace_assert(sizeof(BackgroundUndoContext) == context_size);
67 BackgroundUndoContext *undo_context = context;
68 BackgroundLayer *background_layer = undo_context->layer;
70 background_layer->color_picker = create_color_picker_from_rgba(undo_context->color);
73 int background_layer_event(BackgroundLayer *layer,
74 const SDL_Event *event,
76 UndoHistory *undo_history)
81 trace_assert(undo_history);
85 if (color_picker_event(
93 if (selected && !color_picker_drag(&layer->color_picker)) {
94 BackgroundUndoContext context = {
96 .color = layer->prev_color
101 background_undo_color,
102 &context, sizeof(context));
103 layer->prev_color = color_picker_rgba(&layer->color_picker);
109 int background_layer_dump_stream(BackgroundLayer *layer,
113 trace_assert(stream);
116 color_picker_rgba(&layer->color_picker),
119 return fprintf(stream, "\n");