From 361f94909343f19bb841578b6be82f58e8e04490 Mon Sep 17 00:00:00 2001 From: Relintai Date: Sun, 17 Apr 2022 21:10:43 +0200 Subject: [PATCH] Work on porting the actions. --- modules/paint/actions/brighten_action.cpp | 61 +++++--------------- modules/paint/actions/brighten_action.h | 6 +- modules/paint/actions/brush_action.cpp | 67 ++++++++++------------ modules/paint/actions/brush_action.h | 4 -- modules/paint/actions/bucket_action.cpp | 60 ++++++++----------- modules/paint/actions/bucket_action.h | 4 -- modules/paint/actions/cut_action.cpp | 24 +++----- modules/paint/actions/cut_action.h | 5 +- modules/paint/actions/darken_action.cpp | 30 +++------- modules/paint/actions/darken_action.h | 6 +- modules/paint/actions/line_action.cpp | 23 ++------ modules/paint/actions/line_action.h | 5 +- modules/paint/actions/multiline_action.cpp | 29 ++-------- modules/paint/actions/multiline_action.h | 3 - modules/paint/actions/paint_action.cpp | 63 +++++++++++++------- modules/paint/actions/paint_action.h | 22 ++++++- modules/paint/actions/paste_cut_action.cpp | 28 ++------- modules/paint/actions/paste_cut_action.h | 4 -- modules/paint/actions/pencil_action.cpp | 30 ++-------- modules/paint/actions/pencil_action.h | 4 -- modules/paint/actions/rainbow_action.cpp | 23 ++------ modules/paint/actions/rainbow_action.h | 3 - modules/paint/actions/rect_action.cpp | 23 ++------ modules/paint/actions/rect_action.h | 5 +- 24 files changed, 183 insertions(+), 349 deletions(-) diff --git a/modules/paint/actions/brighten_action.cpp b/modules/paint/actions/brighten_action.cpp index bd5ee2ab8..9da0c14cc 100644 --- a/modules/paint/actions/brighten_action.cpp +++ b/modules/paint/actions/brighten_action.cpp @@ -24,17 +24,12 @@ SOFTWARE. #include "brighten_action.h" -#include "../paint_canvas_layer.h" #include "../paint_canvas.h" +#include "../paint_canvas_layer.h" #include "../paint_utilities.h" void BrightenAction::do_action(PaintCanvas *canvas, const Array &data) { PaintAction::do_action(canvas, data); -/* - PoolVector2iArray undo_cells = action_data_undo["cells"]; - PoolColorArray undo_colors = action_data_undo["colors"]; - PoolVector2iArray redo_cells = action_data_redo["cells"]; - PoolColorArray redo_colors = action_data_redo["colors"]; PoolVector2iArray pixels = PaintUtilities::get_pixels_in_line(data[0], data[1]); @@ -47,57 +42,27 @@ void BrightenAction::do_action(PaintCanvas *canvas, const Array &data) { continue; } - + Color brightened_color = col.lightened(brighten_color); - if pixel in action_data.undo.cells: - var brightened_color = canvas.get_pixel_v(pixel).lightened(0.1); - canvas.set_pixel_v(pixel, brightened_color); + if (pv2ia_contains(undo_cells, pixel)) { + canvas->set_pixel_v(pixel, brightened_color); - action_data.redo.cells.append(pixel); - action_data.redo.colors.append(brightened_color); + redo_cells.append(pixel); + redo_colors.append(brightened_color); continue; + } - action_data.undo.colors.append(canvas.get_pixel_v(pixel)); - action_data.undo.cells.append(pixel); - Color brightened_color = canvas.get_pixel_v(pixel).lightened(0.1); - canvas.set_pixel_v(pixel, brightened_color); + undo_colors.append(col); + undo_cells.append(pixel); - action_data.redo.cells.append(pixel); - action_data.redo.colors.append(brightened_color); - } + canvas->set_pixel_v(pixel, brightened_color); - PoolVector2iArray undo_cells = action_data_undo["cells"] = undo_cells; - PoolColorArray undo_colors = action_data_undo["colors"] = undo_colors; - PoolVector2iArray redo_cells = action_data_redo["cells"] = redo_cells; - PoolColorArray redo_colors = action_data_redo["colors"] = redo_colors; - - */ -} -void BrightenAction::commit_action(PaintCanvas *canvas) { - /* - var cells = action_data.redo.cells - var colors = action_data.redo.colors - */ -} - -void BrightenAction::undo_action(PaintCanvas *canvas) { - PoolVector2iArray cells = action_data_undo["cells"]; - PoolColorArray colors = action_data_undo["colors"]; - - for (int idx = 0; idx < cells.size(); ++idx) { - canvas->_set_pixel_v(action_data["layer"], cells[idx], colors[idx]); + redo_cells.append(pixel); + redo_colors.append(brightened_color); } } -void BrightenAction::redo_action(PaintCanvas *canvas) { - PoolVector2iArray cells = action_data_redo["cells"]; - PoolColorArray colors = action_data_redo["colors"]; - - for (int idx = 0; idx < cells.size(); ++idx) { - canvas->_set_pixel_v(action_data["layer"], cells[idx], colors[idx]); - } -} - BrightenAction::BrightenAction() { + brighten_color = 0.1; } BrightenAction::~BrightenAction() { diff --git a/modules/paint/actions/brighten_action.h b/modules/paint/actions/brighten_action.h index 40d9d8526..e9a03beee 100644 --- a/modules/paint/actions/brighten_action.h +++ b/modules/paint/actions/brighten_action.h @@ -34,15 +34,11 @@ class BrightenAction : public PaintAction { public: void do_action(PaintCanvas *canvas, const Array &data); - void commit_action(PaintCanvas *canvas); - - void undo_action(PaintCanvas *canvas); - void redo_action(PaintCanvas *canvas); BrightenAction(); ~BrightenAction(); - //const brighten_color = 0.1 + float brighten_color; protected: static void _bind_methods(); diff --git a/modules/paint/actions/brush_action.cpp b/modules/paint/actions/brush_action.cpp index ea89c0e70..2488df89c 100644 --- a/modules/paint/actions/brush_action.cpp +++ b/modules/paint/actions/brush_action.cpp @@ -24,51 +24,44 @@ SOFTWARE. #include "brush_action.h" +#include "../bush_prefabs.h" +#include "../paint_canvas.h" +#include "../paint_canvas_layer.h" +#include "../paint_utilities.h" + void BrushAction::do_action(PaintCanvas *canvas, const Array &data) { - /* - .do_action(canvas, data) + PaintAction::do_action(canvas, data); - for pixel in GEUtils.get_pixels_in_line(data[0], data[1]): - for off in BrushPrefabs.get_brush(data[3], data[4]): - var p = pixel + off + PoolVector2iArray pixels = PaintUtilities::get_pixels_in_line(data[0], data[1]); + int brush_type = data[3]; + PoolVector2iArray brush = BrushPrefabs::get_brush(static_cast(brush_type), data[4]); - if p in action_data.undo.cells or canvas.get_pixel_v(p) == null: - continue + for (int i = 0; i < pixels.size(); ++i) { + Vector2i pixel = pixels[i]; - if canvas.is_alpha_locked() and canvas.get_pixel_v(p) == Color.transparent: - continue + for (int i = 0; i < brush.size(); ++i) { + Vector2i off = brush[i]; + Vector2i p = pixel + off; - action_data.undo.colors.append(canvas.get_pixel_v(p)) - action_data.undo.cells.append(p) + if (pv2ia_contains(undo_cells, p)) { + continue; + } - canvas.set_pixel_v(p, data[2]) + Color col = canvas->get_pixel_v(p); - action_data.redo.cells.append(p) - action_data.redo.colors.append(data[2]) - */ -} -void BrushAction::commit_action(PaintCanvas *canvas) { - /* - var cells = action_data.redo.cells - var colors = action_data.redo.colors - */ -} + if (canvas->is_alpha_locked() && col.a < 0.00001) { + continue; + } -void BrushAction::undo_action(PaintCanvas *canvas) { - /* - var cells = action_data.undo.cells - var colors = action_data.undo.colors - for idx in range(cells.size()): - canvas._set_pixel_v(action_data.layer, cells[idx], colors[idx]) - */ -} -void BrushAction::redo_action(PaintCanvas *canvas) { - /* - var cells = action_data.redo.cells - var colors = action_data.redo.colors - for idx in range(cells.size()): - canvas._set_pixel_v(action_data.layer, cells[idx], colors[idx]) - */ + undo_colors.append(col); + undo_cells.append(p); + + canvas->set_pixel_v(pixel, data[2]); + + redo_cells.append(p); + redo_colors.append(data[2]); + } + } } BrushAction::BrushAction() { diff --git a/modules/paint/actions/brush_action.h b/modules/paint/actions/brush_action.h index 25b425ad0..cb53cfa8c 100644 --- a/modules/paint/actions/brush_action.h +++ b/modules/paint/actions/brush_action.h @@ -34,10 +34,6 @@ class BrushAction : public PaintAction { public: void do_action(PaintCanvas *canvas, const Array &data); - void commit_action(PaintCanvas *canvas); - - void undo_action(PaintCanvas *canvas); - void redo_action(PaintCanvas *canvas); BrushAction(); ~BrushAction(); diff --git a/modules/paint/actions/bucket_action.cpp b/modules/paint/actions/bucket_action.cpp index d5c70d86f..1f2f0a1f1 100644 --- a/modules/paint/actions/bucket_action.cpp +++ b/modules/paint/actions/bucket_action.cpp @@ -24,51 +24,39 @@ SOFTWARE. #include "bucket_action.h" +#include "../paint_canvas.h" +#include "../paint_canvas_layer.h" +#include "../paint_utilities.h" + void BucketAction::do_action(PaintCanvas *canvas, const Array &data) { + PaintAction::do_action(canvas, data); /* - .do_action(canvas, data) + Color col = canvas->get_pixel_v(data[0]); + Color col2 = data[2]; - if canvas.get_pixel_v(data[0]) == data[2]: - return - var pixels = canvas.select_same_color(data[0].x, data[0].y) + if (col == col2) { + return; + } - for pixel in pixels: - if pixel in action_data.undo.cells: - continue + PoolVector2iArray pixels = canvas->select_same_color(data[0].x, data[0].y); - if canvas.is_alpha_locked() and canvas.get_pixel_v(pixel) == Color.transparent: - continue + for (int i = 0; i < pixels.size(); ++i) { + Vector2i pixel = pixels[i]; - action_data.undo.colors.append(canvas.get_pixel_v(pixel)) - action_data.undo.cells.append(pixel) + if pixel in action_data.undo.cells: + continue; - canvas.set_pixel_v(pixel, data[2]) + if canvas.is_alpha_locked() and canvas.get_pixel_v(pixel) == Color.transparent: + continue; - action_data.redo.cells.append(pixel) - action_data.redo.colors.append(data[2]) - */ -} -void BucketAction::commit_action(PaintCanvas *canvas) { - /* - var cells = action_data.preview.cells - var colors = action_data.preview.colors - */ -} + action_data.undo.colors.append(canvas.get_pixel_v(pixel)); + action_data.undo.cells.append(pixel); -void BucketAction::undo_action(PaintCanvas *canvas) { - /* - var cells = action_data.undo.cells - var colors = action_data.undo.colors - for idx in range(cells.size()): - canvas._set_pixel_v(action_data.layer, cells[idx], colors[idx]) - */ -} -void BucketAction::redo_action(PaintCanvas *canvas) { - /* - var cells = action_data.redo.cells - var colors = action_data.redo.colors - for idx in range(cells.size()): - canvas._set_pixel_v(action_data.layer, cells[idx], colors[idx]) + canvas.set_pixel_v(pixel, data[2]); + + action_data.redo.cells.append(pixel); + action_data.redo.colors.append(data[2]); + } */ } diff --git a/modules/paint/actions/bucket_action.h b/modules/paint/actions/bucket_action.h index 96c5e7db6..2ec6f9664 100644 --- a/modules/paint/actions/bucket_action.h +++ b/modules/paint/actions/bucket_action.h @@ -34,10 +34,6 @@ class BucketAction : public PaintAction { public: void do_action(PaintCanvas *canvas, const Array &data); - void commit_action(PaintCanvas *canvas); - - void undo_action(PaintCanvas *canvas); - void redo_action(PaintCanvas *canvas); BucketAction(); ~BucketAction(); diff --git a/modules/paint/actions/cut_action.cpp b/modules/paint/actions/cut_action.cpp index c1d4e1408..089614dcd 100644 --- a/modules/paint/actions/cut_action.cpp +++ b/modules/paint/actions/cut_action.cpp @@ -24,11 +24,17 @@ SOFTWARE. #include "cut_action.h" +#include "../paint_canvas.h" +#include "../paint_canvas_layer.h" +#include "../paint_utilities.h" + bool CutAction::can_commit() { return false; //ugly way of handling a cut } void CutAction::do_action(PaintCanvas *canvas, const Array &data) { + PaintAction::do_action(canvas, data); + /* .do_action(canvas, data) @@ -85,24 +91,8 @@ void CutAction::commit_action(PaintCanvas *canvas) { */ } -void CutAction::undo_action(PaintCanvas *canvas) { - /* - var cells = action_data.undo.cells - var colors = action_data.undo.colors - for idx in range(cells.size()): - canvas._set_pixel_v(action_data.layer, cells[idx], colors[idx]) - */ -} -void CutAction::redo_action(PaintCanvas *canvas) { - /* - var cells = action_data.redo.cells - var colors = action_data.redo.colors - for idx in range(cells.size()): - canvas._set_pixel_v(action_data.layer, cells[idx], colors[idx]) - */ -} - CutAction::CutAction() { + selection_color = Color(0.8, 0.8, 0.8, 0.5); } CutAction::~CutAction() { diff --git a/modules/paint/actions/cut_action.h b/modules/paint/actions/cut_action.h index dbbc5ee42..4fa781eb3 100644 --- a/modules/paint/actions/cut_action.h +++ b/modules/paint/actions/cut_action.h @@ -38,13 +38,10 @@ public: void do_action(PaintCanvas *canvas, const Array &data); void commit_action(PaintCanvas *canvas); - void undo_action(PaintCanvas *canvas); - void redo_action(PaintCanvas *canvas); - CutAction(); ~CutAction(); - //const selection_color = Color(0.8, 0.8, 0.8, 0.5) + Color selection_color; Vector2 mouse_start_pos; Vector2 mouse_end_pos; diff --git a/modules/paint/actions/darken_action.cpp b/modules/paint/actions/darken_action.cpp index 861785f29..126eaf0d5 100644 --- a/modules/paint/actions/darken_action.cpp +++ b/modules/paint/actions/darken_action.cpp @@ -24,7 +24,13 @@ SOFTWARE. #include "darken_action.h" +#include "../paint_canvas.h" +#include "../paint_canvas_layer.h" +#include "../paint_utilities.h" + void DarkenAction::do_action(PaintCanvas *canvas, const Array &data) { + PaintAction::do_action(canvas, data); + /* .do_action(canvas, data) @@ -53,31 +59,9 @@ void DarkenAction::do_action(PaintCanvas *canvas, const Array &data) { action_data.redo.colors.append(darkened_color) */ } -void DarkenAction::commit_action(PaintCanvas *canvas) { - /* - var cells = action_data.redo.cells - var colors = action_data.redo.colors - */ -} - -void DarkenAction::undo_action(PaintCanvas *canvas) { - /* - var cells = action_data.undo.cells - var colors = action_data.undo.colors - for idx in range(cells.size()): - canvas._set_pixel_v(action_data.layer, cells[idx], colors[idx]) - */ -} -void DarkenAction::redo_action(PaintCanvas *canvas) { - /* - var cells = action_data.redo.cells - var colors = action_data.redo.colors - for idx in range(cells.size()): - canvas._set_pixel_v(action_data.layer, cells[idx], colors[idx]) - */ -} DarkenAction::DarkenAction() { + dark_factor = 0.1; } DarkenAction::~DarkenAction() { diff --git a/modules/paint/actions/darken_action.h b/modules/paint/actions/darken_action.h index a8c110a14..018fd45bc 100644 --- a/modules/paint/actions/darken_action.h +++ b/modules/paint/actions/darken_action.h @@ -34,15 +34,11 @@ class DarkenAction : public PaintAction { public: void do_action(PaintCanvas *canvas, const Array &data); - void commit_action(PaintCanvas *canvas); - - void undo_action(PaintCanvas *canvas); - void redo_action(PaintCanvas *canvas); DarkenAction(); ~DarkenAction(); - //const dark_factor = 0.1 + float dark_factor; protected: static void _bind_methods(); diff --git a/modules/paint/actions/line_action.cpp b/modules/paint/actions/line_action.cpp index d2ec5d46f..6c903513d 100644 --- a/modules/paint/actions/line_action.cpp +++ b/modules/paint/actions/line_action.cpp @@ -24,7 +24,13 @@ SOFTWARE. #include "line_action.h" +#include "../paint_canvas.h" +#include "../paint_canvas_layer.h" +#include "../paint_utilities.h" + void LineAction::do_action(PaintCanvas *canvas, const Array &data) { + PaintAction::do_action(canvas, data); + /* .do_action(canvas, data) @@ -64,23 +70,6 @@ void LineAction::commit_action(PaintCanvas *canvas) { */ } -void LineAction::undo_action(PaintCanvas *canvas) { - /* - var cells = action_data.undo.cells - var colors = action_data.undo.colors - for idx in range(cells.size()): - canvas._set_pixel_v(action_data.layer, cells[idx], colors[idx]) - */ -} -void LineAction::redo_action(PaintCanvas *canvas) { - /* - var cells = action_data.redo.cells - var colors = action_data.redo.colors - for idx in range(cells.size()): - canvas._set_pixel_v(action_data.layer, cells[idx], colors[idx]) - */ -} - LineAction::LineAction() { } diff --git a/modules/paint/actions/line_action.h b/modules/paint/actions/line_action.h index c43f0cd0c..16dd90bcf 100644 --- a/modules/paint/actions/line_action.h +++ b/modules/paint/actions/line_action.h @@ -36,13 +36,10 @@ public: void do_action(PaintCanvas *canvas, const Array &data); void commit_action(PaintCanvas *canvas); - void undo_action(PaintCanvas *canvas); - void redo_action(PaintCanvas *canvas); - LineAction(); ~LineAction(); - //var mouse_start_pos = null + Vector2 mouse_start_pos; protected: static void _bind_methods(); diff --git a/modules/paint/actions/multiline_action.cpp b/modules/paint/actions/multiline_action.cpp index 324e449c3..7f52bad69 100644 --- a/modules/paint/actions/multiline_action.cpp +++ b/modules/paint/actions/multiline_action.cpp @@ -24,11 +24,17 @@ SOFTWARE. #include "multiline_action.h" +#include "../paint_canvas.h" +#include "../paint_canvas_layer.h" +#include "../paint_utilities.h" + bool MultiLineAction::can_commit() { return false; } void MultiLineAction::do_action(PaintCanvas *canvas, const Array &data) { + PaintAction::do_action(canvas, data); + /* .do_action(canvas, data) @@ -44,29 +50,6 @@ void MultiLineAction::do_action(PaintCanvas *canvas, const Array &data) { action_data.redo.colors.append(data[2]) */ } -void MultiLineAction::commit_action(PaintCanvas *canvas) { - /* - var cells = action_data.redo.cells - var colors = action_data.redo.colors - */ -} - -void MultiLineAction::undo_action(PaintCanvas *canvas) { - /* - var cells = action_data.undo.cells - var colors = action_data.undo.colors - for idx in range(cells.size()): - canvas._set_pixel_v(action_data.layer, cells[idx], colors[idx]) - */ -} -void MultiLineAction::redo_action(PaintCanvas *canvas) { - /* - var cells = action_data.redo.cells - var colors = action_data.redo.colors - for idx in range(cells.size()): - canvas._set_pixel_v(action_data.layer, cells[idx], colors[idx]) - */ -} MultiLineAction::MultiLineAction() { } diff --git a/modules/paint/actions/multiline_action.h b/modules/paint/actions/multiline_action.h index ad54aeb26..eaf2def32 100644 --- a/modules/paint/actions/multiline_action.h +++ b/modules/paint/actions/multiline_action.h @@ -38,9 +38,6 @@ public: void do_action(PaintCanvas *canvas, const Array &data); void commit_action(PaintCanvas *canvas); - void undo_action(PaintCanvas *canvas); - void redo_action(PaintCanvas *canvas); - MultiLineAction(); ~MultiLineAction(); diff --git a/modules/paint/actions/paint_action.cpp b/modules/paint/actions/paint_action.cpp index a7631f531..d227546ba 100644 --- a/modules/paint/actions/paint_action.cpp +++ b/modules/paint/actions/paint_action.cpp @@ -28,37 +28,25 @@ SOFTWARE. #include "../paint_canvas_layer.h" void PaintAction::do_action(PaintCanvas *canvas, const Array &data) { - if (!action_data_redo.has("cells")) { - action_data_redo["cells"] = PoolVector2iArray(); - action_data_redo["colors"] = PoolColorArray(); - } - - if (!action_data_undo.has("cells")) { - action_data_undo["cells"] = PoolVector2iArray(); - action_data_undo["colors"] = PoolColorArray(); - } - - if (!action_data_preview.has("cells")) { - action_data_preview["cells"] = PoolVector2iArray(); - action_data_preview["colors"] = PoolColorArray(); - } - - if (!action_data.has("layer")) { - action_data["layer"] = canvas->get_active_layer(); - } + layer = canvas->get_active_layer(); } void PaintAction::commit_action(PaintCanvas *canvas) { ERR_PRINT("NO IMPL commit_action"); } void PaintAction::undo_action(PaintCanvas *canvas) { - ERR_PRINT("NO IMPL undo_action"); + for (int idx = 0; idx < undo_cells.size(); ++idx) { + canvas->_set_pixel_v(layer, undo_cells[idx], undo_colors[idx]); + } } void PaintAction::redo_action(PaintCanvas *canvas) { - ERR_PRINT("NO IMPL redo_action"); + for (int idx = 0; idx < redo_cells.size(); ++idx) { + canvas->_set_pixel_v(layer, redo_cells[idx], redo_colors[idx]); + } } + bool PaintAction::can_commit() { - return !action_data_redo.empty(); + return !redo_cells.empty(); } PoolVector2iArray PaintAction::get_x_sym_points(const int canvas_width, const Vector2i &pixel) { @@ -145,6 +133,39 @@ PoolVector2iArray PaintAction::get_points(PaintCanvas *canvas, const Vector2i &p return PoolVector2iArray(); } +bool PaintAction::pv2ia_contains(const PoolVector2iArray &arr, const Vector2i &v) const { + PoolVector2iArray::Read r = arr.read(); + int s = arr.size(); + + for (int i = 0; i < s; ++s) { + if (r[i] == v) { + return true; + } + } + + return false; +} + +void PaintAction::draw_points(PaintCanvas *canvas, const PoolVector2iArray &point_arr, const PoolColorArray &color_arr) { + for (int i = 0; i < point_arr.size(); ++i) { + Vector2i pixel = point_arr[i]; + + Color col = color_arr[i]; + + if (canvas->is_alpha_locked() && col.a < 0.00001) { + continue; + } + + undo_cells.append(pixel); + undo_colors.append(col); + + canvas->set_pixel_v(pixel, col); + + redo_cells.append(pixel); + redo_colors.append(col); + } +} + PaintAction::PaintAction() { } diff --git a/modules/paint/actions/paint_action.h b/modules/paint/actions/paint_action.h index 0c8ff6fe1..8ce7c919a 100644 --- a/modules/paint/actions/paint_action.h +++ b/modules/paint/actions/paint_action.h @@ -27,13 +27,14 @@ SOFTWARE. #include "core/reference.h" +#include "core/array.h" +#include "core/dictionary.h" +#include "core/math/vector2i.h" #include "core/pool_vector.h" #include "core/variant.h" -#include "core/dictionary.h" -#include "core/array.h" -#include "core/math/vector2i.h" class PaintCanvas; +class PaintCanvasLayer; //extends Node (this should probably not be a node) //class_name GEAction @@ -53,6 +54,10 @@ public: virtual PoolVector2iArray get_xy_sym_points(const int canvas_width, const int canvas_height, const Vector2i &pixel); virtual PoolVector2iArray get_points(PaintCanvas *canvas, const Vector2i &pixel); + bool pv2ia_contains(const PoolVector2iArray &arr, const Vector2i &v) const; + + void draw_points(PaintCanvas *canvas, const PoolVector2iArray &point_arr, const PoolColorArray &color_arr); + PaintAction(); ~PaintAction(); @@ -60,6 +65,17 @@ public: Dictionary action_data_redo; Dictionary action_data_preview; + PoolVector2iArray undo_cells; + PoolColorArray undo_colors; + + PoolVector2iArray redo_cells; + PoolColorArray redo_colors; + + PoolVector2iArray preview_cells; + PoolColorArray preview_colors; + + Ref layer; + Dictionary action_data; protected: diff --git a/modules/paint/actions/paste_cut_action.cpp b/modules/paint/actions/paste_cut_action.cpp index 4e98c983a..3b5a51be1 100644 --- a/modules/paint/actions/paste_cut_action.cpp +++ b/modules/paint/actions/paste_cut_action.cpp @@ -24,11 +24,17 @@ SOFTWARE. #include "paste_cut_action.h" +#include "../paint_canvas.h" +#include "../paint_canvas_layer.h" +#include "../paint_utilities.h" + //data[2] = selection_pos //data[3] = selection_color //data[4] = cut pos //data[5] = cut size void PasteCutAction::do_action(PaintCanvas *canvas, const Array &data) { + PaintAction::do_action(canvas, data); + /* .do_action(canvas, data) @@ -60,28 +66,6 @@ void PasteCutAction::do_action(PaintCanvas *canvas, const Array &data) { canvas.set_pixel_v(pixel, color) */ } -void PasteCutAction::commit_action(PaintCanvas *canvas) { - /* - canvas.clear_preview_layer() - */ -} - -void PasteCutAction::undo_action(PaintCanvas *canvas) { - /* - var cells = action_data.undo.cells - var colors = action_data.undo.colors - for idx in range(cells.size()): - canvas._set_pixel_v(action_data.layer, cells[idx], colors[idx]) - */ -} -void PasteCutAction::redo_action(PaintCanvas *canvas) { - /* - var cells = action_data.redo.cells - var colors = action_data.redo.colors - for idx in range(cells.size()): - canvas._set_pixel_v(action_data.layer, cells[idx], colors[idx]) - */ -} PasteCutAction::PasteCutAction() { } diff --git a/modules/paint/actions/paste_cut_action.h b/modules/paint/actions/paste_cut_action.h index 30deac68b..1f754d2f9 100644 --- a/modules/paint/actions/paste_cut_action.h +++ b/modules/paint/actions/paste_cut_action.h @@ -34,10 +34,6 @@ class PasteCutAction : public PaintAction { public: void do_action(PaintCanvas *canvas, const Array &data); - void commit_action(PaintCanvas *canvas); - - void undo_action(PaintCanvas *canvas); - void redo_action(PaintCanvas *canvas); PasteCutAction(); ~PasteCutAction(); diff --git a/modules/paint/actions/pencil_action.cpp b/modules/paint/actions/pencil_action.cpp index db0bb4230..7fc765ba7 100644 --- a/modules/paint/actions/pencil_action.cpp +++ b/modules/paint/actions/pencil_action.cpp @@ -24,7 +24,13 @@ SOFTWARE. #include "pencil_action.h" +#include "../paint_canvas.h" +#include "../paint_canvas_layer.h" +#include "../paint_utilities.h" + void PencilAction::do_action(PaintCanvas *canvas, const Array &data) { + PaintAction::do_action(canvas, data); + /* .do_action(canvas, data) @@ -34,30 +40,6 @@ void PencilAction::do_action(PaintCanvas *canvas, const Array &data) { _set_pixel(canvas, p, data[2]) */ } -void PencilAction::commit_action(PaintCanvas *canvas) { - /* - var cells = action_data.redo.cells - var colors = action_data.redo.colors - return [] - */ -} - -void PencilAction::undo_action(PaintCanvas *canvas) { - /* - var cells = action_data.undo.cells - var colors = action_data.undo.colors - for idx in range(cells.size()): - canvas._set_pixel_v(action_data.layer, cells[idx], colors[idx]) - */ -} -void PencilAction::redo_action(PaintCanvas *canvas) { - /* - var cells = action_data.redo.cells - var colors = action_data.redo.colors - for idx in range(cells.size()): - canvas._set_pixel_v(action_data.layer, cells[idx], colors[idx]) - */ -} void PencilAction::_set_pixel(PaintCanvas *canvas, Vector2i pixel, Color color) { /* diff --git a/modules/paint/actions/pencil_action.h b/modules/paint/actions/pencil_action.h index 1cacdce8f..d72657fa9 100644 --- a/modules/paint/actions/pencil_action.h +++ b/modules/paint/actions/pencil_action.h @@ -34,10 +34,6 @@ class PencilAction : public PaintAction { public: void do_action(PaintCanvas *canvas, const Array &data); - void commit_action(PaintCanvas *canvas); - - void undo_action(PaintCanvas *canvas); - void redo_action(PaintCanvas *canvas); void _set_pixel(PaintCanvas *canvas, Vector2i pixel, Color color); diff --git a/modules/paint/actions/rainbow_action.cpp b/modules/paint/actions/rainbow_action.cpp index 52ed220f1..3a5a5723b 100644 --- a/modules/paint/actions/rainbow_action.cpp +++ b/modules/paint/actions/rainbow_action.cpp @@ -24,7 +24,13 @@ SOFTWARE. #include "rainbow_action.h" +#include "../paint_canvas.h" +#include "../paint_canvas_layer.h" +#include "../paint_utilities.h" + void RainbowAction::do_action(PaintCanvas *canvas, const Array &data) { + PaintAction::do_action(canvas, data); + /* .do_action(canvas, data) @@ -67,23 +73,6 @@ void RainbowAction::commit_action(PaintCanvas *canvas) { */ } -void RainbowAction::undo_action(PaintCanvas *canvas) { - /* - var cells = action_data.undo.cells - var colors = action_data.undo.colors - for idx in range(cells.size()): - canvas._set_pixel_v(action_data.layer, cells[idx], colors[idx]) - */ -} -void RainbowAction::redo_action(PaintCanvas *canvas) { - /* - var cells = action_data.redo.cells - var colors = action_data.redo.colors - for idx in range(cells.size()): - canvas._set_pixel_v(action_data.layer, cells[idx], colors[idx]) - */ -} - RainbowAction::RainbowAction() { } diff --git a/modules/paint/actions/rainbow_action.h b/modules/paint/actions/rainbow_action.h index 40d9e87e2..977bf07ef 100644 --- a/modules/paint/actions/rainbow_action.h +++ b/modules/paint/actions/rainbow_action.h @@ -36,9 +36,6 @@ public: void do_action(PaintCanvas *canvas, const Array &data); void commit_action(PaintCanvas *canvas); - void undo_action(PaintCanvas *canvas); - void redo_action(PaintCanvas *canvas); - RainbowAction(); ~RainbowAction(); diff --git a/modules/paint/actions/rect_action.cpp b/modules/paint/actions/rect_action.cpp index a322d09ef..c7907df66 100644 --- a/modules/paint/actions/rect_action.cpp +++ b/modules/paint/actions/rect_action.cpp @@ -24,7 +24,13 @@ SOFTWARE. #include "rect_action.h" +#include "../paint_canvas.h" +#include "../paint_canvas_layer.h" +#include "../paint_utilities.h" + void RectAction::do_action(PaintCanvas *canvas, const Array &data) { + PaintAction::do_action(canvas, data); + /* .do_action(canvas, data) @@ -74,23 +80,6 @@ void RectAction::commit_action(PaintCanvas *canvas) { */ } -void RectAction::undo_action(PaintCanvas *canvas) { - /* - var cells = action_data.undo.cells - var colors = action_data.undo.colors - for idx in range(cells.size()): - canvas._set_pixel_v(action_data.layer, cells[idx], colors[idx]) - */ -} -void RectAction::redo_action(PaintCanvas *canvas) { - /* - var cells = action_data.redo.cells - var colors = action_data.redo.colors - for idx in range(cells.size()): - canvas._set_pixel_v(action_data.layer, cells[idx], colors[idx]) - */ -} - RectAction::RectAction() { } diff --git a/modules/paint/actions/rect_action.h b/modules/paint/actions/rect_action.h index cf0970fbf..e5f36464a 100644 --- a/modules/paint/actions/rect_action.h +++ b/modules/paint/actions/rect_action.h @@ -36,13 +36,10 @@ public: void do_action(PaintCanvas *canvas, const Array &data); void commit_action(PaintCanvas *canvas); - void undo_action(PaintCanvas *canvas); - void redo_action(PaintCanvas *canvas); - RectAction(); ~RectAction(); - //var mouse_start_pos = null + Vector2 mouse_start_pos; protected: static void _bind_methods();