[aseprite] 11/64: script: add Sprite.colorMode property and ColorMode constants
Tobias Hansen
thansen at moszumanska.debian.org
Tue Jun 21 14:43:00 UTC 2016
This is an automated email from the git hooks/post-receive script.
thansen pushed a commit to branch master
in repository aseprite.
commit 31116ff42464076b4d55374d3c2d672a126bab03
Author: David Capello <davidcapello at gmail.com>
Date: Sat May 7 19:44:11 2016 -0300
script: add Sprite.colorMode property and ColorMode constants
---
src/app/script/app_scripting.cpp | 18 ++++++++++++++++++
src/app/script/sprite_class.cpp | 9 +++++++++
src/script/engine.cpp | 6 ++++++
src/script/engine.h | 7 +++++++
4 files changed, 40 insertions(+)
diff --git a/src/app/script/app_scripting.cpp b/src/app/script/app_scripting.cpp
index 346acf4..f13ef3f 100644
--- a/src/app/script/app_scripting.cpp
+++ b/src/app/script/app_scripting.cpp
@@ -22,6 +22,17 @@
namespace app {
+namespace {
+
+const script::ConstantEntry ColorMode_constants[] = {
+ { "RGB", double(IMAGE_RGB) },
+ { "GRAYSCALE", double(IMAGE_GRAYSCALE) },
+ { "INDEXED", double(IMAGE_INDEXED) },
+ { nullptr, 0.0 }
+};
+
+}
+
AppScripting::AppScripting(script::EngineDelegate* delegate)
: script::Engine(delegate)
{
@@ -30,6 +41,13 @@ AppScripting::AppScripting(script::EngineDelegate* delegate)
register_console_object(ctx);
ctx.pushGlobalObject();
+
+ {
+ script::index_t obj = ctx.pushObject();
+ ctx.registerConstants(obj, ColorMode_constants);
+ ctx.setProp(-2, "ColorMode");
+ }
+
register_image_class(-1, ctx);
register_sprite_class(-1, ctx);
register_selection_class(-1, ctx);
diff --git a/src/app/script/sprite_class.cpp b/src/app/script/sprite_class.cpp
index 00b8be1..65772d6 100644
--- a/src/app/script/sprite_class.cpp
+++ b/src/app/script/sprite_class.cpp
@@ -208,6 +208,14 @@ script::result_t Sprite_get_height(script::ContextHandle handle)
return 1;
}
+script::result_t Sprite_get_colorMode(script::ContextHandle handle)
+{
+ script::Context ctx(handle);
+ auto wrap = (SpriteWrap*)ctx.getThis();
+ ctx.pushInt(wrap->sprite()->pixelFormat());
+ return 1;
+}
+
script::result_t Sprite_set_height(script::ContextHandle handle)
{
script::Context ctx(handle);
@@ -243,6 +251,7 @@ const script::PropertyEntry Sprite_props[] = {
{ "filename", Sprite_get_filename, nullptr },
{ "width", Sprite_get_width, Sprite_set_width },
{ "height", Sprite_get_height, Sprite_set_height },
+ { "colorMode", Sprite_get_colorMode, nullptr },
{ "selection", Sprite_get_selection, nullptr },
{ nullptr, nullptr, 0 }
};
diff --git a/src/script/engine.cpp b/src/script/engine.cpp
index 7d1588b..35e0741 100644
--- a/src/script/engine.cpp
+++ b/src/script/engine.cpp
@@ -327,6 +327,12 @@ void Context::pushGlobalObject()
duk_push_global_object(m_handle);
}
+void Context::registerConstants(index_t idx,
+ const ConstantEntry* consts)
+{
+ duk_put_number_list(m_handle, idx, (const duk_number_list_entry*)consts);
+}
+
void Context::registerProp(index_t idx,
const char* id,
Function getter,
diff --git a/src/script/engine.h b/src/script/engine.h
index 451121c..7aa232f 100644
--- a/src/script/engine.h
+++ b/src/script/engine.h
@@ -35,6 +35,11 @@ namespace script {
Function setter;
};
+ struct ConstantEntry {
+ const char* id;
+ double value;
+ };
+
class Module {
public:
virtual ~Module() { }
@@ -100,6 +105,8 @@ namespace script {
index_t pushObject(void* ptr, const char* className);
void pushGlobalObject();
+ void registerConstants(index_t idx,
+ const ConstantEntry* consts);
void registerProp(index_t idx,
const char* id,
Function getter,
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/aseprite.git
More information about the Pkg-games-commits
mailing list