Mercurial > hg > pub > prymula > com
annotate DPF-Prymula-audioplugins/dpf/dgl/src/pugl.hpp @ 3:84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
author | prymula <prymula76@outlook.com> |
---|---|
date | Mon, 16 Oct 2023 21:53:34 +0200 |
parents | |
children |
rev | line source |
---|---|
3
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
1 /* |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
2 * DISTRHO Plugin Framework (DPF) |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
3 * Copyright (C) 2012-2022 Filipe Coelho <falktx@falktx.com> |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
4 * |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
5 * Permission to use, copy, modify, and/or distribute this software for any purpose with |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
6 * or without fee is hereby granted, provided that the above copyright notice and this |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
7 * permission notice appear in all copies. |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
8 * |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
10 * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
11 * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
12 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
13 * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
14 * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
15 */ |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
16 |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
17 #ifndef DGL_PUGL_HPP_INCLUDED |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
18 #define DGL_PUGL_HPP_INCLUDED |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
19 |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
20 #include "../Base.hpp" |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
21 |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
22 /* we will include all header files used in pugl.h in their C++ friendly form, then pugl stuff in custom namespace */ |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
23 #include <cstddef> |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
24 #ifdef DISTRHO_PROPER_CPP11_SUPPORT |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
25 # include <cstdbool> |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
26 # include <cstdint> |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
27 #else |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
28 # include <stdbool.h> |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
29 # include <stdint.h> |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
30 #endif |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
31 |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
32 // hidden api |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
33 #define PUGL_API |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
34 #define PUGL_DISABLE_DEPRECATED |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
35 #define PUGL_NO_INCLUDE_GL_H |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
36 #define PUGL_NO_INCLUDE_GLU_H |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
37 |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
38 #ifndef DISTRHO_OS_MAC |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
39 START_NAMESPACE_DGL |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
40 #endif |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
41 |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
42 #include "pugl-upstream/include/pugl/pugl.h" |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
43 |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
44 // -------------------------------------------------------------------------------------------------------------------- |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
45 |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
46 // DGL specific, expose backend enter |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
47 bool puglBackendEnter(PuglView* view); |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
48 |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
49 // DGL specific, expose backend leave |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
50 bool puglBackendLeave(PuglView* view); |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
51 |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
52 // DGL specific, assigns backend that matches current DGL build |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
53 void puglSetMatchingBackendForCurrentBuild(PuglView* view); |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
54 |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
55 // bring view window into the foreground, aka "raise" window |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
56 void puglRaiseWindow(PuglView* view); |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
57 |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
58 // get scale factor from parent window if possible, fallback to puglGetScaleFactor |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
59 double puglGetScaleFactorFromParent(const PuglView* view); |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
60 |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
61 // combined puglSetSizeHint using PUGL_MIN_SIZE, PUGL_MIN_ASPECT and PUGL_MAX_ASPECT |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
62 PuglStatus puglSetGeometryConstraints(PuglView* view, uint width, uint height, bool aspect); |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
63 |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
64 // set view as resizable (or not) during runtime |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
65 void puglSetResizable(PuglView* view, bool resizable); |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
66 |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
67 // set window size while also changing default |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
68 PuglStatus puglSetSizeAndDefault(PuglView* view, uint width, uint height); |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
69 |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
70 // DGL specific, build-specific drawing prepare |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
71 void puglOnDisplayPrepare(PuglView* view); |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
72 |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
73 // DGL specific, build-specific fallback resize |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
74 void puglFallbackOnResize(PuglView* view); |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
75 |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
76 #if defined(DISTRHO_OS_HAIKU) |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
77 |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
78 // nothing here yet |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
79 |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
80 #elif defined(DISTRHO_OS_MAC) |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
81 |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
82 // macOS specific, add another view's window as child |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
83 PuglStatus puglMacOSAddChildWindow(PuglView* view, PuglView* child); |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
84 |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
85 // macOS specific, remove another view's window as child |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
86 PuglStatus puglMacOSRemoveChildWindow(PuglView* view, PuglView* child); |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
87 |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
88 // macOS specific, center view based on parent coordinates (if there is one) |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
89 void puglMacOSShowCentered(PuglView* view); |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
90 |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
91 #elif defined(DISTRHO_OS_WASM) |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
92 |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
93 // nothing here yet |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
94 |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
95 #elif defined(DISTRHO_OS_WINDOWS) |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
96 |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
97 // win32 specific, call ShowWindow with SW_RESTORE |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
98 void puglWin32RestoreWindow(PuglView* view); |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
99 |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
100 // win32 specific, center view based on parent coordinates (if there is one) |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
101 void puglWin32ShowCentered(PuglView* view); |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
102 |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
103 #elif defined(HAVE_X11) |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
104 |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
105 #define DGL_USING_X11 |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
106 |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
107 // X11 specific, update world without triggering exposure evente |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
108 PuglStatus puglX11UpdateWithoutExposures(PuglWorld* world); |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
109 |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
110 // X11 specific, set dialog window type and pid hints |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
111 void puglX11SetWindowTypeAndPID(const PuglView* view, bool isStandalone); |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
112 |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
113 #endif |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
114 |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
115 // -------------------------------------------------------------------------------------------------------------------- |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
116 |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
117 #ifndef DISTRHO_OS_MAC |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
118 END_NAMESPACE_DGL |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
119 #endif |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
120 |
84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
prymula <prymula76@outlook.com>
parents:
diff
changeset
|
121 #endif // DGL_PUGL_HPP_INCLUDED |