Browse Source

Add shadows to SvgButton and SvgSwitch. Rearrange ModuleWidget context menu items.

tags/v1.0.0
Andrew Belt 6 years ago
parent
commit
f3181efc1b
8 changed files with 64 additions and 43 deletions
  1. +2
    -0
      include/app/SvgButton.hpp
  2. +1
    -1
      include/app/SvgKnob.hpp
  3. +1
    -1
      include/app/SvgPort.hpp
  4. +2
    -0
      include/app/SvgSwitch.hpp
  5. +42
    -39
      src/app/ModuleWidget.cpp
  6. +7
    -0
      src/app/SvgButton.cpp
  7. +2
    -2
      src/app/SvgPort.cpp
  8. +7
    -0
      src/app/SvgSwitch.cpp

+ 2
- 0
include/app/SvgButton.hpp View File

@@ -2,6 +2,7 @@
#include "app/common.hpp" #include "app/common.hpp"
#include "widget/OpaqueWidget.hpp" #include "widget/OpaqueWidget.hpp"
#include "widget/FramebufferWidget.hpp" #include "widget/FramebufferWidget.hpp"
#include "app/CircularShadow.hpp"
#include "widget/SvgWidget.hpp" #include "widget/SvgWidget.hpp"




@@ -11,6 +12,7 @@ namespace app {


struct SvgButton : widget::OpaqueWidget { struct SvgButton : widget::OpaqueWidget {
widget::FramebufferWidget *fb; widget::FramebufferWidget *fb;
CircularShadow *shadow;
widget::SvgWidget *sw; widget::SvgWidget *sw;
std::vector<std::shared_ptr<Svg>> frames; std::vector<std::shared_ptr<Svg>> frames;




+ 1
- 1
include/app/SvgKnob.hpp View File

@@ -14,9 +14,9 @@ namespace app {
/** A knob which rotates an SVG and caches it in a framebuffer */ /** A knob which rotates an SVG and caches it in a framebuffer */
struct SvgKnob : Knob { struct SvgKnob : Knob {
widget::FramebufferWidget *fb; widget::FramebufferWidget *fb;
CircularShadow *shadow;
widget::TransformWidget *tw; widget::TransformWidget *tw;
widget::SvgWidget *sw; widget::SvgWidget *sw;
CircularShadow *shadow;
/** Angles in radians */ /** Angles in radians */
float minAngle, maxAngle; float minAngle, maxAngle;




+ 1
- 1
include/app/SvgPort.hpp View File

@@ -12,8 +12,8 @@ namespace app {


struct SvgPort : PortWidget { struct SvgPort : PortWidget {
widget::FramebufferWidget *fb; widget::FramebufferWidget *fb;
widget::SvgWidget *sw;
CircularShadow *shadow; CircularShadow *shadow;
widget::SvgWidget *sw;


SvgPort(); SvgPort();
void setSvg(std::shared_ptr<Svg> svg); void setSvg(std::shared_ptr<Svg> svg);


+ 2
- 0
include/app/SvgSwitch.hpp View File

@@ -2,6 +2,7 @@
#include "app/common.hpp" #include "app/common.hpp"
#include "widget/FramebufferWidget.hpp" #include "widget/FramebufferWidget.hpp"
#include "widget/SvgWidget.hpp" #include "widget/SvgWidget.hpp"
#include "app/CircularShadow.hpp"
#include "app/Switch.hpp" #include "app/Switch.hpp"




@@ -12,6 +13,7 @@ namespace app {
/** A ParamWidget with multiple frames corresponding to its value */ /** A ParamWidget with multiple frames corresponding to its value */
struct SvgSwitch : Switch { struct SvgSwitch : Switch {
widget::FramebufferWidget *fb; widget::FramebufferWidget *fb;
CircularShadow *shadow;
widget::SvgWidget *sw; widget::SvgWidget *sw;
std::vector<std::shared_ptr<Svg>> frames; std::vector<std::shared_ptr<Svg>> frames;




+ 42
- 39
src/app/ModuleWidget.cpp View File

@@ -162,7 +162,7 @@ struct ModuleLoadItem : ui::MenuItem {
}; };




struct ModulePresetItem : ui::MenuItem {
struct ModulePresetPathItem : ui::MenuItem {
ModuleWidget *moduleWidget; ModuleWidget *moduleWidget;
std::string presetPath; std::string presetPath;
void onAction(const widget::ActionEvent &e) override { void onAction(const widget::ActionEvent &e) override {
@@ -171,18 +171,45 @@ struct ModulePresetItem : ui::MenuItem {
}; };




struct ModuleListPresetsItem : ui::MenuItem {
struct ModulePresetItem : ui::MenuItem {
ModuleWidget *moduleWidget; ModuleWidget *moduleWidget;
ui::Menu *createChildMenu() override { ui::Menu *createChildMenu() override {
ui::Menu *menu = new ui::Menu; ui::Menu *menu = new ui::Menu;


for (const std::string &presetPath : moduleWidget->model->presetPaths) {
ModulePresetItem *presetItem = new ModulePresetItem;
std::string presetName = string::basename(string::filename(presetPath));
presetItem->text = presetName;
presetItem->presetPath = presetPath;
presetItem->moduleWidget = moduleWidget;
menu->addChild(presetItem);
ModuleCopyItem *copyItem = new ModuleCopyItem;
copyItem->text = "Copy";
copyItem->rightText = WINDOW_MOD_CTRL_NAME "+C";
copyItem->moduleWidget = moduleWidget;
menu->addChild(copyItem);

ModulePasteItem *pasteItem = new ModulePasteItem;
pasteItem->text = "Paste";
pasteItem->rightText = WINDOW_MOD_CTRL_NAME "+V";
pasteItem->moduleWidget = moduleWidget;
menu->addChild(pasteItem);

ModuleLoadItem *loadItem = new ModuleLoadItem;
loadItem->text = "Open";
loadItem->moduleWidget = moduleWidget;
menu->addChild(loadItem);

ModuleSaveItem *saveItem = new ModuleSaveItem;
saveItem->text = "Save as";
saveItem->moduleWidget = moduleWidget;
menu->addChild(saveItem);

if (!moduleWidget->model->presetPaths.empty()) {
menu->addChild(new MenuEntry);
menu->addChild(createMenuLabel("Factory presets"));

for (const std::string &presetPath : moduleWidget->model->presetPaths) {
ModulePresetPathItem *presetItem = new ModulePresetPathItem;
std::string presetName = string::basename(string::filename(presetPath));
presetItem->text = presetName;
presetItem->presetPath = presetPath;
presetItem->moduleWidget = moduleWidget;
menu->addChild(presetItem);
}
} }


return menu; return menu;
@@ -783,6 +810,12 @@ void ModuleWidget::createContextMenu() {
pluginItem->plugin = model->plugin; pluginItem->plugin = model->plugin;
menu->addChild(pluginItem); menu->addChild(pluginItem);


ModulePresetItem *presetsItem = new ModulePresetItem;
presetsItem->text = "Presets";
presetsItem->rightText = RIGHT_ARROW;
presetsItem->moduleWidget = this;
menu->addChild(presetsItem);

ModuleResetItem *resetItem = new ModuleResetItem; ModuleResetItem *resetItem = new ModuleResetItem;
resetItem->text = "Initialize"; resetItem->text = "Initialize";
resetItem->rightText = WINDOW_MOD_CTRL_NAME "+I"; resetItem->rightText = WINDOW_MOD_CTRL_NAME "+I";
@@ -807,36 +840,6 @@ void ModuleWidget::createContextMenu() {
cloneItem->moduleWidget = this; cloneItem->moduleWidget = this;
menu->addChild(cloneItem); menu->addChild(cloneItem);


if (!model->presetPaths.empty()) {
ModuleListPresetsItem *presetsItem = new ModuleListPresetsItem;
presetsItem->text = "Factory presets";
presetsItem->rightText = RIGHT_ARROW;
presetsItem->moduleWidget = this;
menu->addChild(presetsItem);
}

ModuleCopyItem *copyItem = new ModuleCopyItem;
copyItem->text = "Copy preset";
copyItem->rightText = WINDOW_MOD_CTRL_NAME "+C";
copyItem->moduleWidget = this;
menu->addChild(copyItem);

ModulePasteItem *pasteItem = new ModulePasteItem;
pasteItem->text = "Paste preset";
pasteItem->rightText = WINDOW_MOD_CTRL_NAME "+V";
pasteItem->moduleWidget = this;
menu->addChild(pasteItem);

ModuleLoadItem *loadItem = new ModuleLoadItem;
loadItem->text = "Open preset";
loadItem->moduleWidget = this;
menu->addChild(loadItem);

ModuleSaveItem *saveItem = new ModuleSaveItem;
saveItem->text = "Save preset as";
saveItem->moduleWidget = this;
menu->addChild(saveItem);

ModuleBypassItem *bypassItem = new ModuleBypassItem; ModuleBypassItem *bypassItem = new ModuleBypassItem;
bypassItem->text = "Disable"; bypassItem->text = "Disable";
bypassItem->rightText = WINDOW_MOD_CTRL_NAME "+E"; bypassItem->rightText = WINDOW_MOD_CTRL_NAME "+E";


+ 7
- 0
src/app/SvgButton.cpp View File

@@ -9,6 +9,10 @@ SvgButton::SvgButton() {
fb = new widget::FramebufferWidget; fb = new widget::FramebufferWidget;
addChild(fb); addChild(fb);


shadow = new CircularShadow;
fb->addChild(shadow);
shadow->box.size = math::Vec();

sw = new widget::SvgWidget; sw = new widget::SvgWidget;
fb->addChild(sw); fb->addChild(sw);
} }
@@ -20,6 +24,9 @@ void SvgButton::addFrame(std::shared_ptr<Svg> svg) {
sw->setSvg(svg); sw->setSvg(svg);
box.size = sw->box.size; box.size = sw->box.size;
fb->box.size = sw->box.size; fb->box.size = sw->box.size;
// Move shadow downward by 10%
shadow->box.size = sw->box.size;
shadow->box.pos = math::Vec(0, sw->box.size.y * 0.10);
} }
} }




+ 2
- 2
src/app/SvgPort.cpp View File

@@ -23,10 +23,10 @@ void SvgPort::setSvg(std::shared_ptr<Svg> svg) {
sw->setSvg(svg); sw->setSvg(svg);
fb->box.size = sw->box.size; fb->box.size = sw->box.size;
box.size = sw->box.size; box.size = sw->box.size;
shadow->box.size = sw->box.size;
// Move shadow downward by 10% // Move shadow downward by 10%
shadow->box.size = sw->box.size;
shadow->box.pos = math::Vec(0, sw->box.size.y * 0.10); shadow->box.pos = math::Vec(0, sw->box.size.y * 0.10);
// shadow->box = shadow->box.grow(math::Vec(2, 2));
fb->dirty = true; fb->dirty = true;
} }




+ 7
- 0
src/app/SvgSwitch.cpp View File

@@ -9,6 +9,10 @@ SvgSwitch::SvgSwitch() {
fb = new widget::FramebufferWidget; fb = new widget::FramebufferWidget;
addChild(fb); addChild(fb);


shadow = new CircularShadow;
fb->addChild(shadow);
shadow->box.size = math::Vec();

sw = new widget::SvgWidget; sw = new widget::SvgWidget;
fb->addChild(sw); fb->addChild(sw);
} }
@@ -20,6 +24,9 @@ void SvgSwitch::addFrame(std::shared_ptr<Svg> svg) {
sw->setSvg(svg); sw->setSvg(svg);
box.size = sw->box.size; box.size = sw->box.size;
fb->box.size = sw->box.size; fb->box.size = sw->box.size;
// Move shadow downward by 10%
shadow->box.size = sw->box.size;
shadow->box.pos = math::Vec(0, sw->box.size.y * 0.10);
} }
} }




Loading…
Cancel
Save