[aseprite] 68/134: Add "Auto Select Layer" check box to Move Tool (close #527)
Tobias Hansen
thansen at moszumanska.debian.org
Sat Mar 14 17:10:07 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 c64ee5729b99b213a02e75e9d6c672358cd70506
Author: David Capello <davidcapello at gmail.com>
Date: Sun Nov 16 18:33:31 2014 -0300
Add "Auto Select Layer" check box to Move Tool (close #527)
---
data/gui.xml | 8 +++-
src/app/color_picker.cpp | 8 ++++
src/app/color_picker.h | 3 ++
src/app/commands/cmd_keyboard_shortcuts.cpp | 3 ++
src/app/settings/settings.h | 2 +
src/app/settings/settings_observers.h | 1 +
src/app/settings/ui_settings_impl.cpp | 14 +++++++
src/app/settings/ui_settings_impl.h | 3 ++
src/app/ui/context_bar.cpp | 36 ++++++++++++++++-
src/app/ui/context_bar.h | 5 ++-
src/app/ui/document_view.cpp | 4 ++
src/app/ui/editor/editor.cpp | 30 +++++++++++----
src/app/ui/editor/editor.h | 4 +-
src/app/ui/editor/editor_customization_delegate.h | 2 +
src/app/ui/editor/standby_state.cpp | 21 ++++++++++
src/app/ui/keyboard_shortcuts.cpp | 7 ++++
src/app/ui/keyboard_shortcuts.h | 2 +
src/raster/sprite.cpp | 47 +++++++++++++++++++++++
src/raster/sprite.h | 2 +
19 files changed, 190 insertions(+), 12 deletions(-)
diff --git a/data/gui.xml b/data/gui.xml
index 284d3c8..68bf59a 100644
--- a/data/gui.xml
+++ b/data/gui.xml
@@ -344,7 +344,7 @@
tool without changing the current one -->
<quicktools>
<key tool="eyedropper" shortcut="Alt" />
- <key tool="move" shortcut="Ctrl" />
+ <key tool="move" shortcut="Ctrl" mac="Cmd" />
<key tool="hand" shortcut="Space" />
</quicktools>
@@ -373,6 +373,9 @@
<!-- Modifiers for selection tool -->
<key action="AddSelection" shortcut="Shift" />
<key action="SubtractSelection" shortcut="Alt" />
+
+ <!-- Modifiers for move tool -->
+ <key action="AutoSelectLayer" shortcut="Ctrl" mac="Cmd" />
</actions>
</keyboard>
@@ -782,6 +785,9 @@
ink="scroll"
controller="freehand"
/>
+ </group>
+
+ <group id="move_tools" text="Move Tools">
<tool id="move"
text="Move Tool"
ink="move"
diff --git a/src/app/color_picker.cpp b/src/app/color_picker.cpp
index 6d784cb..31ff5a0 100644
--- a/src/app/color_picker.cpp
+++ b/src/app/color_picker.cpp
@@ -24,6 +24,7 @@
#include "app/document_location.h"
#include "gfx/point.h"
+#include "raster/cel.h"
#include "raster/image.h"
#include "raster/primitives.h"
#include "raster/sprite.h"
@@ -32,6 +33,7 @@ namespace app {
ColorPicker::ColorPicker()
: m_alpha(0)
+ , m_layer(NULL)
{
}
@@ -45,6 +47,11 @@ void ColorPicker::pickColor(const DocumentLocation& location, int x, int y, Mode
m_color = app::Color::fromImage(
location.sprite()->pixelFormat(),
location.sprite()->getPixel(x, y, location.frame()));
+
+ raster::CelList cels;
+ location.sprite()->pickCels(x, y, location.frame(), 128, cels);
+ if (!cels.empty())
+ m_layer = cels.front()->layer();
}
else { // Pick from the current layer
int u, v;
@@ -64,6 +71,7 @@ void ColorPicker::pickColor(const DocumentLocation& location, int x, int y, Mode
}
m_color = app::Color::fromImage(image->pixelFormat(), imageColor);
+ m_layer = const_cast<Layer*>(location.layer());
}
}
}
diff --git a/src/app/color_picker.h b/src/app/color_picker.h
index 31cd7a2..c78a58b 100644
--- a/src/app/color_picker.h
+++ b/src/app/color_picker.h
@@ -21,6 +21,7 @@
#pragma once
#include "app/color.h"
+#include "raster/layer.h"
namespace app {
class DocumentLocation;
@@ -35,10 +36,12 @@ namespace app {
app::Color color() const { return m_color; }
int alpha() const { return m_alpha; }
+ raster::Layer* layer() const { return m_layer; }
private:
app::Color m_color;
int m_alpha;
+ raster::Layer* m_layer;
};
} // namespace app
diff --git a/src/app/commands/cmd_keyboard_shortcuts.cpp b/src/app/commands/cmd_keyboard_shortcuts.cpp
index 6651cf4..3c366e3 100644
--- a/src/app/commands/cmd_keyboard_shortcuts.cpp
+++ b/src/app/commands/cmd_keyboard_shortcuts.cpp
@@ -367,6 +367,9 @@ private:
case KeyContext::MovingPixels:
text = "Moving pixels context: " + text;
break;
+ case KeyContext::MoveTool:
+ text = "Move tool: " + text;
+ break;
}
KeyItem* keyItem = new KeyItem(text, key, NULL, 0);
diff --git a/src/app/settings/settings.h b/src/app/settings/settings.h
index ec0e8a9..944b431 100644
--- a/src/app/settings/settings.h
+++ b/src/app/settings/settings.h
@@ -68,6 +68,7 @@ namespace app {
virtual bool getShowSpriteEditorScrollbars() = 0;
virtual RightClickMode getRightClickMode() = 0;
virtual bool getGrabAlpha() = 0;
+ virtual bool getAutoSelectLayer() = 0;
virtual app::Color getFgColor() = 0;
virtual app::Color getBgColor() = 0;
virtual tools::Tool* getCurrentTool() = 0;
@@ -77,6 +78,7 @@ namespace app {
virtual void setShowSpriteEditorScrollbars(bool state) = 0;
virtual void setRightClickMode(RightClickMode mode) = 0;
virtual void setGrabAlpha(bool state) = 0;
+ virtual void setAutoSelectLayer(bool state) = 0;
virtual void setFgColor(const app::Color& color) = 0;
virtual void setBgColor(const app::Color& color) = 0;
virtual void setCurrentTool(tools::Tool* tool) = 0;
diff --git a/src/app/settings/settings_observers.h b/src/app/settings/settings_observers.h
index c8c3f2a..c1cc60d 100644
--- a/src/app/settings/settings_observers.h
+++ b/src/app/settings/settings_observers.h
@@ -75,6 +75,7 @@ namespace app {
virtual void onSetShowSpriteEditorScrollbars(bool state) {}
virtual void onSetGrabAlpha(bool state) {}
+ virtual void onSetAutoSelectLayer(bool state) {}
virtual void onSetFgColor(app::Color newColor) {}
virtual void onSetBgColor(app::Color newColor) {}
virtual void onSetCurrentTool(tools::Tool* newTool) {}
diff --git a/src/app/settings/ui_settings_impl.cpp b/src/app/settings/ui_settings_impl.cpp
index e9ccbbc..d01ae81 100644
--- a/src/app/settings/ui_settings_impl.cpp
+++ b/src/app/settings/ui_settings_impl.cpp
@@ -287,6 +287,7 @@ UISettingsImpl::UISettingsImpl()
, m_zoomWithScrollWheel(get_config_bool("Options", "ZoomWithMouseWheel", true))
, m_showSpriteEditorScrollbars(get_config_bool("Options", "ShowScrollbars", true))
, m_grabAlpha(get_config_bool("Options", "GrabAlpha", false))
+ , m_autoSelectLayer(get_config_bool("Options", "AutoSelectLayer", false))
, m_rightClickMode(static_cast<RightClickMode>(get_config_int("Options", "RightClickMode",
static_cast<int>(RightClickMode::Default))))
{
@@ -302,6 +303,7 @@ UISettingsImpl::~UISettingsImpl()
set_config_bool("Options", "ZoomWithMouseWheel", m_zoomWithScrollWheel);
set_config_bool("Options", "ShowScrollbars", m_showSpriteEditorScrollbars);
set_config_bool("Options", "GrabAlpha", m_grabAlpha);
+ set_config_bool("Options", "AutoSelectLayer", m_autoSelectLayer);
set_config_int("Options", "RightClickMode", static_cast<int>(m_rightClickMode));
for (auto it : m_docSettings)
@@ -366,6 +368,11 @@ bool UISettingsImpl::getGrabAlpha()
return m_grabAlpha;
}
+bool UISettingsImpl::getAutoSelectLayer()
+{
+ return m_autoSelectLayer;
+}
+
app::Color UISettingsImpl::getFgColor()
{
return ColorBar::instance()->getFgColor();
@@ -413,6 +420,13 @@ void UISettingsImpl::setGrabAlpha(bool state)
notifyObservers<bool>(&GlobalSettingsObserver::onSetGrabAlpha, state);
}
+void UISettingsImpl::setAutoSelectLayer(bool state)
+{
+ m_autoSelectLayer = state;
+
+ notifyObservers<bool>(&GlobalSettingsObserver::onSetAutoSelectLayer, state);
+}
+
void UISettingsImpl::setFgColor(const app::Color& color)
{
ColorBar::instance()->setFgColor(color);
diff --git a/src/app/settings/ui_settings_impl.h b/src/app/settings/ui_settings_impl.h
index 0ef78d9..a4b6c5b 100644
--- a/src/app/settings/ui_settings_impl.h
+++ b/src/app/settings/ui_settings_impl.h
@@ -57,6 +57,7 @@ namespace app {
bool getShowSpriteEditorScrollbars() override;
RightClickMode getRightClickMode() override;
bool getGrabAlpha() override;
+ bool getAutoSelectLayer() override;
app::Color getFgColor() override;
app::Color getBgColor() override;
tools::Tool* getCurrentTool() override;
@@ -66,6 +67,7 @@ namespace app {
void setShowSpriteEditorScrollbars(bool state) override;
void setRightClickMode(RightClickMode mode) override;
void setGrabAlpha(bool state) override;
+ void setAutoSelectLayer(bool state) override;
void setFgColor(const app::Color& color) override;
void setBgColor(const app::Color& color) override;
void setCurrentTool(tools::Tool* tool) override;
@@ -103,6 +105,7 @@ namespace app {
bool m_zoomWithScrollWheel;
bool m_showSpriteEditorScrollbars;
bool m_grabAlpha;
+ bool m_autoSelectLayer;
RightClickMode m_rightClickMode;
std::map<doc::ObjectId, IDocumentSettings*> m_docSettings;
};
diff --git a/src/app/ui/context_bar.cpp b/src/app/ui/context_bar.cpp
index 5ec0002..2aadbe6 100644
--- a/src/app/ui/context_bar.cpp
+++ b/src/app/ui/context_bar.cpp
@@ -721,6 +721,23 @@ protected:
}
};
+class ContextBar::AutoSelectLayerField : public CheckBox
+{
+public:
+ AutoSelectLayerField() : CheckBox("Auto Select Layer") {
+ setup_mini_font(this);
+ }
+
+protected:
+ void onClick(Event& ev) override {
+ CheckBox::onClick(ev);
+
+ UIContext::instance()->settings()->setAutoSelectLayer(isSelected());
+
+ releaseFocus();
+ }
+};
+
ContextBar::ContextBar()
: Box(JI_HORIZONTAL)
, m_toolSettings(NULL)
@@ -751,6 +768,8 @@ ContextBar::ContextBar()
addChild(m_grabAlpha = new GrabAlphaField());
+ addChild(m_autoSelectLayer = new AutoSelectLayerField());
+
// addChild(new InkChannelTargetField());
// addChild(new InkShadeField());
// addChild(new InkSelectionField());
@@ -878,6 +897,7 @@ void ContextBar::updateFromTool(tools::Tool* tool)
m_inkOpacity->setTextf("%d", toolSettings->getOpacity());
m_grabAlpha->setSelected(settings->getGrabAlpha());
+ m_autoSelectLayer->setSelected(settings->getAutoSelectLayer());
m_freehandAlgo->setFreehandAlgorithm(toolSettings->getFreehandAlgorithm());
m_sprayWidth->setValue(toolSettings->getSprayWidth());
@@ -894,6 +914,11 @@ void ContextBar::updateFromTool(tools::Tool* tool)
(tool->getInk(0)->isEyedropper() ||
tool->getInk(1)->isEyedropper());
+ // True if the current tool is move tool.
+ bool isMove =
+ (tool->getInk(0)->isCelMovement() ||
+ tool->getInk(1)->isCelMovement());
+
// True if it makes sense to change the ink property for the current
// tool.
bool hasInk = hasOpacity;
@@ -921,6 +946,7 @@ void ContextBar::updateFromTool(tools::Tool* tool)
m_inkType->setVisible(hasInk);
m_inkOpacity->setVisible(hasOpacity);
m_grabAlpha->setVisible(isEyedropper);
+ m_autoSelectLayer->setVisible(isMove);
m_freehandBox->setVisible(isFreehand && hasOpacity);
m_toleranceLabel->setVisible(hasTolerance);
m_tolerance->setVisible(hasTolerance);
@@ -946,7 +972,7 @@ void ContextBar::updateForMovingPixels()
layout();
}
-void ContextBar::updateForSelectionMode(SelectionMode mode)
+void ContextBar::updateSelectionMode(SelectionMode mode)
{
if (!m_selectionMode->isVisible())
return;
@@ -954,4 +980,12 @@ void ContextBar::updateForSelectionMode(SelectionMode mode)
m_selectionMode->setSelectionMode(mode);
}
+void ContextBar::updateAutoSelectLayer(bool state)
+{
+ if (!m_autoSelectLayer->isVisible())
+ return;
+
+ m_autoSelectLayer->setSelected(state);
+}
+
} // namespace app
diff --git a/src/app/ui/context_bar.h b/src/app/ui/context_bar.h
index 4856b36..3d27a68 100644
--- a/src/app/ui/context_bar.h
+++ b/src/app/ui/context_bar.h
@@ -47,7 +47,8 @@ namespace app {
void updateFromTool(tools::Tool* tool);
void updateForMovingPixels();
- void updateForSelectionMode(SelectionMode mode);
+ void updateSelectionMode(SelectionMode mode);
+ void updateAutoSelectLayer(bool state);
protected:
bool onProcessMessage(ui::Message* msg) override;
@@ -77,6 +78,7 @@ namespace app {
class FreehandAlgorithmField;
class GrabAlphaField;
class DropPixelsField;
+ class AutoSelectLayerField;
IToolSettings* m_toolSettings;
BrushTypeField* m_brushType;
@@ -89,6 +91,7 @@ namespace app {
ui::Label* m_opacityLabel;
InkOpacityField* m_inkOpacity;
GrabAlphaField* m_grabAlpha;
+ AutoSelectLayerField* m_autoSelectLayer;
ui::Box* m_freehandBox;
FreehandAlgorithmField* m_freehandAlgo;
ui::Box* m_sprayBox;
diff --git a/src/app/ui/document_view.cpp b/src/app/ui/document_view.cpp
index 03998ed..1211408 100644
--- a/src/app/ui/document_view.cpp
+++ b/src/app/ui/document_view.cpp
@@ -110,6 +110,10 @@ public:
return isKeyActionPressed(KeyAction::SubtractSelection);
}
+ bool isAutoSelectLayerPressed() override {
+ return isKeyActionPressed(KeyAction::AutoSelectLayer);
+ }
+
protected:
bool onProcessMessage(Message* msg) override {
switch (msg->type()) {
diff --git a/src/app/ui/editor/editor.cpp b/src/app/ui/editor/editor.cpp
index 0cf9b35..df6d1ef 100644
--- a/src/app/ui/editor/editor.cpp
+++ b/src/app/ui/editor/editor.cpp
@@ -1047,12 +1047,16 @@ void Editor::updateQuicktool()
}
}
-void Editor::updateSelectionMode()
+void Editor::updateContextBarFromModifiers()
{
// We update the selection mode only if we're not selecting.
if (hasCapture())
return;
+ ContextBar* ctxBar = App::instance()->getMainWindow()->getContextBar();
+
+ // Selection mode
+
SelectionMode mode = UIContext::instance()->settings()->selection()->getSelectionMode();
if (m_customizationDelegate && m_customizationDelegate->isAddSelectionPressed())
@@ -1064,9 +1068,19 @@ void Editor::updateSelectionMode()
if (mode != m_selectionMode) {
m_selectionMode = mode;
+ ctxBar->updateSelectionMode(mode);
+ }
+
+ // Move tool options
+
+ bool autoSelectLayer = UIContext::instance()->settings()->getAutoSelectLayer();
+
+ if (m_customizationDelegate && m_customizationDelegate->isAutoSelectLayerPressed())
+ autoSelectLayer = true;
- App::instance()->getMainWindow()->getContextBar()
- ->updateForSelectionMode(mode);
+ if (m_autoSelectLayer != autoSelectLayer) {
+ m_autoSelectLayer = autoSelectLayer;
+ ctxBar->updateAutoSelectLayer(autoSelectLayer);
}
}
@@ -1096,7 +1110,7 @@ bool Editor::onProcessMessage(Message* msg)
case kMouseEnterMessage:
updateQuicktool();
- updateSelectionMode();
+ updateContextBarFromModifiers();
break;
case kMouseLeaveMessage:
@@ -1113,7 +1127,7 @@ bool Editor::onProcessMessage(Message* msg)
m_secondaryButton = mouseMsg->right();
updateQuicktool();
- updateSelectionMode();
+ updateContextBarFromModifiers();
editor_setcursor();
}
@@ -1138,7 +1152,7 @@ bool Editor::onProcessMessage(Message* msg)
m_secondaryButton = false;
updateQuicktool();
- updateSelectionMode();
+ updateContextBarFromModifiers();
editor_setcursor();
}
@@ -1154,7 +1168,7 @@ bool Editor::onProcessMessage(Message* msg)
if (hasMouse()) {
updateQuicktool();
- updateSelectionMode();
+ updateContextBarFromModifiers();
editor_setcursor();
}
@@ -1170,7 +1184,7 @@ bool Editor::onProcessMessage(Message* msg)
if (hasMouse()) {
updateQuicktool();
- updateSelectionMode();
+ updateContextBarFromModifiers();
editor_setcursor();
}
diff --git a/src/app/ui/editor/editor.h b/src/app/ui/editor/editor.h
index 0851cf8..d59c486 100644
--- a/src/app/ui/editor/editor.h
+++ b/src/app/ui/editor/editor.h
@@ -177,6 +177,7 @@ namespace app {
tools::Ink* getCurrentEditorInk();
SelectionMode getSelectionMode() const { return m_selectionMode; }
+ bool isAutoSelectLayer() const { return m_autoSelectLayer; }
bool isSecondaryButton() const { return m_secondaryButton; }
@@ -219,7 +220,7 @@ namespace app {
private:
void setStateInternal(const EditorStatePtr& newState);
void updateQuicktool();
- void updateSelectionMode();
+ void updateContextBarFromModifiers();
void drawBrushPreview(int x, int y, bool refresh = true);
void moveBrushPreview(int x, int y, bool refresh = true);
void clearBrushPreview(bool refresh = true);
@@ -272,6 +273,7 @@ namespace app {
tools::Tool* m_quicktool;
SelectionMode m_selectionMode;
+ bool m_autoSelectLayer;
// Offset for the sprite
int m_offset_x;
diff --git a/src/app/ui/editor/editor_customization_delegate.h b/src/app/ui/editor/editor_customization_delegate.h
index a8b91cc..57a933d 100644
--- a/src/app/ui/editor/editor_customization_delegate.h
+++ b/src/app/ui/editor/editor_customization_delegate.h
@@ -60,6 +60,8 @@ namespace app {
virtual bool isAddSelectionPressed() = 0;
virtual bool isSubtractSelectionPressed() = 0;
+
+ virtual bool isAutoSelectLayerPressed() = 0;
};
} // namespace app
diff --git a/src/app/ui/editor/standby_state.cpp b/src/app/ui/editor/standby_state.cpp
index ce16984..3354fcd 100644
--- a/src/app/ui/editor/standby_state.cpp
+++ b/src/app/ui/editor/standby_state.cpp
@@ -176,6 +176,26 @@ bool StandbyState::onMouseDown(Editor* editor, MouseMessage* msg)
// Move cel X,Y coordinates
if (clickedInk->isCelMovement()) {
+ // Handle "Auto Select Layer"
+ if (editor->isAutoSelectLayer()) {
+ ColorPicker picker;
+ int x, y;
+
+ editor->screenToEditor(
+ msg->position().x,
+ msg->position().y, &x, &y);
+
+ picker.pickColor(location, x, y, ColorPicker::FromComposition);
+
+ if (layer != picker.layer()) {
+ layer = picker.layer();
+ if (layer) {
+ editor->setLayer(layer);
+ editor->flashCurrentLayer();
+ }
+ }
+ }
+
if ((layer) &&
(layer->type() == OBJECT_LAYER_IMAGE)) {
// TODO you can move the `Background' with tiled mode
@@ -192,6 +212,7 @@ bool StandbyState::onMouseDown(Editor* editor, MouseMessage* msg)
editor->setState(EditorStatePtr(new MovingCelState(editor, msg)));
}
}
+
return true;
}
diff --git a/src/app/ui/keyboard_shortcuts.cpp b/src/app/ui/keyboard_shortcuts.cpp
index 5d54719..4e42d6c 100644
--- a/src/app/ui/keyboard_shortcuts.cpp
+++ b/src/app/ui/keyboard_shortcuts.cpp
@@ -55,6 +55,7 @@ namespace {
{ "LockAxis" , "Lock Axis" , app::KeyAction::LockAxis },
{ "AddSelection" , "Add Selection" , app::KeyAction::AddSelection },
{ "SubtractSelection" , "Subtract Selection" , app::KeyAction::SubtractSelection },
+ { "AutoSelectLayer" , "Auto Select Layer" , app::KeyAction::AutoSelectLayer },
{ "LeftMouseButton" , "Trigger Left Mouse Button" , app::KeyAction::LeftMouseButton },
{ "RightMouseButton" , "Trigger Right Mouse Button" , app::KeyAction::RightMouseButton },
{ NULL , NULL , app::KeyAction::None }
@@ -174,6 +175,9 @@ Key::Key(KeyAction action)
case KeyAction::SubtractSelection:
m_keycontext = KeyContext::Selection;
break;
+ case KeyAction::AutoSelectLayer:
+ m_keycontext = KeyContext::MoveTool;
+ break;
case KeyAction::LeftMouseButton:
m_keycontext = KeyContext::Any;
break;
@@ -532,6 +536,9 @@ void KeyboardShortcuts::exportAccel(TiXmlElement& parent, Key* key, const ui::Ac
case KeyContext::MovingPixels:
keycontextStr = "MovingPixels";
break;
+ case KeyContext::MoveTool:
+ keycontextStr = "MoveTool";
+ break;
}
if (keycontextStr)
diff --git a/src/app/ui/keyboard_shortcuts.h b/src/app/ui/keyboard_shortcuts.h
index 65a61aa..00be29e 100644
--- a/src/app/ui/keyboard_shortcuts.h
+++ b/src/app/ui/keyboard_shortcuts.h
@@ -45,6 +45,7 @@ namespace app {
Normal,
Selection,
MovingPixels,
+ MoveTool,
};
enum class KeySource {
@@ -68,6 +69,7 @@ namespace app {
LockAxis,
AddSelection,
SubtractSelection,
+ AutoSelectLayer,
LeftMouseButton,
RightMouseButton
};
diff --git a/src/raster/sprite.cpp b/src/raster/sprite.cpp
index 6c1551a..1413853 100644
--- a/src/raster/sprite.cpp
+++ b/src/raster/sprite.cpp
@@ -491,6 +491,53 @@ int Sprite::getPixel(int x, int y, FrameNumber frame) const
return color;
}
+void Sprite::pickCels(int x, int y, FrameNumber frame, int opacityThreshold, CelList& cels) const
+{
+ std::vector<Layer*> layers;
+ getLayersList(layers);
+
+ for (int i=(int)layers.size()-1; i>=0; --i) {
+ Layer* layer = layers[i];
+ if (!layer->isImage())
+ continue;
+
+ Cel* cel = static_cast<LayerImage*>(layer)->getCel(frame);
+ if (!cel)
+ continue;
+
+ Image* image = cel->image();
+ if (!image)
+ continue;
+
+ if (!cel->bounds().contains(gfx::Point(x, y)))
+ continue;
+
+ color_t color = get_pixel(image,
+ x - cel->x(),
+ y - cel->y());
+
+ bool isOpaque = true;
+
+ switch (image->pixelFormat()) {
+ case IMAGE_RGB:
+ isOpaque = (rgba_geta(color) >= opacityThreshold);
+ break;
+ case IMAGE_INDEXED:
+ isOpaque = (color != image->maskColor());
+ break;
+ case IMAGE_GRAYSCALE:
+ isOpaque = (graya_geta(color) >= opacityThreshold);
+ break;
+ }
+
+ if (!isOpaque)
+ continue;
+
+ cels.push_back(cel);
+ }
+ fflush(stdout);
+}
+
//////////////////////////////////////////////////////////////////////
static Layer* index2layer(const Layer* layer, const LayerIndex& index, int* index_count)
diff --git a/src/raster/sprite.h b/src/raster/sprite.h
index e537554..508e0cd 100644
--- a/src/raster/sprite.h
+++ b/src/raster/sprite.h
@@ -144,6 +144,8 @@ namespace raster {
// return the 0 color (the mask-color).
int getPixel(int x, int y, FrameNumber frame) const;
+ void pickCels(int x, int y, FrameNumber frame, int opacityThreshold, CelList& cels) const;
+
private:
Sprite* m_self; // pointer to the Sprite
PixelFormat m_format; // pixel format
--
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