From 1c8c6c1a5e3c34a509b903b1102e5d56781bf1e2 Mon Sep 17 00:00:00 2001 From: Apprentice-Alchemist <53486764+Apprentice-Alchemist@users.noreply.github.com> Date: Thu, 4 Aug 2022 22:00:49 +0200 Subject: [PATCH 01/15] Implement window transparency. --- project/include/ui/Window.h | 2 ++ project/src/ExternalInterface.cpp | 26 +++++++++++++++++++ project/src/backend/sdl/SDLWindow.cpp | 11 ++++++++ project/src/backend/sdl/SDLWindow.h | 3 ++- .../_internal/backend/flash/FlashWindow.hx | 7 +++++ .../_internal/backend/html5/HTML5Window.hx | 4 +++ .../_internal/backend/native/NativeCFFI.hx | 15 +++++++++++ .../_internal/backend/native/NativeWindow.hx | 21 +++++++++++++++ src/lime/ui/Window.hx | 8 ++++++ 9 files changed, 96 insertions(+), 1 deletion(-) diff --git a/project/include/ui/Window.h b/project/include/ui/Window.h index 81e454f10..92daa4224 100644 --- a/project/include/ui/Window.h +++ b/project/include/ui/Window.h @@ -60,6 +60,8 @@ namespace lime { virtual void SetTextInputRect (Rectangle *rect) = 0; virtual const char* SetTitle (const char* title) = 0; virtual void WarpMouse (int x, int y) = 0; + virtual float GetOpacity(); + virtual void SetOpacity(float opacity); Application* currentApplication; int flags; diff --git a/project/src/ExternalInterface.cpp b/project/src/ExternalInterface.cpp index 08195e7eb..1944301c9 100644 --- a/project/src/ExternalInterface.cpp +++ b/project/src/ExternalInterface.cpp @@ -3744,6 +3744,28 @@ namespace lime { } + double lime_window_get_opacity (value window) { + Window* targetWindow = (Window*)val_data (window); + return (float)targetWindow->GetOpacity (); + } + + + HL_PRIM double HL_NAME(hl_window_get_opacity) (HL_CFFIPointer* window) { + Window* targetWindow = (Window*)window->ptr; + return (float)targetWindow->GetOpacity (); + } + + void lime_window_set_opacity (value window, double opacity) { + Window* targetWindow = (Window*)val_data (window); + targetWindow->SetOpacity((float)opacity); + } + + + HL_PRIM void HL_NAME(hl_window_set_opacity) (HL_CFFIPointer* window, double opacity) { + Window* targetWindow = (Window*)window->ptr; + targetWindow->SetOpacity ((float)opacity); + } + value lime_zlib_compress (value buffer, value bytes) { @@ -3951,6 +3973,8 @@ namespace lime { DEFINE_PRIME2v (lime_window_set_text_input_rect); DEFINE_PRIME2 (lime_window_set_title); DEFINE_PRIME3v (lime_window_warp_mouse); + DEFINE_PRIME1 (lime_window_get_opacity); + DEFINE_PRIME2v (lime_window_set_opacity); DEFINE_PRIME2 (lime_zlib_compress); DEFINE_PRIME2 (lime_zlib_decompress); @@ -4135,6 +4159,8 @@ namespace lime { DEFINE_HL_PRIM (_VOID, hl_window_set_text_input_rect, _TCFFIPOINTER _TRECTANGLE); DEFINE_HL_PRIM (_STRING, hl_window_set_title, _TCFFIPOINTER _STRING); DEFINE_HL_PRIM (_VOID, hl_window_warp_mouse, _TCFFIPOINTER _I32 _I32); + DEFINE_HL_PRIM (_F64, hl_window_get_opacity, _TCFFIPOINTER); + DEFINE_HL_PRIM (_VOID, hl_window_set_opacity, _TCFFIPOINTER _F64); DEFINE_HL_PRIM (_TBYTES, hl_zlib_compress, _TBYTES _TBYTES); DEFINE_HL_PRIM (_TBYTES, hl_zlib_decompress, _TBYTES _TBYTES); diff --git a/project/src/backend/sdl/SDLWindow.cpp b/project/src/backend/sdl/SDLWindow.cpp index 2c54ec997..92c3017c3 100644 --- a/project/src/backend/sdl/SDLWindow.cpp +++ b/project/src/backend/sdl/SDLWindow.cpp @@ -1082,6 +1082,17 @@ namespace lime { } + float SDLWindow::GetOpacity() { + float opacity = 1.0; + if(SDL_GetWindowOpacity(sdlWindow, &opacity) != 0) { + return 1.0; + } + return opacity; + } + + void SDLWindow::SetOpacity(float opacity) { + SDL_SetWindowOpacity(sdlWindow, opacity); + } Window* CreateWindow (Application* application, int width, int height, int flags, const char* title) { diff --git a/project/src/backend/sdl/SDLWindow.h b/project/src/backend/sdl/SDLWindow.h index c3769ef18..2bc707a3d 100644 --- a/project/src/backend/sdl/SDLWindow.h +++ b/project/src/backend/sdl/SDLWindow.h @@ -54,7 +54,8 @@ namespace lime { virtual void SetTextInputRect (Rectangle *rect); virtual const char* SetTitle (const char* title); virtual void WarpMouse (int x, int y); - + virtual float GetOpacity(); + virtual void SetOpacity(float opacity); SDL_Renderer* sdlRenderer; SDL_Texture* sdlTexture; SDL_Window* sdlWindow; diff --git a/src/lime/_internal/backend/flash/FlashWindow.hx b/src/lime/_internal/backend/flash/FlashWindow.hx index f61fe3d73..0e5f233ad 100644 --- a/src/lime/_internal/backend/flash/FlashWindow.hx +++ b/src/lime/_internal/backend/flash/FlashWindow.hx @@ -634,4 +634,11 @@ class FlashWindow } public function warpMouse(x:Int, y:Int):Void {} + + public function getOpacity():Float + { + return 1.0; + } + + public function setOpacity(value:Float):Void {} } diff --git a/src/lime/_internal/backend/html5/HTML5Window.hx b/src/lime/_internal/backend/html5/HTML5Window.hx index c938bd193..e9d33454e 100644 --- a/src/lime/_internal/backend/html5/HTML5Window.hx +++ b/src/lime/_internal/backend/html5/HTML5Window.hx @@ -1291,4 +1291,8 @@ class HTML5Window } public function warpMouse(x:Int, y:Int):Void {} + + public function getOpacity():Float { return 1.0; } + + public function setOpacity(value:Float):Void {} } diff --git a/src/lime/_internal/backend/native/NativeCFFI.hx b/src/lime/_internal/backend/native/NativeCFFI.hx index a3da6319b..ba9e80f5b 100644 --- a/src/lime/_internal/backend/native/NativeCFFI.hx +++ b/src/lime/_internal/backend/native/NativeCFFI.hx @@ -347,6 +347,10 @@ class NativeCFFI @:cffi private static function lime_window_warp_mouse(handle:Dynamic, x:Int, y:Int):Void; + @:cffi private static function lime_window_get_opacity(handle:Dynamic):Float; + + @:cffi private static function lime_window_set_opacity(handle:Dynamic, value:Float):Void; + @:cffi private static function lime_window_event_manager_register(callback:Dynamic, eventObject:Dynamic):Void; @:cffi private static function lime_zlib_compress(data:Dynamic, bytes:Dynamic):Dynamic; @@ -601,6 +605,11 @@ class NativeCFFI false)); private static var lime_window_warp_mouse = new cpp.CallableInt->Int->cpp.Object>(cpp.Prime._loadPrime("lime", "lime_window_warp_mouse", "oiiv", false)); + private static var lime_window_get_opacity = new cpp.CallableFloat>(cpp.Prime._loadPrime("lime", "lime_window_get_opacity", "od", false)); + private static var lime_window_set_opacity = new cpp.CallableFloat->cpp.Void>(cpp.Prime._loadPrime("lime", "lime_window_set_opacity", "odv", + false)); + + private static var lime_window_set_opacity(handle:Dynamic, value:Float):Void; private static var lime_window_event_manager_register = new cpp.Callablecpp.Object->cpp.Void>(cpp.Prime._loadPrime("lime", "lime_window_event_manager_register", "oov", false)); private static var lime_zlib_compress = new cpp.Callablecpp.Object->cpp.Object>(cpp.Prime._loadPrime("lime", "lime_zlib_compress", "ooo", @@ -754,6 +763,8 @@ class NativeCFFI private static var lime_window_set_text_input_rect = CFFI.load("lime", "lime_window_set_text_input_rect", 2); private static var lime_window_set_title = CFFI.load("lime", "lime_window_set_title", 2); private static var lime_window_warp_mouse = CFFI.load("lime", "lime_window_warp_mouse", 3); + private static var lime_window_get_opacity = CFFI.load("lime", "lime_window_get_opacity", 1); + private static var lime_window_set_opacity = CFFI.load("lime", "lime_window_set_opacity", 2); private static var lime_window_event_manager_register = CFFI.load("lime", "lime_window_event_manager_register", 2); private static var lime_zlib_compress = CFFI.load("lime", "lime_zlib_compress", 2); private static var lime_zlib_decompress = CFFI.load("lime", "lime_zlib_decompress", 2); @@ -1357,6 +1368,10 @@ class NativeCFFI @:hlNative("lime", "hl_window_warp_mouse") private static function lime_window_warp_mouse(handle:CFFIPointer, x:Int, y:Int):Void {} + @:hlNative("lime", "hl_window_get_opacity") private static function lime_window_get_opacity(handle:CFFIPointer):Float; + + @:hlNative("lime", "hl_window_set_opacity") private static function lime_window_set_opacity(handle:CFFIPointer, value:Float):Void; + @:hlNative("lime", "hl_window_event_manager_register") private static function lime_window_event_manager_register(callback:Void->Void, eventObject:WindowEventInfo):Void {} diff --git a/src/lime/_internal/backend/native/NativeWindow.hx b/src/lime/_internal/backend/native/NativeWindow.hx index 15a01b05c..4c73c5359 100644 --- a/src/lime/_internal/backend/native/NativeWindow.hx +++ b/src/lime/_internal/backend/native/NativeWindow.hx @@ -663,6 +663,27 @@ class NativeWindow NativeCFFI.lime_window_warp_mouse(handle, x, y); #end } + + public function getOpacity():Float + { + if (handle != null) + { + #if (!macro && lime_cffi) + return NativeCFFI.lime_window_get_opacity(handle); + #end + } + return 1.0; + } + + public function setOpacity(value:Float):Void + { + if (handle != null) + { + #if (!macro && lime_cffi) + NativeCFFI.lime_window_set_opacity(handle, value); + #end + } + } } @:enum private abstract MouseCursorType(Int) from Int to Int diff --git a/src/lime/ui/Window.hx b/src/lime/ui/Window.hx index 1cdc8dd73..ae4faf0e4 100644 --- a/src/lime/ui/Window.hx +++ b/src/lime/ui/Window.hx @@ -413,6 +413,14 @@ class Window __backend.warpMouse(x, y); } + public function getOpacity():Float { + return __backend.getOpacity(); + } + + public function setOpacity(opacity:Float):Void { + __backend.setOpacity(opacity); + } + // Get & Set Methods @:noCompletion private function get_cursor():MouseCursor { From 86a7b4e13630dccce6a37e9f6c3980a1a6a3d63a Mon Sep 17 00:00:00 2001 From: Apprentice-Alchemist <53486764+Apprentice-Alchemist@users.noreply.github.com> Date: Fri, 5 Aug 2022 13:29:34 +0200 Subject: [PATCH 02/15] C++ is strange. --- project/include/ui/Window.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/project/include/ui/Window.h b/project/include/ui/Window.h index 92daa4224..5b0f13eb4 100644 --- a/project/include/ui/Window.h +++ b/project/include/ui/Window.h @@ -60,8 +60,8 @@ namespace lime { virtual void SetTextInputRect (Rectangle *rect) = 0; virtual const char* SetTitle (const char* title) = 0; virtual void WarpMouse (int x, int y) = 0; - virtual float GetOpacity(); - virtual void SetOpacity(float opacity); + virtual float GetOpacity() = 0; + virtual void SetOpacity(float opacity) = 0; Application* currentApplication; int flags; From 57ef1223bcc206bb40076b43e97bfc6667d1eb49 Mon Sep 17 00:00:00 2001 From: Apprentice-Alchemist <53486764+Apprentice-Alchemist@users.noreply.github.com> Date: Fri, 5 Aug 2022 13:35:27 +0200 Subject: [PATCH 03/15] Fix typo. --- src/lime/_internal/backend/native/NativeCFFI.hx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/lime/_internal/backend/native/NativeCFFI.hx b/src/lime/_internal/backend/native/NativeCFFI.hx index ba9e80f5b..5b32f812a 100644 --- a/src/lime/_internal/backend/native/NativeCFFI.hx +++ b/src/lime/_internal/backend/native/NativeCFFI.hx @@ -609,7 +609,6 @@ class NativeCFFI private static var lime_window_set_opacity = new cpp.CallableFloat->cpp.Void>(cpp.Prime._loadPrime("lime", "lime_window_set_opacity", "odv", false)); - private static var lime_window_set_opacity(handle:Dynamic, value:Float):Void; private static var lime_window_event_manager_register = new cpp.Callablecpp.Object->cpp.Void>(cpp.Prime._loadPrime("lime", "lime_window_event_manager_register", "oov", false)); private static var lime_zlib_compress = new cpp.Callablecpp.Object->cpp.Object>(cpp.Prime._loadPrime("lime", "lime_zlib_compress", "ooo", From 399c1a3ba7af55a5785fe84bccdac9d0ce5286e9 Mon Sep 17 00:00:00 2001 From: Apprentice-Alchemist <53486764+Apprentice-Alchemist@users.noreply.github.com> Date: Fri, 5 Aug 2022 15:54:00 +0200 Subject: [PATCH 04/15] Missing function bodies. --- src/lime/_internal/backend/native/NativeCFFI.hx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lime/_internal/backend/native/NativeCFFI.hx b/src/lime/_internal/backend/native/NativeCFFI.hx index 5b32f812a..0ea1251fa 100644 --- a/src/lime/_internal/backend/native/NativeCFFI.hx +++ b/src/lime/_internal/backend/native/NativeCFFI.hx @@ -1367,9 +1367,9 @@ class NativeCFFI @:hlNative("lime", "hl_window_warp_mouse") private static function lime_window_warp_mouse(handle:CFFIPointer, x:Int, y:Int):Void {} - @:hlNative("lime", "hl_window_get_opacity") private static function lime_window_get_opacity(handle:CFFIPointer):Float; + @:hlNative("lime", "hl_window_get_opacity") private static function lime_window_get_opacity(handle:CFFIPointer):Float { return 0.0; } - @:hlNative("lime", "hl_window_set_opacity") private static function lime_window_set_opacity(handle:CFFIPointer, value:Float):Void; + @:hlNative("lime", "hl_window_set_opacity") private static function lime_window_set_opacity(handle:CFFIPointer, value:Float):Void {} @:hlNative("lime", "hl_window_event_manager_register") private static function lime_window_event_manager_register(callback:Void->Void, eventObject:WindowEventInfo):Void {} From 2e92df9b8955f3d7f092be06e061d78c1a2715f8 Mon Sep 17 00:00:00 2001 From: player-03 Date: Fri, 12 Aug 2022 11:53:59 -0400 Subject: [PATCH 05/15] Standardize formatting --- project/src/ExternalInterface.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/project/src/ExternalInterface.cpp b/project/src/ExternalInterface.cpp index 1944301c9..1bffe05bc 100644 --- a/project/src/ExternalInterface.cpp +++ b/project/src/ExternalInterface.cpp @@ -3744,26 +3744,36 @@ namespace lime { } + double lime_window_get_opacity (value window) { + Window* targetWindow = (Window*)val_data (window); return (float)targetWindow->GetOpacity (); + } HL_PRIM double HL_NAME(hl_window_get_opacity) (HL_CFFIPointer* window) { + Window* targetWindow = (Window*)window->ptr; return (float)targetWindow->GetOpacity (); + } + void lime_window_set_opacity (value window, double opacity) { + Window* targetWindow = (Window*)val_data (window); - targetWindow->SetOpacity((float)opacity); + targetWindow->SetOpacity ((float)opacity); + } HL_PRIM void HL_NAME(hl_window_set_opacity) (HL_CFFIPointer* window, double opacity) { + Window* targetWindow = (Window*)window->ptr; targetWindow->SetOpacity ((float)opacity); + } From efcbc622bd35d252f4878ec93155f4b339032892 Mon Sep 17 00:00:00 2001 From: player-03 Date: Fri, 12 Aug 2022 11:55:19 -0400 Subject: [PATCH 06/15] Change spaces to tabs Missed this one the first time. --- project/src/ExternalInterface.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project/src/ExternalInterface.cpp b/project/src/ExternalInterface.cpp index 1bffe05bc..006723fa2 100644 --- a/project/src/ExternalInterface.cpp +++ b/project/src/ExternalInterface.cpp @@ -3766,7 +3766,7 @@ namespace lime { Window* targetWindow = (Window*)val_data (window); targetWindow->SetOpacity ((float)opacity); - } + } HL_PRIM void HL_NAME(hl_window_set_opacity) (HL_CFFIPointer* window, double opacity) { From a3f54aa1d5d6f19fa4148288a2e621c730b76031 Mon Sep 17 00:00:00 2001 From: player-03 Date: Fri, 12 Aug 2022 11:57:07 -0400 Subject: [PATCH 07/15] Sort function declarations. --- project/include/ui/Window.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/project/include/ui/Window.h b/project/include/ui/Window.h index 5b0f13eb4..11b76622f 100644 --- a/project/include/ui/Window.h +++ b/project/include/ui/Window.h @@ -39,6 +39,7 @@ namespace lime { virtual int GetHeight () = 0; virtual uint32_t GetID () = 0; virtual bool GetMouseLock () = 0; + virtual float GetOpacity () = 0; virtual double GetScale () = 0; virtual bool GetTextInputEnabled () = 0; virtual int GetWidth () = 0; @@ -55,13 +56,12 @@ namespace lime { virtual bool SetMaximized (bool minimized) = 0; virtual bool SetMinimized (bool minimized) = 0; virtual void SetMouseLock (bool mouseLock) = 0; + virtual void SetOpacity (float opacity) = 0; virtual bool SetResizable (bool resizable) = 0; virtual void SetTextInputEnabled (bool enable) = 0; virtual void SetTextInputRect (Rectangle *rect) = 0; virtual const char* SetTitle (const char* title) = 0; virtual void WarpMouse (int x, int y) = 0; - virtual float GetOpacity() = 0; - virtual void SetOpacity(float opacity) = 0; Application* currentApplication; int flags; From af05054ce5b7a1e9e8f60780213a6bc3491ebd20 Mon Sep 17 00:00:00 2001 From: player-03 Date: Fri, 12 Aug 2022 11:59:28 -0400 Subject: [PATCH 08/15] Sort function definitions. --- project/src/ExternalInterface.cpp | 64 +++++++++++++++---------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/project/src/ExternalInterface.cpp b/project/src/ExternalInterface.cpp index 006723fa2..627965521 100644 --- a/project/src/ExternalInterface.cpp +++ b/project/src/ExternalInterface.cpp @@ -3350,6 +3350,22 @@ namespace lime { } + double lime_window_get_opacity (value window) { + + Window* targetWindow = (Window*)val_data (window); + return (float)targetWindow->GetOpacity (); + + } + + + HL_PRIM double HL_NAME(hl_window_get_opacity) (HL_CFFIPointer* window) { + + Window* targetWindow = (Window*)window->ptr; + return (float)targetWindow->GetOpacity (); + + } + + double lime_window_get_scale (value window) { Window* targetWindow = (Window*)val_data (window); @@ -3636,6 +3652,22 @@ namespace lime { } + void lime_window_set_opacity (value window, double opacity) { + + Window* targetWindow = (Window*)val_data (window); + targetWindow->SetOpacity ((float)opacity); + + } + + + HL_PRIM void HL_NAME(hl_window_set_opacity) (HL_CFFIPointer* window, double opacity) { + + Window* targetWindow = (Window*)window->ptr; + targetWindow->SetOpacity ((float)opacity); + + } + + bool lime_window_set_resizable (value window, bool resizable) { Window* targetWindow = (Window*)val_data (window); @@ -3745,38 +3777,6 @@ namespace lime { } - double lime_window_get_opacity (value window) { - - Window* targetWindow = (Window*)val_data (window); - return (float)targetWindow->GetOpacity (); - - } - - - HL_PRIM double HL_NAME(hl_window_get_opacity) (HL_CFFIPointer* window) { - - Window* targetWindow = (Window*)window->ptr; - return (float)targetWindow->GetOpacity (); - - } - - - void lime_window_set_opacity (value window, double opacity) { - - Window* targetWindow = (Window*)val_data (window); - targetWindow->SetOpacity ((float)opacity); - - } - - - HL_PRIM void HL_NAME(hl_window_set_opacity) (HL_CFFIPointer* window, double opacity) { - - Window* targetWindow = (Window*)window->ptr; - targetWindow->SetOpacity ((float)opacity); - - } - - value lime_zlib_compress (value buffer, value bytes) { #ifdef LIME_ZLIB From 42e345061429abe1c7e74d523b25659fe6859bb8 Mon Sep 17 00:00:00 2001 From: player-03 Date: Fri, 12 Aug 2022 12:16:26 -0400 Subject: [PATCH 09/15] Sort functions and standardize formatting. The new version no longer checks the return code of `SDL_GetWindowOpacity`, for consistency with the other getters. In theory this should be fine, because the only documented error condition is if the window is invalid, at which point none of the getters matter. If the platform doesn't support transparency, "opacity will be reported as 1.0f without error." --- project/src/backend/sdl/SDLWindow.cpp | 36 +++++++++++++++------------ 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/project/src/backend/sdl/SDLWindow.cpp b/project/src/backend/sdl/SDLWindow.cpp index 92c3017c3..6709ca036 100644 --- a/project/src/backend/sdl/SDLWindow.cpp +++ b/project/src/backend/sdl/SDLWindow.cpp @@ -496,9 +496,6 @@ namespace lime { } - - - const char* SDLWindow::GetContextType () { if (context) { @@ -592,6 +589,17 @@ namespace lime { } + float SDLWindow::GetOpacity () { + + float opacity = 1.0f; + + SDL_GetWindowOpacity (sdlWindow, &opacity); + + return opacity; + + } + + double SDLWindow::GetScale () { if (sdlRenderer) { @@ -1010,6 +1018,13 @@ namespace lime { } + void SDLWindow::SetOpacity (float opacity) { + + SDL_SetWindowOpacity (sdlWindow, opacity); + + } + + bool SDLWindow::SetResizable (bool resizable) { #ifndef EMSCRIPTEN @@ -1076,23 +1091,12 @@ namespace lime { } - void SDLWindow::WarpMouse (int x, int y){ + void SDLWindow::WarpMouse (int x, int y) { SDL_WarpMouseInWindow (sdlWindow, x, y); } - float SDLWindow::GetOpacity() { - float opacity = 1.0; - if(SDL_GetWindowOpacity(sdlWindow, &opacity) != 0) { - return 1.0; - } - return opacity; - } - - void SDLWindow::SetOpacity(float opacity) { - SDL_SetWindowOpacity(sdlWindow, opacity); - } Window* CreateWindow (Application* application, int width, int height, int flags, const char* title) { @@ -1101,4 +1105,4 @@ namespace lime { } -} \ No newline at end of file +} From f69c5a5d5c3d9028e7d6bb42eeb04dda935716fc Mon Sep 17 00:00:00 2001 From: player-03 Date: Fri, 12 Aug 2022 12:17:30 -0400 Subject: [PATCH 10/15] Sort function declarations. --- project/src/backend/sdl/SDLWindow.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/project/src/backend/sdl/SDLWindow.h b/project/src/backend/sdl/SDLWindow.h index 2bc707a3d..e047076c2 100644 --- a/project/src/backend/sdl/SDLWindow.h +++ b/project/src/backend/sdl/SDLWindow.h @@ -33,6 +33,7 @@ namespace lime { virtual int GetHeight (); virtual uint32_t GetID (); virtual bool GetMouseLock (); + virtual float GetOpacity (); virtual double GetScale (); virtual bool GetTextInputEnabled (); virtual int GetWidth (); @@ -49,13 +50,12 @@ namespace lime { virtual bool SetMaximized (bool maximized); virtual bool SetMinimized (bool minimized); virtual void SetMouseLock (bool mouseLock); + virtual void SetOpacity (float opacity); virtual bool SetResizable (bool resizable); virtual void SetTextInputEnabled (bool enabled); virtual void SetTextInputRect (Rectangle *rect); virtual const char* SetTitle (const char* title); virtual void WarpMouse (int x, int y); - virtual float GetOpacity(); - virtual void SetOpacity(float opacity); SDL_Renderer* sdlRenderer; SDL_Texture* sdlTexture; SDL_Window* sdlWindow; @@ -72,4 +72,4 @@ namespace lime { } -#endif \ No newline at end of file +#endif From 7b06d6a38a4f9b91e0ef3706ae4848d7367334c4 Mon Sep 17 00:00:00 2001 From: player-03 Date: Fri, 12 Aug 2022 12:19:38 -0400 Subject: [PATCH 11/15] Sort functions. --- src/lime/_internal/backend/flash/FlashWindow.hx | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/lime/_internal/backend/flash/FlashWindow.hx b/src/lime/_internal/backend/flash/FlashWindow.hx index 0e5f233ad..ca155992a 100644 --- a/src/lime/_internal/backend/flash/FlashWindow.hx +++ b/src/lime/_internal/backend/flash/FlashWindow.hx @@ -572,6 +572,11 @@ class FlashWindow return false; } + public function getOpacity():Float + { + return 1.0; + } + public function getTextInputEnabled():Bool { return textInputEnabled; @@ -613,6 +618,8 @@ class FlashWindow public function setMouseLock(value:Bool):Void {} + public function setOpacity(value:Float):Void {} + public function setResizable(value:Bool):Bool { return value; @@ -634,11 +641,4 @@ class FlashWindow } public function warpMouse(x:Int, y:Int):Void {} - - public function getOpacity():Float - { - return 1.0; - } - - public function setOpacity(value:Float):Void {} } From 2903975465e72bedb861702ce6d4c03eb04f7aa5 Mon Sep 17 00:00:00 2001 From: player-03 Date: Fri, 12 Aug 2022 12:22:27 -0400 Subject: [PATCH 12/15] Sort functions. --- src/lime/_internal/backend/html5/HTML5Window.hx | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/lime/_internal/backend/html5/HTML5Window.hx b/src/lime/_internal/backend/html5/HTML5Window.hx index e9d33454e..5a1a539fe 100644 --- a/src/lime/_internal/backend/html5/HTML5Window.hx +++ b/src/lime/_internal/backend/html5/HTML5Window.hx @@ -378,6 +378,11 @@ class HTML5Window return false; } + public function getOpacity():Float + { + return 1.0; + } + public function getTextInputEnabled():Bool { return textInputEnabled; @@ -1085,6 +1090,8 @@ class HTML5Window public function setMouseLock(value:Bool):Void {} + public function setOpacity(value:Float):Void {} + public function setResizable(value:Bool):Bool { return value; @@ -1291,8 +1298,4 @@ class HTML5Window } public function warpMouse(x:Int, y:Int):Void {} - - public function getOpacity():Float { return 1.0; } - - public function setOpacity(value:Float):Void {} } From a6323f323f2b01256a07a0bf1d006a524ce611b4 Mon Sep 17 00:00:00 2001 From: player-03 Date: Fri, 12 Aug 2022 12:27:51 -0400 Subject: [PATCH 13/15] Sort CFFI functions. --- .../_internal/backend/native/NativeCFFI.hx | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/src/lime/_internal/backend/native/NativeCFFI.hx b/src/lime/_internal/backend/native/NativeCFFI.hx index 0ea1251fa..b31af6e62 100644 --- a/src/lime/_internal/backend/native/NativeCFFI.hx +++ b/src/lime/_internal/backend/native/NativeCFFI.hx @@ -305,6 +305,8 @@ class NativeCFFI @:cffi private static function lime_window_get_mouse_lock(handle:Dynamic):Bool; + @:cffi private static function lime_window_get_opacity(handle:Dynamic):Float; + @:cffi private static function lime_window_get_scale(handle:Dynamic):Float; @:cffi private static function lime_window_get_text_input_enabled(handle:Dynamic):Bool; @@ -337,6 +339,8 @@ class NativeCFFI @:cffi private static function lime_window_set_mouse_lock(handle:Dynamic, mouseLock:Bool):Void; + @:cffi private static function lime_window_set_opacity(handle:Dynamic, value:Float):Void; + @:cffi private static function lime_window_set_resizable(handle:Dynamic, resizable:Bool):Bool; @:cffi private static function lime_window_set_text_input_enabled(handle:Dynamic, enabled:Bool):Void; @@ -347,10 +351,6 @@ class NativeCFFI @:cffi private static function lime_window_warp_mouse(handle:Dynamic, x:Int, y:Int):Void; - @:cffi private static function lime_window_get_opacity(handle:Dynamic):Float; - - @:cffi private static function lime_window_set_opacity(handle:Dynamic, value:Float):Void; - @:cffi private static function lime_window_event_manager_register(callback:Dynamic, eventObject:Dynamic):Void; @:cffi private static function lime_zlib_compress(data:Dynamic, bytes:Dynamic):Dynamic; @@ -568,6 +568,7 @@ class NativeCFFI private static var lime_window_get_id = new cpp.CallableInt>(cpp.Prime._loadPrime("lime", "lime_window_get_id", "oi", false)); private static var lime_window_get_mouse_lock = new cpp.CallableBool>(cpp.Prime._loadPrime("lime", "lime_window_get_mouse_lock", "ob", false)); + private static var lime_window_get_opacity = new cpp.CallableFloat>(cpp.Prime._loadPrime("lime", "lime_window_get_opacity", "od", false)); private static var lime_window_get_scale = new cpp.CallableFloat>(cpp.Prime._loadPrime("lime", "lime_window_get_scale", "od", false)); private static var lime_window_get_text_input_enabled = new cpp.CallableBool>(cpp.Prime._loadPrime("lime", "lime_window_get_text_input_enabled", "ob", false)); @@ -595,6 +596,8 @@ class NativeCFFI false)); private static var lime_window_set_mouse_lock = new cpp.CallableBool->cpp.Void>(cpp.Prime._loadPrime("lime", "lime_window_set_mouse_lock", "obv", false)); + private static var lime_window_set_opacity = new cpp.CallableFloat->cpp.Void>(cpp.Prime._loadPrime("lime", "lime_window_set_opacity", "odv", + false)); private static var lime_window_set_resizable = new cpp.CallableBool->Bool>(cpp.Prime._loadPrime("lime", "lime_window_set_resizable", "obb", false)); private static var lime_window_set_text_input_enabled = new cpp.CallableBool->cpp.Void>(cpp.Prime._loadPrime("lime", @@ -605,10 +608,6 @@ class NativeCFFI false)); private static var lime_window_warp_mouse = new cpp.CallableInt->Int->cpp.Object>(cpp.Prime._loadPrime("lime", "lime_window_warp_mouse", "oiiv", false)); - private static var lime_window_get_opacity = new cpp.CallableFloat>(cpp.Prime._loadPrime("lime", "lime_window_get_opacity", "od", false)); - private static var lime_window_set_opacity = new cpp.CallableFloat->cpp.Void>(cpp.Prime._loadPrime("lime", "lime_window_set_opacity", "odv", - false)); - private static var lime_window_event_manager_register = new cpp.Callablecpp.Object->cpp.Void>(cpp.Prime._loadPrime("lime", "lime_window_event_manager_register", "oov", false)); private static var lime_zlib_compress = new cpp.Callablecpp.Object->cpp.Object>(cpp.Prime._loadPrime("lime", "lime_zlib_compress", "ooo", @@ -741,6 +740,7 @@ class NativeCFFI private static var lime_window_get_height = CFFI.load("lime", "lime_window_get_height", 1); private static var lime_window_get_id = CFFI.load("lime", "lime_window_get_id", 1); private static var lime_window_get_mouse_lock = CFFI.load("lime", "lime_window_get_mouse_lock", 1); + private static var lime_window_get_opacity = CFFI.load("lime", "lime_window_get_opacity", 1); private static var lime_window_get_scale = CFFI.load("lime", "lime_window_get_scale", 1); private static var lime_window_get_text_input_enabled = CFFI.load("lime", "lime_window_get_text_input_enabled", 1); private static var lime_window_get_width = CFFI.load("lime", "lime_window_get_width", 1); @@ -757,13 +757,12 @@ class NativeCFFI private static var lime_window_set_maximized = CFFI.load("lime", "lime_window_set_maximized", 2); private static var lime_window_set_minimized = CFFI.load("lime", "lime_window_set_minimized", 2); private static var lime_window_set_mouse_lock = CFFI.load("lime", "lime_window_set_mouse_lock", 2); + private static var lime_window_set_opacity = CFFI.load("lime", "lime_window_set_opacity", 2); private static var lime_window_set_resizable = CFFI.load("lime", "lime_window_set_resizable", 2); private static var lime_window_set_text_input_enabled = CFFI.load("lime", "lime_window_set_text_input_enabled", 2); private static var lime_window_set_text_input_rect = CFFI.load("lime", "lime_window_set_text_input_rect", 2); private static var lime_window_set_title = CFFI.load("lime", "lime_window_set_title", 2); private static var lime_window_warp_mouse = CFFI.load("lime", "lime_window_warp_mouse", 3); - private static var lime_window_get_opacity = CFFI.load("lime", "lime_window_get_opacity", 1); - private static var lime_window_set_opacity = CFFI.load("lime", "lime_window_set_opacity", 2); private static var lime_window_event_manager_register = CFFI.load("lime", "lime_window_event_manager_register", 2); private static var lime_zlib_compress = CFFI.load("lime", "lime_zlib_compress", 2); private static var lime_zlib_decompress = CFFI.load("lime", "lime_zlib_decompress", 2); From 13c33d83f4b274fe105738c783cc86d4467060b8 Mon Sep 17 00:00:00 2001 From: player-03 Date: Fri, 12 Aug 2022 12:32:54 -0400 Subject: [PATCH 14/15] Start sorting NativeWindow functions. There's more to sort, but moving them all at once messes up the diff. --- .../_internal/backend/native/NativeWindow.hx | 43 ++++++++++--------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/src/lime/_internal/backend/native/NativeWindow.hx b/src/lime/_internal/backend/native/NativeWindow.hx index 4c73c5359..08b3079de 100644 --- a/src/lime/_internal/backend/native/NativeWindow.hx +++ b/src/lime/_internal/backend/native/NativeWindow.hx @@ -299,6 +299,18 @@ class NativeWindow return mouseLock; } + public function getOpacity():Float + { + if (handle != null) + { + #if (!macro && lime_cffi) + return NativeCFFI.lime_window_get_opacity(handle); + #end + } + + return 1.0; + } + public function getTextInputEnabled():Bool { if (handle != null) @@ -628,6 +640,16 @@ class NativeWindow return value; } + public function setOpacity(value:Float):Void + { + if (handle != null) + { + #if (!macro && lime_cffi) + NativeCFFI.lime_window_set_opacity(handle, value); + #end + } + } + public function setResizable(value:Bool):Bool { if (handle != null) @@ -663,27 +685,6 @@ class NativeWindow NativeCFFI.lime_window_warp_mouse(handle, x, y); #end } - - public function getOpacity():Float - { - if (handle != null) - { - #if (!macro && lime_cffi) - return NativeCFFI.lime_window_get_opacity(handle); - #end - } - return 1.0; - } - - public function setOpacity(value:Float):Void - { - if (handle != null) - { - #if (!macro && lime_cffi) - NativeCFFI.lime_window_set_opacity(handle, value); - #end - } - } } @:enum private abstract MouseCursorType(Int) from Int to Int From 6b2724b147c636673d00738b45c1d6f25745184e Mon Sep 17 00:00:00 2001 From: player-03 Date: Fri, 12 Aug 2022 12:41:43 -0400 Subject: [PATCH 15/15] Use getters and setters for `Window.opacity`. --- src/lime/ui/Window.hx | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/lime/ui/Window.hx b/src/lime/ui/Window.hx index ae4faf0e4..5e82f5787 100644 --- a/src/lime/ui/Window.hx +++ b/src/lime/ui/Window.hx @@ -80,6 +80,7 @@ class Window public var onRestore(default, null) = new EventVoid>(); public var onTextEdit(default, null) = new EventInt->Int->Void>(); public var onTextInput(default, null) = new EventVoid>(); + public var opacity(get, set):Float; public var parameters:Dynamic; public var resizable(get, set):Bool; public var scale(get, null):Float; @@ -413,14 +414,6 @@ class Window __backend.warpMouse(x, y); } - public function getOpacity():Float { - return __backend.getOpacity(); - } - - public function setOpacity(opacity:Float):Void { - __backend.setOpacity(opacity); - } - // Get & Set Methods @:noCompletion private function get_cursor():MouseCursor { @@ -526,6 +519,17 @@ class Window return value; } + @:noCompletion private function get_opacity():Float + { + return __backend.getOpacity(); + } + + @:noCompletion private function set_opacity(value:Float):Float + { + __backend.setOpacity(value); + return value; + } + @:noCompletion private inline function get_resizable():Bool { return __resizable;