Merge pull request #1570 from Apprentice-Alchemist/feature/window-opacity

Implement window transparency.
This commit is contained in:
player-03
2022-10-10 13:32:18 -04:00
committed by GitHub
9 changed files with 122 additions and 7 deletions

View File

@@ -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;

View File

@@ -393,6 +393,11 @@ class HTML5Window
return false;
}
public function getOpacity():Float
{
return 1.0;
}
public function getTextInputEnabled():Bool
{
return textInputEnabled;
@@ -1101,6 +1106,8 @@ class HTML5Window
public function setMouseLock(value:Bool):Void {}
public function setOpacity(value:Float):Void {}
public function setResizable(value:Bool):Bool
{
return value;

View File

@@ -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;
@@ -564,6 +568,7 @@ class NativeCFFI
private static var lime_window_get_id = new cpp.Callable<cpp.Object->Int>(cpp.Prime._loadPrime("lime", "lime_window_get_id", "oi", false));
private static var lime_window_get_mouse_lock = new cpp.Callable<cpp.Object->Bool>(cpp.Prime._loadPrime("lime", "lime_window_get_mouse_lock", "ob",
false));
private static var lime_window_get_opacity = new cpp.Callable<cpp.Object->Float>(cpp.Prime._loadPrime("lime", "lime_window_get_opacity", "od", false));
private static var lime_window_get_scale = new cpp.Callable<cpp.Object->Float>(cpp.Prime._loadPrime("lime", "lime_window_get_scale", "od", false));
private static var lime_window_get_text_input_enabled = new cpp.Callable<cpp.Object->Bool>(cpp.Prime._loadPrime("lime",
"lime_window_get_text_input_enabled", "ob", false));
@@ -591,6 +596,8 @@ class NativeCFFI
false));
private static var lime_window_set_mouse_lock = new cpp.Callable<cpp.Object->Bool->cpp.Void>(cpp.Prime._loadPrime("lime", "lime_window_set_mouse_lock",
"obv", false));
private static var lime_window_set_opacity = new cpp.Callable<cpp.Object->Float->cpp.Void>(cpp.Prime._loadPrime("lime", "lime_window_set_opacity", "odv",
false));
private static var lime_window_set_resizable = new cpp.Callable<cpp.Object->Bool->Bool>(cpp.Prime._loadPrime("lime", "lime_window_set_resizable", "obb",
false));
private static var lime_window_set_text_input_enabled = new cpp.Callable<cpp.Object->Bool->cpp.Void>(cpp.Prime._loadPrime("lime",
@@ -733,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);
@@ -749,6 +757,7 @@ 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);
@@ -1357,6 +1366,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 { 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_event_manager_register") private static function lime_window_event_manager_register(callback:Void->Void,
eventObject:WindowEventInfo):Void {}

View File

@@ -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)

View File

@@ -80,6 +80,7 @@ class Window
public var onRestore(default, null) = new Event<Void->Void>();
public var onTextEdit(default, null) = new Event<String->Int->Int->Void>();
public var onTextInput(default, null) = new Event<String->Void>();
public var opacity(get, set):Float;
public var parameters:Dynamic;
public var resizable(get, set):Bool;
public var scale(get, null):Float;
@@ -518,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;