]> git.lizzy.rs Git - nothing.git/commitdiff
Remove Lt from LabelLayer
authorrexim <reximkut@gmail.com>
Sun, 5 Jan 2020 22:22:56 +0000 (05:22 +0700)
committerrexim <reximkut@gmail.com>
Sun, 5 Jan 2020 22:22:56 +0000 (05:22 +0700)
src/game/level.c
src/game/level/labels.h
src/game/level/level_editor.c
src/game/level/level_editor.h
src/game/level/level_editor/label_layer.c
src/game/level/level_editor/label_layer.h

index e61d4e31815f6adf5fb6bd036d3f7cf2adc8ad3d..a65d621912ea56f4aea0532ea334d3227410af6d 100644 (file)
@@ -126,7 +126,7 @@ Level *create_level_from_level_editor(const LevelEditor *level_editor)
 
     level->labels = PUSH_LT(
         lt,
-        create_labels_from_label_layer(level_editor->label_layer),
+        create_labels_from_label_layer(&level_editor->label_layer),
         destroy_labels);
     if (level->labels == NULL) {
         RETURN_LT(lt, NULL);
index 2291bc65d732d6b2cc65ccfb6ee7821f7c33b897..5e36c268342138561067178e3b68f6a96b84d84d 100644 (file)
@@ -6,7 +6,6 @@
 #include "config.h"
 
 typedef struct Labels Labels;
-typedef struct LabelLayer LabelLayer;
 
 Labels *create_labels_from_label_layer(const LabelLayer *label_layer);
 void destroy_labels(Labels *label);
index 5ee2379355b963ba8f9b7b2b0d56ca31495a3223..7a6b56a8fdb738fe254ca6fb2786fb1d497458c3 100644 (file)
@@ -57,15 +57,7 @@ LevelEditor *create_level_editor(Cursor *cursor)
     level_editor->lava_layer = create_rect_layer("lava", cursor);
     level_editor->back_platforms_layer = create_rect_layer("back_platform", cursor);
     level_editor->boxes_layer = create_rect_layer("box", cursor);
-
-    level_editor->label_layer = PUSH_LT(
-        lt,
-        create_label_layer("label"),
-        destroy_label_layer);
-    if (level_editor->label_layer == NULL) {
-        RETURN_LT(lt, NULL);
-    }
-
+    level_editor->label_layer = create_label_layer("label");
     level_editor->regions_layer = create_rect_layer("region", cursor),
 
     level_editor->layers[LAYER_PICKER_BOXES] = rect_layer_as_layer(&level_editor->boxes_layer);
@@ -76,7 +68,7 @@ LevelEditor *create_level_editor(Cursor *cursor)
     level_editor->layers[LAYER_PICKER_LAVA] = rect_layer_as_layer(&level_editor->lava_layer);
     level_editor->layers[LAYER_PICKER_REGIONS] = rect_layer_as_layer(&level_editor->regions_layer);
     level_editor->layers[LAYER_PICKER_BACKGROUND] = background_layer_as_layer(&level_editor->background_layer);
-    level_editor->layers[LAYER_PICKER_LABELS] = label_layer_as_layer(level_editor->label_layer);
+    level_editor->layers[LAYER_PICKER_LABELS] = label_layer_as_layer(&level_editor->label_layer);
 
     level_editor->notice = (FadingWigglyText) {
         .wiggly_text = {
@@ -157,7 +149,7 @@ LevelEditor *create_level_editor_from_file(const char *file_name, Cursor *cursor
     level_editor->layers[LAYER_PICKER_LAVA] = rect_layer_as_layer(&level_editor->lava_layer);
     level_editor->layers[LAYER_PICKER_REGIONS] = rect_layer_as_layer(&level_editor->regions_layer);
     level_editor->layers[LAYER_PICKER_BACKGROUND] = background_layer_as_layer(&level_editor->background_layer);
-    level_editor->layers[LAYER_PICKER_LABELS] = label_layer_as_layer(level_editor->label_layer);
+    level_editor->layers[LAYER_PICKER_LABELS] = label_layer_as_layer(&level_editor->label_layer);
 
     level_editor->drag = false;
 
index b56c5f969e7947e7bb06d636e3a7061bd4a41d27..7bc7b5f2b2a8c88594930b58e40fbeafb6227764 100644 (file)
@@ -6,11 +6,11 @@
 #include "game/level/level_editor/undo_history.h"
 #include "game/level/level_editor/rect_layer.h"
 #include "game/level/level_editor/point_layer.h"
+#include "game/level/level_editor/label_layer.h"
 #include "ui/wiggly_text.h"
 #include "ui/cursor.h"
 
 typedef struct LevelEditor LevelEditor;
-typedef struct LabelLayer LabelLayer;
 typedef struct Sound_samples Sound_samples;
 
 typedef enum {
@@ -36,7 +36,7 @@ struct LevelEditor
     RectLayer lava_layer;
     RectLayer regions_layer;
     BackgroundLayer background_layer;
-    LabelLayer *label_layer;
+    LabelLayer label_layer;
 
     LayerPtr layers[LAYER_PICKER_N];
 
index 487b949cf985d7f8f7f3fa781d02e749095849d3..435916685ce818ba82168674dd4b1190eec18f7e 100644 (file)
 
 // TODO(#1139): Label Layer does not support snapping
 
-typedef enum {
-    LABEL_LAYER_IDLE = 0,
-    LABEL_LAYER_MOVE,
-    LABEL_LAYER_EDIT_TEXT,
-    LABEL_LAYER_EDIT_ID,
-    LABEL_LAYER_RECOLOR
-} LabelLayerState;
-
 static int label_clipboard = 0;
 static char label_clipboard_text[LABEL_LAYER_TEXT_MAX_SIZE];
 static Color label_clipboard_color;
 
-struct LabelLayer {
-    Lt *lt;
-    LabelLayerState state;
-    Dynarray ids;
-    Dynarray positions;
-    Dynarray colors;
-    Dynarray texts;
-    int selection;
-    ColorPicker color_picker;
-    Vec2f move_anchor;
-    Edit_field edit_field;
-    Vec2f inter_position;
-    Color inter_color;
-    int id_name_counter;
-    const char *id_name_prefix;
-};
-
 typedef enum {
     LABEL_UNDO_ADD,
     LABEL_UNDO_DELETE,
@@ -167,42 +142,30 @@ LayerPtr label_layer_as_layer(LabelLayer *label_layer)
     return layer;
 }
 
-LabelLayer *create_label_layer(const char *id_name_prefix)
+LabelLayer create_label_layer(const char *id_name_prefix)
 {
-    Lt *lt = create_lt();
-
-    LabelLayer *label_layer = PUSH_LT(
-        lt, nth_calloc(1, sizeof(LabelLayer)), free);
-    if (label_layer == NULL) {
-        RETURN_LT(lt, NULL);
-    }
-    label_layer->lt = lt;
-
-    label_layer->ids = create_dynarray(sizeof(char) * LABEL_LAYER_ID_MAX_SIZE);
-    label_layer->positions = create_dynarray(sizeof(Vec2f));
-    label_layer->colors = create_dynarray(sizeof(Color));
-    label_layer->texts = create_dynarray(sizeof(char) * LABEL_LAYER_TEXT_MAX_SIZE);
-
-    label_layer->color_picker = create_color_picker_from_rgba(COLOR_RED);
-    label_layer->selection = -1;
-
-    label_layer->edit_field.font_size = LABELS_SIZE;
-    label_layer->edit_field.font_color = COLOR_RED;
-
-    label_layer->id_name_prefix = id_name_prefix;
-
-    return label_layer;
+    LabelLayer result = {0};
+    result.ids = create_dynarray(sizeof(char) * LABEL_LAYER_ID_MAX_SIZE);
+    result.positions = create_dynarray(sizeof(Vec2f));
+    result.colors = create_dynarray(sizeof(Color));
+    result.texts = create_dynarray(sizeof(char) * LABEL_LAYER_TEXT_MAX_SIZE);
+    result.color_picker = create_color_picker_from_rgba(COLOR_RED);
+    result.selection = -1;
+    result.edit_field.font_size = LABELS_SIZE;
+    result.edit_field.font_color = COLOR_RED;
+    result.id_name_prefix = id_name_prefix;
+    return result;
 }
 
-LabelLayer *chop_label_layer(Memory *memory,
-                             String *input,
-                             const char *id_name_prefix)
+LabelLayer chop_label_layer(Memory *memory,
+                            String *input,
+                            const char *id_name_prefix)
 {
     trace_assert(memory);
     trace_assert(input);
     trace_assert(id_name_prefix);
 
-    LabelLayer *label_layer = create_label_layer(id_name_prefix);
+    LabelLayer result = create_label_layer(id_name_prefix);
 
     int n = atoi(string_to_cstr(memory, trim(chop_by_delim(input, '\n'))));
     char id[LABEL_LAYER_ID_MAX_SIZE];
@@ -231,25 +194,13 @@ LabelLayer *chop_label_layer(Memory *memory,
             min_size_t(LABEL_LAYER_TEXT_MAX_SIZE - 1,
                        label_text_string.count));
 
-        dynarray_push(&label_layer->ids, id);
-        dynarray_push(&label_layer->positions, &position);
-        dynarray_push(&label_layer->colors, &color);
-        dynarray_push(&label_layer->texts, label_text);
+        dynarray_push(&result.ids, id);
+        dynarray_push(&result.positions, &position);
+        dynarray_push(&result.colors, &color);
+        dynarray_push(&result.texts, label_text);
     }
 
-    return label_layer;
-}
-
-void destroy_label_layer(LabelLayer *label_layer)
-{
-    trace_assert(label_layer);
-
-    free(label_layer->ids.data);
-    free(label_layer->positions.data);
-    free(label_layer->colors.data);
-    free(label_layer->texts.data);
-
-    destroy_lt(label_layer->lt);
+    return result;
 }
 
 static inline
index 00454a1bbf159f72f9fea845f8eb19d856d23246..252577f1883e97a31f935d24c3ccb4348cf642e8 100644 (file)
@@ -9,17 +9,46 @@
 #define LABEL_LAYER_ID_MAX_SIZE 36
 #define LABEL_LAYER_TEXT_MAX_SIZE 256
 
-typedef struct LabelLayer LabelLayer;
+typedef enum {
+    LABEL_LAYER_IDLE = 0,
+    LABEL_LAYER_MOVE,
+    LABEL_LAYER_EDIT_TEXT,
+    LABEL_LAYER_EDIT_ID,
+    LABEL_LAYER_RECOLOR
+} LabelLayerState;
+
+typedef struct {
+    LabelLayerState state;
+    Dynarray ids;
+    Dynarray positions;
+    Dynarray colors;
+    Dynarray texts;
+    int selection;
+    ColorPicker color_picker;
+    Vec2f move_anchor;
+    Edit_field edit_field;
+    Vec2f inter_position;
+    Color inter_color;
+    int id_name_counter;
+    const char *id_name_prefix;
+} LabelLayer;
 
 LayerPtr label_layer_as_layer(LabelLayer *label_layer);
 
 // NOTE: create_label_layer and create_label_layer_from_line_stream do
 // not own id_name_prefix
-LabelLayer *create_label_layer(const char *id_name_prefix);
-LabelLayer *chop_label_layer(Memory *memory,
-                             String *input,
-                             const char *id_name_prefix);
-void destroy_label_layer(LabelLayer *label_layer);
+LabelLayer create_label_layer(const char *id_name_prefix);
+LabelLayer chop_label_layer(Memory *memory,
+                            String *input,
+                            const char *id_name_prefix);
+static inline
+void destroy_label_layer(LabelLayer label_layer)
+{
+    free(label_layer.ids.data);
+    free(label_layer.positions.data);
+    free(label_layer.colors.data);
+    free(label_layer.texts.data);
+}
 
 int label_layer_render(const LabelLayer *label_layer,
                        const Camera *camera,