48 { 0x0000, 0x001F,
true },
49 { 0x0061, 0x0078,
false},
50 { 0x008F, 0x009F,
true },
51 { 0xE000, 0xF8FF,
true }
85 std::exception_ptr eptr;
88 bool initOK = ctx && ctx->
isValid();
91 if( l->init(self, when) ) {
100 ::glViewport(viewport.
x(), viewport.
y(), viewport.
width(), viewport.
height());
101 l->reshape(self, viewport, when);
104 l->display(self, when);
106 }
catch (
const std::exception &e) {
107 eptr = std::current_exception();
110 eptr = std::current_exception();
116 m_render_listener.erase_if(
false,
117 [l](
const RenderListenerRef& a)
noexcept ->
bool {
return a.get() == l.get(); } );
118 l2->dispose(self, when);
119 }
catch (
const std::exception &e) {
124 WARN_PRINT(
"Removed listener (sz %zu)", m_render_listener.size());
133 l->dispose(self, when);
136 }
catch (std::exception &err) {
137 ERR_PRINT(
"Window::display: %s: Caught exception %s",
toString().c_str(), err.what());
140 if( clearRenderListener ) {
141 m_render_listener.clear(
true);
146 std::string res =
"Window[";
149 .append(
", bounds ").append(m_window_bounds.toString())
150 .append(
", listener[render ").append(std::to_string(m_render_listener.size()))
constexpr NonPrintableRange(uint16_t min_, uint16_t max_, bool inclKeyChar_) noexcept
bool inclKeyChar
true if valid for keyChar values as well, otherwise only valid for keyCode and keySym due to collisio...
constexpr bool isValid() const noexcept
const gamp::render::RenderContext * renderContext() const noexcept
std::string toString() const noexcept
constexpr const Vec2i & surfaceSize() const noexcept
Returns the surface size of the client area excluding insets (window decorations) in pixel units.
void display(const jau::fraction_timespec &when) noexcept
size_t windowListenerCount() const noexcept
std::string toString() const noexcept
size_t keyListenerCount() const noexcept
void disposeRenderListener(bool clearRenderListener, const jau::fraction_timespec &when) noexcept
constexpr value_type y() const noexcept
constexpr value_type height() const noexcept
constexpr value_type x() const noexcept
constexpr value_type width() const noexcept
#define ERR_PRINT(...)
Use for unconditional error messages, prefix '[elapsed_time] Error @ FILE:LINE FUNC: '.
#define ERR_PRINT2(...)
Use for unconditional error messages, prefix '[elapsed_time] Error @ FILE:LINE FUNC: '.
#define WARN_PRINT(...)
Use for unconditional warning messages, prefix '[elapsed_time] Warning @ FILE:LINE FUNC: '.
static constexpr NonPrintableRange nonPrintableKeys[]
Non printable key ranges, currently fixed to an array of size 4.
constexpr bool is_set(const E mask, const E bits) noexcept
constexpr E & write(E &store, const E bits, bool set) noexcept
If set==true, sets the bits in store, i.e.
VKeyCode
Virtual key code following UTF16 specification.
bool isPrintableKey(uint16_t uniChar, bool isKeyChar) noexcept
Returns true if given uniChar represents a printable character, i.e.
std::shared_ptr< RenderListener > RenderListenerRef
std::shared_ptr< Window > WindowRef
@ none
Alias for VK_UNDEFINED.
@ VK_BACK_SPACE
Constant for the BACK SPACE key "\b"u, matching ASCII.
@ VK_ENTER
Constant for the ENTER keyu, i.e.
@ VK_TAB
Constant for the HORIZ TAB key "\t"u, matching ASCII.
constexpr Vector2F< T > max(const Vector2F< T > &lhs, const Vector2F< T > &rhs) noexcept
constexpr Vector2F< T > min(const Vector2F< T > &lhs, const Vector2F< T > &rhs) noexcept
std::string to_string(const math_error_t v) noexcept
Returns std::string representation of math_error_t.
std::string to_hexstring(value_type const &v, const bool skipLeading0x=false) noexcept
Produce a lower-case hexadecimal string representation with leading 0x in MSB of the given pointer.
__pack(...): Produces MSVC, clang and gcc compatible lead-in and -out macros.
Timespec structure using int64_t for its components in analogy to struct timespec_t on 64-bit platfor...