LMMS
Loading...
Searching...
No Matches
juce_ComponentPeer.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//==============================================================================
44{
45public:
46 //==============================================================================
81
91 {
92 public:
95
98
100 explicit operator bool() const noexcept { return valid; }
101
108 {
109 jassert (valid);
110 return borderSize;
111 }
112
119 {
120 jassert (valid);
121 return &borderSize;
122 }
123
124 private:
125 bool valid;
127 };
128
129 //==============================================================================
136
138 ~ComponentPeer() override;
139
140 //==============================================================================
143
148
153
154 //==============================================================================
160 virtual void* getNativeHandle() const = 0;
161
163 virtual void setVisible (bool shouldBeVisible) = 0;
164
166 virtual void setTitle (const String& title) = 0;
167
174 virtual bool setDocumentEditedStatus (bool edited);
175
181 virtual void setRepresentedFile (const File&);
182
183 //==============================================================================
191 virtual void setBounds (const Rectangle<int>& newBounds, bool isNowFullScreen) = 0;
192
194 void updateBounds();
195
201 virtual Rectangle<int> getBounds() const = 0;
202
204 virtual Point<float> localToGlobal (Point<float> relativePosition) = 0;
205
207 virtual Point<float> globalToLocal (Point<float> screenPosition) = 0;
208
210 Point<int> localToGlobal (Point<int> relativePosition);
211
213 Point<int> globalToLocal (Point<int> screenPosition);
214
216 virtual Rectangle<int> localToGlobal (const Rectangle<int>& relativePosition);
217
219 virtual Rectangle<int> globalToLocal (const Rectangle<int>& screenPosition);
220
222 Rectangle<float> localToGlobal (const Rectangle<float>& relativePosition);
223
225 Rectangle<float> globalToLocal (const Rectangle<float>& screenPosition);
226
230 Rectangle<int> getAreaCoveredBy (const Component& subComponent) const;
231
233 virtual void setMinimised (bool shouldBeMinimised) = 0;
234
236 virtual bool isMinimised() const = 0;
237
239 virtual void setFullScreen (bool shouldBeFullScreen) = 0;
240
242 virtual bool isFullScreen() const = 0;
243
245 virtual bool isKioskMode() const;
246
248 void setNonFullScreenBounds (const Rectangle<int>& newBounds) noexcept;
249
252
254 virtual void setIcon (const Image& newIcon) = 0;
255
260
263
270 virtual bool contains (Point<int> localPos, bool trueIfInAChildWindow) const = 0;
271
283
288 #if JUCE_LINUX || JUCE_BSD
289 [[deprecated ("Use getFrameSizeIfPresent instead.")]]
290 #endif
291 virtual BorderSize<int> getFrameSize() const = 0;
292
298
303 virtual void handleScreenSizeChange();
304
305 //==============================================================================
307 void handlePaint (LowLevelGraphicsContext& contextToPaintTo);
308
309 //==============================================================================
313 virtual bool setAlwaysOnTop (bool alwaysOnTop) = 0;
314
316 virtual void toFront (bool takeKeyboardFocus) = 0;
317
319 virtual void toBehind (ComponentPeer* other) = 0;
320
325
326 //==============================================================================
328 virtual bool isFocused() const = 0;
329
331 virtual void grabFocus() = 0;
332
334 void handleFocusGain();
336 void handleFocusLoss();
337
339
344 bool handleKeyPress (int keyCode, juce_wchar textCharacter);
345
350
354 bool handleKeyUpOrDown (bool isKeyDown);
355
358
363 virtual void closeInputMethodContext();
364
370
371 //==============================================================================
374
375 //==============================================================================
377 virtual void repaint (const Rectangle<int>& area) = 0;
378
386
388 virtual void setAlpha (float newAlpha) = 0;
389
390 //==============================================================================
391 void handleMouseEvent (MouseInputSource::InputSourceType type, Point<float> positionWithinPeer, ModifierKeys newMods, float pressure,
392 float orientation, int64 time, PenDetails pen = {}, int touchIndex = 0);
393
394 void handleMouseWheel (MouseInputSource::InputSourceType type, Point<float> positionWithinPeer,
395 int64 time, const MouseWheelDetails&, int touchIndex = 0);
396
397 void handleMagnifyGesture (MouseInputSource::InputSourceType type, Point<float> positionWithinPeer,
398 int64 time, float scaleFactor, int touchIndex = 0);
399
400 void handleUserClosingWindow();
401
403 struct DragInfo
404 {
408
409 bool isEmpty() const noexcept { return files.size() == 0 && text.isEmpty(); }
410 void clear() noexcept { files.clear(); text.clear(); }
411 };
412
413 bool handleDragMove (const DragInfo&);
414 bool handleDragExit (const DragInfo&);
415 bool handleDragDrop (const DragInfo&);
416
417 //==============================================================================
421 static int getNumPeers() noexcept;
422
426 static ComponentPeer* getPeer (int index) noexcept;
427
430
434 static bool isValidPeer (const ComponentPeer* peer) noexcept;
435
436 //==============================================================================
438 virtual int getCurrentRenderingEngine() const;
439 virtual void setCurrentRenderingEngine (int index);
440
441 //==============================================================================
453
454 //==============================================================================
462 {
464 virtual ~ScaleFactorListener() = default;
465
467 virtual void nativeScaleFactorChanged (double newScaleFactor) = 0;
468 };
469
471 void addScaleFactorListener (ScaleFactorListener* listenerToAdd) { scaleFactorListeners.add (listenerToAdd); }
472
474 void removeScaleFactorListener (ScaleFactorListener* listenerToRemove) { scaleFactorListeners.remove (listenerToRemove); }
475
476 //==============================================================================
482 virtual double getPlatformScaleFactor() const noexcept { return 1.0; }
483
487 virtual void setHasChangedSinceSaved (bool) {}
488
489
490 enum class Style
491 {
493 automatic,
494
496 light,
497
499 dark
500 };
501
509 {
510 if (std::exchange (style, s) != style)
512 }
513
515 Style getAppStyle() const { return style; }
516
517protected:
518 //==============================================================================
519 static void forceDisplayUpdate();
520
522 const int styleFlags;
528
529private:
530 //==============================================================================
531 virtual void appStyleChanged() {}
532
541
549 virtual void dismissPendingTextInput();
550
551 void globalFocusChanged (Component*) override;
553
558 bool isWindowMinimised = false;
559
560 //==============================================================================
562};
563
564} // namespace juce
#define noexcept
Definition DistrhoDefines.h:72
#define final
Definition DistrhoDefines.h:74
CAdPlugDatabase::CRecord::RecordType type
Definition adplugdb.cpp:93
Definition juce_BorderSize.h:42
Definition juce_ComponentBoundsConstrainer.h:44
Definition juce_Component.h:36
Definition juce_ComponentPeer.h:91
const auto & operator*() const noexcept
Definition juce_ComponentPeer.h:107
BorderSize< int > borderSize
Definition juce_ComponentPeer.h:126
bool valid
Definition juce_ComponentPeer.h:125
OptionalBorderSize()
Definition juce_ComponentPeer.h:94
const auto * operator->() const noexcept
Definition juce_ComponentPeer.h:118
OptionalBorderSize(BorderSize< int > size)
Definition juce_ComponentPeer.h:97
Definition juce_ComponentPeer.h:44
virtual void setAlpha(float newAlpha)=0
TextInputTarget * textInputTarget
Definition juce_ComponentPeer.h:556
virtual void repaint(const Rectangle< int > &area)=0
virtual bool setDocumentEditedStatus(bool edited)
Definition juce_ComponentPeer.cpp:580
Style
Definition juce_ComponentPeer.h:491
@ automatic
Definition juce_ComponentPeer.h:493
static ModifierKeys getCurrentModifiersRealtime() noexcept
Definition juce_ComponentPeer.cpp:596
int getStyleFlags() const noexcept
Definition juce_ComponentPeer.h:147
void handleMouseEvent(MouseInputSource::InputSourceType type, Point< float > positionWithinPeer, ModifierKeys newMods, float pressure, float orientation, int64 time, PenDetails pen={}, int touchIndex=0)
Definition juce_ComponentPeer.cpp:86
const int styleFlags
Definition juce_ComponentPeer.h:522
virtual void setFullScreen(bool shouldBeFullScreen)=0
virtual int getCurrentRenderingEngine() const
Definition juce_ComponentPeer.cpp:590
Component & component
Definition juce_ComponentPeer.h:521
void handleModifierKeysChange()
Definition juce_ComponentPeer.cpp:255
virtual bool setAlwaysOnTop(bool alwaysOnTop)=0
virtual void setIcon(const Image &newIcon)=0
virtual void handleScreenSizeChange()
Definition juce_ComponentPeer.cpp:393
Rectangle< int > lastNonFullscreenBounds
Definition juce_ComponentPeer.h:523
virtual bool isKioskMode() const
Definition juce_ComponentPeer.cpp:80
virtual void setHasChangedSinceSaved(bool)
Definition juce_ComponentPeer.h:487
virtual void toFront(bool takeKeyboardFocus)=0
void handleFocusGain()
Definition juce_ComponentPeer.cpp:352
virtual void grabFocus()=0
bool handleKeyPress(int keyCode, juce_wchar textCharacter)
Definition juce_ComponentPeer.cpp:178
virtual void closeInputMethodContext()
Definition juce_ComponentPeer.cpp:293
virtual void * getNativeHandle() const =0
const uint32 uniqueID
Definition juce_ComponentPeer.h:557
virtual Rectangle< int > getBounds() const =0
virtual void setCurrentRenderingEngine(int index)
Definition juce_ComponentPeer.cpp:591
virtual void setMinimised(bool shouldBeMinimised)=0
ComponentPeer(Component &component, int styleFlags)
Definition juce_ComponentPeer.cpp:32
void handleMovedOrResized()
Definition juce_ComponentPeer.cpp:311
WeakReference< Component > lastFocusedComponent
Definition juce_ComponentPeer.h:554
virtual void setBounds(const Rectangle< int > &newBounds, bool isNowFullScreen)=0
virtual double getPlatformScaleFactor() const noexcept
Definition juce_ComponentPeer.h:482
void handlePaint(LowLevelGraphicsContext &contextToPaintTo)
Definition juce_ComponentPeer.cpp:106
void globalFocusChanged(Component *) override
Definition juce_ComponentPeer.cpp:610
void setNonFullScreenBounds(const Rectangle< int > &newBounds) noexcept
Definition juce_ComponentPeer.cpp:399
TextInputTarget * findCurrentTextInputTarget()
Definition juce_ComponentPeer.cpp:281
virtual void dismissPendingTextInput()
Definition juce_ComponentPeer.cpp:295
StyleFlags
Definition juce_ComponentPeer.h:49
@ windowIsResizable
Definition juce_ComponentPeer.h:59
@ windowIsTemporary
Definition juce_ComponentPeer.h:52
@ windowIgnoresKeyPresses
Definition juce_ComponentPeer.h:71
@ windowIgnoresMouseClicks
Definition juce_ComponentPeer.h:54
@ windowHasDropShadow
Definition juce_ComponentPeer.h:66
@ windowHasMaximiseButton
Definition juce_ComponentPeer.h:62
@ windowRequiresSynchronousCoreGraphicsRendering
Definition juce_ComponentPeer.h:74
@ windowAppearsOnTaskbar
Definition juce_ComponentPeer.h:50
@ windowIsSemiTransparent
Definition juce_ComponentPeer.h:78
@ windowHasCloseButton
Definition juce_ComponentPeer.h:64
@ windowRepaintedExplictly
Definition juce_ComponentPeer.h:68
@ windowHasMinimiseButton
Definition juce_ComponentPeer.h:60
@ windowHasTitleBar
Definition juce_ComponentPeer.h:56
virtual StringArray getAvailableRenderingEngines()=0
bool handleKeyUpOrDown(bool isKeyDown)
Definition juce_ComponentPeer.cpp:225
const Rectangle< int > & getNonFullScreenBounds() const noexcept
Definition juce_ComponentPeer.cpp:404
virtual void setVisible(bool shouldBeVisible)=0
virtual Point< float > localToGlobal(Point< float > relativePosition)=0
ListenerList< ScaleFactorListener > scaleFactorListeners
Definition juce_ComponentPeer.h:526
virtual void textInputRequired(Point< int >, TextInputTarget &)=0
Component * getTargetForKeyPress()
Definition juce_ComponentPeer.cpp:164
void handleBroughtToFront()
Definition juce_ComponentPeer.cpp:301
ComponentBoundsConstrainer * getConstrainer() const noexcept
Definition juce_ComponentPeer.h:262
virtual bool isFocused() const =0
virtual bool contains(Point< int > localPos, bool trueIfInAChildWindow) const =0
virtual OptionalBorderSize getFrameSizeIfPresent() const =0
void handleFocusLoss()
Definition juce_ComponentPeer.cpp:371
void removeScaleFactorListener(ScaleFactorListener *listenerToRemove)
Definition juce_ComponentPeer.h:474
virtual void toBehind(ComponentPeer *other)=0
void setConstrainer(ComponentBoundsConstrainer *newConstrainer) noexcept
Definition juce_ComponentPeer.cpp:306
virtual void appStyleChanged()
Definition juce_ComponentPeer.h:531
ComponentBoundsConstrainer * constrainer
Definition juce_ComponentPeer.h:524
virtual void setRepresentedFile(const File &)
Definition juce_ComponentPeer.cpp:585
void updateBounds()
Definition juce_ComponentPeer.cpp:75
bool isWindowMinimised
Definition juce_ComponentPeer.h:558
void setAppStyle(Style s)
Definition juce_ComponentPeer.h:508
Rectangle< int > getAreaCoveredBy(const Component &subComponent) const
Definition juce_ComponentPeer.cpp:432
virtual BorderSize< int > getFrameSize() const =0
virtual bool isFullScreen() const =0
virtual void setTitle(const String &title)=0
Component * lastDragAndDropCompUnderMouse
Definition juce_ComponentPeer.h:555
virtual void performAnyPendingRepaintsNow()=0
void refreshTextInputTarget()
Definition juce_ComponentPeer.cpp:268
static std::function< ModifierKeys()> getNativeRealtimeModifiers
Definition juce_ComponentPeer.h:525
uint32 getUniqueID() const noexcept
Definition juce_ComponentPeer.h:152
WeakReference< Component > dragAndDropTargetComponent
Definition juce_ComponentPeer.h:554
Style getAppStyle() const
Definition juce_ComponentPeer.h:515
Component * getLastFocusedSubcomponent() const noexcept
Definition juce_ComponentPeer.cpp:386
Style style
Definition juce_ComponentPeer.h:527
virtual Point< float > globalToLocal(Point< float > screenPosition)=0
Component & getComponent() noexcept
Definition juce_ComponentPeer.h:142
void addScaleFactorListener(ScaleFactorListener *listenerToAdd)
Definition juce_ComponentPeer.h:471
virtual bool isMinimised() const =0
Definition juce_File.h:45
Definition juce_Desktop.h:39
Definition juce_Image.h:58
Definition juce_KeyPress.h:40
Definition juce_ListenerList.h:70
Definition juce_LowLevelGraphicsContext.h:46
Definition juce_ModifierKeys.h:41
Definition juce_MouseInputSource.h:52
InputSourceType
Definition juce_MouseInputSource.h:56
Definition juce_Point.h:42
Definition juce_Rectangle.h:67
Definition juce_StringArray.h:35
Definition juce_String.h:53
Definition juce_TextInputTarget.h:41
Definition juce_WeakReference.h:78
unsigned s
Definition inflate.c:1555
static const char * title
Definition pugl.h:1747
#define jassert(expression)
#define JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(className)
#define JUCE_API
Definition juce_StandardHeader.h:152
Definition carla_juce.cpp:31
unsigned int uint32
Definition juce_MathsFunctions.h:45
long long int64
Definition juce_MathsFunctions.h:54
wchar_t juce_wchar
Definition juce_CharacterFunctions.h:42
ComponentPeer * getPeerFor(::Window)
Definition juce_linux_XWindowSystem.cpp:1432
Definition juce_Uuid.h:141
#define true
Definition ordinals.h:82
#define false
Definition ordinals.h:83
Definition juce_ComponentPeer.h:404
Point< int > position
Definition juce_ComponentPeer.h:407
StringArray files
Definition juce_ComponentPeer.h:405
bool isEmpty() const noexcept
Definition juce_ComponentPeer.h:409
void clear() noexcept
Definition juce_ComponentPeer.h:410
String text
Definition juce_ComponentPeer.h:406
Definition juce_ComponentPeer.h:462
virtual void nativeScaleFactorChanged(double newScaleFactor)=0
Definition juce_MouseEvent.h:392
Definition juce_MouseEvent.h:434
ZCONST char * key
Definition crypt.c:587
ulg size
Definition extract.c:2350
#define const
Definition zconf.h:137