#ifndef LAYER_H_
#define LAYER_H_
-typedef struct Layer Layer;
-typedef struct LineStream LineStream;
+#include "undo_history.h"
-Layer *create_layer(void);
-Layer *create_layer_from_line_stream(LineStream *line_stream);
-void destroy_layer(Layer *layer);
+typedef enum {
+ LAYER_RECT,
+ LAYER_POINT,
+ LAYER_PLAYER,
+ LAYER_BACKGROUND,
+ LAYER_LABEL
+} LayerType;
-int layer_render(const Layer *layer, Camera *camera);
-int layer_event(Layer *layer, const SDL_Event *event);
+typedef struct {
+ LayerType type;
+ void *ptr;
+} LayerPtr;
-int layer_add_rect(Layer *layer, Rect rect, Color color);
-int layer_delete_rect_at(Layer *layer, Vec position);
+typedef struct Camera Camera;
-size_t layer_count(const Layer *layer);
-const Rect *layer_rects(const Layer *layer);
-const Color *layer_colors(const Layer *layer);
+int layer_render(LayerPtr layer, Camera *camera, int active);
+int layer_event(LayerPtr layer,
+ const SDL_Event *event,
+ const Camera *camera,
+ UndoHistory *undo_history);
+int layer_dump_stream(LayerPtr layer, FILE *stream);
#endif // LAYER_H_