LMMS
Loading...
Searching...
No Matches
juce_ResizableWindow.h
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
29//==============================================================================
52{
53public:
54 //==============================================================================
65 bool addToDesktop);
66
75 Colour backgroundColour,
76 bool addToDesktop);
77
81 ~ResizableWindow() override;
82
83 //==============================================================================
93 Colour getBackgroundColour() const noexcept;
94
110 void setBackgroundColour (Colour newColour);
111
112 //==============================================================================
121 void setResizable (bool shouldBeResizable,
122 bool useBottomRightCornerResizer);
123
127 bool isResizable() const noexcept;
128
140 void setResizeLimits (int newMinimumWidth,
141 int newMinimumHeight,
142 int newMaximumWidth,
143 int newMaximumHeight) noexcept;
144
146 void setDraggable (bool shouldBeDraggable) noexcept;
147
150
155
163 void setConstrainer (ComponentBoundsConstrainer* newConstrainer);
164
169 void setBoundsConstrained (const Rectangle<int>& newBounds);
170
171
172 //==============================================================================
176 bool isFullScreen() const;
177
185 void setFullScreen (bool shouldBeFullScreen);
186
190 bool isMinimised() const;
191
199 void setMinimised (bool shouldMinimise);
200
204 bool isKioskMode() const;
205
206 //==============================================================================
217 String getWindowStateAsString();
218
228 bool restoreWindowStateFromString (const String& previousState);
229
230
231 //==============================================================================
240
257 void setContentOwned (Component* newContentComponent,
258 bool resizeToFitWhenContentChangesSize);
259
276 void setContentNonOwned (Component* newContentComponent,
277 bool resizeToFitWhenContentChangesSize);
278
283 void clearContentComponent();
284
290 void setContentComponentSize (int width, int height);
291
295 virtual BorderSize<int> getBorderThickness();
296
300 virtual BorderSize<int> getContentComponentBorder();
301
302 //==============================================================================
311 {
312 backgroundColourId = 0x1005700,
313 };
314
315 //==============================================================================
316 #ifndef DOXYGEN
317 [[deprecated ("use setContentOwned and setContentNonOwned instead.")]]
318 void setContentComponent (Component* newContentComponent,
319 bool deleteOldOne = true,
320 bool resizeToFit = false);
321 #endif
322
324
325 //==============================================================================
330 {
331 virtual ~LookAndFeelMethods() = default;
332
333 //==============================================================================
334 virtual void drawCornerResizer (Graphics&, int w, int h, bool isMouseOver, bool isMouseDragging) = 0;
335 virtual void drawResizableFrame (Graphics&, int w, int h, const BorderSize<int>&) = 0;
336
339 };
340
341protected:
343 void paint (Graphics&) override;
345 void moved() override;
347 void resized() override;
349 void mouseDown (const MouseEvent&) override;
351 void mouseDrag (const MouseEvent&) override;
353 void mouseUp (const MouseEvent&) override;
355 void lookAndFeelChanged() override;
357 void childBoundsChanged (Component*) override;
359 void parentSizeChanged() override;
361 void visibilityChanged() override;
363 void activeWindowStatusChanged() override;
365 int getDesktopWindowStyleFlags() const override;
366
367 #if JUCE_DEBUG
374 void addChildComponent (Component*, int zOrder = -1);
381 void addAndMakeVisible (Component*, int zOrder = -1);
382 #endif
383
384 std::unique_ptr<ResizableCornerComponent> resizableCorner;
385 std::unique_ptr<ResizableBorderComponent> resizableBorder;
386
387 //==============================================================================
388 // The parameters for these methods have changed - please update your code!
389 void getBorderThickness (int& left, int& top, int& right, int& bottom);
390 void getContentComponentBorder (int& left, int& top, int& right, int& bottom);
391
392private:
393 //==============================================================================
395 bool ownsContentComponent = false, resizeToFitContent = false, fullscreen = false, canDrag = true, dragStarted = false;
400 #if JUCE_DEBUG
401 bool hasBeenResized = false;
402 #endif
403
404 void initialise (bool addToDesktop);
407 void setContent (Component*, bool takeOwnership, bool resizeToFit);
409
411};
412
413} // namespace juce
#define noexcept
Definition DistrhoDefines.h:72
Definition juce_BorderSize.h:42
Definition juce_Colour.h:38
Definition juce_Component.h:2287
Definition juce_ComponentBoundsConstrainer.h:44
Definition juce_ComponentDragger.h:59
Definition juce_Component.h:36
void addAndMakeVisible(Component *child, int zOrder=-1)
Definition juce_Component.cpp:1554
bool isMouseOver(bool includeChildren=false) const
Definition juce_Component.cpp:3159
void addChildComponent(Component *child, int zOrder=-1)
Definition juce_Component.cpp:1548
Definition juce_GraphicsContext.h:45
Definition juce_MouseEvent.h:39
Definition juce_Rectangle.h:67
void setResizable(bool shouldBeResizable, bool useBottomRightCornerResizer)
Definition juce_ResizableWindow.cpp:245
ComponentBoundsConstrainer defaultConstrainer
Definition juce_ResizableWindow.h:398
Rectangle< int > lastNonFullScreenPos
Definition juce_ResizableWindow.h:397
bool resizeToFitContent
Definition juce_ResizableWindow.h:395
bool ownsContentComponent
Definition juce_ResizableWindow.h:395
bool canDrag
Definition juce_ResizableWindow.h:395
void updateLastPosIfNotFullScreen()
Definition juce_ResizableWindow.cpp:484
bool isDraggable() const noexcept
Definition juce_ResizableWindow.h:149
void setContent(Component *, bool takeOwnership, bool resizeToFit)
Definition juce_ResizableWindow.cpp:93
void mouseDown(const MouseEvent &) override
Definition juce_ResizableWindow.cpp:613
void setDraggable(bool shouldBeDraggable) noexcept
Definition juce_ResizableWindow.cpp:308
std::unique_ptr< ResizableCornerComponent > resizableCorner
Definition juce_ResizableWindow.h:384
std::unique_ptr< ResizableBorderComponent > resizableBorder
Definition juce_ResizableWindow.h:385
void resized() override
Definition juce_ResizableWindow.cpp:178
void getBorderThickness(int &left, int &top, int &right, int &bottom)
int getDesktopWindowStyleFlags() const override
Definition juce_ResizableWindow.cpp:69
bool fullscreen
Definition juce_ResizableWindow.h:395
bool isResizable() const noexcept
Definition juce_ResizableWindow.cpp:285
void mouseUp(const MouseEvent &) override
Definition juce_ResizableWindow.cpp:628
void setResizeLimits(int newMinimumWidth, int newMinimumHeight, int newMaximumWidth, int newMaximumHeight) noexcept
Definition juce_ResizableWindow.cpp:291
void mouseDrag(const MouseEvent &) override
Definition juce_ResizableWindow.cpp:622
ComponentDragger dragger
Definition juce_ResizableWindow.h:396
void lookAndFeelChanged() override
Definition juce_ResizableWindow.cpp:366
ColourIds
Definition juce_ResizableWindow.h:311
@ backgroundColourId
Definition juce_ResizableWindow.h:312
void setBackgroundColour(Colour newColour)
Definition juce_ResizableWindow.cpp:382
void updateLastPosIfShowing()
Definition juce_ResizableWindow.cpp:475
void visibilityChanged() override
Definition juce_ResizableWindow.cpp:172
void paint(Graphics &) override
Definition juce_ResizableWindow.cpp:339
void activeWindowStatusChanged() override
Definition juce_ResizableWindow.cpp:233
void parentSizeChanged() override
Definition juce_ResizableWindow.cpp:497
Colour getBackgroundColour() const noexcept
Definition juce_ResizableWindow.cpp:377
ComponentBoundsConstrainer * constrainer
Definition juce_ResizableWindow.h:399
void moved() override
Definition juce_ResizableWindow.cpp:167
Component::SafePointer< Component > contentComponent
Definition juce_ResizableWindow.h:394
bool dragStarted
Definition juce_ResizableWindow.h:395
void getContentComponentBorder(int &left, int &top, int &right, int &bottom)
ComponentBoundsConstrainer * getConstrainer() noexcept
Definition juce_ResizableWindow.h:154
ResizableWindow(const String &name, bool addToDesktop)
Definition juce_ResizableWindow.cpp:29
void childBoundsChanged(Component *) override
Definition juce_ResizableWindow.cpp:216
Component * getContentComponent() const noexcept
Definition juce_ResizableWindow.h:239
void updatePeerConstrainer()
Definition juce_ResizableWindow.cpp:490
void initialise(bool addToDesktop)
Definition juce_ResizableWindow.cpp:59
void addToDesktop()
Definition juce_TopLevelWindow.cpp:258
Definition juce_String.h:53
TopLevelWindow(const String &name, bool addToDesktop)
Definition juce_TopLevelWindow.cpp:134
void addToDesktop()
Definition juce_TopLevelWindow.cpp:258
UINT_D64 w
Definition inflate.c:942
static ZCONST unsigned border[]
Definition inflate.c:749
struct @113205115357366127300225113341150224053346037032::@137033172036070230260373056156374243321245367362 left
struct @113205115357366127300225113341150224053346037032::@137033172036070230260373056156374243321245367362 right
static const char * name
Definition pugl.h:1582
static int int height
Definition pugl.h:1594
static int width
Definition pugl.h:1593
#define JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(className)
#define JUCE_API
Definition juce_StandardHeader.h:152
Definition carla_juce.cpp:31
Definition juce_ResizableWindow.h:330
virtual void fillResizableWindowBackground(Graphics &, int w, int h, const BorderSize< int > &, ResizableWindow &)=0
virtual void drawResizableFrame(Graphics &, int w, int h, const BorderSize< int > &)=0
virtual void drawCornerResizer(Graphics &, int w, int h, bool isMouseOver, bool isMouseDragging)=0
virtual void drawResizableWindowBorder(Graphics &, int w, int h, const BorderSize< int > &border, ResizableWindow &)=0
uch h[RAND_HEAD_LEN]
Definition crypt.c:459
#define const
Definition zconf.h:137