|
| 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 | + |
| 26 | + |
| 27 | +/******************************************************************************* |
| 28 | + The block below describes the properties of this module, and is read by |
| 29 | + the Projucer to automatically generate project code that uses it. |
| 30 | + For details about the syntax and how to create or use a module, see the |
| 31 | + JUCE Module Format.md file. |
| 32 | +
|
| 33 | +
|
| 34 | + BEGIN_JUCE_MODULE_DECLARATION |
| 35 | +
|
| 36 | + ID: juce_gui_basics |
| 37 | + vendor: juce |
| 38 | + version: 7.0.2 |
| 39 | + name: JUCE GUI core classes |
| 40 | + description: Basic user-interface components and related classes. |
| 41 | + website: http://www.juce.com/juce |
| 42 | + license: GPL/Commercial |
| 43 | + minimumCppStandard: 14 |
| 44 | +
|
| 45 | + dependencies: juce_graphics juce_data_structures |
| 46 | + OSXFrameworks: Cocoa QuartzCore |
| 47 | + WeakOSXFrameworks: Metal MetalKit |
| 48 | + iOSFrameworks: CoreServices UIKit |
| 49 | + WeakiOSFrameworks: Metal MetalKit |
| 50 | + mingwLibs: dxgi |
| 51 | +
|
| 52 | + END_JUCE_MODULE_DECLARATION |
| 53 | +
|
| 54 | +*******************************************************************************/ |
| 55 | + |
| 56 | + |
| 57 | +#pragma once |
| 58 | +#define JUCE_GUI_BASICS_H_INCLUDED |
| 59 | + |
| 60 | +#include <juce_graphics/juce_graphics.h> |
| 61 | +#include <juce_data_structures/juce_data_structures.h> |
| 62 | + |
| 63 | +//============================================================================== |
| 64 | +/** Config: JUCE_ENABLE_REPAINT_DEBUGGING |
| 65 | + If this option is turned on, each area of the screen that gets repainted will |
| 66 | + flash in a random colour, so that you can see exactly which bits of your |
| 67 | + components are being drawn. |
| 68 | +*/ |
| 69 | +#ifndef JUCE_ENABLE_REPAINT_DEBUGGING |
| 70 | + #define JUCE_ENABLE_REPAINT_DEBUGGING 0 |
| 71 | +#endif |
| 72 | + |
| 73 | +/** Config: JUCE_USE_XRANDR |
| 74 | + Enables Xrandr multi-monitor support (Linux only). |
| 75 | + Unless you specifically want to disable this, it's best to leave this option turned on. |
| 76 | + Note that your users do not need to have Xrandr installed for your JUCE app to run, as |
| 77 | + the availability of Xrandr is queried during runtime. |
| 78 | +*/ |
| 79 | +#ifndef JUCE_USE_XRANDR |
| 80 | + #define JUCE_USE_XRANDR 1 |
| 81 | +#endif |
| 82 | + |
| 83 | +/** Config: JUCE_USE_XINERAMA |
| 84 | + Enables Xinerama multi-monitor support (Linux only). |
| 85 | + Unless you specifically want to disable this, it's best to leave this option turned on. |
| 86 | + This will be used as a fallback if JUCE_USE_XRANDR not set or libxrandr cannot be found. |
| 87 | + Note that your users do not need to have Xinerama installed for your JUCE app to run, as |
| 88 | + the availability of Xinerama is queried during runtime. |
| 89 | +*/ |
| 90 | +#ifndef JUCE_USE_XINERAMA |
| 91 | + #define JUCE_USE_XINERAMA 1 |
| 92 | +#endif |
| 93 | + |
| 94 | +/** Config: JUCE_USE_XSHM |
| 95 | + Enables X shared memory for faster rendering on Linux. This is best left turned on |
| 96 | + unless you have a good reason to disable it. |
| 97 | +*/ |
| 98 | +#ifndef JUCE_USE_XSHM |
| 99 | + #define JUCE_USE_XSHM 1 |
| 100 | +#endif |
| 101 | + |
| 102 | +/** Config: JUCE_USE_XRENDER |
| 103 | + Enables XRender to allow semi-transparent windowing on Linux. |
| 104 | +*/ |
| 105 | +#ifndef JUCE_USE_XRENDER |
| 106 | + #define JUCE_USE_XRENDER 0 |
| 107 | +#endif |
| 108 | + |
| 109 | +/** Config: JUCE_USE_XCURSOR |
| 110 | + Uses XCursor to allow ARGB cursor on Linux. This is best left turned on unless you have |
| 111 | + a good reason to disable it. |
| 112 | +*/ |
| 113 | +#ifndef JUCE_USE_XCURSOR |
| 114 | + #define JUCE_USE_XCURSOR 1 |
| 115 | +#endif |
| 116 | + |
| 117 | +/** Config: JUCE_WIN_PER_MONITOR_DPI_AWARE |
| 118 | + Enables per-monitor DPI awareness on Windows 8.1 and above. |
| 119 | +*/ |
| 120 | +#ifndef JUCE_WIN_PER_MONITOR_DPI_AWARE |
| 121 | + #define JUCE_WIN_PER_MONITOR_DPI_AWARE 1 |
| 122 | +#endif |
| 123 | + |
| 124 | +//============================================================================== |
| 125 | +namespace juce |
| 126 | +{ |
| 127 | + class Component; |
| 128 | + class LookAndFeel; |
| 129 | + class MouseInputSource; |
| 130 | + class MouseInputSourceInternal; |
| 131 | + class ComponentPeer; |
| 132 | + class MouseEvent; |
| 133 | + struct MouseWheelDetails; |
| 134 | + struct PenDetails; |
| 135 | + class ToggleButton; |
| 136 | + class TextButton; |
| 137 | + class AlertWindow; |
| 138 | + class TextLayout; |
| 139 | + class ScrollBar; |
| 140 | + class ComboBox; |
| 141 | + class Button; |
| 142 | + class FilenameComponent; |
| 143 | + class ResizableWindow; |
| 144 | + class MenuBarComponent; |
| 145 | + class GlyphArrangement; |
| 146 | + class TableHeaderComponent; |
| 147 | + class Toolbar; |
| 148 | + class PopupMenu; |
| 149 | + class ProgressBar; |
| 150 | + class FileBrowserComponent; |
| 151 | + class DirectoryContentsDisplayComponent; |
| 152 | + class FilePreviewComponent; |
| 153 | + class CallOutBox; |
| 154 | + class Drawable; |
| 155 | + class DrawablePath; |
| 156 | + class DrawableComposite; |
| 157 | + class CaretComponent; |
| 158 | + class KeyPressMappingSet; |
| 159 | + class ApplicationCommandManagerListener; |
| 160 | + class DrawableButton; |
| 161 | + class Displays; |
| 162 | + class AccessibilityHandler; |
| 163 | + class KeyboardFocusTraverser; |
| 164 | + class PointerState; |
| 165 | + |
| 166 | + class FlexBox; |
| 167 | + class Grid; |
| 168 | + class FocusOutline; |
| 169 | + |
| 170 | + #if JUCE_MAC || JUCE_WINDOWS || JUCE_LINUX |
| 171 | + Image createSnapshotOfNativeWindow (void* nativeWindowHandle); |
| 172 | + #endif |
| 173 | +} |
| 174 | + |
| 175 | +#include "mouse/juce_MouseCursor.h" |
| 176 | +#include "mouse/juce_MouseListener.h" |
| 177 | +#include "keyboard/juce_ModifierKeys.h" |
| 178 | +#include "mouse/juce_MouseInputSource.h" |
| 179 | +#include "mouse/juce_MouseEvent.h" |
| 180 | +#include "keyboard/juce_KeyPress.h" |
| 181 | +#include "keyboard/juce_KeyListener.h" |
| 182 | +#include "components/juce_ComponentTraverser.h" |
| 183 | +#include "components/juce_FocusTraverser.h" |
| 184 | +#include "components/juce_ModalComponentManager.h" |
| 185 | +#include "components/juce_ComponentListener.h" |
| 186 | +#include "components/juce_CachedComponentImage.h" |
| 187 | +#include "components/juce_Component.h" |
| 188 | +#include "layout/juce_ComponentAnimator.h" |
| 189 | +#include "desktop/juce_Desktop.h" |
| 190 | +#include "desktop/juce_Displays.h" |
| 191 | +#include "layout/juce_ComponentBoundsConstrainer.h" |
| 192 | +#include "mouse/juce_ComponentDragger.h" |
| 193 | +#include "mouse/juce_DragAndDropTarget.h" |
| 194 | +#include "mouse/juce_DragAndDropContainer.h" |
| 195 | +#include "mouse/juce_FileDragAndDropTarget.h" |
| 196 | +#include "mouse/juce_SelectedItemSet.h" |
| 197 | +#include "mouse/juce_MouseInactivityDetector.h" |
| 198 | +#include "mouse/juce_TextDragAndDropTarget.h" |
| 199 | +#include "mouse/juce_TooltipClient.h" |
| 200 | +#include "keyboard/juce_CaretComponent.h" |
| 201 | +#include "keyboard/juce_KeyboardFocusTraverser.h" |
| 202 | +#include "keyboard/juce_SystemClipboard.h" |
| 203 | +#include "keyboard/juce_TextEditorKeyMapper.h" |
| 204 | +#include "keyboard/juce_TextInputTarget.h" |
| 205 | +#include "commands/juce_ApplicationCommandID.h" |
| 206 | +#include "commands/juce_ApplicationCommandInfo.h" |
| 207 | +#include "commands/juce_ApplicationCommandTarget.h" |
| 208 | +#include "commands/juce_ApplicationCommandManager.h" |
| 209 | +#include "commands/juce_KeyPressMappingSet.h" |
| 210 | +#include "buttons/juce_Button.h" |
| 211 | +#include "buttons/juce_ArrowButton.h" |
| 212 | +#include "buttons/juce_DrawableButton.h" |
| 213 | +#include "buttons/juce_HyperlinkButton.h" |
| 214 | +#include "buttons/juce_ImageButton.h" |
| 215 | +#include "buttons/juce_ShapeButton.h" |
| 216 | +#include "buttons/juce_TextButton.h" |
| 217 | +#include "buttons/juce_ToggleButton.h" |
| 218 | +#include "layout/juce_AnimatedPosition.h" |
| 219 | +#include "layout/juce_AnimatedPositionBehaviours.h" |
| 220 | +#include "layout/juce_ComponentBuilder.h" |
| 221 | +#include "layout/juce_ComponentMovementWatcher.h" |
| 222 | +#include "layout/juce_ConcertinaPanel.h" |
| 223 | +#include "layout/juce_GroupComponent.h" |
| 224 | +#include "layout/juce_ResizableBorderComponent.h" |
| 225 | +#include "layout/juce_ResizableCornerComponent.h" |
| 226 | +#include "layout/juce_ResizableEdgeComponent.h" |
| 227 | +#include "layout/juce_ScrollBar.h" |
| 228 | +#include "layout/juce_StretchableLayoutManager.h" |
| 229 | +#include "layout/juce_StretchableLayoutResizerBar.h" |
| 230 | +#include "layout/juce_StretchableObjectResizer.h" |
| 231 | +#include "layout/juce_TabbedButtonBar.h" |
| 232 | +#include "layout/juce_TabbedComponent.h" |
| 233 | +#include "layout/juce_Viewport.h" |
| 234 | +#include "menus/juce_PopupMenu.h" |
| 235 | +#include "menus/juce_MenuBarModel.h" |
| 236 | +#include "menus/juce_MenuBarComponent.h" |
| 237 | +#include "positioning/juce_RelativeCoordinate.h" |
| 238 | +#include "positioning/juce_MarkerList.h" |
| 239 | +#include "positioning/juce_RelativePoint.h" |
| 240 | +#include "positioning/juce_RelativeRectangle.h" |
| 241 | +#include "positioning/juce_RelativeCoordinatePositioner.h" |
| 242 | +#include "positioning/juce_RelativeParallelogram.h" |
| 243 | +#include "positioning/juce_RelativePointPath.h" |
| 244 | +#include "drawables/juce_Drawable.h" |
| 245 | +#include "drawables/juce_DrawableShape.h" |
| 246 | +#include "drawables/juce_DrawableComposite.h" |
| 247 | +#include "drawables/juce_DrawableImage.h" |
| 248 | +#include "drawables/juce_DrawablePath.h" |
| 249 | +#include "drawables/juce_DrawableRectangle.h" |
| 250 | +#include "drawables/juce_DrawableText.h" |
| 251 | +#include "widgets/juce_TextEditor.h" |
| 252 | +#include "widgets/juce_Label.h" |
| 253 | +#include "widgets/juce_ComboBox.h" |
| 254 | +#include "widgets/juce_ImageComponent.h" |
| 255 | +#include "widgets/juce_ListBox.h" |
| 256 | +#include "widgets/juce_ProgressBar.h" |
| 257 | +#include "widgets/juce_Slider.h" |
| 258 | +#include "widgets/juce_TableHeaderComponent.h" |
| 259 | +#include "widgets/juce_TableListBox.h" |
| 260 | +#include "widgets/juce_Toolbar.h" |
| 261 | +#include "widgets/juce_ToolbarItemComponent.h" |
| 262 | +#include "widgets/juce_ToolbarItemFactory.h" |
| 263 | +#include "widgets/juce_ToolbarItemPalette.h" |
| 264 | +#include "menus/juce_BurgerMenuComponent.h" |
| 265 | +#include "buttons/juce_ToolbarButton.h" |
| 266 | +#include "misc/juce_DropShadower.h" |
| 267 | +#include "misc/juce_FocusOutline.h" |
| 268 | +#include "misc/juce_JUCESplashScreen.h" |
| 269 | +#include "widgets/juce_TreeView.h" |
| 270 | +#include "windows/juce_TopLevelWindow.h" |
| 271 | +#include "windows/juce_MessageBoxOptions.h" |
| 272 | +#include "windows/juce_AlertWindow.h" |
| 273 | +#include "windows/juce_CallOutBox.h" |
| 274 | +#include "windows/juce_ComponentPeer.h" |
| 275 | +#include "windows/juce_ResizableWindow.h" |
| 276 | +#include "windows/juce_DocumentWindow.h" |
| 277 | +#include "windows/juce_DialogWindow.h" |
| 278 | +#include "windows/juce_NativeMessageBox.h" |
| 279 | +#include "windows/juce_ThreadWithProgressWindow.h" |
| 280 | +#include "windows/juce_TooltipWindow.h" |
| 281 | +#include "layout/juce_MultiDocumentPanel.h" |
| 282 | +#include "layout/juce_SidePanel.h" |
| 283 | +#include "filebrowser/juce_FileBrowserListener.h" |
| 284 | +#include "filebrowser/juce_DirectoryContentsList.h" |
| 285 | +#include "filebrowser/juce_DirectoryContentsDisplayComponent.h" |
| 286 | +#include "filebrowser/juce_FileBrowserComponent.h" |
| 287 | +#include "filebrowser/juce_FileChooser.h" |
| 288 | +#include "filebrowser/juce_FileChooserDialogBox.h" |
| 289 | +#include "filebrowser/juce_FileListComponent.h" |
| 290 | +#include "filebrowser/juce_FilenameComponent.h" |
| 291 | +#include "filebrowser/juce_FilePreviewComponent.h" |
| 292 | +#include "filebrowser/juce_FileSearchPathListComponent.h" |
| 293 | +#include "filebrowser/juce_FileTreeComponent.h" |
| 294 | +#include "filebrowser/juce_ImagePreviewComponent.h" |
| 295 | +#include "filebrowser/juce_ContentSharer.h" |
| 296 | +#include "properties/juce_PropertyComponent.h" |
| 297 | +#include "properties/juce_BooleanPropertyComponent.h" |
| 298 | +#include "properties/juce_ButtonPropertyComponent.h" |
| 299 | +#include "properties/juce_ChoicePropertyComponent.h" |
| 300 | +#include "properties/juce_PropertyPanel.h" |
| 301 | +#include "properties/juce_SliderPropertyComponent.h" |
| 302 | +#include "properties/juce_TextPropertyComponent.h" |
| 303 | +#include "properties/juce_MultiChoicePropertyComponent.h" |
| 304 | +#include "application/juce_Application.h" |
| 305 | +#include "misc/juce_BubbleComponent.h" |
| 306 | +#include "lookandfeel/juce_LookAndFeel.h" |
| 307 | +#include "lookandfeel/juce_LookAndFeel_V2.h" |
| 308 | +#include "lookandfeel/juce_LookAndFeel_V1.h" |
| 309 | +#include "lookandfeel/juce_LookAndFeel_V3.h" |
| 310 | +#include "lookandfeel/juce_LookAndFeel_V4.h" |
| 311 | +#include "mouse/juce_LassoComponent.h" |
| 312 | +#include "accessibility/interfaces/juce_AccessibilityCellInterface.h" |
| 313 | +#include "accessibility/interfaces/juce_AccessibilityTableInterface.h" |
| 314 | +#include "accessibility/interfaces/juce_AccessibilityTextInterface.h" |
| 315 | +#include "accessibility/interfaces/juce_AccessibilityValueInterface.h" |
| 316 | +#include "accessibility/enums/juce_AccessibilityActions.h" |
| 317 | +#include "accessibility/enums/juce_AccessibilityEvent.h" |
| 318 | +#include "accessibility/enums/juce_AccessibilityRole.h" |
| 319 | +#include "accessibility/juce_AccessibilityState.h" |
| 320 | +#include "accessibility/juce_AccessibilityHandler.h" |
| 321 | + |
| 322 | +#if JUCE_LINUX || JUCE_BSD |
| 323 | + #if JUCE_GUI_BASICS_INCLUDE_XHEADERS |
| 324 | + // If you're missing these headers, you need to install the libx11-dev package |
| 325 | + #include <X11/Xlib.h> |
| 326 | + #include <X11/Xatom.h> |
| 327 | + #include <X11/Xresource.h> |
| 328 | + #include <X11/Xutil.h> |
| 329 | + #include <X11/Xmd.h> |
| 330 | + #include <X11/keysym.h> |
| 331 | + #include <X11/XKBlib.h> |
| 332 | + #include <X11/cursorfont.h> |
| 333 | + #include <unistd.h> |
| 334 | + |
| 335 | + #if JUCE_USE_XRANDR |
| 336 | + // If you're missing this header, you need to install the libxrandr-dev package |
| 337 | + #include <X11/extensions/Xrandr.h> |
| 338 | + #endif |
| 339 | + |
| 340 | + #if JUCE_USE_XINERAMA |
| 341 | + // If you're missing this header, you need to install the libxinerama-dev package |
| 342 | + #include <X11/extensions/Xinerama.h> |
| 343 | + #endif |
| 344 | + |
| 345 | + #if JUCE_USE_XSHM |
| 346 | + #include <X11/extensions/XShm.h> |
| 347 | + #include <sys/shm.h> |
| 348 | + #include <sys/ipc.h> |
| 349 | + #endif |
| 350 | + |
| 351 | + #if JUCE_USE_XRENDER |
| 352 | + // If you're missing these headers, you need to install the libxrender-dev and libxcomposite-dev packages |
| 353 | + #include <X11/extensions/Xrender.h> |
| 354 | + #include <X11/extensions/Xcomposite.h> |
| 355 | + #endif |
| 356 | + |
| 357 | + #if JUCE_USE_XCURSOR |
| 358 | + // If you're missing this header, you need to install the libxcursor-dev package |
| 359 | + #include <X11/Xcursor/Xcursor.h> |
| 360 | + #endif |
| 361 | + |
| 362 | + #undef SIZEOF |
| 363 | + #undef KeyPress |
| 364 | + |
| 365 | + #include "native/x11/juce_linux_XWindowSystem.h" |
| 366 | + #include "native/x11/juce_linux_X11_Symbols.h" |
| 367 | + #endif |
| 368 | +#endif |
| 369 | + |
| 370 | +#if JUCE_GUI_BASICS_INCLUDE_SCOPED_THREAD_DPI_AWARENESS_SETTER && JUCE_WINDOWS |
| 371 | + #include "native/juce_win32_ScopedThreadDPIAwarenessSetter.h" |
| 372 | +#endif |
| 373 | + |
| 374 | +#if JUCE_MAC |
| 375 | + #include "native/mac_objectivec_interface.h" |
| 376 | +#endif |
| 377 | + |
| 378 | +#include "layout/juce_FlexItem.h" |
| 379 | +#include "layout/juce_FlexBox.h" |
| 380 | + |
| 381 | +#include "layout/juce_GridItem.h" |
| 382 | +#include "layout/juce_Grid.h" |
| 383 | +#include "native/juce_ScopedDPIAwarenessDisabler.h" |
0 commit comments