#include "undo_history.h"
typedef struct {
- Point position;
+ PlayerLayer *layer;
+ Vec2f position;
Color color;
} UndoContext;
UndoContext player_layer_create_undo_context(PlayerLayer *player_layer)
{
UndoContext context = {
+ .layer = player_layer,
.position = player_layer->position,
.color = player_layer->prev_color
};
}
static
-void player_layer_undo(void *layer, void *context, size_t context_size)
+void player_layer_undo(void *context, size_t context_size)
{
- trace_assert(layer);
trace_assert(context);
trace_assert(sizeof(UndoContext) == context_size);
- PlayerLayer *player_layer = layer;
UndoContext *undo_context = context;
+ PlayerLayer *player_layer = undo_context->layer;
player_layer->position = undo_context->position;
player_layer->color_picker = create_color_picker_from_rgba(undo_context->color);
player_layer->prev_color = undo_context->color;
}
-PlayerLayer create_player_layer(Vec position, Color color)
+PlayerLayer create_player_layer(Vec2f position, Color color)
{
return (PlayerLayer) {
.position = position,
trace_assert(line);
char colorstr[7] = "000000";
- Point position = vec(0.0f, 0.0f);
+ Vec2f position = vec(0.0f, 0.0f);
const int bound =
sscanf(line, "%f%f%6s", &position.x, &position.y, colorstr);
}
int player_layer_render(const PlayerLayer *player_layer,
- Camera *camera,
+ const Camera *camera,
int active)
{
trace_assert(player_layer);
player_layer_create_undo_context(player_layer);
undo_history_push(
undo_history,
- player_layer,
player_layer_undo,
&context,
sizeof(context));
undo_history_push(
undo_history,
- player_layer,
player_layer_undo,
&context, sizeof(context));