#ifndef LAYER_H_
#define LAYER_H_
-// TODO(#836): RectLayer should be called RectLayer
-typedef struct RectLayer RectLayer;
-typedef struct LineStream LineStream;
+#include "undo_history.h"
-RectLayer *create_rect_layer(void);
-RectLayer *create_layer_from_line_stream(LineStream *line_stream);
-void destroy_rect_layer(RectLayer *layer);
+typedef enum {
+ LAYER_RECT,
+ LAYER_POINT,
+ LAYER_PLAYER,
+ LAYER_BACKGROUND,
+ LAYER_LABEL
+} LayerType;
-int rect_layer_render(const RectLayer *layer, Camera *camera);
-int rect_layer_event(RectLayer *layer, const SDL_Event *event);
+typedef struct {
+ LayerType type;
+ void *ptr;
+} LayerPtr;
-int rect_layer_add_rect(RectLayer *layer, Rect rect, Color color);
-int rect_layer_delete_rect_at(RectLayer *layer, Vec position);
+typedef struct Camera Camera;
-size_t rect_layer_count(const RectLayer *layer);
-const Rect *rect_layer_rects(const RectLayer *layer);
-const Color *rect_layer_colors(const RectLayer *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_