[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