]> git.lizzy.rs Git - nothing.git/blob - src/game/level/level_editor/rect_layer.h
Remove Lt from RectLayer
[nothing.git] / src / game / level / level_editor / rect_layer.h
1 #ifndef RECT_LAYER_H_
2 #define RECT_LAYER_H_
3
4 #include "layer.h"
5 #include "game/level/action.h"
6 #include "ui/cursor.h"
7
8 typedef struct RectLayer RectLayer;
9
10 typedef enum {
11     RECT_LAYER_IDLE = 0,
12     RECT_LAYER_CREATE,
13     RECT_LAYER_RESIZE,
14     RECT_LAYER_MOVE,
15     RECT_LAYER_ID_RENAME,
16     RECT_LAYER_RECOLOR
17 } RectLayerState;
18
19 struct RectLayer {
20     RectLayerState state;
21     int resize_mask;
22     Dynarray ids;
23     Dynarray rects;
24     Dynarray colors;
25     Dynarray actions;
26     ColorPicker color_picker;
27     Vec2f create_begin;
28     Vec2f create_end;
29     int selection;
30     Vec2f move_anchor;          // The mouse offset from the left-top
31                                 // corner of the rect during moving it
32     Edit_field id_edit_field;
33     Color inter_color;
34     Rect inter_rect;
35     int id_name_counter;
36     const char *id_name_prefix;
37     Cursor *cursor;
38
39     int snapping_enabled;
40 };
41
42 LayerPtr rect_layer_as_layer(RectLayer *layer);
43 // NOTE: create_rect_layer and create_rect_layer_from_line_stream does
44 // not own id_name_prefix
45 RectLayer create_rect_layer(const char *id_name_prefix,
46                             Cursor *cursor);
47 RectLayer chop_rect_layer(Memory *memory,
48                           String *input,
49                           const char *id_name_prefix,
50                           Cursor *cursor);
51
52 static inline
53 void destroy_rect_layer(RectLayer layer)
54 {
55     free(layer.ids.data);
56     free(layer.rects.data);
57     free(layer.colors.data);
58     free(layer.actions.data);
59 }
60
61
62 int rect_layer_render(const RectLayer *layer, const Camera *camera, int active);
63 int rect_layer_event(RectLayer *layer,
64                      const SDL_Event *event,
65                      const Camera *camera,
66                      UndoHistory *undo_history);
67
68 int rect_layer_dump_stream(const RectLayer *layer, FILE *filedump);
69
70 size_t rect_layer_count(const RectLayer *layer);
71 const Rect *rect_layer_rects(const RectLayer *layer);
72 const Color *rect_layer_colors(const RectLayer *layer);
73 const char *rect_layer_ids(const RectLayer *layer);
74 const Action *rect_layer_actions(const RectLayer *layer);
75
76 #endif  // RECT_LAYER_H_