From 207bc6c98b7caedf84486f04a14e31f43b80d4d5 Mon Sep 17 00:00:00 2001 From: David Capello Date: Fri, 6 May 2016 16:52:07 -0300 Subject: [PATCH] script: add Sprite.select/selectAll functions --- src/app/script/sprite_class.cpp | 43 +++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/src/app/script/sprite_class.cpp b/src/app/script/sprite_class.cpp index ee8d33bce..856fb273c 100644 --- a/src/app/script/sprite_class.cpp +++ b/src/app/script/sprite_class.cpp @@ -11,6 +11,7 @@ #include "app/script/sprite_class.h" +#include "app/cmd/set_mask.h" #include "app/cmd/set_sprite_size.h" #include "app/commands/commands.h" #include "app/commands/params.h" @@ -22,6 +23,7 @@ #include "app/transaction.h" #include "app/ui/document_view.h" #include "app/ui_context.h" +#include "doc/mask.h" #include "doc/palette.h" #include "doc/site.h" #include "doc/sprite.h" @@ -50,6 +52,45 @@ script::result_t Sprite_ctor(script::ContextHandle handle) return 0; } +script::result_t Sprite_select(script::ContextHandle handle) +{ + script::Context ctx(handle); + int x = ctx.requireInt(0); + int y = ctx.requireInt(1); + int w = ctx.requireInt(2); + int h = ctx.requireInt(3); + + auto wrap = (SpriteWrap*)ctx.getThis(); + if (wrap) { + Document* doc = wrap->document(); + + Mask newMask; + if (w > 0 && h > 0) + newMask.replace(gfx::Rect(x, y, w, h)); + + wrap->transaction().execute(new cmd::SetMask(doc, &newMask)); + } + + return 0; +} + +script::result_t Sprite_selectAll(script::ContextHandle handle) +{ + script::Context ctx(handle); + + auto wrap = (SpriteWrap*)ctx.getThis(); + if (wrap) { + Document* doc = wrap->document(); + + Mask newMask; + newMask.replace(doc->sprite()->bounds()); + + wrap->transaction().execute(new cmd::SetMask(doc, &newMask)); + } + + return 0; +} + script::result_t Sprite_resize(script::ContextHandle handle) { script::Context ctx(handle); @@ -208,6 +249,8 @@ script::result_t Sprite_set_height(script::ContextHandle handle) } const script::FunctionEntry Sprite_methods[] = { + { "select", Sprite_select, 4 }, + { "selectAll", Sprite_selectAll, 0 }, { "resize", Sprite_resize, 2 }, { "crop", Sprite_crop, 4 }, { "save", Sprite_save, 2 },