Implement window transparency.
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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) {
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user