[aseprite] 11/134: Add experimental option to flash the selected layer when Up/down array keys are used (fix #111)

Tobias Hansen thansen at moszumanska.debian.org
Sat Mar 14 17:09:54 UTC 2015


This is an automated email from the git hooks/post-receive script.

thansen pushed a commit to branch master
in repository aseprite.

commit d68f1fa1b8559da7c757125f9eea0640c232090d
Author: David Capello <davidcapello at gmail.com>
Date:   Sat Oct 25 16:04:39 2014 -0300

    Add experimental option to flash the selected layer when Up/down array keys are used (fix #111)
---
 data/widgets/options.xml              |  1 +
 src/app/commands/cmd_options.cpp      |  6 ++++-
 src/app/settings/settings.h           |  4 ++++
 src/app/settings/ui_settings_impl.cpp | 10 +++++++++
 src/app/settings/ui_settings_impl.h   |  3 +++
 src/app/ui/editor/editor.cpp          | 42 +++++++++++++----------------------
 6 files changed, 39 insertions(+), 27 deletions(-)

diff --git a/data/widgets/options.xml b/data/widgets/options.xml
index 344e5d1..c26a9c3 100644
--- a/data/widgets/options.xml
+++ b/data/widgets/options.xml
@@ -87,6 +87,7 @@
         <vbox id="section_experimental">
           <separator text="User Interface" horizontal="true" />
           <check id="native_cursor" text="Use native mouse cursor" />
+          <check id="flash_layer" text="Flash layer when it is selected" />
         </vbox>
 
       </panel>
diff --git a/src/app/commands/cmd_options.cpp b/src/app/commands/cmd_options.cpp
index 3af8ee7..bc65156 100644
--- a/src/app/commands/cmd_options.cpp
+++ b/src/app/commands/cmd_options.cpp
@@ -81,6 +81,9 @@ public:
     if (m_settings->experimental()->useNativeCursor())
       nativeCursor()->setSelected(true);
 
+    if (m_settings->experimental()->flashLayer())
+      flashLayer()->setSelected(true);
+
     if (m_settings->getShowSpriteEditorScrollbars())
       showScrollbars()->setSelected(true);
 
@@ -167,8 +170,9 @@ public:
     m_settings->setUndoSizeLimit(undo_size_limit_value);
     m_settings->setUndoGotoModified(undoGotoModified()->isSelected());
 
-    // Native cursor
+    // Experimental features
     m_settings->experimental()->setUseNativeCursor(nativeCursor()->isSelected());
+    m_settings->experimental()->setFlashLayer(flashLayer()->isSelected());
 
     int new_screen_scaling = screenScale()->getSelectedItemIndex()+1;
     if (new_screen_scaling != get_screen_scaling()) {
diff --git a/src/app/settings/settings.h b/src/app/settings/settings.h
index 45a60b7..ec0e8a9 100644
--- a/src/app/settings/settings.h
+++ b/src/app/settings/settings.h
@@ -176,8 +176,12 @@ namespace app {
   class IExperimentalSettings {
   public:
     virtual ~IExperimentalSettings() { }
+
     virtual bool useNativeCursor() const = 0;
     virtual void setUseNativeCursor(bool state) = 0;
+
+    virtual bool flashLayer() const = 0;
+    virtual void setFlashLayer(bool state) = 0;
   };
 
 } // namespace app
diff --git a/src/app/settings/ui_settings_impl.cpp b/src/app/settings/ui_settings_impl.cpp
index e8a480c..e9ccbbc 100644
--- a/src/app/settings/ui_settings_impl.cpp
+++ b/src/app/settings/ui_settings_impl.cpp
@@ -513,6 +513,16 @@ void UISettingsImpl::setUseNativeCursor(bool state)
   ui::set_use_native_cursors(state);
 }
 
+bool UISettingsImpl::flashLayer() const
+{
+  return get_config_bool("Options", "FlashLayer", false);
+}
+
+void UISettingsImpl::setFlashLayer(bool state)
+{
+  set_config_bool("Options", "FlashLayer", state);
+}
+
 //////////////////////////////////////////////////////////////////////
 // IDocumentSettings implementation
 
diff --git a/src/app/settings/ui_settings_impl.h b/src/app/settings/ui_settings_impl.h
index 5bb794b..0ef78d9 100644
--- a/src/app/settings/ui_settings_impl.h
+++ b/src/app/settings/ui_settings_impl.h
@@ -83,6 +83,9 @@ namespace app {
     bool useNativeCursor() const override;
     void setUseNativeCursor(bool state) override;
 
+    bool flashLayer() const override;
+    void setFlashLayer(bool state) override;
+
     // IColorSwatchesStore implementation
 
     void addColorSwatches(app::ColorSwatches* colorSwatches) override;
diff --git a/src/app/ui/editor/editor.cpp b/src/app/ui/editor/editor.cpp
index 4b96f7d..3d7c41c 100644
--- a/src/app/ui/editor/editor.cpp
+++ b/src/app/ui/editor/editor.cpp
@@ -674,39 +674,29 @@ void Editor::drawGrid(Graphics* g, const gfx::Rect& spriteBounds, const Rect& gr
 
 void Editor::flashCurrentLayer()
 {
-#if 0                           // TODO this flash effect can be done
-                                // only with hardware acceleration.
-                                // Finish it when the
-                                // Allegro 5 port is ready.
+  if (!UIContext::instance()->settings()->experimental()->flashLayer())
+    return;
+
+  DocumentLocation loc = getDocumentLocation();
+
   int x, y;
-  const Image* src_image = m_sprite->getCurrentImage(&x, &y);
+  const Image* src_image = loc.image(&x, &y);
   if (src_image) {
     m_document->prepareExtraCel(0, 0, m_sprite->width(), m_sprite->height(), 255);
     Image* flash_image = m_document->getExtraCelImage();
-    int u, v;
-
-    clear_image(flash_image, flash_image->mask_color);
-    for (v=0; v<flash_image->height(); ++v) {
-      for (u=0; u<flash_image->width(); ++u) {
-        if (u-x >= 0 && u-x < src_image->width() &&
-            v-y >= 0 && v-y < src_image->height()) {
-          uint32_t color = get_pixel(src_image, u-x, v-y);
-          if (color != src_image->mask_color) {
-            Color ccc = Color::fromRgb(255, 255, 255);
-            put_pixel(flash_image, u, v,
-                      color_utils::color_for_image(ccc, flash_image->imgtype));
-          }
-        }
-      }
-    }
 
-    drawSpriteSafe(0, 0, m_sprite->width()-1, m_sprite->height()-1);
-    gui_flip_screen();
+    clear_image(flash_image, flash_image->maskColor());
+    copy_image(flash_image, src_image, x, y);
+    m_document->setExtraCelBlendMode(BLEND_MODE_BLACKANDWHITE);
+
+    drawSpriteClipped(gfx::Region(
+        gfx::Rect(0, 0, m_sprite->width(), m_sprite->height())));
+    gui_feedback();
 
-    clear_image(flash_image, flash_image->mask_color);
-    drawSpriteSafe(0, 0, m_sprite->width()-1, m_sprite->height()-1);
+    m_document->setExtraCelBlendMode(BLEND_MODE_NORMAL);
+    m_document->destroyExtraCel();
+    invalidate();
   }
-#endif
 }
 
 gfx::Point Editor::autoScroll(MouseMessage* msg, AutoScroll dir, bool blit_valid_rgn)

-- 
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