[aseprite] 125/308: Remove BrushPopupDelegate

Tobias Hansen thansen at moszumanska.debian.org
Tue Mar 8 02:45:00 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 0fbe3acfd021d0b77d20d0a6e72aef459b27d572
Author: David Capello <davidcapello at gmail.com>
Date:   Thu Dec 17 13:24:44 2015 -0300

    Remove BrushPopupDelegate
    
    At this moment we prefer to use AppBrushes and ContextBar directly
    from BrushPopup.
---
 src/app/app_brushes.cpp    |   9 ++--
 src/app/ui/brush_popup.cpp |  85 +++++++++++++++++-----------------
 src/app/ui/brush_popup.h   |  18 +-------
 src/app/ui/context_bar.cpp | 113 +++++++++++++++++----------------------------
 src/app/ui/context_bar.h   |   4 +-
 5 files changed, 92 insertions(+), 137 deletions(-)

diff --git a/src/app/app_brushes.cpp b/src/app/app_brushes.cpp
index 715433f..41372f7 100644
--- a/src/app/app_brushes.cpp
+++ b/src/app/app_brushes.cpp
@@ -26,8 +26,7 @@ AppBrushes::slot_id AppBrushes::addBrushSlot(const BrushSlot& brush)
 {
   // Use an empty slot
   for (size_t i=0; i<m_slots.size(); ++i) {
-    if (!m_slots[i].locked() ||
-        !m_slots[i].brush()) {
+    if (!m_slots[i].locked() || m_slots[i].isEmpty()) {
       m_slots[i] = brush;
       return i+1;
     }
@@ -46,7 +45,7 @@ void AppBrushes::removeBrushSlot(slot_id slot)
 
     // Erase empty trailing slots
     while (!m_slots.empty() &&
-           !m_slots[m_slots.size()-1].brush())
+           m_slots[m_slots.size()-1].isEmpty())
       m_slots.erase(--m_slots.end());
 
     ItemsChange();
@@ -90,7 +89,7 @@ void AppBrushes::lockBrushSlot(slot_id slot)
 {
   --slot;
   if (slot >= 0 && slot < (int)m_slots.size() &&
-      m_slots[slot].brush()) {
+      !m_slots[slot].isEmpty()) {
     m_slots[slot].setLocked(true);
   }
 }
@@ -99,7 +98,7 @@ void AppBrushes::unlockBrushSlot(slot_id slot)
 {
   --slot;
   if (slot >= 0 && slot < (int)m_slots.size() &&
-      m_slots[slot].brush()) {
+      !m_slots[slot].isEmpty()) {
     m_slots[slot].setLocked(false);
   }
 }
diff --git a/src/app/ui/brush_popup.cpp b/src/app/ui/brush_popup.cpp
index 44c6137..582dc17 100644
--- a/src/app/ui/brush_popup.cpp
+++ b/src/app/ui/brush_popup.cpp
@@ -12,7 +12,6 @@
 #include "app/ui/brush_popup.h"
 
 #include "app/app.h"
-#include "app/app_brushes.h"
 #include "app/brush_slot.h"
 #include "app/commands/command.h"
 #include "app/commands/commands.h"
@@ -21,7 +20,9 @@
 #include "app/pref/preferences.h"
 #include "app/ui/app_menuitem.h"
 #include "app/ui/button_set.h"
+#include "app/ui/context_bar.h"
 #include "app/ui/keyboard_shortcuts.h"
+#include "app/ui/main_window.h"
 #include "app/ui/skin/skin_theme.h"
 #include "app/ui_context.h"
 #include "base/bind.h"
@@ -73,8 +74,8 @@ void show_popup_menu(PopupWindow* popupWindow, Menu* popupMenu,
 
 class SelectBrushItem : public ButtonSet::Item {
 public:
-  SelectBrushItem(BrushPopupDelegate* delegate, const BrushSlot& brush, int slot = -1)
-    : m_delegate(delegate)
+  SelectBrushItem(const BrushSlot& brush, int slot = -1)
+    : m_brushes(App::instance()->brushes())
     , m_brush(brush)
     , m_slot(slot) {
     if (m_brush.hasBrush()) {
@@ -89,17 +90,17 @@ public:
   }
 
 private:
-
   void onClick() override {
+    ContextBar* contextBar =
+      App::instance()->getMainWindow()->getContextBar();
+
     if (m_slot >= 0)
-      m_delegate->onSelectBrushSlot(m_slot);
+      contextBar->setActiveBrushBySlot(m_slot);
     else if (m_brush.hasBrush())
-      m_delegate->onSelectBrush(m_brush.brush());
+      contextBar->setActiveBrush(m_brush.brush());
   }
 
-private:
-
-  BrushPopupDelegate* m_delegate;
+  AppBrushes& m_brushes;
   BrushSlot m_brush;
   int m_slot;
 };
@@ -134,9 +135,9 @@ private:
 
 class BrushOptionsItem : public ButtonSet::Item {
 public:
-  BrushOptionsItem(BrushPopup* popup, BrushPopupDelegate* delegate, int slot)
+  BrushOptionsItem(BrushPopup* popup, int slot)
     : m_popup(popup)
-    , m_delegate(delegate)
+    , m_brushes(App::instance()->brushes())
     , m_slot(slot) {
     setIcon(SkinTheme::instance()->parts.iconArrowDown(), true);
   }
@@ -150,7 +151,7 @@ private:
     AppMenuItem deleteItem("Delete");
     AppMenuItem deleteAllItem("Delete All");
 
-    lockItem.setSelected(m_delegate->onIsBrushSlotLocked(m_slot));
+    lockItem.setSelected(m_brushes.isBrushSlotLocked(m_slot));
 
     save.Click.connect(&BrushOptionsItem::onSaveBrush, this);
     lockItem.Click.connect(&BrushOptionsItem::onLockBrush, this);
@@ -170,8 +171,7 @@ private:
     menu.addChild(&params);
 
     // Load preferences
-    AppBrushes& brushes = App::instance()->brushes();
-    BrushSlot brush = brushes.getBrushSlot(m_slot);
+    BrushSlot brush = m_brushes.getBrushSlot(m_slot);
 
     params.brushType()->setSelected(brush.hasFlag(BrushSlot::Flags::BrushType));
     params.brushSize()->setSelected(brush.hasFlag(BrushSlot::Flags::BrushSize));
@@ -199,56 +199,58 @@ private:
 
     if (brush.flags() != BrushSlot::Flags(flags)) {
       brush.setFlags(BrushSlot::Flags(flags));
-      brushes.setBrushSlot(m_slot, brush);
+      m_brushes.setBrushSlot(m_slot, brush);
     }
   }
 
 private:
 
   void onSaveBrush() {
-    AppBrushes& brushes = App::instance()->brushes();
-    brushes.setBrushSlot(
-      m_slot, m_delegate->onCreateBrushSlotFromActivePreferences());
-    brushes.lockBrushSlot(m_slot);
+    ContextBar* contextBar =
+      App::instance()->getMainWindow()->getContextBar();
+
+    m_brushes.setBrushSlot(
+      m_slot, contextBar->createBrushSlotFromPreferences());
+    m_brushes.lockBrushSlot(m_slot);
   }
 
   void onLockBrush() {
-    if (m_delegate->onIsBrushSlotLocked(m_slot))
-      m_delegate->onUnlockBrushSlot(m_slot);
+    if (m_brushes.isBrushSlotLocked(m_slot))
+      m_brushes.unlockBrushSlot(m_slot);
     else
-      m_delegate->onLockBrushSlot(m_slot);
+      m_brushes.lockBrushSlot(m_slot);
   }
 
   void onDeleteBrush() {
-    m_delegate->onDeleteBrushSlot(m_slot);
+    m_brushes.removeBrushSlot(m_slot);
   }
 
   void onDeleteAllBrushes() {
-    m_delegate->onDeleteAllBrushes();
+    m_brushes.removeAllBrushSlots();
   }
 
   BrushPopup* m_popup;
-  BrushPopupDelegate* m_delegate;
+  AppBrushes& m_brushes;
   BrushRef m_brush;
   int m_slot;
 };
 
 class NewCustomBrushItem : public ButtonSet::Item {
 public:
-  NewCustomBrushItem(BrushPopupDelegate* delegate)
-    : m_delegate(delegate) {
+  NewCustomBrushItem() {
     setText("Save Brush");
   }
 
 private:
   void onClick() override {
-    AppBrushes& brushes = App::instance()->brushes();
-    auto slot = brushes.addBrushSlot(
-      m_delegate->onCreateBrushSlotFromActivePreferences());
+    ContextBar* contextBar =
+      App::instance()->getMainWindow()->getContextBar();
+
+    auto& brushes = App::instance()->brushes();
+    int slot = brushes.addBrushSlot(
+      contextBar->createBrushSlotFromPreferences());
     brushes.lockBrushSlot(slot);
   }
-
-  BrushPopupDelegate* m_delegate;
 };
 
 class NewBrushOptionsItem : public ButtonSet::Item {
@@ -305,13 +307,14 @@ private:
 
 } // anonymous namespace
 
-BrushPopup::BrushPopup(BrushPopupDelegate* delegate)
+BrushPopup::BrushPopup()
   : PopupWindow("", ClickBehavior::CloseOnClickInOtherWindow)
   , m_tooltipManager(nullptr)
   , m_standardBrushes(3)
   , m_customBrushes(nullptr)
-  , m_delegate(delegate)
 {
+  auto& brushes = App::instance()->brushes();
+
   setAutoRemap(false);
   setBorder(gfx::Border(2)*guiscale());
   setChildSpacing(0);
@@ -327,17 +330,15 @@ BrushPopup::BrushPopup(BrushPopupDelegate* delegate)
   m_box.addChild(top);
   m_box.addChild(new Separator("", HORIZONTAL));
 
-  const doc::Brushes& brushes = App::instance()->brushes().getStandardBrushes();
-  for (const auto& brush : brushes)
+  for (const auto& brush : brushes.getStandardBrushes())
     m_standardBrushes.addItem(
       new SelectBrushItem(
-        m_delegate, BrushSlot(BrushSlot::Flags::BrushType, brush)));
+        BrushSlot(BrushSlot::Flags::BrushType, brush)));
 
   m_standardBrushes.setTransparent(true);
   m_standardBrushes.setBgColor(gfx::ColorNone);
 
-  App::instance()->brushes()
-    .ItemsChange.connect(&BrushPopup::onBrushChanges, this);
+  brushes.ItemsChange.connect(&BrushPopup::onBrushChanges, this);
 }
 
 void BrushPopup::setBrush(Brush* brush)
@@ -387,12 +388,12 @@ void BrushPopup::regenerate(const gfx::Rect& box)
       if (key && !key->accels().empty())
         shortcut = key->accels().front().toString();
     }
-    m_customBrushes->addItem(new SelectBrushItem(m_delegate, brush, slot));
+    m_customBrushes->addItem(new SelectBrushItem(brush, slot));
     m_customBrushes->addItem(new BrushShortcutItem(shortcut, slot));
-    m_customBrushes->addItem(new BrushOptionsItem(this, m_delegate, slot));
+    m_customBrushes->addItem(new BrushOptionsItem(this, slot));
   }
 
