aboutsummaryrefslogtreecommitdiffstats
path: root/examples
AgeCommit message (Collapse)AuthorFilesLines
2022-05-23Add rich clipboard supportDavid Robillard1-4/+46
This implements a more powerful protocol for working with clipboards, which supports datatype negotiation, and fixes various issues by mapping more directly to how things work on X11.
2022-05-22Factor out pugl_clipboard_demo example programDavid Robillard5-14/+236
This is a simpler example than pugl_embed_demo that demonstrates clipboard functionality without the complexity of embedded views.
2022-05-21Add puglSetPosition() and puglSetSize()David Robillard2-35/+22
These are redundant with puglSetFrame in a sense, but allow setting the size of a view without the position, or vice-versa. This API also maps more nicely to Wayland, where applications can not position themselves (but can resize).
2022-05-21Use consistent integer types for view positions and sizesDavid Robillard4-30/+34
Actual window sizes and positions fit easily in a 16-bit integer. So, we use that in "representation contexts" like events. This makes structures smaller, and allows the values to be converted to float, double, or integer without casting (since any int16_t or uint16_t value can fit in them without loss). Setter APIs use native integers for convenience, to avoid casting hassles when doing arithmetic. Ranges are checked at runtime.
2022-05-21Add a uniform API for setting size hintsDavid Robillard9-36/+36
This collapses many functions into one, which makes the API more easily extensible and reduces code size.
2022-05-21Fix build of examples that use a stub backendDavid Robillard1-3/+21
2022-05-20Use consistent class names and titles in tests and examplesDavid Robillard9-13/+13
2022-05-20MacOS: Build examples as application bundlesDavid Robillard21-74/+299
This is required on MacOS to make the examples usable. When run as bare programs, they don't show up as normal windows or receive keyboard input.
2022-04-23Move reserved platform defines from code to build systemDavid Robillard2-9/+9
Numerous things warn about this, and it's generally a bad idea to put these in the code since it can result in incompatibly compiled code being linked together. Unfortunately this makes building manually (without the build system) more fiddly, but such is life.
2022-03-14Fix warning in VS2019David Robillard1-1/+3
2021-12-17Remove unused struct definitionDavid Robillard1-4/+0
2021-12-17Pass const references where appropriateDavid Robillard1-7/+8
2021-12-17Adopt REUSE machine-readable licensing standardDavid Robillard22-241/+51
See https://reuse.software/ for details.
2021-12-17Suppress new warnings in clang-tidy 13David Robillard1-1/+2
2021-12-17Fix spelling errorsDavid Robillard1-1/+1
2021-12-16Rename puglSetTransientFor to puglSetTransientParentDavid Robillard1-2/+2
2021-08-28Suppress new clang-tidy warningsDavid Robillard1-0/+4
2021-05-28Remove static downcasts in C++ bindingsDavid Robillard1-2/+1
2021-05-28Split up warning suppression flags more finelyDavid Robillard1-6/+51
This avoids polluting the main list of suppressions with things that are only triggered in tests or examples, making it clearer which warning are present in pugl itself.
2021-05-28Remove unnecessary include directoryDavid Robillard1-1/+0
2021-05-25Rename event structs in a more readable styleDavid Robillard3-3/+3
Aside from reading more naturally, this avoids clashes with types that are not events, like PuglEventFlags. This is also more consistent with the C++ bindings, where "EventExpose" would be quite strange, for example. Apologies for the noise. Aliases to the old names will be preserved in the deprecated API like other things for a short while.
2021-05-24Add fancy constructor for C++ events and wrap puglSendEvent()David Robillard1-1/+6
2021-05-24Consistently refer to C++ as "cpp" and fix installationDavid Robillard4-6/+6
2021-05-08Send unmap/map events when the view is minimized/restoredDavid Robillard1-26/+36
X11 Window managers set WM_STATE to notify about minimization, often without sending core X visibility events (which seems odd to me, but that's what Gnome does anyway). So, implement this protocol and send map/unmap events to the view, and adjust the Windows implementation to do the same for consistency across all platforms.
2021-05-06Add basic test for Vulkan supportDavid Robillard1-1/+1
2021-04-27Simplify meson configurationDavid Robillard1-5/+5
2021-04-18Improve cube rendering in example programsDavid Robillard2-17/+17
2021-04-18Improve cube rendering in example programsDavid Robillard2-27/+90
2021-02-01Set maximum size in example programsDavid Robillard6-0/+6
2021-01-08Switch to MesonDavid Robillard2-0/+115
2021-01-02Avoid "else" after "return"David Robillard4-10/+24
2021-01-02Use email address instead of website for attributionDavid Robillard3-3/+3
2021-01-02Fix clang-tidy warningsDavid Robillard2-12/+32
2021-01-02Clean up includesDavid Robillard3-3/+3
2021-01-02Simplify clang-format configuration and format all codeDavid Robillard19-5763/+5608
2020-12-11Make demo programs work from any directory, and install themDavid Robillard8-19/+241
2020-12-11Print an error message in Vulkan demo when shaders are not foundDavid Robillard1-0/+1
2020-11-26Remove file documentationDavid Robillard10-70/+36
These will not be used in the Sphinx documentation, and most were self-explanatory and only there to make the Doxygen index look nice anyway. Where there was actually useful information, it has been preserved as regular comments.
2020-11-26Add pugl::World constructor overload that takes a flagDavid Robillard1-2/+1
Eventually we'll need an actual smart flags type here, but for now there's only one flag anyway, so simply define an overload that takes one.
2020-11-26Remove stub event handlers from pugl::ViewDavid Robillard2-2/+10
This was a bit weird since event dispatching can be handled by some other object. Just remove them, and have clients use a catch-all template to handle events that are not handled specially.
2020-11-25Rename puglShowWindow and puglHideWindow to puglShow an puglHideDavid Robillard9-11/+11
These names were confusing because a view is not necessarily a window. Since there's no room for ambiguity here, simply drop the superfluous word.
2020-11-25Pass vkGetInstanceProcAddr to puglCreateSurface instead of a loaderDavid Robillard2-4/+10
This allows puglCreateSurface() to be used with some other loader, or when linking to Vulkan at compile time.
2020-11-22Suppress various clang-tidy warningsDavid Robillard1-0/+7
These libc-specific warnings are a new level, even for LLVM. Using an opt-out style for this is probably not going to last.
2020-11-01Cleanup: Fix typoDavid Robillard1-1/+1
2020-11-01Make event handling in C++ more flexibleDavid Robillard2-10/+14
2020-10-31Use static polymorphism in C++ bindingsDavid Robillard2-41/+35
This removes virtual function overhead, and the weird situation of having to include pugl.ipp once (or worse, for pugl to provide a binary C++ library).
2020-10-30Simplify header namesDavid Robillard10-10/+10
2020-10-30Remove GL and GLU wrapper headersDavid Robillard3-3/+1
Include them in pugl_gl.h instead, to simplify things and unclutter the include directory.
2020-10-28Add Vulkan demosDavid Robillard4-0/+5342
2020-10-24Replace live resize with loop eventsDavid Robillard1-2/+17
This allows the application to control how recursive loops are handled rather than have Pugl impose behavior which can get in the way. For example, an application may not want to continuously animate while being resized, or set up its rendering differently in this situation. For example, with Vulkan, setting up a different swapchain can be necessary for smooth performance while live resizing on Windows, and Pugl has no ability to do this. I think it was a mistake to add this timer to Pugl itself, because it was always a bit of a leaky abstraction, and not very appropriate for a library that is supposed to be a thin abstraction layer. Though it almost seemed like things ran as usual while resizing on Windows and MacOS, the main event loop being stalled can be confusing, and there was no way to detect this. This way, applications must explicitly handle this situation and can implement the behavior they want without Pugl getting in the way. This also simplifies the Pugl implementation a bit, which is always nice.