[aseprite] 207/250: Add MovingSymmetryState to modify symmetry axis position
Tobias Hansen
thansen at moszumanska.debian.org
Sun Dec 20 15:27:31 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 a3deb2063e37c67f421c4c5f44c1580470a618b9
Author: David Capello <davidcapello at gmail.com>
Date: Wed Oct 28 20:00:18 2015 -0300
Add MovingSymmetryState to modify symmetry axis position
---
src/app/CMakeLists.txt | 1 +
src/app/pref/preferences.cpp | 30 ++--
src/app/ui/editor/editor.cpp | 2 +-
src/app/ui/editor/editor.h | 9 +-
src/app/ui/editor/moving_symmetry_state.cpp | 83 +++++++++++
src/app/ui/editor/moving_symmetry_state.h | 41 ++++++
src/app/ui/editor/standby_state.cpp | 211 ++++++++++++++++++++--------
src/app/ui/editor/standby_state.h | 8 +-
src/app/ui/editor/tool_loop_impl.cpp | 28 ++--
9 files changed, 323 insertions(+), 90 deletions(-)
diff --git a/src/app/CMakeLists.txt b/src/app/CMakeLists.txt
index d4e30a0..8f11db8 100644
--- a/src/app/CMakeLists.txt
+++ b/src/app/CMakeLists.txt
@@ -344,6 +344,7 @@ add_library(app-lib
ui/editor/editor_view.cpp
ui/editor/moving_cel_state.cpp
ui/editor/moving_pixels_state.cpp
+ ui/editor/moving_symmetry_state.cpp
ui/editor/navigate_state.cpp
ui/editor/pivot_helpers.cpp
ui/editor/pixels_movement.cpp
diff --git a/src/app/pref/preferences.cpp b/src/app/pref/preferences.cpp
index 1d992a7..2887973 100644
--- a/src/app/pref/preferences.cpp
+++ b/src/app/pref/preferences.cpp
@@ -15,6 +15,7 @@
#include "app/resource_finder.h"
#include "app/tools/ink.h"
#include "app/tools/tool.h"
+#include "doc/sprite.h"
namespace app {
@@ -92,23 +93,27 @@ ToolPreferences& Preferences::tool(tools::Tool* tool)
}
}
-DocumentPreferences& Preferences::document(const app::Document* document)
+DocumentPreferences& Preferences::document(const app::Document* doc)
{
- auto it = m_docs.find(document);
+ auto it = m_docs.find(doc);
if (it != m_docs.end()) {
return *it->second;
}
else {
DocumentPreferences* docPref;
- if (document) {
+ if (doc) {
docPref = new DocumentPreferences("");
*docPref = this->document(nullptr);
+
+ // Default values for symmetry
+ docPref->symmetry.xAxis.setDefaultValue(doc->sprite()->width()/2);
+ docPref->symmetry.yAxis.setDefaultValue(doc->sprite()->height()/2);
}
else
docPref = new DocumentPreferences("");
- m_docs[document] = docPref;
- serializeDocPref(document, docPref, false);
+ m_docs[doc] = docPref;
+ serializeDocPref(doc, docPref, false);
return *docPref;
}
}
@@ -151,18 +156,21 @@ void Preferences::serializeDocPref(const app::Document* doc, app::DocumentPrefer
bool specific_file = false;
if (doc) {
- if (!doc->isAssociatedToFile())
+ if (doc->isAssociatedToFile()) {
+ push_config_state();
+ set_config_file(docConfigFileName(doc).c_str());
+ specific_file = true;
+ }
+ else if (save)
return;
-
- push_config_state();
- set_config_file(docConfigFileName(doc).c_str());
- specific_file = true;
}
if (save)
docPref->save();
- else
+ else {
+ // Load default preferences, or preferences from .ini file.
docPref->load();
+ }
if (specific_file) {
flush_config_file();
diff --git a/src/app/ui/editor/editor.cpp b/src/app/ui/editor/editor.cpp
index d9e8b65..0e4afb1 100644
--- a/src/app/ui/editor/editor.cpp
+++ b/src/app/ui/editor/editor.cpp
@@ -633,7 +633,7 @@ void Editor::drawSpriteUnclippedRect(ui::Graphics* g, const gfx::Rect& _rc)
}
// Symmetry mode
- {
+ if (Preferences::instance().symmetryMode.enabled()) {
switch (docPref.symmetry.mode()) {
case app::gen::SymmetryMode::NONE:
// Do nothing
diff --git a/src/app/ui/editor/editor.h b/src/app/ui/editor/editor.h
index ee8caed..862faf0 100644
--- a/src/app/ui/editor/editor.h
+++ b/src/app/ui/editor/editor.h
@@ -68,8 +68,13 @@ namespace app {
kShowOnionskin = 4,
kShowOutside = 8,
kShowDecorators = 16,
- kDefaultEditorFlags = (kShowGrid | kShowMask |
- kShowOnionskin | kShowOutside | kShowDecorators),
+ kShowSymmetryLine = 2,
+ kDefaultEditorFlags = (kShowGrid |
+ kShowMask |
+ kShowOnionskin |
+ kShowOutside |
+ kShowDecorators |
+ kShowSymmetryLine)
};
enum class ZoomBehavior {
diff --git a/src/app/ui/editor/moving_symmetry_state.cpp b/src/app/ui/editor/moving_symmetry_state.cpp
new file mode 100644
index 0000000..490b0ed
--- /dev/null
+++ b/src/app/ui/editor/moving_symmetry_state.cpp
@@ -0,0 +1,83 @@
+// Aseprite
+// Copyright (C) 2015 David Capello
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License version 2 as
+// published by the Free Software Foundation.
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "app/ui/editor/moving_symmetry_state.h"
+
+#include "app/ui/editor/editor.h"
+#include "app/ui/status_bar.h"
+#include "ui/message.h"
+
+namespace app {
+
+using namespace ui;
+
+MovingSymmetryState::MovingSymmetryState(Editor* editor, MouseMessage* msg,
+ app::gen::SymmetryMode mode,
+ Option<int>& symmetryAxis)
+ : m_symmetryMode(mode)
+ , m_symmetryAxis(symmetryAxis)
+ , m_symmetryAxisStart(symmetryAxis())
+{
+ m_mouseStart = editor->screenToEditor(msg->position());
+ editor->captureMouse();
+}
+
+MovingSymmetryState::~MovingSymmetryState()
+{
+}
+
+bool MovingSymmetryState::onMouseUp(Editor* editor, MouseMessage* msg)
+{
+ editor->backToPreviousState();
+ editor->releaseMouse();
+ return true;
+}
+
+bool MovingSymmetryState::onMouseMove(Editor* editor, MouseMessage* msg)
+{
+ gfx::Point newCursorPos = editor->screenToEditor(msg->position());
+ gfx::Point delta = newCursorPos - m_mouseStart;
+ int pos = 0;
+
+ switch (m_symmetryMode) {
+ case app::gen::SymmetryMode::HORIZONTAL:
+ pos = m_symmetryAxisStart + delta.x;
+ pos = MID(1, pos, editor->sprite()->width()-1);
+ break;
+ case app::gen::SymmetryMode::VERTICAL:
+ pos = m_symmetryAxisStart + delta.y;
+ pos = MID(1, pos, editor->sprite()->height()-1);
+ break;
+ }
+ m_symmetryAxis(pos);
+
+ // Redraw the editor.
+ editor->invalidate();
+
+ // Use StandbyState implementation
+ return StandbyState::onMouseMove(editor, msg);
+}
+
+bool MovingSymmetryState::onUpdateStatusBar(Editor* editor)
+{
+ if (m_symmetryMode == app::gen::SymmetryMode::HORIZONTAL)
+ StatusBar::instance()->setStatusText
+ (0, "Left %3d Right %3d", m_symmetryAxis(),
+ editor->sprite()->width() - m_symmetryAxis());
+ else
+ StatusBar::instance()->setStatusText
+ (0, "Top %3d Bottom %3d", m_symmetryAxis(),
+ editor->sprite()->height() - m_symmetryAxis());
+
+ return true;
+}
+
+} // namespace app
diff --git a/src/app/ui/editor/moving_symmetry_state.h b/src/app/ui/editor/moving_symmetry_state.h
new file mode 100644
index 0000000..dcfe4be
--- /dev/null
+++ b/src/app/ui/editor/moving_symmetry_state.h
@@ -0,0 +1,41 @@
+// Aseprite
+// Copyright (C) 2015 David Capello
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License version 2 as
+// published by the Free Software Foundation.
+
+#ifndef APP_UI_EDITOR_MOVING_SYMMETRY_STATE_H_INCLUDED
+#define APP_UI_EDITOR_MOVING_SYMMETRY_STATE_H_INCLUDED
+#pragma once
+
+#include "app/pref/preferences.h"
+#include "app/ui/editor/standby_state.h"
+
+namespace app {
+ class Editor;
+
+ class MovingSymmetryState : public StandbyState {
+ public:
+ MovingSymmetryState(Editor* editor, ui::MouseMessage* msg,
+ app::gen::SymmetryMode mode,
+ Option<int>& symmetryAxis);
+ virtual ~MovingSymmetryState();
+
+ virtual bool onMouseUp(Editor* editor, ui::MouseMessage* msg) override;
+ virtual bool onMouseMove(Editor* editor, ui::MouseMessage* msg) override;
+ virtual bool onUpdateStatusBar(Editor* editor) override;
+
+ virtual bool requireBrushPreview() override { return false; }
+
+ private:
+ app::gen::SymmetryMode m_symmetryMode;
+ Option<int>& m_symmetryAxis;
+ int m_symmetryAxisStart;
+ int m_symmetryAxisNew;
+ gfx::Point m_mouseStart;
+ };
+
+} // namespace app
+
+#endif
diff --git a/src/app/ui/editor/standby_state.cpp b/src/app/ui/editor/standby_state.cpp
index 37c2a63..545cd51 100644
--- a/src/app/ui/editor/standby_state.cpp
+++ b/src/app/ui/editor/standby_state.cpp
@@ -27,6 +27,7 @@
#include "app/ui/editor/editor_customization_delegate.h"
#include "app/ui/editor/handle_type.h"
#include "app/ui/editor/moving_cel_state.h"
+#include "app/ui/editor/moving_symmetry_state.h"
#include "app/ui/editor/moving_pixels_state.h"
#include "app/ui/editor/pivot_helpers.h"
#include "app/ui/editor/pixels_movement.h"
@@ -34,6 +35,7 @@
#include "app/ui/editor/tool_loop_impl.h"
#include "app/ui/editor/transform_handles.h"
#include "app/ui/editor/zooming_state.h"
+#include "app/ui/skin/skin_theme.h"
#include "app/ui/status_bar.h"
#include "app/ui_context.h"
#include "app/util/new_image_from_mask.h"
@@ -44,6 +46,7 @@
#include "doc/sprite.h"
#include "fixmath/fixmath.h"
#include "gfx/rect.h"
+#include "she/surface.h"
#include "ui/alert.h"
#include "ui/message.h"
#include "ui/system.h"
@@ -225,7 +228,9 @@ bool StandbyState::onMouseDown(Editor* editor, MouseMessage* msg)
if (clickedInk->isSelection()) {
// Transform selected pixels
- if (editor->isActive() && document->isMaskVisible() && m_decorator->getTransformHandles(editor)) {
+ if (editor->isActive() &&
+ document->isMaskVisible() &&
+ m_decorator->getTransformHandles(editor)) {
TransformHandles* transfHandles = m_decorator->getTransformHandles(editor);
// Get the handle covered by the mouse.
@@ -264,6 +269,22 @@ bool StandbyState::onMouseDown(Editor* editor, MouseMessage* msg)
}
}
+ // Move symmetry
+ gfx::Rect box1, box2;
+ if (m_decorator->getSymmetryHandles(editor, box1, box2) &&
+ (box1.contains(msg->position()) ||
+ box2.contains(msg->position()))) {
+ auto& symmetry = Preferences::instance().document(editor->document()).symmetry;
+ auto mode = symmetry.mode();
+ bool horz = (mode == app::gen::SymmetryMode::HORIZONTAL);
+ auto& axis = (horz ? symmetry.xAxis:
+ symmetry.yAxis);
+ editor->setState(
+ EditorStatePtr(new MovingSymmetryState(editor, msg,
+ mode, axis)));
+ return true;
+ }
+
// Start the Tool-Loop
if (layer) {
tools::ToolLoop* toolLoop = create_tool_loop(editor, context);
@@ -305,13 +326,14 @@ bool StandbyState::onMouseMove(Editor* editor, MouseMessage* msg)
bool StandbyState::onSetCursor(Editor* editor, const gfx::Point& mouseScreenPos)
{
tools::Ink* ink = editor->getCurrentEditorInk();
+
+ // See if the cursor is in some selection handle.
+ if (m_decorator->onSetCursor(ink, editor, mouseScreenPos))
+ return true;
+
if (ink) {
// If the current tool change selection (e.g. rectangular marquee, etc.)
if (ink->isSelection()) {
- // See if the cursor is in some selection handle.
- if (m_decorator->onSetCursor(editor, mouseScreenPos))
- return true;
-
// Move pixels
if (editor->isInsideSelection()) {
EditorCustomizationDelegate* customization = editor->getCustomizationDelegate();
@@ -521,69 +543,87 @@ TransformHandles* StandbyState::Decorator::getTransformHandles(Editor* editor)
return m_transfHandles;
}
-bool StandbyState::Decorator::onSetCursor(Editor* editor, const gfx::Point& mouseScreenPos)
+bool StandbyState::Decorator::onSetCursor(tools::Ink* ink, Editor* editor, const gfx::Point& mouseScreenPos)
{
- if (!editor->isActive() ||
- !editor->document()->isMaskVisible())
+ if (!editor->isActive())
return false;
- const gfx::Transformation transformation(m_standbyState->getTransformation(editor));
- TransformHandles* tr = getTransformHandles(editor);
- HandleType handle = tr->getHandleAtPoint(
- editor, mouseScreenPos, transformation);
-
- CursorType newCursor = kArrowCursor;
-
- switch (handle) {
- case ScaleNWHandle: newCursor = kSizeNWCursor; break;
- case ScaleNHandle: newCursor = kSizeNCursor; break;
- case ScaleNEHandle: newCursor = kSizeNECursor; break;
- case ScaleWHandle: newCursor = kSizeWCursor; break;
- case ScaleEHandle: newCursor = kSizeECursor; break;
- case ScaleSWHandle: newCursor = kSizeSWCursor; break;
- case ScaleSHandle: newCursor = kSizeSCursor; break;
- case ScaleSEHandle: newCursor = kSizeSECursor; break;
- case RotateNWHandle: newCursor = kRotateNWCursor; break;
- case RotateNHandle: newCursor = kRotateNCursor; break;
- case RotateNEHandle: newCursor = kRotateNECursor; break;
- case RotateWHandle: newCursor = kRotateWCursor; break;
- case RotateEHandle: newCursor = kRotateECursor; break;
- case RotateSWHandle: newCursor = kRotateSWCursor; break;
- case RotateSHandle: newCursor = kRotateSCursor; break;
- case RotateSEHandle: newCursor = kRotateSECursor; break;
- case PivotHandle: newCursor = kHandCursor; break;
- default:
- return false;
- }
+ if (ink && ink->isSelection() && editor->document()->isMaskVisible()) {
+ const gfx::Transformation transformation(m_standbyState->getTransformation(editor));
+ TransformHandles* tr = getTransformHandles(editor);
+ HandleType handle = tr->getHandleAtPoint(
+ editor, mouseScreenPos, transformation);
+
+ CursorType newCursor = kArrowCursor;
+
+ switch (handle) {
+ case ScaleNWHandle: newCursor = kSizeNWCursor; break;
+ case ScaleNHandle: newCursor = kSizeNCursor; break;
+ case ScaleNEHandle: newCursor = kSizeNECursor; break;
+ case ScaleWHandle: newCursor = kSizeWCursor; break;
+ case ScaleEHandle: newCursor = kSizeECursor; break;
+ case ScaleSWHandle: newCursor = kSizeSWCursor; break;
+ case ScaleSHandle: newCursor = kSizeSCursor; break;
+ case ScaleSEHandle: newCursor = kSizeSECursor; break;
+ case RotateNWHandle: newCursor = kRotateNWCursor; break;
+ case RotateNHandle: newCursor = kRotateNCursor; break;
+ case RotateNEHandle: newCursor = kRotateNECursor; break;
+ case RotateWHandle: newCursor = kRotateWCursor; break;
+ case RotateEHandle: newCursor = kRotateECursor; break;
+ case RotateSWHandle: newCursor = kRotateSWCursor; break;
+ case RotateSHandle: newCursor = kRotateSCursor; break;
+ case RotateSEHandle: newCursor = kRotateSECursor; break;
+ case PivotHandle: newCursor = kHandCursor; break;
+ default:
+ return false;
+ }
- // Adjust the cursor depending the current transformation angle.
- fixmath::fixed angle = fixmath::ftofix(128.0 * transformation.angle() / PI);
- angle = fixmath::fixadd(angle, fixmath::itofix(16));
- angle &= (255<<16);
- angle >>= 16;
- angle /= 32;
-
- if (newCursor >= kSizeNCursor && newCursor <= kSizeNWCursor) {
- size_t num = sizeof(rotated_size_cursors) / sizeof(rotated_size_cursors[0]);
- size_t c;
- for (c=num-1; c>0; --c)
- if (rotated_size_cursors[c] == newCursor)
- break;
+ // Adjust the cursor depending the current transformation angle.
+ fixmath::fixed angle = fixmath::ftofix(128.0 * transformation.angle() / PI);
+ angle = fixmath::fixadd(angle, fixmath::itofix(16));
+ angle &= (255<<16);
+ angle >>= 16;
+ angle /= 32;
+
+ if (newCursor >= kSizeNCursor && newCursor <= kSizeNWCursor) {
+ size_t num = sizeof(rotated_size_cursors) / sizeof(rotated_size_cursors[0]);
+ size_t c;
+ for (c=num-1; c>0; --c)
+ if (rotated_size_cursors[c] == newCursor)
+ break;
+
+ newCursor = rotated_size_cursors[(c+angle) % num];
+ }
+ else if (newCursor >= kRotateNCursor && newCursor <= kRotateNWCursor) {
+ size_t num = sizeof(rotated_rotate_cursors) / sizeof(rotated_rotate_cursors[0]);
+ size_t c;
+ for (c=num-1; c>0; --c)
+ if (rotated_rotate_cursors[c] == newCursor)
+ break;
+
+ newCursor = rotated_rotate_cursors[(c+angle) % num];
+ }
- newCursor = rotated_size_cursors[(c+angle) % num];
+ editor->showMouseCursor(newCursor);
+ return true;
}
- else if (newCursor >= kRotateNCursor && newCursor <= kRotateNWCursor) {
- size_t num = sizeof(rotated_rotate_cursors) / sizeof(rotated_rotate_cursors[0]);
- size_t c;
- for (c=num-1; c>0; --c)
- if (rotated_rotate_cursors[c] == newCursor)
- break;
- newCursor = rotated_rotate_cursors[(c+angle) % num];
+ gfx::Rect box1, box2;
+ if (getSymmetryHandles(editor, box1, box2) &&
+ (box1.contains(mouseScreenPos) ||
+ box2.contains(mouseScreenPos))) {
+ switch (Preferences::instance().document(editor->document()).symmetry.mode()) {
+ case app::gen::SymmetryMode::HORIZONTAL:
+ editor->showMouseCursor(kSizeWECursor);
+ break;
+ case app::gen::SymmetryMode::VERTICAL:
+ editor->showMouseCursor(kSizeNSCursor);
+ break;
+ }
+ return true;
}
- editor->showMouseCursor(newCursor);
- return true;
+ return false;
}
void StandbyState::Decorator::preRenderDecorator(EditorPreRender* render)
@@ -607,6 +647,59 @@ void StandbyState::Decorator::postRenderDecorator(EditorPostRender* render)
getTransformHandles(editor)->drawHandles(editor,
m_standbyState->getTransformation(editor));
}
+
+ // Draw transformation handles (if the mask is visible and isn't frozen).
+ gfx::Rect box1, box2;
+ if (StandbyState::Decorator::getSymmetryHandles(editor, box1, box2)) {
+ skin::SkinTheme* theme = static_cast<skin::SkinTheme*>(CurrentTheme::get());
+ she::Surface* part = theme->parts.transformationHandle()->getBitmap(0);
+ ScreenGraphics g;
+ g.drawRgbaSurface(part, box1.x, box1.y);
+ g.drawRgbaSurface(part, box2.x, box2.y);
+ }
+}
+
+bool StandbyState::Decorator::getSymmetryHandles(Editor* editor, gfx::Rect& box1, gfx::Rect& box2)
+{
+ // Draw transformation handles (if the mask is visible and isn't frozen).
+ if (editor->isActive() &&
+ editor->editorFlags() & Editor::kShowSymmetryLine &&
+ Preferences::instance().symmetryMode.enabled()) {
+ const auto& symmetry = Preferences::instance().document(editor->document()).symmetry;
+ auto mode = symmetry.mode();
+ if (mode != app::gen::SymmetryMode::NONE) {
+ bool horz = (mode == app::gen::SymmetryMode::HORIZONTAL);
+ int pos = (horz ? symmetry.xAxis():
+ symmetry.yAxis());
+ gfx::Rect spriteBounds = editor->sprite()->bounds();
+ skin::SkinTheme* theme = static_cast<skin::SkinTheme*>(CurrentTheme::get());
+ she::Surface* part = theme->parts.transformationHandle()->getBitmap(0);
+ gfx::Point pt1, pt2;
+ if (horz) {
+ pt1 = gfx::Point(spriteBounds.x+pos, spriteBounds.y);
+ pt1 = editor->editorToScreen(pt1);
+ pt2 = gfx::Point(spriteBounds.x+pos, spriteBounds.y+spriteBounds.h);
+ pt2 = editor->editorToScreen(pt2);
+ pt1.y -= part->height();
+ pt1.x -= part->width()/2;
+ pt2.x -= part->width()/2;
+ }
+ else {
+ pt1 = gfx::Point(spriteBounds.x, spriteBounds.y+pos);
+ pt1 = editor->editorToScreen(pt1);
+ pt2 = gfx::Point(spriteBounds.x+spriteBounds.w, spriteBounds.y+pos);
+ pt2 = editor->editorToScreen(pt2);
+ pt1.x -= part->width();
+ pt1.y -= part->height()/2;
+ pt2.y -= part->height()/2;
+ }
+
+ box1 = gfx::Rect(pt1.x, pt1.y, part->width(), part->height());
+ box2 = gfx::Rect(pt2.x, pt2.y, part->width(), part->height());
+ return true;
+ }
+ }
+ return false;
}
} // namespace app
diff --git a/src/app/ui/editor/standby_state.h b/src/app/ui/editor/standby_state.h
index 390ec3e..bace98c 100644
--- a/src/app/ui/editor/standby_state.h
+++ b/src/app/ui/editor/standby_state.h
@@ -16,6 +16,10 @@
#include "gfx/transformation.h"
namespace app {
+ namespace tools {
+ class Ink;
+ }
+
class TransformHandles;
class StandbyState : public StateWithWheelBehavior {
@@ -54,12 +58,14 @@ namespace app {
virtual ~Decorator();
TransformHandles* getTransformHandles(Editor* editor);
+ bool getSymmetryHandles(Editor* editor, gfx::Rect& box1, gfx::Rect& box2);
- bool onSetCursor(Editor* editor, const gfx::Point& mouseScreenPos);
+ bool onSetCursor(tools::Ink* ink, Editor* editor, const gfx::Point& mouseScreenPos);
// EditorDecorator overrides
void preRenderDecorator(EditorPreRender* render) override;
void postRenderDecorator(EditorPostRender* render) override;
+
private:
TransformHandles* m_transfHandles;
StandbyState* m_standbyState;
diff --git a/src/app/ui/editor/tool_loop_impl.cpp b/src/app/ui/editor/tool_loop_impl.cpp
index 638714a..218965c 100644
--- a/src/app/ui/editor/tool_loop_impl.cpp
+++ b/src/app/ui/editor/tool_loop_impl.cpp
@@ -141,25 +141,21 @@ public:
}
// Symmetry mode
- switch (m_docPref.symmetry.mode()) {
+ if (Preferences::instance().symmetryMode.enabled()) {
+ switch (m_docPref.symmetry.mode()) {
- case app::gen::SymmetryMode::NONE:
- ASSERT(m_symmetry == nullptr);
- break;
-
- case app::gen::SymmetryMode::HORIZONTAL:
- if (m_docPref.symmetry.xAxis() == 0)
- m_docPref.symmetry.xAxis(m_sprite->width()/2);
-
- m_symmetry.reset(new app::tools::HorizontalSymmetry(m_docPref.symmetry.xAxis()));
- break;
+ case app::gen::SymmetryMode::NONE:
+ ASSERT(m_symmetry == nullptr);
+ break;
- case app::gen::SymmetryMode::VERTICAL:
- if (m_docPref.symmetry.yAxis() == 0)
- m_docPref.symmetry.yAxis(m_sprite->height()/2);
+ case app::gen::SymmetryMode::HORIZONTAL:
+ m_symmetry.reset(new app::tools::HorizontalSymmetry(m_docPref.symmetry.xAxis()));
+ break;
- m_symmetry.reset(new app::tools::VerticalSymmetry(m_docPref.symmetry.yAxis()));
- break;
+ case app::gen::SymmetryMode::VERTICAL:
+ m_symmetry.reset(new app::tools::VerticalSymmetry(m_docPref.symmetry.yAxis()));
+ break;
+ }
}
// Ignore opacity for these inks
--
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