}
int background_layer_render(BackgroundLayer *layer,
- Camera *camera,
+ const Camera *camera,
int active)
{
trace_assert(layer);
return 0;
}
+typedef struct {
+ BackgroundLayer *layer;
+ Color color;
+} UndoContext;
+
static
-void background_undo_color(void *layer, Context context)
+void background_undo_color(void *context, size_t context_size)
{
- trace_assert(layer);
- BackgroundLayer *background_layer = layer;
+ trace_assert(context);
+ trace_assert(sizeof(UndoContext) == context_size);
- trace_assert(sizeof(Color) < CONTEXT_SIZE);
- Color *color = (Color *)context.data;
+ UndoContext *undo_context = context;
+ BackgroundLayer *background_layer = undo_context->layer;
- background_layer->color_picker = create_color_picker_from_rgba(*color);
+ background_layer->color_picker = create_color_picker_from_rgba(undo_context->color);
}
int background_layer_event(BackgroundLayer *layer,
}
if (selected && !color_picker_drag(&layer->color_picker)) {
+ UndoContext context = {
+ .layer = layer,
+ .color = layer->prev_color
+ };
+
undo_history_push(
undo_history,
- create_action(
- layer,
- background_undo_color,
- &layer->prev_color, sizeof(layer->prev_color)));
+ background_undo_color,
+ &context, sizeof(context));
layer->prev_color = color_picker_rgba(&layer->color_picker);
}
color_picker_rgba(&layer->color_picker),
stream);
- return fprintf(stream, "\n");;
+ return fprintf(stream, "\n");
}