[aseprite] 99/196: Add option to toggle the selection edges visibility (fix #861)
Tobias Hansen
thansen at moszumanska.debian.org
Wed Apr 20 18:50:06 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 2af47fe9071c0b25ec4e720dac78840c8fa4b586
Author: David Capello <davidcapello at gmail.com>
Date: Thu Mar 24 13:04:35 2016 -0300
Add option to toggle the selection edges visibility (fix #861)
---
data/gui.xml | 34 +++++----
data/pref.xml | 7 +-
src/app/CMakeLists.txt | 1 +
src/app/commands/cmd_grid.cpp | 66 +++-------------
src/app/commands/cmd_show.cpp | 141 +++++++++++++++++++++++++++++++++++
src/app/commands/commands_list.h | 2 +
src/app/ui/editor/editor.cpp | 99 ++++++++++++------------
src/app/ui/editor/editor.h | 7 +-
src/app/ui/editor/tool_loop_impl.cpp | 9 ++-
9 files changed, 239 insertions(+), 127 deletions(-)
diff --git a/data/gui.xml b/data/gui.xml
index 2ebc57b..dd365d9 100644
--- a/data/gui.xml
+++ b/data/gui.xml
@@ -111,6 +111,7 @@
<key command="PaletteEditor" shortcut="F4">
<param name="switch" value="true" />
</key>
+ <key command="ShowExtras" shortcut="Ctrl+H" />
<!-- Tabs -->
<key command="GotoNextTab" shortcut="Ctrl+Tab" />
<key command="GotoPreviousTab" shortcut="Ctrl+Shift+Tab" />
@@ -718,28 +719,35 @@
<item command="SaveMask" text="&Save to MSK file" />
</menu>
<menu text="&View">
- <item command="DuplicateView" text="Duplicate &View" />
+ <item command="DuplicateView" text="Duplicate &View" />
<separator />
- <item command="ShowPixelGrid" text="Show &Pixel Grid" />
- <item command="ShowGrid" text="Show &Grid" />
- <item command="SnapToGrid" text="&Snap to Grid" />
- <item command="GridSettings" text="Gri&d Settings" />
- <item command="SelectionAsGrid" text="Select&ion as Grid" />
- <menu text="Tiled &Mode">
+ <item command="ShowExtras" text="&Extras" />
+ <menu text="&Show">
+ <item command="ShowSelectionEdges" text="&Selection Edges" />
+ <item command="ShowGrid" text="&Grid" />
+ <item command="ShowPixelGrid" text="&Pixel Grid" />
+ </menu>
+ <separator />
+ <menu text="&Grid">
+ <item command="GridSettings" text="Gri&d Settings" />
+ <item command="SelectionAsGrid" text="Select&ion as Grid" />
+ <item command="SnapToGrid" text="&Snap to Grid" />
+ </menu>
+ <menu text="Tiled &Mode">
<item command="TiledMode" text="&None">
<param name="axis" value="none" />
- </item>
+ </item>
<item command="TiledMode" text="Tiled in &Both Axes">
<param name="axis" value="both" />
- </item>
+ </item>
<item command="TiledMode" text="Tiled in &X Axis">
<param name="axis" value="x" />
- </item>
+ </item>
<item command="TiledMode" text="Tiled in &Y Axis">
<param name="axis" value="y" />
- </item>
- </menu>
- <item command="SymmetryMode" text="S&ymmetry Options" />
+ </item>
+ </menu>
+ <item command="SymmetryMode" text="S&ymmetry Options" />
<separator />
<item command="SetLoopSection" text="Set &Loop Section" />
<item command="ShowOnionSkin" text="Show &Onion Skin" />
diff --git a/data/pref.xml b/data/pref.xml
index e912877..d283514 100644
--- a/data/pref.xml
+++ b/data/pref.xml
@@ -220,14 +220,12 @@
</section>
<section id="grid">
<option id="snap" type="bool" default="false" migrate="Grid.SnapTo" />
- <option id="visible" type="bool" default="false" migrate="Grid.Visible" />
<option id="bounds" type="gfx::Rect" default="gfx::Rect(0, 0, 16, 16)" migrate="Grid.Bounds" />
<option id="color" type="app::Color" default="app::Color::fromRgb(0, 0, 255)" migrate="Grid.Color" />
<option id="opacity" type="int" default="160" migrate="Grid.Opacity" />
<option id="auto_opacity" type="bool" default="true" migrate="Grid.AutoOpacity" />
</section>
<section id="pixel_grid">
- <option id="visible" type="bool" default="false" migrate="PixelGrid.Visible" />
<option id="color" type="app::Color" default="app::Color::fromRgb(200, 200, 200)" migrate="PixelGrid.Color" />
<option id="opacity" type="int" default="160" migrate="PixelGrid.Opacity" />
<option id="auto_opacity" type="bool" default="true" migrate="PixelGrid.AutoOpacity" />
@@ -281,6 +279,11 @@
<option id="scroll" type="gfx::Point" />
<option id="auto_scroll" type="bool" default="true" />
</section>
+ <section id="show">
+ <option id="selection_edges" type="bool" default="true" />
+ <option id="grid" type="bool" default="false" migrate="grid.visible" />
+ <option id="pixel_grid" type="bool" default="false" migrate="pixel_grid.visible" />
+ </section>
</document>
</preferences>
diff --git a/src/app/CMakeLists.txt b/src/app/CMakeLists.txt
index 149d59e..fcc4136 100644
--- a/src/app/CMakeLists.txt
+++ b/src/app/CMakeLists.txt
@@ -254,6 +254,7 @@ add_library(app-lib
commands/cmd_set_palette.cpp
commands/cmd_set_palette_entry_size.cpp
commands/cmd_set_same_ink.cpp
+ commands/cmd_show.cpp
commands/cmd_sprite_properties.cpp
commands/cmd_sprite_size.cpp
commands/cmd_switch_colors.cpp
diff --git a/src/app/commands/cmd_grid.cpp b/src/app/commands/cmd_grid.cpp
index e091b2c..54c07eb 100644
--- a/src/app/commands/cmd_grid.cpp
+++ b/src/app/commands/cmd_grid.cpp
@@ -1,5 +1,5 @@
// Aseprite
-// Copyright (C) 2001-2015 David Capello
+// Copyright (C) 2001-2016 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
@@ -29,50 +29,6 @@ namespace app {
using namespace ui;
using namespace gfx;
-class ShowGridCommand : public Command {
-public:
- ShowGridCommand()
- : Command("ShowGrid",
- "Show Grid",
- CmdUIOnlyFlag) {
- }
-
- Command* clone() const override { return new ShowGridCommand(*this); }
-
-protected:
- bool onChecked(Context* ctx) override {
- DocumentPreferences& docPref = Preferences::instance().document(ctx->activeDocument());
- return docPref.grid.visible();
- }
-
- void onExecute(Context* ctx) override {
- DocumentPreferences& docPref = Preferences::instance().document(ctx->activeDocument());
- docPref.grid.visible(!docPref.grid.visible());
- }
-};
-
-class ShowPixelGridCommand : public Command {
-public:
- ShowPixelGridCommand()
- : Command("ShowPixelGrid",
- "Show Pixel Grid",
- CmdUIOnlyFlag) {
- }
-
- Command* clone() const override { return new ShowPixelGridCommand(*this); }
-
-protected:
- bool onChecked(Context* ctx) override {
- DocumentPreferences& docPref = Preferences::instance().document(ctx->activeDocument());
- return docPref.pixelGrid.visible();
- }
-
- void onExecute(Context* ctx) override {
- DocumentPreferences& docPref = Preferences::instance().document(ctx->activeDocument());
- docPref.pixelGrid.visible(!docPref.pixelGrid.visible());
- }
-};
-
class SnapToGridCommand : public Command {
public:
SnapToGridCommand()
@@ -122,8 +78,10 @@ protected:
Preferences::instance().document(ctx->activeDocument());
docPref.grid.bounds(mask->bounds());
- if (!docPref.grid.visible())
- docPref.grid.visible(true);
+
+ // Make grid visible
+ if (!docPref.show.grid())
+ docPref.show.grid(true);
}
};
@@ -177,17 +135,11 @@ void GridSettingsCommand::onExecute(Context* context)
bounds.h = MAX(bounds.h, 1);
docPref.grid.bounds(bounds);
- }
-}
-Command* CommandFactory::createShowGridCommand()
-{
- return new ShowGridCommand;
-}
-
-Command* CommandFactory::createShowPixelGridCommand()
-{
- return new ShowPixelGridCommand;
+ // Make grid visible
+ if (!docPref.show.grid())
+ docPref.show.grid(true);
+ }
}
Command* CommandFactory::createSnapToGridCommand()
diff --git a/src/app/commands/cmd_show.cpp b/src/app/commands/cmd_show.cpp
new file mode 100644
index 0000000..e7620aa
--- /dev/null
+++ b/src/app/commands/cmd_show.cpp
@@ -0,0 +1,141 @@
+// Aseprite
+// Copyright (C) 2001-2016 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/commands/command.h"
+#include "app/context.h"
+#include "app/pref/preferences.h"
+
+namespace app {
+
+class ShowExtrasCommand : public Command {
+public:
+ ShowExtrasCommand()
+ : Command("ShowExtras",
+ "Show Extras",
+ CmdUIOnlyFlag) {
+ }
+
+ Command* clone() const override { return new ShowExtrasCommand(*this); }
+
+protected:
+ bool onChecked(Context* ctx) override {
+ DocumentPreferences& docPref = Preferences::instance().document(ctx->activeDocument());
+ return docPref.show.selectionEdges();
+ }
+
+ void onExecute(Context* ctx) override {
+ DocumentPreferences& globPref = Preferences::instance().document(nullptr);
+ DocumentPreferences& docPref = Preferences::instance().document(ctx->activeDocument());
+ if (docPref.show.selectionEdges()) {
+ globPref.show = docPref.show;
+ docPref.show.selectionEdges(false);
+ docPref.show.grid(false);
+ docPref.show.pixelGrid(false);
+ }
+ else {
+ docPref.show.selectionEdges(true);
+ docPref.show.grid(
+ docPref.show.grid() ||
+ globPref.show.grid());
+ docPref.show.pixelGrid(
+ docPref.show.pixelGrid() ||
+ globPref.show.pixelGrid());
+ }
+ }
+};
+
+class ShowGridCommand : public Command {
+public:
+ ShowGridCommand()
+ : Command("ShowGrid",
+ "Show Grid",
+ CmdUIOnlyFlag) {
+ }
+
+ Command* clone() const override { return new ShowGridCommand(*this); }
+
+protected:
+ bool onChecked(Context* ctx) override {
+ DocumentPreferences& docPref = Preferences::instance().document(ctx->activeDocument());
+ return docPref.show.grid();
+ }
+
+ void onExecute(Context* ctx) override {
+ DocumentPreferences& docPref = Preferences::instance().document(ctx->activeDocument());
+ docPref.show.grid(!docPref.show.grid());
+ }
+};
+
+class ShowPixelGridCommand : public Command {
+public:
+ ShowPixelGridCommand()
+ : Command("ShowPixelGrid",
+ "Show Pixel Grid",
+ CmdUIOnlyFlag) {
+ }
+
+ Command* clone() const override { return new ShowPixelGridCommand(*this); }
+
+protected:
+ bool onChecked(Context* ctx) override {
+ DocumentPreferences& docPref = Preferences::instance().document(ctx->activeDocument());
+ return docPref.show.pixelGrid();
+ }
+
+ void onExecute(Context* ctx) override {
+ DocumentPreferences& docPref = Preferences::instance().document(ctx->activeDocument());
+ docPref.show.pixelGrid(!docPref.show.pixelGrid());
+ }
+};
+
+class ShowSelectionEdgesCommand : public Command {
+public:
+ ShowSelectionEdgesCommand()
+ : Command("ShowSelectionEdges",
+ "Show Selection Edges",
+ CmdUIOnlyFlag) {
+ }
+
+ Command* clone() const override { return new ShowSelectionEdgesCommand(*this); }
+
+protected:
+ bool onChecked(Context* ctx) override {
+ DocumentPreferences& docPref = Preferences::instance().document(ctx->activeDocument());
+ return docPref.show.selectionEdges();
+ }
+
+ void onExecute(Context* ctx) override {
+ DocumentPreferences& docPref = Preferences::instance().document(ctx->activeDocument());
+ docPref.show.selectionEdges(!docPref.show.selectionEdges());
+ }
+};
+
+Command* CommandFactory::createShowExtrasCommand()
+{
+ return new ShowExtrasCommand;
+}
+
+Command* CommandFactory::createShowGridCommand()
+{
+ return new ShowGridCommand;
+}
+
+Command* CommandFactory::createShowPixelGridCommand()
+{
+ return new ShowPixelGridCommand;
+}
+
+Command* CommandFactory::createShowSelectionEdgesCommand()
+{
+ return new ShowSelectionEdgesCommand;
+}
+
+} // namespace app
diff --git a/src/app/commands/commands_list.h b/src/app/commands/commands_list.h
index 4fc6516..a558ac3 100644
--- a/src/app/commands/commands_list.h
+++ b/src/app/commands/commands_list.h
@@ -116,9 +116,11 @@ FOR_EACH_COMMAND(SetLoopSection)
FOR_EACH_COMMAND(SetPalette)
FOR_EACH_COMMAND(SetPaletteEntrySize)
FOR_EACH_COMMAND(SetSameInk)
+FOR_EACH_COMMAND(ShowExtras)
FOR_EACH_COMMAND(ShowGrid)
FOR_EACH_COMMAND(ShowOnionSkin)
FOR_EACH_COMMAND(ShowPixelGrid)
+FOR_EACH_COMMAND(ShowSelectionEdges)
FOR_EACH_COMMAND(SnapToGrid)
FOR_EACH_COMMAND(SpriteProperties)
FOR_EACH_COMMAND(SpriteSize)
diff --git a/src/app/ui/editor/editor.cpp b/src/app/ui/editor/editor.cpp
index f847633..6e4bb70 100644
--- a/src/app/ui/editor/editor.cpp
+++ b/src/app/ui/editor/editor.cpp
@@ -153,6 +153,7 @@ Editor::Editor(Document* document, EditorFlags flags)
, m_layer(m_sprite->folder()->getFirstLayer())
, m_frame(frame_t(0))
, m_zoom(1, 1)
+ , m_docPref(Preferences::instance().document(document))
, m_brushPreview(this)
, m_lastDrawingPosition(-1, -1)
, m_quicktool(NULL)
@@ -183,22 +184,23 @@ Editor::Editor(Document* document, EditorFlags flags)
App::instance()->getMainWindow()->getContextBar()->BrushChange.connect(
base::Bind<void>(&Editor::onContextBarBrushChange, this));
- DocumentPreferences& docPref = Preferences::instance().document(m_document);
-
// Restore last site in preferences
- frame_t preferredFrame = docPref.site.frame();
- Layer* preferredLayer = m_sprite->indexToLayer(docPref.site.layer());
+ frame_t preferredFrame = m_docPref.site.frame();
+ Layer* preferredLayer = m_sprite->indexToLayer(m_docPref.site.layer());
if (preferredFrame >= 0 && preferredFrame <= m_sprite->lastFrame())
setFrame(preferredFrame);
if (preferredLayer)
setLayer(preferredLayer);
- m_tiledConn = docPref.tiled.AfterChange.connect(base::Bind<void>(&Editor::invalidate, this));
- m_gridConn = docPref.grid.AfterChange.connect(base::Bind<void>(&Editor::invalidate, this));
- m_pixelGridConn = docPref.pixelGrid.AfterChange.connect(base::Bind<void>(&Editor::invalidate, this));
- m_bgConn = docPref.bg.AfterChange.connect(base::Bind<void>(&Editor::invalidate, this));
- m_onionskinConn = docPref.onionskin.AfterChange.connect(base::Bind<void>(&Editor::invalidate, this));
+ m_tiledConn = m_docPref.tiled.AfterChange.connect(base::Bind<void>(&Editor::invalidate, this));
+ m_gridConn = m_docPref.grid.AfterChange.connect(base::Bind<void>(&Editor::invalidate, this));
+ m_pixelGridConn = m_docPref.pixelGrid.AfterChange.connect(base::Bind<void>(&Editor::invalidate, this));
+ m_bgConn = m_docPref.bg.AfterChange.connect(base::Bind<void>(&Editor::invalidate, this));
+ m_onionskinConn = m_docPref.onionskin.AfterChange.connect(base::Bind<void>(&Editor::invalidate, this));
m_symmetryModeConn = Preferences::instance().symmetryMode.enabled.AfterChange.connect(base::Bind<void>(&Editor::invalidateIfActive, this));
+ m_showExtrasConn =
+ m_docPref.show.AfterChange.connect(
+ base::Bind<void>(&Editor::onShowExtrasChange, this));
m_document->addObserver(this);
@@ -208,10 +210,8 @@ Editor::Editor(Document* document, EditorFlags flags)
Editor::~Editor()
{
if (m_document && m_sprite) {
- DocumentPreferences& docPref = Preferences::instance()
- .document(m_document);
- docPref.site.frame(frame());
- docPref.site.layer(m_sprite->layerToIndex(layer()));
+ m_docPref.site.frame(frame());
+ m_docPref.site.layer(m_sprite->layerToIndex(layer()));
}
m_observers.notifyDestroyEditor(this);
@@ -309,8 +309,7 @@ void Editor::setLayer(const Layer* layer)
// If the onion skinning depends on the active layer, we've to
// redraw the whole editor.
if (m_document && changed) {
- DocumentPreferences& docPref = Preferences::instance().document(m_document);
- if (docPref.onionskin.currentLayer())
+ if (m_docPref.onionskin.currentLayer())
invalidate();
}
@@ -464,26 +463,23 @@ void Editor::drawOneSpriteUnclippedRect(ui::Graphics* g, const gfx::Rect& sprite
m_renderEngine.disableOnionskin();
if ((m_flags & kShowOnionskin) == kShowOnionskin) {
- DocumentPreferences& docPref = Preferences::instance()
- .document(m_document);
-
- if (docPref.onionskin.active()) {
+ if (m_docPref.onionskin.active()) {
OnionskinOptions opts(
- (docPref.onionskin.type() == app::gen::OnionskinType::MERGE ?
+ (m_docPref.onionskin.type() == app::gen::OnionskinType::MERGE ?
render::OnionskinType::MERGE:
- (docPref.onionskin.type() == app::gen::OnionskinType::RED_BLUE_TINT ?
+ (m_docPref.onionskin.type() == app::gen::OnionskinType::RED_BLUE_TINT ?
render::OnionskinType::RED_BLUE_TINT:
render::OnionskinType::NONE)));
- opts.position(docPref.onionskin.position());
- opts.prevFrames(docPref.onionskin.prevFrames());
- opts.nextFrames(docPref.onionskin.nextFrames());
- opts.opacityBase(docPref.onionskin.opacityBase());
- opts.opacityStep(docPref.onionskin.opacityStep());
- opts.layer(docPref.onionskin.currentLayer() ? m_layer: nullptr);
+ opts.position(m_docPref.onionskin.position());
+ opts.prevFrames(m_docPref.onionskin.prevFrames());
+ opts.nextFrames(m_docPref.onionskin.nextFrames());
+ opts.opacityBase(m_docPref.onionskin.opacityBase());
+ opts.opacityStep(m_docPref.onionskin.opacityStep());
+ opts.layer(m_docPref.onionskin.currentLayer() ? m_layer: nullptr);
FrameTag* tag = nullptr;
- if (docPref.onionskin.loopTag())
+ if (m_docPref.onionskin.loopTag())
tag = m_sprite->frameTags().innerTag(m_frame);
opts.loopTag(tag);
@@ -563,10 +559,7 @@ void Editor::drawSpriteUnclippedRect(ui::Graphics* g, const gfx::Rect& _rc)
outside.createSubtraction(outside, gfx::Region(spriteRect));
// Document preferences
- DocumentPreferences& docPref =
- Preferences::instance().document(m_document);
-
- if (int(docPref.tiled.mode()) & int(filters::TiledMode::X_AXIS)) {
+ if (int(m_docPref.tiled.mode()) & int(filters::TiledMode::X_AXIS)) {
drawOneSpriteUnclippedRect(g, rc, -spriteRect.w, 0);
drawOneSpriteUnclippedRect(g, rc, +spriteRect.w, 0);
@@ -574,7 +567,7 @@ void Editor::drawSpriteUnclippedRect(ui::Graphics* g, const gfx::Rect& _rc)
outside.createSubtraction(outside, gfx::Region(enclosingRect));
}
- if (int(docPref.tiled.mode()) & int(filters::TiledMode::Y_AXIS)) {
+ if (int(m_docPref.tiled.mode()) & int(filters::TiledMode::Y_AXIS)) {
drawOneSpriteUnclippedRect(g, rc, 0, -spriteRect.h);
drawOneSpriteUnclippedRect(g, rc, 0, +spriteRect.h);
@@ -582,7 +575,7 @@ void Editor::drawSpriteUnclippedRect(ui::Graphics* g, const gfx::Rect& _rc)
outside.createSubtraction(outside, gfx::Region(enclosingRect));
}
- if (docPref.tiled.mode() == filters::TiledMode::BOTH) {
+ if (m_docPref.tiled.mode() == filters::TiledMode::BOTH) {
drawOneSpriteUnclippedRect(g, rc, -spriteRect.w, -spriteRect.h);
drawOneSpriteUnclippedRect(g, rc, +spriteRect.w, -spriteRect.h);
drawOneSpriteUnclippedRect(g, rc, -spriteRect.w, +spriteRect.h);
@@ -610,34 +603,34 @@ void Editor::drawSpriteUnclippedRect(ui::Graphics* g, const gfx::Rect& _rc)
IntersectClip clip(g, cliprc);
// Draw the pixel grid
- if ((m_zoom.scale() > 2.0) && docPref.pixelGrid.visible()) {
- int alpha = docPref.pixelGrid.opacity();
+ if ((m_zoom.scale() > 2.0) && m_docPref.show.pixelGrid()) {
+ int alpha = m_docPref.pixelGrid.opacity();
- if (docPref.pixelGrid.autoOpacity()) {
+ if (m_docPref.pixelGrid.autoOpacity()) {
alpha = int(alpha * (m_zoom.scale()-2.) / (16.-2.));
alpha = MID(0, alpha, 255);
}
drawGrid(g, enclosingRect, Rect(0, 0, 1, 1),
- docPref.pixelGrid.color(), alpha);
+ m_docPref.pixelGrid.color(), alpha);
}
// Draw the grid
- if (docPref.grid.visible()) {
- gfx::Rect gridrc = docPref.grid.bounds();
+ if (m_docPref.show.grid()) {
+ gfx::Rect gridrc = m_docPref.grid.bounds();
if (m_zoom.apply(gridrc.w) > 2 &&
m_zoom.apply(gridrc.h) > 2) {
- int alpha = docPref.grid.opacity();
+ int alpha = m_docPref.grid.opacity();
- if (docPref.grid.autoOpacity()) {
+ if (m_docPref.grid.autoOpacity()) {
double len = (m_zoom.apply(gridrc.w) + m_zoom.apply(gridrc.h)) / 2.;
alpha = int(alpha * len / 32.);
alpha = MID(0, alpha, 255);
}
if (alpha > 8)
- drawGrid(g, enclosingRect, docPref.grid.bounds(),
- docPref.grid.color(), alpha);
+ drawGrid(g, enclosingRect, m_docPref.grid.bounds(),
+ m_docPref.grid.color(), alpha);
}
}
}
@@ -647,14 +640,14 @@ void Editor::drawSpriteUnclippedRect(ui::Graphics* g, const gfx::Rect& _rc)
if (isActive() &&
(m_flags & Editor::kShowSymmetryLine) &&
Preferences::instance().symmetryMode.enabled()) {
- switch (docPref.symmetry.mode()) {
+ switch (m_docPref.symmetry.mode()) {
case app::gen::SymmetryMode::NONE:
// Do nothing
break;
case app::gen::SymmetryMode::HORIZONTAL: {
- int x = docPref.symmetry.xAxis();
+ int x = m_docPref.symmetry.xAxis();
if (x > 0) {
- gfx::Color color = color_utils::color_for_ui(docPref.grid.color());
+ gfx::Color color = color_utils::color_for_ui(m_docPref.grid.color());
g->drawVLine(color,
spriteRect.x + m_zoom.apply(x),
enclosingRect.y,
@@ -663,9 +656,9 @@ void Editor::drawSpriteUnclippedRect(ui::Graphics* g, const gfx::Rect& _rc)
break;
}
case app::gen::SymmetryMode::VERTICAL: {
- int y = docPref.symmetry.yAxis();
+ int y = m_docPref.symmetry.yAxis();
if (y > 0) {
- gfx::Color color = color_utils::color_for_ui(docPref.grid.color());
+ gfx::Color color = color_utils::color_for_ui(m_docPref.grid.color());
g->drawHLine(color,
enclosingRect.x,
spriteRect.y + m_zoom.apply(y),
@@ -722,7 +715,8 @@ void Editor::drawSpriteClipped(const gfx::Region& updateRegion)
*/
void Editor::drawMask(Graphics* g)
{
- if ((m_flags & kShowMask) == 0)
+ if ((m_flags & kShowMask) == 0 ||
+ !m_docPref.show.selectionEdges())
return;
ASSERT(m_document->getMaskBoundaries());
@@ -1447,6 +1441,11 @@ void Editor::onContextBarBrushChange()
m_brushPreview.redraw();
}
+void Editor::onShowExtrasChange()
+{
+ invalidate();
+}
+
void Editor::onExposeSpritePixels(doc::DocumentEvent& ev)
{
if (m_state && ev.sprite() == m_sprite)
diff --git a/src/app/ui/editor/editor.h b/src/app/ui/editor/editor.h
index cc278d2..cfe1966 100644
--- a/src/app/ui/editor/editor.h
+++ b/src/app/ui/editor/editor.h
@@ -12,7 +12,7 @@
#include "app/app_render.h"
#include "app/color.h"
#include "app/document.h"
-#include "app/pref/option.h"
+#include "app/pref/preferences.h"
#include "app/tools/selection_mode.h"
#include "app/ui/color_source.h"
#include "app/ui/editor/brush_preview.h"
@@ -234,6 +234,7 @@ namespace app {
void onCurrentToolChange();
void onFgColorChange();
void onContextBarBrushChange();
+ void onShowExtrasChange();
void onExposeSpritePixels(doc::DocumentEvent& ev) override;
private:
@@ -271,8 +272,9 @@ namespace app {
Document* m_document; // Active document in the editor
Sprite* m_sprite; // Active sprite in the editor
Layer* m_layer; // Active layer in the editor
- frame_t m_frame; // Active frame in the editor
+ frame_t m_frame; // Active frame in the editor
render::Zoom m_zoom; // Zoom in the editor
+ DocumentPreferences& m_docPref;
// Brush preview
BrushPreview m_brushPreview;
@@ -302,6 +304,7 @@ namespace app {
base::ScopedConnection m_currentToolChangeConn;
base::ScopedConnection m_fgColorChangeConn;
base::ScopedConnection m_contextBarBrushChangeConn;
+ base::ScopedConnection m_showExtrasConn;
// Slots listeing document preferences.
base::ScopedConnection m_tiledConn;
diff --git a/src/app/ui/editor/tool_loop_impl.cpp b/src/app/ui/editor/tool_loop_impl.cpp
index 8592bc0..70a0bee 100644
--- a/src/app/ui/editor/tool_loop_impl.cpp
+++ b/src/app/ui/editor/tool_loop_impl.cpp
@@ -1,5 +1,5 @@
// Aseprite
-// Copyright (C) 2001-2015 David Capello
+// Copyright (C) 2001-2016 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
@@ -205,14 +205,14 @@ public:
bool getContiguous() override { return m_contiguous; }
tools::SelectionMode getSelectionMode() override { return m_editor->getSelectionMode(); }
filters::TiledMode getTiledMode() override { return m_docPref.tiled.mode(); }
- bool getGridVisible() override { return m_docPref.grid.visible(); }
+ bool getGridVisible() override { return m_docPref.show.grid(); }
bool getSnapToGrid() override { return m_docPref.grid.snap(); }
bool getStopAtGrid() override {
switch (m_toolPref.floodfill.stopAtGrid()) {
case app::gen::StopAtGrid::NEVER:
return false;
case app::gen::StopAtGrid::IF_VISIBLE:
- return m_docPref.grid.visible();
+ return m_docPref.show.grid();
case app::gen::StopAtGrid::ALWAYS:
return true;
}
@@ -357,6 +357,9 @@ public:
else if (getInk()->isSelection()) {
m_document->generateMaskBoundaries();
redraw = true;
+
+ // Show selection edges
+ m_docPref.show.selectionEdges(true);
}
m_transaction.commit();
--
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