diff options
author | David Robillard <d@drobilla.net> | 2019-10-27 13:18:57 +0100 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2019-11-03 21:03:18 +0100 |
commit | c75c10d2385aaa1bbf7d8f5ae437ccd5d1e3803f (patch) | |
tree | 9dace3da383ca1edcc01118f8447f17b0eb52395 | |
parent | 3c9a8a2ed86d08da842e11d32065da43b5bfdc77 (diff) |
Expose functional stub backend
-rw-r--r-- | pugl/detail/mac.m | 15 | ||||
-rw-r--r-- | pugl/detail/win.c | 38 | ||||
-rw-r--r-- | pugl/detail/x11.c | 15 | ||||
-rw-r--r-- | pugl/pugl_stub_backend.h | 12 |
4 files changed, 79 insertions, 1 deletions
diff --git a/pugl/detail/mac.m b/pugl/detail/mac.m index c9847eb..e8a5d57 100644 --- a/pugl/detail/mac.m +++ b/pugl/detail/mac.m @@ -24,6 +24,7 @@ #include "pugl/detail/implementation.h" #include "pugl/detail/mac.h" #include "pugl/pugl.h" +#include "pugl/pugl_stub_backend.h" #import <Cocoa/Cocoa.h> @@ -1071,3 +1072,17 @@ puglSetClipboard(PuglView* const view, return PUGL_SUCCESS; } + +const PuglBackend* +puglStubBackend(void) +{ + static const PuglBackend backend = {puglStubConfigure, + puglStubCreate, + puglStubDestroy, + puglStubEnter, + puglStubLeave, + puglStubResize, + puglStubGetContext}; + + return &backend; +} diff --git a/pugl/detail/win.c b/pugl/detail/win.c index 408e7ba..b9004b2 100644 --- a/pugl/detail/win.c +++ b/pugl/detail/win.c @@ -21,6 +21,7 @@ #include "pugl/detail/implementation.h" #include "pugl/detail/win.h" #include "pugl/pugl.h" +#include "pugl/pugl_stub_backend.h" #include <windows.h> #include <windowsx.h> @@ -927,3 +928,40 @@ puglSetClipboard(PuglView* const view, CloseClipboard(); return PUGL_SUCCESS; } + +static PuglStatus +puglWinStubEnter(PuglView* view, bool drawing) +{ + if (drawing) { + PAINTSTRUCT ps; + BeginPaint(view->impl->hwnd, &ps); + } + + return PUGL_SUCCESS; +} + +static PuglStatus +puglWinStubLeave(PuglView* view, bool drawing) +{ + if (drawing) { + PAINTSTRUCT ps; + EndPaint(view->impl->hwnd, &ps); + SwapBuffers(view->impl->hdc); + } + + return PUGL_SUCCESS; +} + +const PuglBackend* +puglStubBackend(void) +{ + static const PuglBackend backend = {puglWinStubConfigure, + puglStubCreate, + puglStubDestroy, + puglWinStubEnter, + puglWinStubLeave, + puglStubResize, + puglStubGetContext}; + + return &backend; +} diff --git a/pugl/detail/x11.c b/pugl/detail/x11.c index 7bf5223..fd47db3 100644 --- a/pugl/detail/x11.c +++ b/pugl/detail/x11.c @@ -26,6 +26,7 @@ #include "pugl/detail/types.h" #include "pugl/detail/x11.h" #include "pugl/pugl.h" +#include "pugl/pugl_stub_backend.h" #include <X11/X.h> #include <X11/Xatom.h> @@ -908,3 +909,17 @@ puglSetClipboard(PuglView* const view, XSetSelectionOwner(impl->display, atoms->CLIPBOARD, impl->win, CurrentTime); return PUGL_SUCCESS; } + +const PuglBackend* +puglStubBackend(void) +{ + static const PuglBackend backend = {puglX11StubConfigure, + puglStubCreate, + puglStubDestroy, + puglStubEnter, + puglStubLeave, + puglStubResize, + puglStubGetContext}; + + return &backend; +} diff --git a/pugl/pugl_stub_backend.h b/pugl/pugl_stub_backend.h index 27a961b..7de6e14 100644 --- a/pugl/pugl_stub_backend.h +++ b/pugl/pugl_stub_backend.h @@ -15,7 +15,7 @@ */ /** - @file pugl_stub_backend.h Stub backend functions. + @file pugl_stub_backend.h Stub backend functions and accessor declaration. */ #ifndef PUGL_STUB_BACKEND_H @@ -28,6 +28,16 @@ extern "C" { #endif /** + Stub graphics backend. + + This backend just creates a simple native window without setting up any + portable graphics API. +*/ +PUGL_API +const PuglBackend* +puglStubBackend(void); + +/** @name Stub backend functions Implementations of stub backend functions which do nothing and always return |