aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)AuthorFilesLines
2020-12-01Enable test coverage in debug buildsDavid Robillard1-0/+5
2020-12-01Make puglShow() realize automatically on Windows and MacOSDavid Robillard2-0/+14
2020-11-26Build documentation on CIDavid Robillard2-41/+16
2020-11-26Generate documentation with SphinxDavid Robillard23-3547/+2196
2020-11-26Update autowafDavid Robillard1-0/+0
2020-11-26Use named groups to group documentationDavid Robillard2-17/+15
We'll need identifiers for these to refer to them in the Sphinx documentation.
2020-11-26Remove top-level documentation groupDavid Robillard2-8/+1
This will not be used in Sphinx.
2020-11-26Add missing documentation for pugl::Event fieldsDavid Robillard1-0/+2
2020-11-26Document PUGL_CHECK_CONSTRUCTIONDavid Robillard1-0/+11
2020-11-26Use consistent spelling in documentationDavid Robillard1-4/+4
2020-11-26Remove file documentationDavid Robillard40-224/+49
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-26Add pugl::World constructor overload that takes a flagDavid Robillard2-4/+10
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 Robillard3-121/+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-25Simplify and minify icon SVGDavid Robillard1-83/+9
The old version had some weird Inkscape stuff in it that couldn't be displayed by Firefox, or presumably other generic renderers.
2020-11-25Rename puglShowWindow and puglHideWindow to puglShow an puglHideDavid Robillard20-31/+49
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 Robillard7-42/+69
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 Robillard8-17/+24
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 Robillard5-0/+19
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-22X11: Fix position of child windows and clean up window creation codeDavid Robillard1-50/+68
This fixes an issue where the default frame position would be set based on the screen size for child windows. This went unnoticed so far because most plugins, like pugl_embed_demo, explicitly set the frame and so avoided this code path. Also generally tidy up puglRealize() along the way to make it a bit more readable.
2020-11-10Fix asan errors on X11David Robillard1-12/+10
Fun with union punning. The different sizes mean that stuff on the stack could be copied to the destination event. I don't think this would cause a concrete issue (the contents of the event past the expose are irrelevant) but asan quite reasonably has a problem with it.
2020-11-01Add missing returnDavid Robillard1-0/+1
2020-11-01Cleanup: Fix typoDavid Robillard1-1/+1
2020-11-01Run clang-tidy on all headers and fix various issuesDavid Robillard10-10/+30
It's a nightmare trying to get this thing to check everything.
2020-11-01Make event handling in C++ more flexibleDavid Robillard4-141/+225
2020-11-01Reorder methods in C++ bindings to match C header groupsDavid Robillard1-6/+6
2020-11-01Add missing documentation for VulkanDavid Robillard1-1/+5
2020-10-31Use static polymorphism in C++ bindingsDavid Robillard6-290/+135
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-31Make use of exceptions optionalDavid Robillard2-17/+39
2020-10-31Make most methods noexceptDavid Robillard1-34/+46
2020-10-31Remove use of cassert and type_traitsDavid Robillard1-39/+27
Losing assertions is unfortunate, but these slow down compile times, and in this case the scope of error is small enough that the risk is minimal.
2020-10-31Use a custom exception type for failed constructionDavid Robillard2-4/+24
This avoids an include of <exception>, which is slow, and is better practice anyway.
2020-10-31Remove pugl::ClockDavid Robillard1-46/+0
This is nice, but it bloats the header quite a bit for something that may not be used and requires the C++ standard library.
2020-10-31Remove use of std::unique_ptrDavid Robillard1-13/+17
Although it's generally a good idea to use known-solid std classes, in this case the wrapper is very simple so it's not worth including <memory>.
2020-10-31Cleanup: Remove unnecessary includeDavid Robillard1-1/+0
2020-10-31Cleanup: Remove unnecessary namespace qualificationsDavid Robillard2-27/+27
2020-10-31Fix Cairo build on Mac and WindowsDavid Robillard2-2/+2
2020-10-30Remove logging APIDavid Robillard6-129/+5
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 Robillard10-16/+16
2020-10-30Simplify header namesDavid Robillard39-78/+78
2020-10-30Remove GL and GLU wrapper headersDavid Robillard8-89/+30
Include them in pugl_gl.h instead, to simplify things and unclutter the include directory.
2020-10-30Make C++ bindings a separate packageDavid Robillard3-9/+40
2020-10-30Move C++ bindings to a separate directoryDavid Robillard9-4/+12
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 Robillard24-79/+85
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.
2020-10-28Add Vulkan demosDavid Robillard6-0/+5421
2020-10-26Add Vulkan backendsDavid Robillard8-3/+839
2020-10-26Add missing includeDavid Robillard1-0/+1
2020-10-26Don't send expose events when window is minimizedDavid Robillard1-1/+5
2020-10-24Replace live resize with loop eventsDavid Robillard9-32/+90
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.
2020-10-24Remove unused Doxygen configuration keysDavid Robillard1-40/+0
These are relatively new and cause warnings on older systems.