Add initial window.setIcon support
This commit is contained in:
@@ -448,11 +448,21 @@ class Window {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function setIcon (buffer:ImageBuffer):Void {
|
||||||
|
|
||||||
|
#if (cpp || neko || nodejs)
|
||||||
|
lime_window_set_icon (handle, buffer);
|
||||||
|
#end
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#if (cpp || neko || nodejs)
|
#if (cpp || neko || nodejs)
|
||||||
private static var lime_window_create = System.load ("lime", "lime_window_create", 5);
|
private static var lime_window_create = System.load ("lime", "lime_window_create", 5);
|
||||||
private static var lime_window_event_manager_register = System.load ("lime", "lime_window_event_manager_register", 2);
|
private static var lime_window_event_manager_register = System.load ("lime", "lime_window_event_manager_register", 2);
|
||||||
private static var lime_window_move = System.load ("lime", "lime_window_move", 3);
|
private static var lime_window_move = System.load ("lime", "lime_window_move", 3);
|
||||||
private static var lime_window_resize = System.load ("lime", "lime_window_resize", 3);
|
private static var lime_window_resize = System.load ("lime", "lime_window_resize", 3);
|
||||||
|
private static var lime_window_set_icon = System.load ("lime", "lime_window_resize", 2);
|
||||||
#end
|
#end
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <app/Application.h>
|
#include <app/Application.h>
|
||||||
|
#include <graphics/ImageBuffer.h>
|
||||||
|
|
||||||
|
|
||||||
namespace lime {
|
namespace lime {
|
||||||
@@ -19,6 +20,7 @@ namespace lime {
|
|||||||
|
|
||||||
virtual void Move (int x, int y) = 0;
|
virtual void Move (int x, int y) = 0;
|
||||||
virtual void Resize (int width, int height) = 0;
|
virtual void Resize (int width, int height) = 0;
|
||||||
|
virtual void SetIcon (ImageBuffer *imageBuffer) = 0;
|
||||||
|
|
||||||
Application* currentApplication;
|
Application* currentApplication;
|
||||||
int flags;
|
int flags;
|
||||||
|
|||||||
@@ -462,6 +462,16 @@ namespace lime {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
value lime_window_set_icon (value window, value buffer) {
|
||||||
|
|
||||||
|
Window* targetWindow = (Window*)(intptr_t)val_float (window);
|
||||||
|
ImageBuffer imageBuffer = ImageBuffer (buffer);
|
||||||
|
targetWindow->SetIcon (&imageBuffer);
|
||||||
|
return alloc_null ();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
DEFINE_PRIM (lime_application_create, 1);
|
DEFINE_PRIM (lime_application_create, 1);
|
||||||
DEFINE_PRIM (lime_application_exec, 1);
|
DEFINE_PRIM (lime_application_exec, 1);
|
||||||
DEFINE_PRIM (lime_application_init, 1);
|
DEFINE_PRIM (lime_application_init, 1);
|
||||||
@@ -494,6 +504,7 @@ namespace lime {
|
|||||||
DEFINE_PRIM (lime_window_event_manager_register, 2);
|
DEFINE_PRIM (lime_window_event_manager_register, 2);
|
||||||
DEFINE_PRIM (lime_window_move, 3);
|
DEFINE_PRIM (lime_window_move, 3);
|
||||||
DEFINE_PRIM (lime_window_resize, 3);
|
DEFINE_PRIM (lime_window_resize, 3);
|
||||||
|
DEFINE_PRIM (lime_window_set_icon, 2);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -53,6 +53,15 @@ namespace lime {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void SDLWindow::SetIcon (ImageBuffer *imageBuffer) {
|
||||||
|
|
||||||
|
SDL_Surface *surface = SDL_CreateRGBSurfaceFrom (imageBuffer->data->Bytes (), imageBuffer->width, imageBuffer->height, imageBuffer->bpp, imageBuffer->width * imageBuffer->bpp, 0x0f00, 0x00f0, 0x000f, 0xf000);
|
||||||
|
SDL_SetWindowIcon (sdlWindow, surface);
|
||||||
|
SDL_FreeSurface (surface);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
Window* CreateWindow (Application* application, int width, int height, int flags, const char* title) {
|
Window* CreateWindow (Application* application, int width, int height, int flags, const char* title) {
|
||||||
|
|
||||||
return new SDLWindow (application, width, height, flags, title);
|
return new SDLWindow (application, width, height, flags, title);
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
|
|
||||||
#include <SDL.h>
|
#include <SDL.h>
|
||||||
|
#include <graphics/ImageBuffer.h>
|
||||||
#include <ui/Window.h>
|
#include <ui/Window.h>
|
||||||
|
|
||||||
|
|
||||||
@@ -18,6 +19,7 @@ namespace lime {
|
|||||||
|
|
||||||
virtual void Move (int x, int y);
|
virtual void Move (int x, int y);
|
||||||
virtual void Resize (int width, int height);
|
virtual void Resize (int width, int height);
|
||||||
|
virtual void SetIcon (ImageBuffer *imageBuffer);
|
||||||
|
|
||||||
SDL_Window* sdlWindow;
|
SDL_Window* sdlWindow;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user