Audio plugin host https://kx.studio/carla
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

juce_gui_basics.h 11KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306
  1. /*
  2. ==============================================================================
  3. This file is part of the JUCE library.
  4. Copyright (c) 2017 - ROLI Ltd.
  5. JUCE is an open source library subject to commercial or open-source
  6. licensing.
  7. By using JUCE, you agree to the terms of both the JUCE 5 End-User License
  8. Agreement and JUCE 5 Privacy Policy (both updated and effective as of the
  9. 27th April 2017).
  10. End User License Agreement: www.juce.com/juce-5-licence
  11. Privacy Policy: www.juce.com/juce-5-privacy-policy
  12. Or: You may also use this code under the terms of the GPL v3 (see
  13. www.gnu.org/licenses).
  14. JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
  15. EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
  16. DISCLAIMED.
  17. ==============================================================================
  18. */
  19. /*******************************************************************************
  20. The block below describes the properties of this module, and is read by
  21. the Projucer to automatically generate project code that uses it.
  22. For details about the syntax and how to create or use a module, see the
  23. JUCE Module Format.txt file.
  24. BEGIN_JUCE_MODULE_DECLARATION
  25. ID: juce_gui_basics
  26. vendor: juce
  27. version: 5.1.2
  28. name: JUCE GUI core classes
  29. description: Basic user-interface components and related classes.
  30. website: http://www.juce.com/juce
  31. license: GPL/Commercial
  32. dependencies: juce_events juce_graphics juce_data_structures
  33. OSXFrameworks: Cocoa Carbon QuartzCore
  34. iOSFrameworks: UIKit
  35. linuxPackages: x11 xinerama xext
  36. END_JUCE_MODULE_DECLARATION
  37. *******************************************************************************/
  38. #pragma once
  39. #define JUCE_GUI_BASICS_H_INCLUDED
  40. #include <juce_graphics/juce_graphics.h>
  41. #include <juce_data_structures/juce_data_structures.h>
  42. //==============================================================================
  43. /** Config: JUCE_ENABLE_REPAINT_DEBUGGING
  44. If this option is turned on, each area of the screen that gets repainted will
  45. flash in a random colour, so that you can see exactly which bits of your
  46. components are being drawn.
  47. */
  48. #ifndef JUCE_ENABLE_REPAINT_DEBUGGING
  49. #define JUCE_ENABLE_REPAINT_DEBUGGING 0
  50. #endif
  51. /** JUCE_USE_XRANDR: Enables Xrandr multi-monitor support (Linux only).
  52. Unless you specifically want to disable this, it's best to leave this option turned on.
  53. Note that your users do not need to have Xrandr installed for your JUCE app to run, as
  54. the availability of Xrandr is queried during runtime.
  55. */
  56. #ifndef JUCE_USE_XRANDR
  57. #define JUCE_USE_XRANDR 1
  58. #endif
  59. /** JUCE_USE_XINERAMA: Enables Xinerama multi-monitor support (Linux only).
  60. Unless you specifically want to disable this, it's best to leave this option turned on.
  61. This will be used as a fallback if JUCE_USE_XRANDR not set or libxrandr cannot be found.
  62. Note that your users do not need to have Xinerama installed for your JUCE app to run, as
  63. the availability of Xinerama is queried during runtime.
  64. */
  65. #ifndef JUCE_USE_XINERAMA
  66. #define JUCE_USE_XINERAMA 1
  67. #endif
  68. /** Config: JUCE_USE_XSHM
  69. Enables X shared memory for faster rendering on Linux. This is best left turned on
  70. unless you have a good reason to disable it.
  71. */
  72. #ifndef JUCE_USE_XSHM
  73. #define JUCE_USE_XSHM 1
  74. #endif
  75. /** Config: JUCE_USE_XRENDER
  76. Enables XRender to allow semi-transparent windowing on Linux.
  77. */
  78. #ifndef JUCE_USE_XRENDER
  79. #define JUCE_USE_XRENDER 0
  80. #endif
  81. /** Config: JUCE_USE_XCURSOR
  82. Uses XCursor to allow ARGB cursor on Linux. This is best left turned on unless you have
  83. a good reason to disable it.
  84. */
  85. #ifndef JUCE_USE_XCURSOR
  86. #define JUCE_USE_XCURSOR 1
  87. #endif
  88. //==============================================================================
  89. namespace juce
  90. {
  91. class Component;
  92. class LookAndFeel;
  93. class MouseInputSource;
  94. class MouseInputSourceInternal;
  95. class ComponentPeer;
  96. class MarkerList;
  97. class RelativeRectangle;
  98. class MouseEvent;
  99. struct MouseWheelDetails;
  100. struct PenDetails;
  101. class ToggleButton;
  102. class TextButton;
  103. class AlertWindow;
  104. class TextLayout;
  105. class ScrollBar;
  106. class ComboBox;
  107. class Button;
  108. class FilenameComponent;
  109. class DocumentWindow;
  110. class ResizableWindow;
  111. class GroupComponent;
  112. class MenuBarComponent;
  113. class DropShadower;
  114. class GlyphArrangement;
  115. class PropertyComponent;
  116. class TableHeaderComponent;
  117. class Toolbar;
  118. class ToolbarItemComponent;
  119. class PopupMenu;
  120. class ProgressBar;
  121. class FileBrowserComponent;
  122. class DirectoryContentsDisplayComponent;
  123. class FilePreviewComponent;
  124. class ImageButton;
  125. class CallOutBox;
  126. class Drawable;
  127. class DrawablePath;
  128. class DrawableComposite;
  129. class CaretComponent;
  130. class BubbleComponent;
  131. class KeyPressMappingSet;
  132. class ApplicationCommandManagerListener;
  133. class DrawableButton;
  134. #if JUCE_COMPILER_SUPPORTS_INITIALIZER_LISTS
  135. class FlexBox;
  136. class Grid;
  137. #endif
  138. }
  139. #include "mouse/juce_MouseCursor.h"
  140. #include "mouse/juce_MouseListener.h"
  141. #include "keyboard/juce_ModifierKeys.h"
  142. #include "mouse/juce_MouseInputSource.h"
  143. #include "mouse/juce_MouseEvent.h"
  144. #include "keyboard/juce_KeyPress.h"
  145. #include "keyboard/juce_KeyListener.h"
  146. #include "keyboard/juce_KeyboardFocusTraverser.h"
  147. #include "components/juce_ModalComponentManager.h"
  148. #include "components/juce_ComponentListener.h"
  149. #include "components/juce_CachedComponentImage.h"
  150. #include "components/juce_Component.h"
  151. #include "layout/juce_ComponentAnimator.h"
  152. #include "components/juce_Desktop.h"
  153. #include "layout/juce_ComponentBoundsConstrainer.h"
  154. #include "mouse/juce_ComponentDragger.h"
  155. #include "mouse/juce_DragAndDropTarget.h"
  156. #include "mouse/juce_DragAndDropContainer.h"
  157. #include "mouse/juce_FileDragAndDropTarget.h"
  158. #include "mouse/juce_SelectedItemSet.h"
  159. #include "mouse/juce_MouseInactivityDetector.h"
  160. #include "mouse/juce_TextDragAndDropTarget.h"
  161. #include "mouse/juce_TooltipClient.h"
  162. #include "keyboard/juce_CaretComponent.h"
  163. #include "keyboard/juce_SystemClipboard.h"
  164. #include "keyboard/juce_TextEditorKeyMapper.h"
  165. #include "keyboard/juce_TextInputTarget.h"
  166. #include "commands/juce_ApplicationCommandID.h"
  167. #include "commands/juce_ApplicationCommandInfo.h"
  168. #include "commands/juce_ApplicationCommandTarget.h"
  169. #include "commands/juce_ApplicationCommandManager.h"
  170. #include "commands/juce_KeyPressMappingSet.h"
  171. #include "buttons/juce_Button.h"
  172. #include "buttons/juce_ArrowButton.h"
  173. #include "buttons/juce_DrawableButton.h"
  174. #include "buttons/juce_HyperlinkButton.h"
  175. #include "buttons/juce_ImageButton.h"
  176. #include "buttons/juce_ShapeButton.h"
  177. #include "buttons/juce_TextButton.h"
  178. #include "buttons/juce_ToggleButton.h"
  179. #include "layout/juce_AnimatedPosition.h"
  180. #include "layout/juce_AnimatedPositionBehaviours.h"
  181. #include "layout/juce_ComponentBuilder.h"
  182. #include "layout/juce_ComponentMovementWatcher.h"
  183. #include "layout/juce_ConcertinaPanel.h"
  184. #include "layout/juce_GroupComponent.h"
  185. #include "layout/juce_ResizableBorderComponent.h"
  186. #include "layout/juce_ResizableCornerComponent.h"
  187. #include "layout/juce_ResizableEdgeComponent.h"
  188. #include "layout/juce_ScrollBar.h"
  189. #include "layout/juce_StretchableLayoutManager.h"
  190. #include "layout/juce_StretchableLayoutResizerBar.h"
  191. #include "layout/juce_StretchableObjectResizer.h"
  192. #include "layout/juce_TabbedButtonBar.h"
  193. #include "layout/juce_TabbedComponent.h"
  194. #include "layout/juce_Viewport.h"
  195. #include "menus/juce_PopupMenu.h"
  196. #include "menus/juce_MenuBarModel.h"
  197. #include "menus/juce_MenuBarComponent.h"
  198. #include "positioning/juce_RelativeCoordinate.h"
  199. #include "positioning/juce_MarkerList.h"
  200. #include "positioning/juce_RelativePoint.h"
  201. #include "positioning/juce_RelativeRectangle.h"
  202. #include "positioning/juce_RelativeCoordinatePositioner.h"
  203. #include "positioning/juce_RelativeParallelogram.h"
  204. #include "positioning/juce_RelativePointPath.h"
  205. #include "drawables/juce_Drawable.h"
  206. #include "drawables/juce_DrawableShape.h"
  207. #include "drawables/juce_DrawableComposite.h"
  208. #include "drawables/juce_DrawableImage.h"
  209. #include "drawables/juce_DrawablePath.h"
  210. #include "drawables/juce_DrawableRectangle.h"
  211. #include "drawables/juce_DrawableText.h"
  212. #include "widgets/juce_TextEditor.h"
  213. #include "widgets/juce_Label.h"
  214. #include "widgets/juce_ComboBox.h"
  215. #include "widgets/juce_ImageComponent.h"
  216. #include "widgets/juce_ListBox.h"
  217. #include "widgets/juce_ProgressBar.h"
  218. #include "widgets/juce_Slider.h"
  219. #include "widgets/juce_TableHeaderComponent.h"
  220. #include "widgets/juce_TableListBox.h"
  221. #include "widgets/juce_Toolbar.h"
  222. #include "widgets/juce_ToolbarItemComponent.h"
  223. #include "widgets/juce_ToolbarItemFactory.h"
  224. #include "widgets/juce_ToolbarItemPalette.h"
  225. #include "buttons/juce_ToolbarButton.h"
  226. #include "misc/juce_DropShadower.h"
  227. #include "widgets/juce_TreeView.h"
  228. #include "windows/juce_TopLevelWindow.h"
  229. #include "windows/juce_AlertWindow.h"
  230. #include "windows/juce_CallOutBox.h"
  231. #include "windows/juce_ComponentPeer.h"
  232. #include "windows/juce_ResizableWindow.h"
  233. #include "windows/juce_DocumentWindow.h"
  234. #include "windows/juce_DialogWindow.h"
  235. #include "windows/juce_NativeMessageBox.h"
  236. #include "windows/juce_ThreadWithProgressWindow.h"
  237. #include "windows/juce_TooltipWindow.h"
  238. #include "layout/juce_MultiDocumentPanel.h"
  239. #include "filebrowser/juce_FileBrowserListener.h"
  240. #include "filebrowser/juce_DirectoryContentsList.h"
  241. #include "filebrowser/juce_DirectoryContentsDisplayComponent.h"
  242. #include "filebrowser/juce_FileBrowserComponent.h"
  243. #include "filebrowser/juce_FileChooser.h"
  244. #include "filebrowser/juce_FileChooserDialogBox.h"
  245. #include "filebrowser/juce_FileListComponent.h"
  246. #include "filebrowser/juce_FilenameComponent.h"
  247. #include "filebrowser/juce_FilePreviewComponent.h"
  248. #include "filebrowser/juce_FileSearchPathListComponent.h"
  249. #include "filebrowser/juce_FileTreeComponent.h"
  250. #include "filebrowser/juce_ImagePreviewComponent.h"
  251. #include "properties/juce_PropertyComponent.h"
  252. #include "properties/juce_BooleanPropertyComponent.h"
  253. #include "properties/juce_ButtonPropertyComponent.h"
  254. #include "properties/juce_ChoicePropertyComponent.h"
  255. #include "properties/juce_PropertyPanel.h"
  256. #include "properties/juce_SliderPropertyComponent.h"
  257. #include "properties/juce_TextPropertyComponent.h"
  258. #include "application/juce_Application.h"
  259. #include "misc/juce_BubbleComponent.h"
  260. #include "lookandfeel/juce_LookAndFeel.h"
  261. #include "lookandfeel/juce_LookAndFeel_V2.h"
  262. #include "lookandfeel/juce_LookAndFeel_V1.h"
  263. #include "lookandfeel/juce_LookAndFeel_V3.h"
  264. #include "lookandfeel/juce_LookAndFeel_V4.h"
  265. #include "mouse/juce_LassoComponent.h"
  266. #if JUCE_LINUX
  267. #include "native/juce_linux_X11.h"
  268. #endif
  269. // these classes are C++11-only
  270. #if JUCE_COMPILER_SUPPORTS_INITIALIZER_LISTS
  271. #include "layout/juce_FlexItem.h"
  272. #include "layout/juce_FlexBox.h"
  273. #if JUCE_HAS_CONSTEXPR
  274. #include "layout/juce_GridItem.h"
  275. #include "layout/juce_Grid.h"
  276. #endif
  277. #endif