Skip to content

Commit defc363

Browse files
committed
Add Clean Layer command
1 parent 129792c commit defc363

File tree

9 files changed

+35
-5
lines changed

9 files changed

+35
-5
lines changed

src/bindings.cc

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ set_default_bindings(MiltonBindings* bs)
6464
binding(bs, Modifier_CTRL, 'n', Action_NEW);
6565
binding(bs, Modifier_CTRL, 'o', Action_OPEN);
6666
binding(bs, (ModifierFlags)(Modifier_CTRL | Modifier_SHIFT), 's', Action_SAVE_AS);
67+
binding(bs, Modifier_CTRL, 'c', Action_WIPE_LAYER);
6768

6869
binding(bs, Modifier_NONE, 'm', Action_TOGGLE_MENU);
6970
binding(bs, Modifier_NONE, 'e', Action_MODE_ERASER);
@@ -252,6 +253,9 @@ binding_dispatch_action(BindableAction a, MiltonInput* input, Milton* milton, v2
252253
case ActionRelease_PEEK_OUT: {
253254
peek_out_trigger_stop(milton);
254255
} break;
256+
case Action_WIPE_LAYER: {
257+
milton_wipe_layer(milton);
258+
} break;
255259
#if MILTON_DEBUG
256260
case Action_TOGGLE_DEBUG_WINDOW: {
257261
milton->viz_window_visible = !milton->viz_window_visible;

src/bindings.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ enum BindableAction
3939
Action_SET_BRUSH_ALPHA_100,
4040
Action_HELP,
4141
Action_PEEK_OUT,
42+
Action_WIPE_LAYER,
4243

4344
#if MILTON_ENABLE_PROFILING
4445
// Debug bindings

src/canvas.cc

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ namespace layer
108108
}
109109
return layer;
110110
}
111+
111112
Layer*
112113
get_by_id(Layer* root_layer, i32 id)
113114
{
@@ -141,6 +142,12 @@ namespace layer
141142
return result;
142143
}
143144

145+
void
146+
layer_wipe(Layer* layer)
147+
{
148+
StrokeList* strokes = &(layer->strokes);
149+
reset(strokes);
150+
}
144151

145152
void
146153
layer_toggle_visibility(Layer* layer)

src/canvas.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@ namespace layer {
105105
void layer_toggle_visibility (Layer* layer);
106106
b32 layer_has_blur_effect (Layer* layer);
107107
Stroke* layer_push_stroke (Layer* layer, Stroke stroke);
108+
void layer_wipe(Layer* layer);
108109
i32 number_of_layers (Layer* root);
109110
void free_layers (Layer* root);
110111
i64 count_strokes (Layer* root);

src/gui.cc

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,12 @@ gui_layer_window(MiltonInput* input, PlatformState* platform, Milton* milton, f3
2525

2626
// Layer window
2727
ImGui::SetNextWindowPos(ImVec2(ui_scale*10, ui_scale*20 + (float)pbounds.bottom + brush_window_height ), ImGuiSetCond_FirstUseEver);
28-
ImGui::SetNextWindowSize(ImVec2(ui_scale*300, ui_scale*220), ImGuiSetCond_FirstUseEver);
28+
ImGui::SetNextWindowSize(ImVec2(ui_scale*400, ui_scale*220), ImGuiSetCond_FirstUseEver);
29+
2930
if ( ImGui::Begin(loc(TXT_layers)) ) {
3031
CanvasView* view = milton->view;
31-
// left
32+
33+
// Layers window.
3234
ImGui::BeginChild("left pane", ImVec2(150, 0), true);
3335

3436
Layer* layer = milton->canvas->root_layer;
@@ -48,16 +50,22 @@ gui_layer_window(MiltonInput* input, PlatformState* platform, Milton* milton, f3
4850
layer = layer->prev;
4951
}
5052
ImGui::EndChild();
53+
5154
ImGui::SameLine();
5255

5356
ImGui::BeginGroup();
5457
ImGui::BeginChild("item view", ImVec2(0, 25));
58+
// New layer button.
5559
if ( ImGui::Button(loc(TXT_new_layer)) ) {
5660
milton_new_layer(milton);
5761
}
5862
ImGui::SameLine();
59-
60-
// Layer effects
63+
// Wipe layer.
64+
if ( ImGui::Button(loc(TXT_wipe_layer)) ) {
65+
milton_wipe_layer(milton);
66+
}
67+
ImGui::SameLine();
68+
// Layer effects button.
6169
if ( canvas ) {
6270
Layer* working_layer = canvas->working_layer;
6371
Arena* canvas_arena = &canvas->arena;
@@ -141,8 +149,8 @@ gui_layer_window(MiltonInput* input, PlatformState* platform, Milton* milton, f3
141149
}
142150
}
143151

144-
ImGui::Separator();
145152
ImGui::EndChild();
153+
ImGui::Separator();
146154
ImGui::BeginChild("buttons");
147155

148156
static b32 is_renaming = false;

src/localization.cc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ init_localization()
5959
EN(TXT_toggle_gui_visibility, "Toggle GUI Visibility");
6060
EN(TXT_layers, "Layers");
6161
EN(TXT_new_layer, "New Layer");
62+
EN(TXT_wipe_layer, "Clean layer");
6263
EN(TXT_rename, "Rename");
6364
EN(TXT_move, "Move");
6465
EN(TXT_move_canvas, "Move canvas");

src/localization.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ enum Texts
4444
TXT_switch_to_primitive,
4545
TXT_help_me,
4646
TXT_new_layer,
47+
TXT_wipe_layer,
4748
TXT_rename,
4849
TXT_move,
4950
TXT_move_canvas,
@@ -115,6 +116,7 @@ enum Texts
115116
TXT_Action_SET_BRUSH_ALPHA_100,
116117
TXT_Action_HELP,
117118
TXT_Action_PEEK_OUT,
119+
TXT_Action_WIPE_LAYER,
118120

119121
#if MILTON_ENABLE_PROFILING
120122
TXT_Action_TOGGLE_DEBUG_WINDOW,

src/milton.cc

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -861,6 +861,11 @@ milton_set_working_layer(Milton* milton, Layer* layer)
861861
milton->view->working_layer_id = layer->id;
862862
}
863863

864+
void milton_wipe_layer(Milton* milton)
865+
{
866+
layer::layer_wipe(milton->canvas->working_layer);
867+
}
868+
864869
void
865870
milton_delete_working_layer(Milton* milton)
866871
{

src/milton.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -294,6 +294,7 @@ void milton_new_layer_with_id(Milton* milton, i32 new_id);
294294
void milton_set_working_layer(Milton* milton, Layer* layer);
295295
void milton_delete_working_layer(Milton* milton);
296296
void milton_set_background_color(Milton* milton, v3f background_color);
297+
void milton_wipe_layer(Milton* milton);
297298

298299
// Set the center of the zoom
299300
void milton_set_zoom_at_point(Milton* milton, v2i zoom_center);

0 commit comments

Comments
 (0)