LMMS
Loading...
Searching...
No Matches
pugl.h
Go to the documentation of this file.
1// Copyright 2012-2022 David Robillard <d@drobilla.net>
2// SPDX-License-Identifier: ISC
3
4#ifndef PUGL_PUGL_H
5#define PUGL_PUGL_H
6
7#include <stddef.h>
8#include <stdint.h>
9
10#ifndef __cplusplus
11# include <stdbool.h>
12#endif
13
14#ifndef PUGL_API
15# if defined(_WIN32) && !defined(PUGL_STATIC) && defined(PUGL_INTERNAL)
16# define PUGL_API __declspec(dllexport)
17# elif defined(_WIN32) && !defined(PUGL_STATIC)
18# define PUGL_API __declspec(dllimport)
19# elif defined(__GNUC__)
20# define PUGL_API __attribute__((visibility("default")))
21# else
22# define PUGL_API
23# endif
24#endif
25
26#ifndef PUGL_DISABLE_DEPRECATED
27# if defined(__clang__)
28# define PUGL_DEPRECATED_BY(rep) __attribute__((deprecated("", rep)))
29# elif defined(__GNUC__)
30# define PUGL_DEPRECATED_BY(rep) __attribute__((deprecated("Use " rep)))
31# else
32# define PUGL_DEPRECATED_BY(rep)
33# endif
34#endif
35
36#if defined(__GNUC__)
37# define PUGL_CONST_FUNC __attribute__((const))
38#else
39# define PUGL_CONST_FUNC
40#endif
41
42#define PUGL_CONST_API \
43 PUGL_API \
44 PUGL_CONST_FUNC
45
46#define PUGL_BEGIN_DECLS
47#define PUGL_END_DECLS
48
50
56
68
76
93
104
106typedef enum {
107 PUGL_MOD_SHIFT = 1u << 0u,
108 PUGL_MOD_CTRL = 1u << 1u,
109 PUGL_MOD_ALT = 1u << 2u,
110 PUGL_MOD_SUPER = 1u << 3u
111} PuglMod;
112
115
177
207
213
216
223
239
245
256
271
288
297
307
318
334
344
356
386
411
430
460
464typedef struct {
467 double time;
468 double x;
469 double y;
470 double xRoot;
471 double yRoot;
474
497
505typedef struct {
508 uintptr_t data1;
509 uintptr_t data2;
511
527
541
555
577
587
616
625
642
645const char*
647
661
671
673typedef void* PuglWorldHandle;
674
680
682typedef enum {
690
693
704
707void
709
719void
721
726
737void*
739
751puglSetClassName(PuglWorld* world, const char* name);
752
755const char*
757
766double
768
794
808
810typedef struct PuglViewImpl PuglView;
811
824
834typedef uintptr_t PuglNativeView;
835
837typedef void* PuglHandle;
838
858
860#define PUGL_NUM_VIEW_HINTS ((unsigned)PUGL_REFRESH_RATE + 1u)
861
868
905
907#define PUGL_NUM_SIZE_HINTS ((unsigned)PUGL_MAX_ASPECT + 1u)
908
910typedef PuglStatus (*PuglEventFunc)(PuglView* view, const PuglEvent* event);
911
917
928
931void
933
938
949void
950puglSetHandle(PuglView* view, PuglHandle handle);
951
956
977
979const PuglBackend*
980puglGetBackend(const PuglView* view);
981
985puglSetEventFunc(PuglView* view, PuglEventFunc eventFunc);
986
995
1004int
1006
1020double
1021puglGetScaleFactor(const PuglView* view);
1022
1029
1037puglGetFrame(const PuglView* view);
1038
1049puglSetFrame(PuglView* view, PuglRect frame);
1050
1059puglSetPosition(PuglView* view, int x, int y);
1060
1069puglSetSize(PuglView* view, unsigned width, unsigned height);
1070
1089
1096
1106puglSetWindowTitle(PuglView* view, const char* title);
1107
1110const char*
1111puglGetWindowTitle(const PuglView* view);
1112
1121
1125puglGetParentWindow(const PuglView* view);
1126
1140
1149puglGetTransientParent(const PuglView* view);
1150
1164puglRealize(PuglView* view);
1165
1177puglShow(PuglView* view);
1178
1182puglHide(PuglView* view);
1183
1186bool
1187puglGetVisible(const PuglView* view);
1188
1193
1200
1213void*
1215
1228
1238
1245
1263
1265#define PUGL_NUM_CURSORS ((unsigned)PUGL_CURSOR_ANTI_DIAGONAL + 1u)
1266
1277puglGrabFocus(PuglView* view);
1278
1281bool
1282puglHasFocus(const PuglView* view);
1283
1291puglPaste(PuglView* view);
1292
1301
1312const char*
1313puglGetClipboardType(const PuglView* view, uint32_t typeIndex);
1314
1334 const PuglDataOfferEvent* offer,
1335 uint32_t typeIndex);
1336
1351 const char* type,
1352 const void* data,
1353 size_t len);
1354
1367const void*
1368puglGetClipboard(PuglView* view, uint32_t typeIndex, size_t* len);
1369
1382puglSetCursor(PuglView* view, PuglCursor cursor);
1383
1394
1423puglStartTimer(PuglView* view, uintptr_t id, double timeout);
1424
1436puglStopTimer(PuglView* view, uintptr_t id);
1437
1456puglSendEvent(PuglView* view, const PuglEvent* event);
1457
1461
1462#ifndef PUGL_DISABLE_DEPRECATED
1463
1469
1470PUGL_DEPRECATED_BY("PuglCreateEvent")
1472
1473PUGL_DEPRECATED_BY("PuglDestroyEvent")
1475
1476PUGL_DEPRECATED_BY("PuglConfigureEvent")
1478
1479PUGL_DEPRECATED_BY("PuglMapEvent")
1481
1482PUGL_DEPRECATED_BY("PuglUnmapEvent")
1484
1485PUGL_DEPRECATED_BY("PuglUpdateEvent")
1487
1488PUGL_DEPRECATED_BY("PuglExposeEvent")
1490
1491PUGL_DEPRECATED_BY("PuglCloseEvent")
1493
1494PUGL_DEPRECATED_BY("PuglFocusEvent")
1496
1497PUGL_DEPRECATED_BY("PuglKeyEvent")
1499
1500PUGL_DEPRECATED_BY("PuglTextEvent")
1502
1503PUGL_DEPRECATED_BY("PuglCrossingEvent")
1505
1506PUGL_DEPRECATED_BY("PuglButtonEvent")
1508
1509PUGL_DEPRECATED_BY("PuglMotionEvent")
1511
1512PUGL_DEPRECATED_BY("PuglScrollEvent")
1514
1515PUGL_DEPRECATED_BY("PuglClientEvent")
1517
1518PUGL_DEPRECATED_BY("PuglTimerEvent")
1520
1521PUGL_DEPRECATED_BY("PuglLoopEnterEvent")
1523
1524PUGL_DEPRECATED_BY("PuglLoopLeaveEvent")
1526
1536PUGL_DEPRECATED_BY("PuglNativeView")
1537typedef uintptr_t PuglNativeWindow;
1538
1551static inline PUGL_DEPRECATED_BY("puglNewView")
1552PuglView*
1553puglInit(const int* pargc, char** argv)
1554{
1555 (void)pargc;
1556 (void)argv;
1557
1559}
1560
1566static inline PUGL_DEPRECATED_BY("puglFreeView")
1567void
1568puglDestroy(PuglView* view)
1569{
1570 PuglWorld* const world = puglGetWorld(view);
1571
1572 puglFreeView(view);
1574}
1575
1579static inline PUGL_DEPRECATED_BY("puglSetClassName")
1580void
1581puglInitWindowClass(PuglView* view, const char* name)
1582{
1584}
1585
1591static inline PUGL_DEPRECATED_BY("puglSetFrame")
1592void
1593puglInitWindowSize(PuglView* view, int width, int height)
1594{
1595 PuglRect frame = puglGetFrame(view);
1596
1597 frame.width = (PuglSpan)width;
1598 frame.height = (PuglSpan)height;
1599
1600 puglSetFrame(view, frame);
1601}
1602
1606static inline PUGL_DEPRECATED_BY("puglSetMinSize")
1607void
1608puglInitWindowMinSize(PuglView* view, int width, int height)
1609{
1611}
1612
1623static inline PUGL_DEPRECATED_BY("puglSetAspectRatio")
1624void
1625puglInitWindowAspectRatio(PuglView* view,
1626 int minX,
1627 int minY,
1628 int maxX,
1629 int maxY)
1630{
1633}
1634
1641static inline PUGL_DEPRECATED_BY("puglSetTransientParent")
1642void
1643puglInitTransientFor(PuglView* view, uintptr_t parent)
1644{
1646}
1647
1653static inline PUGL_DEPRECATED_BY("puglSetTransientParent")
1655puglSetTransientFor(PuglView* view, uintptr_t parent)
1656{
1658}
1659
1665static inline PUGL_DEPRECATED_BY("puglSetViewHint")
1666void
1667puglInitResizable(PuglView* view, bool resizable)
1668{
1670}
1671
1678static inline PUGL_DEPRECATED_BY("puglGetFrame")
1679void
1680puglGetSize(PuglView* view, int* width, int* height)
1681{
1682 const PuglRect frame = puglGetFrame(view);
1683
1684 *width = (int)frame.width;
1685 *height = (int)frame.height;
1686}
1687
1693static inline PUGL_DEPRECATED_BY("puglSetViewHint")
1694void
1695puglIgnoreKeyRepeat(PuglView* view, bool ignore)
1696{
1698}
1699
1705static inline PUGL_DEPRECATED_BY("puglSetViewHint")
1706void
1707puglInitWindowHint(PuglView* view, PuglViewHint hint, int value)
1708{
1709 puglSetViewHint(view, hint, value);
1710}
1711
1717static inline PUGL_DEPRECATED_BY("puglSetParentWindow")
1718void
1719puglInitWindowParent(PuglView* view, PuglNativeWindow parent)
1720{
1722}
1723
1729static inline PUGL_DEPRECATED_BY("puglSetBackend")
1730int
1731puglInitBackend(PuglView* view, const PuglBackend* backend)
1732{
1733 return (int)puglSetBackend(view, backend);
1734}
1735
1744static inline PUGL_DEPRECATED_BY("puglRealize")
1746puglCreateWindow(PuglView* view, const char* title)
1747{
1749 return puglRealize(view);
1750}
1751
1763PUGL_DEPRECATED_BY("puglPollEvents")
1766
1777PUGL_DEPRECATED_BY("puglDispatchEvents")
1780
1796static inline PUGL_DEPRECATED_BY("puglUpdate")
1798puglPollEvents(PuglWorld* world, double timeout)
1799{
1800 return puglUpdate(world, timeout);
1801}
1802
1813static inline PUGL_DEPRECATED_BY("puglUpdate")
1815puglDispatchEvents(PuglWorld* world)
1816{
1817 return puglUpdate(world, 0.0);
1818}
1819
1820static inline PUGL_DEPRECATED_BY("puglShow")
1822puglShowWindow(PuglView* view)
1823{
1824 return puglShow(view);
1825}
1826
1827static inline PUGL_DEPRECATED_BY("puglHide")
1829puglHideWindow(PuglView* view)
1830{
1831 return puglHide(view);
1832}
1833
1844static inline PUGL_DEPRECATED_BY("puglSetSizeHint")
1846puglSetDefaultSize(PuglView* view, int width, int height)
1847{
1848 return puglSetSizeHint(
1850}
1851
1861static inline PUGL_DEPRECATED_BY("puglSetSizeHint")
1863puglSetMinSize(PuglView* view, int width, int height)
1864{
1865 return puglSetSizeHint(
1867}
1868
1878static inline PUGL_DEPRECATED_BY("puglSetSizeHint")
1880puglSetMaxSize(PuglView* view, int width, int height)
1881{
1882 return puglSetSizeHint(
1884}
1885
1902static inline PUGL_DEPRECATED_BY("puglSetSizeHint")
1904puglSetAspectRatio(PuglView* view, int minX, int minY, int maxX, int maxY)
1905{
1906 const PuglStatus st0 =
1908
1911
1912 return st0 ? st0 : st1;
1913}
1914
1916static inline PUGL_DEPRECATED_BY("puglGetNativeView")
1918puglGetNativeWindow(PuglView* view)
1919{
1920 return puglGetNativeView(view);
1921}
1922
1923#endif // PUGL_DISABLE_DEPRECATED
1924
1929
1931
1932#endif // PUGL_PUGL_H
CAdPlugDatabase::CRecord::RecordType type
Definition adplugdb.cpp:93
int y
Definition inflate.c:1588
struct huft * u[BMAX]
Definition inflate.c:1583
unsigned x[BMAX+1]
Definition inflate.c:1586
PuglLoopEnterEvent PuglEventLoopEnter
Definition pugl.h:1522
PuglUpdateEvent PuglEventUpdate
Definition pugl.h:1486
const PuglStatus st1
Definition pugl.h:1909
PuglCloseEvent PuglEventClose
Definition pugl.h:1492
PuglButtonEvent PuglEventButton
Definition pugl.h:1507
PuglMotionEvent PuglEventMotion
Definition pugl.h:1510
static PuglViewHint int value
Definition pugl.h:1708
static PuglViewHint hint
Definition pugl.h:1707
return st0 st0
Definition pugl.h:1912
PuglFocusEvent PuglEventFocus
Definition pugl.h:1495
PuglUnmapEvent PuglEventUnmap
Definition pugl.h:1483
PuglKeyEvent PuglEventKey
Definition pugl.h:1498
PuglConfigureEvent PuglEventConfigure
Definition pugl.h:1477
char * argv[]
Definition unzip.c:738
static const PuglBackend * backend
Definition pugl.h:1732
PuglDestroyEvent PuglEventDestroy
Definition pugl.h:1474
static int int minY
Definition pugl.h:1627
static int minX
Definition pugl.h:1626
PuglTextEvent PuglEventText
Definition pugl.h:1501
static const char * title
Definition pugl.h:1747
static double timeout
Definition pugl.h:1799
static const char * name
Definition pugl.h:1582
PuglExposeEvent PuglEventExpose
Definition pugl.h:1489
static int int height
Definition pugl.h:1594
PuglCreateEvent PuglEventCreate
Definition pugl.h:1471
PuglMapEvent PuglEventMap
Definition pugl.h:1480
PuglTimerEvent PuglEventTimer
Definition pugl.h:1519
uintptr_t PuglNativeWindow
Definition pugl.h:1537
PUGL_API PuglStatus puglWaitForEvent(PuglView *view)
Definition x11.c:1141
static int int int int maxY
Definition pugl.h:1630
PuglCrossingEvent PuglEventCrossing
Definition pugl.h:1504
static int width
Definition pugl.h:1593
static bool ignore
Definition pugl.h:1696
static uintptr_t parent
Definition pugl.h:1644
PuglLoopLeaveEvent PuglEventLoopLeave
Definition pugl.h:1525
PUGL_API PuglStatus puglProcessEvents(PuglView *view)
Definition win.c:946
PuglScrollEvent PuglEventScroll
Definition pugl.h:1513
PuglClientEvent PuglEventClient
Definition pugl.h:1516
static bool resizable
Definition pugl.h:1668
static int int int maxX
Definition pugl.h:1628
PuglAnyEvent PuglDestroyEvent
Definition pugl.h:270
uint32_t PuglEventFlags
Bitwise OR of PuglEventFlag values.
Definition pugl.h:215
PuglKey
Definition pugl.h:130
PuglAnyEvent PuglUpdateEvent
Definition pugl.h:317
PuglMod
Keyboard modifier flags.
Definition pugl.h:106
PuglAnyEvent PuglLoopLeaveEvent
Definition pugl.h:586
PuglAnyEvent PuglCreateEvent
Definition pugl.h:255
PuglCrossingMode
Reason for a PuglCrossingEvent.
Definition pugl.h:218
uint32_t PuglMods
Bitwise OR of PuglMod values.
Definition pugl.h:114
PuglEventFlag
Common flags for all event types.
Definition pugl.h:209
PuglAnyEvent PuglMapEvent
Definition pugl.h:296
PuglAnyEvent PuglCloseEvent
Definition pugl.h:343
PuglScrollDirection
Definition pugl.h:232
PuglAnyEvent PuglUnmapEvent
Definition pugl.h:306
PuglAnyEvent PuglLoopEnterEvent
Definition pugl.h:576
PuglEventType
The type of a PuglEvent.
Definition pugl.h:179
@ PUGL_KEY_CTRL_L
Definition pugl.h:162
@ PUGL_KEY_F7
Definition pugl.h:143
@ PUGL_KEY_PRINT_SCREEN
Definition pugl.h:174
@ PUGL_KEY_F9
Definition pugl.h:145
@ PUGL_KEY_ALT_R
Definition pugl.h:166
@ PUGL_KEY_NUM_LOCK
Definition pugl.h:173
@ PUGL_KEY_F5
Definition pugl.h:141
@ PUGL_KEY_F12
Definition pugl.h:148
@ PUGL_KEY_BACKSPACE
Definition pugl.h:132
@ PUGL_KEY_CAPS_LOCK
Definition pugl.h:171
@ PUGL_KEY_SUPER_L
Definition pugl.h:168
@ PUGL_KEY_PAGE_UP
Definition pugl.h:153
@ PUGL_KEY_F11
Definition pugl.h:147
@ PUGL_KEY_SUPER
Definition pugl.h:167
@ PUGL_KEY_F10
Definition pugl.h:146
@ PUGL_KEY_HOME
Definition pugl.h:155
@ PUGL_KEY_ALT
Definition pugl.h:164
@ PUGL_KEY_SHIFT
Definition pugl.h:158
@ PUGL_KEY_PAGE_DOWN
Definition pugl.h:154
@ PUGL_KEY_F8
Definition pugl.h:144
@ PUGL_KEY_CTRL_R
Definition pugl.h:163
@ PUGL_KEY_ESCAPE
Definition pugl.h:133
@ PUGL_KEY_DELETE
Definition pugl.h:134
@ PUGL_KEY_INSERT
Definition pugl.h:157
@ PUGL_KEY_F1
Definition pugl.h:137
@ PUGL_KEY_PAUSE
Definition pugl.h:175
@ PUGL_KEY_RIGHT
Definition pugl.h:151
@ PUGL_KEY_F6
Definition pugl.h:142
@ PUGL_KEY_DOWN
Definition pugl.h:152
@ PUGL_KEY_SUPER_R
Definition pugl.h:169
@ PUGL_KEY_F4
Definition pugl.h:140
@ PUGL_KEY_CTRL
Definition pugl.h:161
@ PUGL_KEY_ALT_L
Definition pugl.h:165
@ PUGL_KEY_SCROLL_LOCK
Definition pugl.h:172
@ PUGL_KEY_SHIFT_R
Definition pugl.h:160
@ PUGL_KEY_F3
Definition pugl.h:139
@ PUGL_KEY_LEFT
Definition pugl.h:149
@ PUGL_KEY_END
Definition pugl.h:156
@ PUGL_KEY_F2
Definition pugl.h:138
@ PUGL_KEY_MENU
Definition pugl.h:170
@ PUGL_KEY_SHIFT_L
Definition pugl.h:159
@ PUGL_KEY_UP
Definition pugl.h:150
@ PUGL_MOD_SUPER
Mod4/Command/Windows key.
Definition pugl.h:110
@ PUGL_MOD_ALT
Alt/Option key.
Definition pugl.h:109
@ PUGL_MOD_SHIFT
Shift key.
Definition pugl.h:107
@ PUGL_MOD_CTRL
Control key.
Definition pugl.h:108
@ PUGL_CROSSING_NORMAL
Crossing due to pointer motion.
Definition pugl.h:219
@ PUGL_CROSSING_UNGRAB
Crossing due to a grab release.
Definition pugl.h:221
@ PUGL_CROSSING_GRAB
Crossing due to a grab.
Definition pugl.h:220
@ PUGL_IS_HINT
Event is a hint (not direct user input).
Definition pugl.h:211
@ PUGL_IS_SEND_EVENT
Event is synthetic.
Definition pugl.h:210
@ PUGL_SCROLL_RIGHT
Scroll right.
Definition pugl.h:236
@ PUGL_SCROLL_DOWN
Scroll down.
Definition pugl.h:234
@ PUGL_SCROLL_UP
Scroll up.
Definition pugl.h:233
@ PUGL_SCROLL_SMOOTH
Smooth scroll in any direction.
Definition pugl.h:237
@ PUGL_SCROLL_LEFT
Scroll left.
Definition pugl.h:235
@ PUGL_UPDATE
View ready to draw, a PuglUpdateEvent.
Definition pugl.h:186
@ PUGL_EXPOSE
View must be drawn, a PuglExposeEvent.
Definition pugl.h:187
@ PUGL_LOOP_LEAVE
Recursive loop left, a PuglLoopLeaveEvent.
Definition pugl.h:203
@ PUGL_DATA
Data available from clipboard, a PuglDataEvent.
Definition pugl.h:205
@ PUGL_BUTTON_RELEASE
Mouse button released, a PuglButtonEvent.
Definition pugl.h:197
@ PUGL_LOOP_ENTER
Recursive loop entered, a PuglLoopEnterEvent.
Definition pugl.h:202
@ PUGL_CREATE
View created, a PuglCreateEvent.
Definition pugl.h:181
@ PUGL_KEY_RELEASE
Key released, a PuglKeyEvent.
Definition pugl.h:192
@ PUGL_TIMER
Timer triggered, a PuglTimerEvent.
Definition pugl.h:201
@ PUGL_CLOSE
View will be closed, a PuglCloseEvent.
Definition pugl.h:188
@ PUGL_KEY_PRESS
Key pressed, a PuglKeyEvent.
Definition pugl.h:191
@ PUGL_SCROLL
Scrolled, a PuglScrollEvent.
Definition pugl.h:199
@ PUGL_BUTTON_PRESS
Mouse button pressed, a PuglButtonEvent.
Definition pugl.h:196
@ PUGL_CLIENT
Custom client message, a PuglClientEvent.
Definition pugl.h:200
@ PUGL_FOCUS_IN
Keyboard focus entered view, a PuglFocusEvent.
Definition pugl.h:189
@ PUGL_UNMAP
View made invisible, a PuglUnmapEvent.
Definition pugl.h:185
@ PUGL_MAP
View made visible, a PuglMapEvent.
Definition pugl.h:184
@ PUGL_TEXT
Character entered, a PuglTextEvent.
Definition pugl.h:193
@ PUGL_NOTHING
No event.
Definition pugl.h:180
@ PUGL_DATA_OFFER
Data offered from clipboard, a PuglDataOfferEvent.
Definition pugl.h:204
@ PUGL_FOCUS_OUT
Keyboard focus left view, a PuglFocusEvent.
Definition pugl.h:190
@ PUGL_MOTION
Pointer moved, a PuglMotionEvent.
Definition pugl.h:198
@ PUGL_CONFIGURE
View moved/resized, a PuglConfigureEvent.
Definition pugl.h:183
@ PUGL_POINTER_OUT
Pointer left view, a PuglCrossingEvent.
Definition pugl.h:195
@ PUGL_DESTROY
View destroyed, a PuglDestroyEvent.
Definition pugl.h:182
@ PUGL_POINTER_IN
Pointer entered view, a PuglCrossingEvent.
Definition pugl.h:194
PUGL_API PuglRect puglGetFrame(const PuglView *view)
Definition common.c:233
PUGL_API PuglStatus puglSetSizeHint(PuglView *view, PuglSizeHint hint, PuglSpan width, PuglSpan height)
Definition wasm.c:611
PUGL_API PuglStatus puglSetFrame(PuglView *view, PuglRect frame)
Definition win.c:1055
PUGL_API PuglStatus puglSetPosition(PuglView *view, int x, int y)
Definition wasm.c:723
PUGL_API PuglStatus puglSetSize(PuglView *view, unsigned width, unsigned height)
Definition win.c:1105
PUGL_API void * puglGetContext(PuglView *view)
Definition common.c:270
PUGL_API PuglStatus puglPostRedisplay(PuglView *view)
Definition wasm.c:579
PUGL_API PuglStatus puglPostRedisplayRect(PuglView *view, PuglRect rect)
Definition wasm.c:587
PUGL_API PuglStatus puglRequestAttention(PuglView *view)
Definition win.c:819
PUGL_API PuglStatus puglSetClipboard(PuglView *view, const char *type, const void *data, size_t len)
Definition wasm.c:698
PUGL_API bool puglHasFocus(const PuglView *view)
Return whether view has the keyboard input focus.
Definition win.c:813
PUGL_API const void * puglGetClipboard(PuglView *view, uint32_t typeIndex, size_t *len)
Definition wasm.c:689
PUGL_API PuglStatus puglAcceptOffer(PuglView *view, const PuglDataOfferEvent *offer, uint32_t typeIndex)
Definition wasm.c:499
PUGL_API PuglStatus puglSetCursor(PuglView *view, PuglCursor cursor)
Definition wasm.c:708
PuglCursor
Definition pugl.h:1252
PUGL_API PuglStatus puglGrabFocus(PuglView *view)
Definition wasm.c:493
PUGL_API PuglStatus puglSendEvent(PuglView *view, const PuglEvent *event)
Definition win.c:848
PUGL_API uint32_t puglGetNumClipboardTypes(const PuglView *view)
Definition wasm.c:515
PUGL_API PuglStatus puglStopTimer(PuglView *view, uintptr_t id)
Definition wasm.c:667
PUGL_API const char * puglGetClipboardType(const PuglView *view, uint32_t typeIndex)
Definition wasm.c:522
PUGL_API PuglStatus puglStartTimer(PuglView *view, uintptr_t id, double timeout)
Definition wasm.c:647
PUGL_API PuglStatus puglPaste(PuglView *view)
Definition wasm.c:508
@ PUGL_CURSOR_NO
Operation not allowed.
Definition pugl.h:1257
@ PUGL_CURSOR_UP_DOWN
Up/down arrow for vertical resize.
Definition pugl.h:1259
@ PUGL_CURSOR_ARROW
Default pointing arrow.
Definition pugl.h:1253
@ PUGL_CURSOR_CARET
Caret (I-Beam) for text entry.
Definition pugl.h:1254
@ PUGL_CURSOR_CROSSHAIR
Cross-hair.
Definition pugl.h:1255
@ PUGL_CURSOR_HAND
Hand with a pointing finger.
Definition pugl.h:1256
@ PUGL_CURSOR_ANTI_DIAGONAL
Bottom-left to top-right arrow for diagonal resize.
Definition pugl.h:1261
@ PUGL_CURSOR_LEFT_RIGHT
Left/right arrow for horizontal resize.
Definition pugl.h:1258
@ PUGL_CURSOR_DIAGONAL
Top-left to bottom-right arrow for diagonal resize.
Definition pugl.h:1260
int16_t PuglCoord
Definition pugl.h:67
uint16_t PuglSpan
Definition pugl.h:75
PUGL_API PuglStatus puglSetBackend(PuglView *view, const PuglBackend *backend)
Definition common.c:187
PUGL_API PuglHandle puglGetHandle(PuglView *view)
Get the user data for a view.
Definition common.c:181
PUGL_API void puglSetHandle(PuglView *view, PuglHandle handle)
Definition common.c:175
PUGL_API PuglStatus puglSetEventFunc(PuglView *view, PuglEventFunc eventFunc)
Set the function to call when an event occurs.
Definition common.c:200
PUGL_API PuglWorld * puglGetWorld(PuglView *view)
Return the world that view is a part of.
Definition common.c:169
PUGL_API PuglView * puglNewView(PuglWorld *world)
Definition common.c:116
PUGL_API PuglStatus puglSetViewHint(PuglView *view, PuglViewHint hint, int value)
Definition common.c:207
PUGL_API int puglGetViewHint(const PuglView *view, PuglViewHint hint)
Definition common.c:227
PUGL_API void puglFreeView(PuglView *view)
Free a view created with puglNewView().
Definition common.c:141
const PuglBackend * puglGetBackend(const PuglView *view)
Return the graphics backend used by a view.
Definition common.c:194
PUGL_API double puglGetScaleFactor(const PuglView *view)
Definition wasm.c:529
PUGL_CONST_API const char * puglStrerror(PuglStatus status)
Return a string describing a status code.
Definition common.c:18
PuglStatus
Return status code.
Definition pugl.h:627
@ PUGL_SUCCESS
Success.
Definition pugl.h:628
@ PUGL_FAILURE
Non-fatal failure.
Definition pugl.h:629
@ PUGL_REALIZE_FAILED
System view realization failed.
Definition pugl.h:636
@ PUGL_REGISTRATION_FAILED
Class registration failed.
Definition pugl.h:635
@ PUGL_SET_FORMAT_FAILED
Failed to set pixel format.
Definition pugl.h:637
@ PUGL_BAD_BACKEND
Invalid or missing backend.
Definition pugl.h:631
@ PUGL_BAD_PARAMETER
Invalid parameter.
Definition pugl.h:633
@ PUGL_BACKEND_FAILED
Backend initialization failed.
Definition pugl.h:634
@ PUGL_UNKNOWN_ERROR
Unknown system error.
Definition pugl.h:630
@ PUGL_UNSUPPORTED
Unsupported operation.
Definition pugl.h:639
@ PUGL_NO_MEMORY
Failed to allocate memory.
Definition pugl.h:640
@ PUGL_BAD_CONFIGURATION
Invalid view configuration.
Definition pugl.h:632
@ PUGL_CREATE_CONTEXT_FAILED
Failed to create drawing context.
Definition pugl.h:638
void * PuglHandle
Handle for a view's opaque user data.
Definition pugl.h:837
struct PuglViewImpl PuglView
A drawable region that receives events.
Definition pugl.h:810
uintptr_t PuglNativeView
Definition pugl.h:834
PuglStatus(* PuglEventFunc)(PuglView *view, const PuglEvent *event)
A function called when an event occurs.
Definition pugl.h:910
PuglViewHintValue
A special view hint value.
Definition pugl.h:863
PuglViewHint
A hint for configuring a view.
Definition pugl.h:840
struct PuglBackendImpl PuglBackend
Definition pugl.h:823
PuglSizeHint
Definition pugl.h:876
@ PUGL_DONT_CARE
Use best available value.
Definition pugl.h:864
@ PUGL_FALSE
Explicitly false.
Definition pugl.h:865
@ PUGL_TRUE
Explicitly true.
Definition pugl.h:866
@ PUGL_ALPHA_BITS
Number of bits for alpha channel.
Definition pugl.h:848
@ PUGL_DOUBLE_BUFFER
True if double buffering should be used.
Definition pugl.h:852
@ PUGL_CONTEXT_VERSION_MINOR
OpenGL context minor version.
Definition pugl.h:844
@ PUGL_USE_DEBUG_CONTEXT
True to use a debug OpenGL context.
Definition pugl.h:842
@ PUGL_BLUE_BITS
Number of bits for blue channel.
Definition pugl.h:847
@ PUGL_RED_BITS
Number of bits for red channel.
Definition pugl.h:845
@ PUGL_IGNORE_KEY_REPEAT
True if key repeat events are ignored.
Definition pugl.h:855
@ PUGL_DEPTH_BITS
Number of bits for depth buffer.
Definition pugl.h:849
@ PUGL_REFRESH_RATE
Refresh rate in Hz.
Definition pugl.h:856
@ PUGL_USE_COMPAT_PROFILE
Use compatible (not core) OpenGL profile.
Definition pugl.h:841
@ PUGL_SAMPLES
Number of samples per pixel (AA).
Definition pugl.h:851
@ PUGL_SWAP_INTERVAL
Number of frames between buffer swaps.
Definition pugl.h:853
@ PUGL_CONTEXT_VERSION_MAJOR
OpenGL context major version.
Definition pugl.h:843
@ PUGL_STENCIL_BITS
Number of bits for stencil buffer.
Definition pugl.h:850
@ PUGL_RESIZABLE
True if view should be resizable.
Definition pugl.h:854
@ PUGL_GREEN_BITS
Number of bits for green channel.
Definition pugl.h:846
@ PUGL_DEFAULT_SIZE
Default size.
Definition pugl.h:877
@ PUGL_MAX_ASPECT
Definition pugl.h:903
@ PUGL_MIN_SIZE
Minimum size.
Definition pugl.h:878
@ PUGL_MAX_SIZE
Maximum size.
Definition pugl.h:879
@ PUGL_FIXED_ASPECT
Definition pugl.h:887
@ PUGL_MIN_ASPECT
Definition pugl.h:895
PUGL_API PuglNativeView puglGetParentWindow(const PuglView *view)
Return the parent window this view is embedded in, or null.
Definition common.c:252
PUGL_API const char * puglGetWindowTitle(const PuglView *view)
Return the title of the window, or null.
Definition common.c:239
PUGL_API PuglStatus puglSetTransientParent(PuglView *view, PuglNativeView parent)
Definition wasm.c:715
PUGL_API bool puglGetVisible(const PuglView *view)
Return true iff the view is currently visible.
Definition common.c:264
PUGL_API PuglStatus puglShow(PuglView *view)
Definition wasm.c:457
PUGL_API PuglStatus puglSetParentWindow(PuglView *view, PuglNativeView parent)
Definition common.c:245
PUGL_API PuglNativeView puglGetTransientParent(const PuglView *view)
Definition common.c:258
PUGL_API PuglStatus puglRealize(PuglView *view)
Definition wasm.c:387
PUGL_API PuglStatus puglHide(PuglView *view)
Hide the current window.
Definition wasm.c:465
PUGL_API PuglStatus puglSetWindowTitle(PuglView *view, const char *title)
Definition wasm.c:602
PUGL_API PuglNativeView puglGetNativeView(PuglView *view)
Return the native window handle.
Definition wasm.c:595
PuglWorldFlag
World flags.
Definition pugl.h:682
PUGL_API PuglWorld * puglNewWorld(PuglWorldType type, PuglWorldFlags flags)
Definition common.c:42
PUGL_API PuglStatus puglSetClassName(PuglWorld *world, const char *name)
Definition common.c:83
uint32_t PuglWorldFlags
Bitwise OR of PuglWorldFlag values.
Definition pugl.h:692
PuglWorldType
The type of a World.
Definition pugl.h:676
PUGL_API PuglStatus puglUpdate(PuglWorld *world, double timeout)
Definition wasm.c:543
struct PuglWorldImpl PuglWorld
Definition pugl.h:670
PUGL_API double puglGetTime(const PuglWorld *world)
Definition wasm.c:536
PUGL_API void puglSetWorldHandle(PuglWorld *world, PuglWorldHandle handle)
Definition common.c:71
void * PuglWorldHandle
Handle for the world's opaque user data.
Definition pugl.h:673
PUGL_API PuglWorldHandle puglGetWorldHandle(PuglWorld *world)
Get the user data for the world.
Definition common.c:77
PUGL_API const char * puglGetClassName(const PuglWorld *world)
Get the class name of the application, or null.
Definition common.c:90
PUGL_API void puglFreeWorld(PuglWorld *world)
Free a world allocated with puglNewWorld().
Definition common.c:62
PUGL_API void * puglGetNativeWorld(PuglWorld *world)
Definition wasm.c:37
@ PUGL_WORLD_THREADS
Definition pugl.h:688
@ PUGL_PROGRAM
Top-level application.
Definition pugl.h:677
@ PUGL_MODULE
Plugin or module within a larger application.
Definition pugl.h:678
JSAMPIMAGE data
Definition jpeglib.h:945
static LilvWorld * world
Definition lilv_test.c:64
unsigned short uint16_t
Definition mid.cpp:99
unsigned int uint32_t
Definition mid.cpp:100
short int16_t
Definition mid.cpp:96
#define PUGL_END_DECLS
Definition pugl.h:47
#define PUGL_API
Definition pugl.h:22
#define PUGL_DEPRECATED_BY(rep)
Definition pugl.h:32
#define PUGL_BEGIN_DECLS
Definition pugl.h:46
#define PUGL_CONST_API
Definition pugl.h:42
Common header for all event structs.
Definition pugl.h:241
PuglEventFlags flags
Bitwise OR of PuglEventFlag values.
Definition pugl.h:243
PuglEventType type
Event type.
Definition pugl.h:242
Graphics backend interface.
Definition types.h:67
Definition pugl.h:449
double xRoot
Root-relative X coordinate.
Definition pugl.h:455
double yRoot
Root-relative Y coordinate.
Definition pugl.h:456
double time
Time in seconds.
Definition pugl.h:452
PuglMods state
Bitwise OR of PuglMod flags.
Definition pugl.h:457
double y
View-relative Y coordinate.
Definition pugl.h:454
uint32_t button
Button number starting from 0.
Definition pugl.h:458
PuglEventType type
PUGL_BUTTON_PRESS or PUGL_BUTTON_RELEASE
Definition pugl.h:450
PuglEventFlags flags
Bitwise OR of PuglEventFlag values.
Definition pugl.h:451
double x
View-relative X coordinate.
Definition pugl.h:453
Definition pugl.h:505
uintptr_t data1
Client-specific data.
Definition pugl.h:508
PuglEventFlags flags
Bitwise OR of PuglEventFlag values.
Definition pugl.h:507
uintptr_t data2
Client-specific data.
Definition pugl.h:509
PuglEventType type
PUGL_CLIENT
Definition pugl.h:506
Definition pugl.h:280
PuglEventFlags flags
Bitwise OR of PuglEventFlag values.
Definition pugl.h:282
PuglCoord y
Parent-relative Y coordinate of view.
Definition pugl.h:284
PuglEventType type
PUGL_CONFIGURE
Definition pugl.h:281
PuglSpan height
Height of view.
Definition pugl.h:286
PuglSpan width
Width of view.
Definition pugl.h:285
PuglCoord x
Parent-relative X coordinate of view.
Definition pugl.h:283
Definition pugl.h:419
PuglEventType type
PUGL_POINTER_IN or PUGL_POINTER_OUT
Definition pugl.h:420
PuglMods state
Bitwise OR of PuglMod flags.
Definition pugl.h:427
PuglEventFlags flags
Bitwise OR of PuglEventFlag values.
Definition pugl.h:421
double time
Time in seconds.
Definition pugl.h:422
double x
View-relative X coordinate.
Definition pugl.h:423
double yRoot
Root-relative Y coordinate.
Definition pugl.h:426
PuglCrossingMode mode
Reason for crossing.
Definition pugl.h:428
double xRoot
Root-relative X coordinate.
Definition pugl.h:425
double y
View-relative Y coordinate.
Definition pugl.h:424
Definition pugl.h:549
PuglEventType type
PUGL_DATA
Definition pugl.h:550
uint32_t typeIndex
Index of datatype.
Definition pugl.h:553
double time
Time in seconds.
Definition pugl.h:552
PuglEventFlags flags
Bitwise OR of PuglEventFlag values.
Definition pugl.h:551
Definition pugl.h:536
PuglEventType type
PUGL_DATA_OFFER
Definition pugl.h:537
double time
Time in seconds.
Definition pugl.h:539
PuglEventFlags flags
Bitwise OR of PuglEventFlag values.
Definition pugl.h:538
Definition pugl.h:326
PuglCoord y
View-relative top-left Y coordinate of region.
Definition pugl.h:330
PuglEventType type
PUGL_EXPOSE
Definition pugl.h:327
PuglSpan height
Height of exposed region.
Definition pugl.h:332
PuglSpan width
Width of exposed region.
Definition pugl.h:331
PuglCoord x
View-relative top-left X coordinate of region.
Definition pugl.h:329
PuglEventFlags flags
Bitwise OR of PuglEventFlag values.
Definition pugl.h:328
Definition pugl.h:351
PuglEventType type
PUGL_FOCUS_IN or PUGL_FOCUS_OUT
Definition pugl.h:352
PuglCrossingMode mode
Reason for focus change.
Definition pugl.h:354
PuglEventFlags flags
Bitwise OR of PuglEventFlag values.
Definition pugl.h:353
Definition pugl.h:374
double yRoot
Root-relative Y coordinate.
Definition pugl.h:381
PuglEventFlags flags
Bitwise OR of PuglEventFlag values.
Definition pugl.h:376
double time
Time in seconds.
Definition pugl.h:377
double y
View-relative Y coordinate.
Definition pugl.h:379
double xRoot
Root-relative X coordinate.
Definition pugl.h:380
uint32_t keycode
Raw key code.
Definition pugl.h:383
uint32_t key
Unshifted Unicode character code, or 0.
Definition pugl.h:384
PuglMods state
Bitwise OR of PuglMod flags.
Definition pugl.h:382
PuglEventType type
PUGL_KEY_PRESS or PUGL_KEY_RELEASE
Definition pugl.h:375
double x
View-relative X coordinate.
Definition pugl.h:378
Definition pugl.h:464
double xRoot
Root-relative X coordinate.
Definition pugl.h:470
double time
Time in seconds.
Definition pugl.h:467
PuglEventFlags flags
Bitwise OR of PuglEventFlag values.
Definition pugl.h:466
PuglEventType type
PUGL_MOTION
Definition pugl.h:465
double yRoot
Root-relative Y coordinate.
Definition pugl.h:471
double x
View-relative X coordinate.
Definition pugl.h:468
PuglMods state
Bitwise OR of PuglMod flags.
Definition pugl.h:472
double y
View-relative Y coordinate.
Definition pugl.h:469
Definition pugl.h:87
PuglSpan width
Definition pugl.h:90
PuglCoord y
Definition pugl.h:89
PuglCoord x
Definition pugl.h:88
PuglSpan height
Definition pugl.h:91
Definition pugl.h:484
double dy
Scroll Y distance in lines.
Definition pugl.h:495
PuglScrollDirection direction
Scroll direction.
Definition pugl.h:493
double y
View-relative Y coordinate.
Definition pugl.h:489
double x
View-relative X coordinate.
Definition pugl.h:488
PuglEventType type
PUGL_SCROLL
Definition pugl.h:485
PuglMods state
Bitwise OR of PuglMod flags.
Definition pugl.h:492
PuglEventFlags flags
Bitwise OR of PuglEventFlag values.
Definition pugl.h:486
double xRoot
Root-relative X coordinate.
Definition pugl.h:490
double yRoot
Root-relative Y coordinate.
Definition pugl.h:491
double dx
Scroll X distance in lines.
Definition pugl.h:494
double time
Time in seconds.
Definition pugl.h:487
Definition pugl.h:398
double xRoot
Root-relative X coordinate.
Definition pugl.h:404
double time
Time in seconds.
Definition pugl.h:401
PuglEventFlags flags
Bitwise OR of PuglEventFlag values.
Definition pugl.h:400
PuglMods state
Bitwise OR of PuglMod flags.
Definition pugl.h:406
uint32_t keycode
Raw key code.
Definition pugl.h:407
uint32_t character
Unicode character code.
Definition pugl.h:408
double yRoot
Root-relative Y coordinate.
Definition pugl.h:405
double x
View-relative X coordinate.
Definition pugl.h:402
double y
View-relative Y coordinate.
Definition pugl.h:403
PuglEventType type
PUGL_TEXT
Definition pugl.h:399
Definition pugl.h:522
PuglEventFlags flags
Bitwise OR of PuglEventFlag values.
Definition pugl.h:524
PuglEventType type
PUGL_TIMER
Definition pugl.h:523
uintptr_t id
Timer ID.
Definition pugl.h:525
Cross-platform view definition.
Definition types.h:37
Cross-platform world definition.
Definition types.h:54
PuglWorldHandle handle
Definition types.h:56
Definition pugl.h:599
PuglEventType type
Event type.
Definition pugl.h:601
PuglConfigureEvent configure
PUGL_CONFIGURE
Definition pugl.h:603
PuglMotionEvent motion
PUGL_MOTION
Definition pugl.h:608
PuglScrollEvent scroll
PUGL_SCROLL
Definition pugl.h:609
PuglTimerEvent timer
PUGL_TIMER
Definition pugl.h:612
PuglButtonEvent button
PUGL_BUTTON_PRESS, PUGL_BUTTON_RELEASE
Definition pugl.h:602
PuglAnyEvent any
Valid for all event types.
Definition pugl.h:600
PuglTextEvent text
PUGL_TEXT
Definition pugl.h:606
PuglDataOfferEvent offer
PUGL_DATA_OFFER
Definition pugl.h:613
PuglExposeEvent expose
PUGL_EXPOSE
Definition pugl.h:604
PuglDataEvent data
PUGL_DATA
Definition pugl.h:614
PuglClientEvent client
PUGL_CLIENT
Definition pugl.h:611
PuglCrossingEvent crossing
PUGL_POINTER_IN, PUGL_POINTER_OUT
Definition pugl.h:607
PuglKeyEvent key
PUGL_KEY_PRESS, PUGL_KEY_RELEASE
Definition pugl.h:605
PuglFocusEvent focus
PUGL_FOCUS_IN, PUGL_FOCUS_OUT
Definition pugl.h:610
typedef int(UZ_EXP MsgFn)()
#define void
Definition unzip.h:396
* pargc
Definition zipinfo.c:622
#define const
Definition zconf.h:137