Krotos Modules 3
Loading...
Searching...
No Matches
KwidgetGUI_Macroslider.cpp
Go to the documentation of this file.
1namespace krotos
2{
4 {
5 setLookAndFeel(&m_krotosLAF);
6
7 m_borderColour = Colours::aquamarine;
9 m_ignorePadding = true;
10
11 m_macroSlider = std::make_unique<AttachedSlider>(owner.getKwidgetLabel(), false);
12 m_macroSlider->getAttachment() = createParameterAttachment(owner.getKwidgetID(), m_macroSlider->getSlider());
13 addAndMakeVisible(m_macroSlider.get());
14
15 m_editableLabel = std::make_unique<AttachedLabel>(owner.getKwidgetLabel());
16 m_editableLabel->getAttachment() =
18 addAndMakeVisible(m_editableLabel.get());
19 auto labelFont = Font().withPointHeight(layout.textRectangle.getHeight() * layout.height_scale_factor)
20 .withStyle(Font::FontStyleFlags::plain);
21 labelFont.setExtraKerningFactor(layout.KerningFactor);
22 m_editableLabel->getLabel().setFont(labelFont);
23 m_editableLabel->getLabel().setJustificationType(Justification::centred);
24 m_editableLabel->getLabel().setColour(Label::textColourId, layout.editableLabelTextColour);
25
26 Desktop::getInstance().addGlobalMouseListener(this);
27 }
28
30 {
31 Desktop::getInstance().removeGlobalMouseListener(this);
32 setLookAndFeel(nullptr);
33 }
34
35 void KwidgetGUI_MacroSlider::mouseEnter(const MouseEvent& /*event*/)
36 {
37 if (m_macroSlider->isEnabled())
38 {
39 m_editableLabel->setVisible(!m_macroSlider->getSlider().isMouseOverOrDragging(true));
40 }
41 }
42
43 void KwidgetGUI_MacroSlider::mouseExit(const MouseEvent& /*event*/)
44 {
45 if (m_macroSlider->isEnabled())
46 {
47 m_editableLabel->setVisible(!m_macroSlider->getSlider().isMouseOverOrDragging(true));
48 }
49 }
50
52
54 {
56
57 auto bounds = m_currentBounds;
58 auto textRect = layout.textRectangle;
59
60 // Backwards compatibility fix for old presets which used a fixed knob size regardless of the bounds
61 if (bounds.getWidth() > 86 && bounds.getWidth() <= 130)
62 bounds.setWidth(86);
63 if (bounds.getHeight() > 96 && bounds.getHeight() <= 170)
64 bounds.setHeight(96);
65 //
66
67 auto scalar = (float)bounds.getWidth() / (float)layout.enclosingRectangle.getWidth();
68 textRect *= scalar;
69 textRect.setHeight(layout.textRectangle.getHeight());
70 textRect.setX(layout.textRectangle.getX());
71 m_editableLabel->getLabel().setMinimumHorizontalScale(1.0f);
72
73 m_macroSlider->setBounds(bounds);
74
75 m_editableLabel->setBounds(textRect.toNearestInt());
76
77 if (m_labelEditability == false && m_performMode == true)
78 {
79 m_editableLabel->getLabel().setEditable(false);
80 }
81 else
82 {
83 m_editableLabel->getLabel().setEditable(false, false, true, true);
84 }
85 }
86
88} // namespace krotos
void setLabelEditability(bool editable)
Definition KwidgetGUI_Macroslider.cpp:87
void mouseExit(const MouseEvent &) override
Definition KwidgetGUI_Macroslider.cpp:43
bool m_labelEditability
Definition KwidgetGUI_Macroslider.h:56
void paint(Graphics &g) override
Definition KwidgetGUI_Macroslider.cpp:51
void mouseEnter(const MouseEvent &) override
Definition KwidgetGUI_Macroslider.cpp:35
Krotos_LookAndFeel m_krotosLAF
Definition KwidgetGUI_Macroslider.h:50
std::unique_ptr< AttachedLabel > m_editableLabel
Definition KwidgetGUI_Macroslider.h:53
KwidgetGUI_MacroSlider(Kwidget &owner)
Definition KwidgetGUI_Macroslider.cpp:3
~KwidgetGUI_MacroSlider()
Definition KwidgetGUI_Macroslider.cpp:29
void resized() override
Definition KwidgetGUI_Macroslider.cpp:53
bool m_performMode
Definition KwidgetGUI_Macroslider.h:55
std::unique_ptr< AttachedSlider > m_macroSlider
Definition KwidgetGUI_Macroslider.h:52
struct krotos::KwidgetGUI_MacroSlider::Layout layout
Interface for a UI Component that controls a KwidgetProcessor.
Definition KwidgetGUI.h:24
std::unique_ptr< LabelCustomParameterAttachment > createCustomParameterAttachment(const String &paramID, Label &label)
Definition KwidgetGUI.cpp:100
std::unique_ptr< SliderParameterAttachment > createParameterAttachment(const String &paramID, Slider &slider)
Definition KwidgetGUI.cpp:72
Colour m_borderColour
Definition KwidgetGUI.h:149
void paint(Graphics &g) override
Definition KwidgetGUI.cpp:26
Rectangle< int > m_currentBounds
Definition KwidgetGUI.h:146
void resized() override
Definition KwidgetGUI.cpp:45
void setRenderStyle(RenderStyle newStyle)
Definition KwidgetGUI.cpp:114
bool m_ignorePadding
Definition KwidgetGUI.h:145
Definition Kwidget.h:8
const String & getKwidgetID() const
Definition Kwidget.cpp:367
virtual const String & getKwidgetLabel()
Definition Kwidget.cpp:378
Definition AirAbsorptionFilter.cpp:2
static const String editableLabel
Definition Kwidget_Macroslider.h:10
const juce::Rectangle< float > enclosingRectangle
Definition KwidgetGUI_Macroslider.h:45
const juce::Rectangle< float > textRectangle
Definition KwidgetGUI_Macroslider.h:46
const Colour editableLabelTextColour
Definition KwidgetGUI_Macroslider.h:44
const float KerningFactor
Definition KwidgetGUI_Macroslider.h:41
const float height_scale_factor
Definition KwidgetGUI_Macroslider.h:43