-  m_customBrushes->addItem(new NewCustomBrushItem(m_delegate), 2, 1);
+  m_customBrushes->addItem(new NewCustomBrushItem, 2, 1);
   m_customBrushes->addItem(new NewBrushOptionsItem);
   m_customBrushes->setExpansive(true);
   m_box.addChild(m_customBrushes);
diff --git a/src/app/ui/brush_popup.h b/src/app/ui/brush_popup.h
index fd10980..c4e87f1 100644
--- a/src/app/ui/brush_popup.h
+++ b/src/app/ui/brush_popup.h
@@ -18,24 +18,9 @@
 
 namespace app {
 
-  class BrushSlot;
-
-  class BrushPopupDelegate {
-  public:
-    virtual ~BrushPopupDelegate() { }
-    virtual BrushSlot onCreateBrushSlotFromActivePreferences() = 0;
-    virtual void onSelectBrush(const doc::BrushRef& brush) = 0;
-    virtual void onSelectBrushSlot(int slot) = 0;
-    virtual void onDeleteBrushSlot(int slot) = 0;
-    virtual void onDeleteAllBrushes() = 0;
-    virtual bool onIsBrushSlotLocked(int slot) const = 0;
-    virtual void onLockBrushSlot(int slot) = 0;
-    virtual void onUnlockBrushSlot(int slot) = 0;
-  };
-
   class BrushPopup : public ui::PopupWindow {
   public:
-    BrushPopup(BrushPopupDelegate* delegate);
+    BrushPopup();
 
     void setBrush(doc::Brush* brush);
     void regenerate(const gfx::Rect& box);
@@ -54,7 +39,6 @@ namespace app {
     ui::VBox m_box;
     ButtonSet m_standardBrushes;
     ButtonSet* m_customBrushes;
-    BrushPopupDelegate* m_delegate;
   };
 
 } // namespace app
diff --git a/src/app/ui/context_bar.cpp b/src/app/ui/context_bar.cpp
index b5904dc..741e43a 100644
--- a/src/app/ui/context_bar.cpp
+++ b/src/app/ui/context_bar.cpp
@@ -72,14 +72,12 @@ using namespace tools;
 
 static bool g_updatingFromCode = false;
 
-class ContextBar::BrushTypeField : public ButtonSet
-                                 , public BrushPopupDelegate {
+class ContextBar::BrushTypeField : public ButtonSet {
 public:
   BrushTypeField(ContextBar* owner)
     : ButtonSet(1)
     , m_owner(owner)
-    , m_brushes(App::instance()->brushes())
-    , m_popupWindow(this) {
+    , m_brushes(App::instance()->brushes()) {
     SkinPartPtr part(new SkinPart);
     part->setBitmap(
       0, BrushPopup::createSurfaceForBrush(BrushRef(nullptr)));
@@ -122,72 +120,6 @@ protected:
     ev.setSizeHint(Size(16, 18)*guiscale());
   }
 
-  // BrushPopupDelegate impl
-  BrushSlot onCreateBrushSlotFromActivePreferences() override {
-    auto& pref = Preferences::instance();
-    auto& saveBrush = pref.saveBrush;
-    auto& toolPref = pref.tool(App::instance()->activeTool());
-
-    int flags = 0;
-    if (saveBrush.brushType()) flags |= int(BrushSlot::Flags::BrushType);
-    if (saveBrush.brushSize()) flags |= int(BrushSlot::Flags::BrushSize);
-    if (saveBrush.brushAngle()) flags |= int(BrushSlot::Flags::BrushAngle);
-    if (saveBrush.fgColor()) flags |= int(BrushSlot::Flags::FgColor);
-    if (saveBrush.bgColor()) flags |= int(BrushSlot::Flags::BgColor);
-    if (saveBrush.inkType()) flags |= int(BrushSlot::Flags::InkType);
-    if (saveBrush.inkOpacity()) flags |= int(BrushSlot::Flags::InkOpacity);
-    if (saveBrush.shade()) flags |= int(BrushSlot::Flags::Shade);
-    if (saveBrush.pixelPerfect()) flags |= int(BrushSlot::Flags::PixelPerfect);
-
-    return BrushSlot(
-      BrushSlot::Flags(flags),
-      ContextBar::createBrushFromPreferences(),
-      pref.colorBar.fgColor(),
-      pref.colorBar.bgColor(),
-      toolPref.ink(),
-      toolPref.opacity(),
-      m_owner->getShade(),
-      toolPref.freehandAlgorithm() == tools::FreehandAlgorithm::PIXEL_PERFECT);
-  }
-
-  void onSelectBrush(const BrushRef& brush) override {
-    if (brush->type() == kImageBrushType)
-      m_owner->setActiveBrush(brush);
-    else {
-      Tool* tool = App::instance()->activeTool();
-      ToolPreferences::Brush& brushPref = Preferences::instance().tool(tool).brush;
-
-      brushPref.type(static_cast<app::gen::BrushType>(brush->type()));
-
-      m_owner->setActiveBrush(
-        ContextBar::createBrushFromPreferences(&brushPref));
-    }
-  }
-
-  void onSelectBrushSlot(int slot) override {
-    m_owner->setActiveBrushBySlot(slot);
-  }
-
-  void onDeleteBrushSlot(int slot) override {
-    m_brushes.removeBrushSlot(slot);
-  }
-
-  void onDeleteAllBrushes() override {
-    m_brushes.removeAllBrushSlots();
-  }
-
-  bool onIsBrushSlotLocked(int slot) const override {
-    return m_brushes.isBrushSlotLocked(slot);
-  }
-
-  void onLockBrushSlot(int slot) override {
-    m_brushes.lockBrushSlot(slot);
-  }
-
-  void onUnlockBrushSlot(int slot) override {
-    m_brushes.unlockBrushSlot(slot);
-  }
-
 private:
   // Returns a little rectangle that can be used by the popup as the
   // first brush position.
@@ -1737,7 +1669,18 @@ void ContextBar::setActiveBrushBySlot(int slot)
 
 void ContextBar::setActiveBrush(const doc::BrushRef& brush)
 {
-  m_activeBrush = brush;
+  if (brush->type() == kImageBrushType)
+    m_activeBrush = brush;
+  else {
+    Tool* tool = App::instance()->activeTool();
+    auto& brushPref = Preferences::instance().tool(tool).brush;
+    auto newBrushType = static_cast<app::gen::BrushType>(brush->type());
+    if (brushPref.type() != newBrushType)
+      brushPref.type(newBrushType);
+
+    m_activeBrush = brush;
+  }
+
   BrushChange();
 
   updateForCurrentTool();
@@ -1778,6 +1721,34 @@ doc::BrushRef ContextBar::createBrushFromPreferences(ToolPreferences::Brush* bru
   return brush;
 }
 
+BrushSlot ContextBar::createBrushSlotFromPreferences()
+{
+  auto& pref = Preferences::instance();
+  auto& saveBrush = pref.saveBrush;
+  auto& toolPref = pref.tool(App::instance()->activeTool());
+
+  int flags = 0;
+  if (saveBrush.brushType()) flags |= int(BrushSlot::Flags::BrushType);
+  if (saveBrush.brushSize()) flags |= int(BrushSlot::Flags::BrushSize);
+  if (saveBrush.brushAngle()) flags |= int(BrushSlot::Flags::BrushAngle);
+  if (saveBrush.fgColor()) flags |= int(BrushSlot::Flags::FgColor);
+  if (saveBrush.bgColor()) flags |= int(BrushSlot::Flags::BgColor);
+  if (saveBrush.inkType()) flags |= int(BrushSlot::Flags::InkType);
+  if (saveBrush.inkOpacity()) flags |= int(BrushSlot::Flags::InkOpacity);
+  if (saveBrush.shade()) flags |= int(BrushSlot::Flags::Shade);
+  if (saveBrush.pixelPerfect()) flags |= int(BrushSlot::Flags::PixelPerfect);
+
+  return BrushSlot(
+    BrushSlot::Flags(flags),
+    createBrushFromPreferences(),
+    pref.colorBar.fgColor(),
+    pref.colorBar.bgColor(),
+    toolPref.ink(),
+    toolPref.opacity(),
+    getShade(),
+    toolPref.freehandAlgorithm() == tools::FreehandAlgorithm::PIXEL_PERFECT);
+}
+
 Shade ContextBar::getShade() const
 {
   return m_inkShades->getShade();
diff --git a/src/app/ui/context_bar.h b/src/app/ui/context_bar.h
index df0082c..d027045 100644
--- a/src/app/ui/context_bar.h
+++ b/src/app/ui/context_bar.h
@@ -37,8 +37,7 @@ namespace tools {
 
 namespace app {
 
-  class IBrushSettings;
-  class IToolSettings;
+  class BrushSlot;
 
   class ContextBar : public ui::Box,
                      public base::Observable<ContextBarObserver> {
@@ -57,6 +56,7 @@ namespace app {
     doc::BrushRef activeBrush(tools::Tool* tool = nullptr) const;
     void discardActiveBrush();
 
+    BrushSlot createBrushSlotFromPreferences();
     static doc::BrushRef createBrushFromPreferences(
       ToolPreferences::Brush* brushPref = nullptr);
 

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