LMMS
Loading...
Searching...
No Matches
juce_AudioProcessorEditor.cpp
Go to the documentation of this file.
1/*
2 ==============================================================================
3
4 This file is part of the JUCE library.
5 Copyright (c) 2022 - Raw Material Software Limited
6
7 JUCE is an open source library subject to commercial or open-source
8 licensing.
9
10 By using JUCE, you agree to the terms of both the JUCE 7 End-User License
11 Agreement and JUCE Privacy Policy.
12
13 End User License Agreement: www.juce.com/juce-7-licence
14 Privacy Policy: www.juce.com/juce-privacy-policy
15
16 Or: You may also use this code under the terms of the GPL v3 (see
17 www.gnu.org/licenses).
18
19 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
20 EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
21 DISCLAIMED.
22
23 ==============================================================================
24*/
25
26namespace juce
27{
28
33
35{
36 // the filter must be valid..
37 jassert (p != nullptr);
38 initialise();
39}
40
42{
43 // if this fails, then the wrapper hasn't called editorBeingDeleted() on the
44 // filter for some reason..
45 jassert (processor.getActiveEditor() != this);
47}
48
51
54
61
62//==============================================================================
63void AudioProcessorEditor::setResizable (bool allowHostToResize, bool useBottomRightCornerResizer)
64{
65 resizableByHost = allowHostToResize;
66
67 const auto hasResizableCorner = (resizableCorner.get() != nullptr);
68
69 if (useBottomRightCornerResizer != hasResizableCorner)
70 {
71 if (useBottomRightCornerResizer)
73 else
74 resizableCorner = nullptr;
75 }
76}
77
78void AudioProcessorEditor::setResizeLimits (int newMinimumWidth,
79 int newMinimumHeight,
80 int newMaximumWidth,
81 int newMaximumHeight) noexcept
82{
83 if (constrainer != nullptr && constrainer != &defaultConstrainer)
84 {
85 // if you've set up a custom constrainer then these settings won't have any effect..
87 return;
88 }
89
90 resizableByHost = (newMinimumWidth != newMaximumWidth || newMinimumHeight != newMaximumHeight);
91
92 defaultConstrainer.setSizeLimits (newMinimumWidth, newMinimumHeight,
93 newMaximumWidth, newMaximumHeight);
94
95 if (constrainer == nullptr)
97
98 if (resizableCorner != nullptr)
100
102}
103
105{
106 if (constrainer != newConstrainer)
107 {
108 attachConstrainer (newConstrainer);
109
110 if (constrainer != nullptr)
111 resizableByHost = (newConstrainer->getMinimumWidth() != newConstrainer->getMaximumWidth()
112 || newConstrainer->getMinimumHeight() != newConstrainer->getMaximumHeight());
113
114 if (resizableCorner != nullptr)
116 }
117}
118
120{
121 if (constrainer != newConstrainer)
122 {
123 constrainer = newConstrainer;
124 updatePeer();
125 }
126}
127
129{
130 resizableCorner = std::make_unique<ResizableCornerComponent> (this, constrainer);
132 resizableCorner->setAlwaysOnTop (true);
133 editorResized (true);
134}
135
137{
138 if (constrainer == nullptr)
139 {
140 setBounds (newBounds);
141 return;
142 }
143
144 auto currentBounds = getBounds();
145
146 constrainer->setBoundsForComponent (this,
147 newBounds,
148 newBounds.getY() != currentBounds.getY() && newBounds.getBottom() == currentBounds.getBottom(),
149 newBounds.getX() != currentBounds.getX() && newBounds.getRight() == currentBounds.getRight(),
150 newBounds.getY() == currentBounds.getY() && newBounds.getBottom() != currentBounds.getBottom(),
151 newBounds.getX() == currentBounds.getX() && newBounds.getRight() != currentBounds.getRight());
152}
153
155{
156 // The host needs to be able to rescale the plug-in editor and applying your own transform will
157 // obliterate it! If you want to scale the whole of your UI use Desktop::setGlobalScaleFactor(),
158 // or, for applying other transforms, consider putting the component you want to transform
159 // in a child of the editor and transform that instead.
161
162 if (wasResized)
163 {
164 bool resizerHidden = false;
165
166 if (auto* peer = getPeer())
167 resizerHidden = peer->isFullScreen() || peer->isKioskMode();
168
169 if (resizableCorner != nullptr)
170 {
171 resizableCorner->setVisible (! resizerHidden);
172
173 const int resizerSize = 18;
174 resizableCorner->setBounds (getWidth() - resizerSize,
175 getHeight() - resizerSize,
176 resizerSize, resizerSize);
177 }
178 }
179}
180
182{
183 if (isOnDesktop())
184 if (auto* peer = getPeer())
185 peer->setConstrainer (constrainer);
186}
187
195
196//==============================================================================
197typedef ComponentPeer* (*createUnityPeerFunctionType) (Component&);
199
200ComponentPeer* AudioProcessorEditor::createNewPeer (int styleFlags, void* nativeWindow)
201{
202 if (juce_createUnityPeerFn != nullptr)
203 {
204 ignoreUnused (styleFlags, nativeWindow);
205 return juce_createUnityPeerFn (*this);
206 }
207
208 return Component::createNewPeer (styleFlags, nativeWindow);
209}
210
211} // namespace juce
#define noexcept
Definition DistrhoDefines.h:72
static AffineTransform scale(float factorX, float factorY) noexcept
Definition juce_AffineTransform.cpp:141
void setBoundsConstrained(Rectangle< int > newBounds)
Definition juce_AudioProcessorEditor.cpp:136
AudioProcessorEditor(AudioProcessor &) noexcept
Definition juce_AudioProcessorEditor.cpp:29
void updatePeer()
Definition juce_AudioProcessorEditor.cpp:181
virtual bool supportsHostMIDIControllerPresence(bool hostMIDIControllerIsAvailable)
Definition juce_AudioProcessorEditor.cpp:52
void setResizable(bool allowHostToResize, bool useBottomRightCornerResizer)
Definition juce_AudioProcessorEditor.cpp:63
virtual int getControlParameterIndex(Component &)
Definition juce_AudioProcessorEditor.cpp:50
ComponentBoundsConstrainer defaultConstrainer
Definition juce_AudioProcessorEditor.h:235
std::unique_ptr< AudioProcessorEditorListener > resizeListener
Definition juce_AudioProcessorEditor.h:233
~AudioProcessorEditor() override
Definition juce_AudioProcessorEditor.cpp:41
ComponentPeer * createNewPeer(int styleFlags, void *) override
Definition juce_AudioProcessorEditor.cpp:200
virtual void setControlHighlight(ParameterControlHighlightInfo)
Definition juce_AudioProcessorEditor.cpp:49
virtual void setScaleFactor(float newScale)
Definition juce_AudioProcessorEditor.cpp:188
void setResizeLimits(int newMinimumWidth, int newMinimumHeight, int newMaximumWidth, int newMaximumHeight) noexcept
Definition juce_AudioProcessorEditor.cpp:78
std::unique_ptr< ResizableCornerComponent > resizableCorner
Definition juce_AudioProcessorEditor.h:207
AudioProcessor & processor
Definition juce_AudioProcessorEditor.h:58
void attachResizableCornerComponent()
Definition juce_AudioProcessorEditor.cpp:128
virtual void hostMIDIControllerIsAvailable(bool controllerIsAvailable)
Definition juce_AudioProcessorEditor.cpp:53
ComponentBoundsConstrainer * constrainer
Definition juce_AudioProcessorEditor.h:236
void attachConstrainer(ComponentBoundsConstrainer *)
Definition juce_AudioProcessorEditor.cpp:119
void setConstrainer(ComponentBoundsConstrainer *newConstrainer)
Definition juce_AudioProcessorEditor.cpp:104
void initialise()
Definition juce_AudioProcessorEditor.cpp:55
bool resizableByHost
Definition juce_AudioProcessorEditor.h:234
AffineTransform hostScaleTransform
Definition juce_AudioProcessorEditor.h:238
void editorResized(bool wasResized)
Definition juce_AudioProcessorEditor.cpp:154
Definition juce_AudioProcessor.h:46
Definition juce_ComponentBoundsConstrainer.h:44
int getMaximumWidth() const noexcept
Definition juce_ComponentBoundsConstrainer.h:64
int getMinimumWidth() const noexcept
Definition juce_ComponentBoundsConstrainer.h:58
int getMinimumHeight() const noexcept
Definition juce_ComponentBoundsConstrainer.h:70
int getMaximumHeight() const noexcept
Definition juce_ComponentBoundsConstrainer.h:76
Definition juce_Component.h:36
AffineTransform getTransform() const
Definition juce_Component.cpp:1378
virtual ComponentPeer * createNewPeer(int styleFlags, void *nativeWindowToAttachTo)
Definition juce_linux_Windowing.cpp:574
void setTransform(const AffineTransform &transform)
Definition juce_Component.cpp:1341
void removeComponentListener(ComponentListener *listenerToRemove)
Definition juce_Component.cpp:2337
int getHeight() const noexcept
Definition juce_Component.h:274
void addComponentListener(ComponentListener *newListener)
Definition juce_Component.cpp:2323
Rectangle< int > getBounds() const noexcept
Definition juce_Component.h:304
Component() noexcept
Definition juce_Component.cpp:517
bool isOnDesktop() const noexcept
Definition juce_Component.cpp:796
void setBounds(int x, int y, int width, int height)
Definition juce_Component.cpp:1147
int getWidth() const noexcept
Definition juce_Component.h:271
ComponentPeer * getPeer() const
Definition juce_Component.cpp:801
void addChildComponent(Component *child, int zOrder=-1)
Definition juce_Component.cpp:1548
friend class ComponentPeer
Definition juce_Component.h:2527
Definition juce_ComponentPeer.h:44
Definition juce_Rectangle.h:67
ValueType getRight() const noexcept
Definition juce_Rectangle.h:139
ValueType getBottom() const noexcept
Definition juce_Rectangle.h:142
ValueType getX() const noexcept
Definition juce_Rectangle.h:127
ValueType getY() const noexcept
Definition juce_Rectangle.h:130
#define jassert(expression)
#define jassertfalse
Definition carla_juce.cpp:31
createUnityPeerFunctionType juce_createUnityPeerFn
Definition juce_AudioProcessorEditor.cpp:198
ComponentPeer *(* createUnityPeerFunctionType)(Component &)
Definition juce_AudioProcessorEditor.cpp:197
void ignoreUnused(Types &&...) noexcept
Definition juce_MathsFunctions.h:333
Definition juce_AudioProcessorEditor.h:212
Definition juce_AudioProcessorEditor.h:70
uch * p
Definition crypt.c:594