aboutsummaryrefslogtreecommitdiffstats
path: root/include/pugl
AgeCommit message (Collapse)AuthorFilesLines
2022-10-07Use uppercase integer literal suffixesDavid Robillard1-8/+8
2022-06-08Use consistent terminology for native viewsDavid Robillard1-2/+11
On MacOS in particular, views and windows are entirely different concepts, so confusing them... confuses things. This was the last holdover in the API that used the old "native window".
2022-06-08Consolidate common deprecated API implementationDavid Robillard1-12/+20
2022-06-08Fox documentation formattingDavid Robillard1-1/+1
2022-06-07Use a consistent scheme for enum sizesDavid Robillard1-2/+9
2022-06-07Fix broken links in documentationDavid Robillard1-2/+2
2022-05-23Add rich clipboard supportDavid Robillard1-3/+89
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-21Add puglGetScaleFactor()David Robillard1-0/+16
2022-05-21Add puglSetPosition() and puglSetSize()David Robillard1-4/+24
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 Robillard1-17/+33
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 Robillard1-52/+138
This collapses many functions into one, which makes the API more easily extensible and reduces code size.
2022-05-21Rename PUGL_UNSUPPORTED_TYPE to be more genericDavid Robillard1-3/+3
2022-04-23Fix IWYU warningsDavid Robillard1-1/+4
I suspect that using the same configuration across both C and C++ is starting to wear a bit thin, but this will do for now.
2021-12-17Adopt REUSE machine-readable licensing standardDavid Robillard5-75/+10
See https://reuse.software/ for details.
2021-12-17Fix spelling errorsDavid Robillard1-4/+4
2021-12-17Make button numbers consistent across platformsDavid Robillard1-1/+16
There's no universal consensus on how buttons are numbered. Left, right, middle as 0, 1, 2 seems to be the most common convention on modern vaguely similar libraries, so I've gone with that. The switch to zero-based indices will obviously break all current client code. Particularly since now is the time to finish any breaking changes before a stable release, I think that is better than only changing the middle and right numbers, which would likely go unnoticed.
2021-12-16Add puglGetBackend()David Robillard1-0/+4
2021-12-16Add puglGetClassName()David Robillard1-0/+5
2021-12-16Add puglGetWindowTitle()David Robillard1-0/+5
2021-12-16Add puglGetParentWindow()David Robillard1-0/+5
2021-12-16Add puglGetTransientParent()David Robillard1-0/+10
2021-12-16Rename puglSetTransientFor to puglSetTransientParentDavid Robillard1-3/+15
2021-12-16X11: Fix potential crash in puglGrabFocus()David Robillard1-1/+8
This is really a mistake in user code, but things shouldn't crash in general. So, this commit fixes the crash and adds some documentation so that developers hopefully don't try to grab focus before it makes sense. The case that was previously a crash will now gracefully fail, that is, the focus will not be (and can not be) grabbed.
2021-05-25Rename event structs in a more readable styleDavid Robillard1-60/+117
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-25Allow overriding PUGL_APIDavid Robillard1-8/+10
2021-05-25Fix long lineDavid Robillard1-2/+2
2021-05-03MacOS: Make puglGetNativeWorld() return the NSApplicationDavid Robillard1-1/+1
2021-02-15Remove deprecated enumeratorsDavid Robillard1-7/+0
2021-01-06Fix documentation formatting issuesDavid Robillard1-15/+12
2021-01-02Add PUGL_CONST_APIDavid Robillard5-10/+9
Just a convenience macro to make declarations a little more readable.
2021-01-02Use email address instead of website for attributionDavid Robillard1-1/+1
2021-01-02Simplify visibility boilerplateDavid Robillard1-13/+6
2021-01-02Clean up includesDavid Robillard2-5/+7
2021-01-02Simplify clang-format configuration and format all codeDavid Robillard5-376/+463
2020-11-26Use named groups to group documentationDavid Robillard1-13/+11
We'll need identifiers for these to refer to them in the Sphinx documentation.
2020-11-26Remove top-level documentation groupDavid Robillard1-5/+0
This will not be used in Sphinx.
2020-11-26Use consistent spelling in documentationDavid Robillard1-4/+4
2020-11-26Remove file documentationDavid Robillard5-29/+7
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-26Don't use lists in return documentationDavid Robillard1-17/+14
This causes some annoying typesetting issues it's simpler to just avoid.
2020-11-25Rename puglShowWindow and puglHideWindow to puglShow an puglHideDavid Robillard1-2/+8
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-25Move puglEnterContext and puglLeaveContext to GL backendsDavid Robillard2-30/+18
These only do anything for OpenGL, and it seems unlikely that they will ever be used for anything else. So, move them to the GL headers to remove clutter from the core API, and ensure that they are only used in GL applications that include the appropriate headers and link with a GL backend. Also add missing C++ bindings.
2020-11-25Pass vkGetInstanceProcAddr to puglCreateSurface instead of a loaderDavid Robillard1-2/+2
This allows puglCreateSurface() to be used with some other loader, or when linking to Vulkan at compile time.
2020-11-01Run clang-tidy on all headers and fix various issuesDavid Robillard1-5/+0
It's a nightmare trying to get this thing to check everything.
2020-11-01Add missing documentation for VulkanDavid Robillard1-1/+5
2020-10-30Remove logging APIDavid Robillard1-36/+0
This was missing from the C++ bindings and barely used anyway, so just remove it for now in the interests of simplicity and finalizing a stable API. The information previously logged in the X11 GL backend is now available programatically, so applications can print the same information portably if they like.
2020-10-30Clean up installed man pagesDavid Robillard5-7/+7
2020-10-30Simplify header namesDavid Robillard5-18/+18
2020-10-30Remove GL and GLU wrapper headersDavid Robillard3-82/+29
Include them in pugl_gl.h instead, to simplify things and unclutter the include directory.
2020-10-30Move C++ bindings to a separate directoryDavid Robillard6-1238/+0
This seemed messy and potentially misleading for what is fundamentally a C++ library. It also makes it possible to set separate clang-tidy and clang-format settings for each to avoid "tainting" the C settings, though currently the headers use the same checks.
2020-10-30Move implementation source files to a conventional src directoryDavid Robillard23-6996/+0
I think this attempt to be optionally header-only was misguided, particularly installing source code to the system include path. Typically anyone vendoring code just includes the repository and builds from there anyway. This commit moves all the implementation code to a typical src directory (Don't Be Weird). I still think there is some value in simple "inline" deployment, but that would be better achieved another way, like producing a single-file amalgamation that builds anywhere, ala sqlite.