[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