native extension for macos
parent
0b149558ea
commit
a0e31fe412
|
@ -0,0 +1,11 @@
|
||||||
|
name: "defos"
|
||||||
|
|
||||||
|
platforms:
|
||||||
|
x86_64-osx:
|
||||||
|
context:
|
||||||
|
frameworks: ["AppKit"]
|
||||||
|
|
||||||
|
x86-osx:
|
||||||
|
context:
|
||||||
|
frameworks: ["AppKit"]
|
||||||
|
|
|
@ -0,0 +1,87 @@
|
||||||
|
#define EXTENSION_NAME defos
|
||||||
|
#define LIB_NAME "defos"
|
||||||
|
#define MODULE_NAME "defos"
|
||||||
|
|
||||||
|
// Defold SDK
|
||||||
|
#define DLIB_LOG_DOMAIN LIB_NAME
|
||||||
|
#include <dmsdk/sdk.h>
|
||||||
|
|
||||||
|
#if defined(DM_PLATFORM_OSX)
|
||||||
|
|
||||||
|
#include "defos_private.h"
|
||||||
|
|
||||||
|
static int disable_maximize_button(lua_State* L) {
|
||||||
|
defos_disable_maximize_button();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int disable_minimize_button(lua_State* L) {
|
||||||
|
defos_disable_minimize_button();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int disable_window_resize(lua_State* L) {
|
||||||
|
defos_disable_window_resize();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int disable_mouse_cursor(lua_State* L) {
|
||||||
|
defos_disable_mouse_cursor();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int enable_mouse_cursor(lua_State* L) {
|
||||||
|
defos_enable_mouse_cursor();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int set_window_size(lua_State* L) {
|
||||||
|
defos_set_window_size(L);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static const luaL_reg Module_methods[] =
|
||||||
|
{
|
||||||
|
{"disable_maximize_button", disable_maximize_button},
|
||||||
|
{"disable_minimize_button", disable_minimize_button},
|
||||||
|
{"disable_window_resize", disable_window_resize},
|
||||||
|
{"disable_mouse_cursor", disable_mouse_cursor},
|
||||||
|
{"enable_mouse_cursor", enable_mouse_cursor},
|
||||||
|
{"set_window_size", set_window_size},
|
||||||
|
{0, 0}
|
||||||
|
};
|
||||||
|
|
||||||
|
static void LuaInit(lua_State* L)
|
||||||
|
{
|
||||||
|
int top = lua_gettop(L);
|
||||||
|
luaL_register(L, MODULE_NAME, Module_methods);
|
||||||
|
lua_pop(L, 1);
|
||||||
|
assert(top == lua_gettop(L));
|
||||||
|
}
|
||||||
|
|
||||||
|
dmExtension::Result AppInitializeDefos(dmExtension::AppParams* params)
|
||||||
|
{
|
||||||
|
return dmExtension::RESULT_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
dmExtension::Result InitializeDefos(dmExtension::Params* params)
|
||||||
|
{
|
||||||
|
LuaInit(params->m_L);
|
||||||
|
return dmExtension::RESULT_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
dmExtension::Result AppFinalizeDefos(dmExtension::AppParams* params)
|
||||||
|
{
|
||||||
|
return dmExtension::RESULT_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
dmExtension::Result FinalizeDefos(dmExtension::Params* params)
|
||||||
|
{
|
||||||
|
return dmExtension::RESULT_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
DM_DECLARE_EXTENSION(EXTENSION_NAME, LIB_NAME, AppInitializeDefos, AppFinalizeDefos, InitializeDefos, 0, 0, FinalizeDefos)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,49 @@
|
||||||
|
#include <dmsdk/sdk.h>
|
||||||
|
#include "defos_private.h"
|
||||||
|
|
||||||
|
#if defined(DM_PLATFORM_OSX)
|
||||||
|
#include <AppKit/AppKit.h>
|
||||||
|
#include <CoreGraphics/CoreGraphics.h>
|
||||||
|
|
||||||
|
NSWindow* window;
|
||||||
|
|
||||||
|
void init_window(){
|
||||||
|
if (window == NULL) {
|
||||||
|
window = dmGraphics::GetNativeOSXNSWindow();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void defos_disable_maximize_button() {
|
||||||
|
init_window();
|
||||||
|
[[window standardWindowButton:NSWindowZoomButton] setHidden:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
void defos_disable_minimize_button() {
|
||||||
|
init_window();
|
||||||
|
[[window standardWindowButton:NSWindowMiniaturizeButton] setHidden:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
void defos_disable_window_resize() {
|
||||||
|
init_window();
|
||||||
|
[window setStyleMask:[window styleMask] & ~NSResizableWindowMask];
|
||||||
|
}
|
||||||
|
|
||||||
|
void defos_disable_mouse_cursor() {
|
||||||
|
[NSCursor hide];
|
||||||
|
}
|
||||||
|
|
||||||
|
void defos_enable_mouse_cursor() {
|
||||||
|
[NSCursor unhide];
|
||||||
|
}
|
||||||
|
|
||||||
|
void defos_set_window_size(lua_State* L) {
|
||||||
|
init_window();
|
||||||
|
int x = luaL_checkint(L, 1);
|
||||||
|
int y = luaL_checkint(L, 2);
|
||||||
|
int w = luaL_checkint(L, 3);
|
||||||
|
int h = luaL_checkint(L, 4);
|
||||||
|
[window setFrame:NSMakeRect(x, y, w , h) display:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
|
@ -0,0 +1,12 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <dmsdk/sdk.h>
|
||||||
|
|
||||||
|
extern void defos_disable_maximize_button();
|
||||||
|
extern void defos_disable_minimize_button();
|
||||||
|
extern void defos_disable_window_resize();
|
||||||
|
extern void defos_disable_mouse_cursor();
|
||||||
|
extern void defos_enable_mouse_cursor();
|
||||||
|
extern void defos_set_window_size(lua_State* L);
|
||||||
|
|
||||||
|
void init_window();
|
|
@ -1,15 +1,15 @@
|
||||||
local defos = require("defos.defos")
|
--local defos = require("defos.defos") --windows only
|
||||||
|
|
||||||
function init(self)
|
function init(self)
|
||||||
defos.disable_maximize_button()
|
|
||||||
defos.disable_minimize_button()
|
|
||||||
defos.disable_window_resize()
|
|
||||||
defos.disable_mouse_cursor()
|
|
||||||
defos.enable_mouse_cursor()
|
|
||||||
defos.set_window_size(-1,-1,800,600)
|
|
||||||
|
|
||||||
msg.post(".", "acquire_input_focus")
|
defos.disable_maximize_button()
|
||||||
self.cursor_state = true
|
defos.disable_minimize_button()
|
||||||
|
defos.disable_window_resize()
|
||||||
|
defos.disable_mouse_cursor()
|
||||||
|
defos.enable_mouse_cursor()
|
||||||
|
defos.set_window_size(-1,-1,800,600)
|
||||||
|
--
|
||||||
|
-- msg.post(".", "acquire_input_focus")
|
||||||
|
-- self.cursor_state = true
|
||||||
end
|
end
|
||||||
|
|
||||||
local function toggle_mouse_cursor(self)
|
local function toggle_mouse_cursor(self)
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
[project]
|
[project]
|
||||||
title = DefOS
|
title = DefOS
|
||||||
version = 1.0
|
version = 1.0
|
||||||
dependencies = https://github.com/subsoap/defos/archive/master.zip
|
dependencies =
|
||||||
|
|
||||||
[bootstrap]
|
[bootstrap]
|
||||||
main_collection = /example/example.collectionc
|
main_collection = /example/example.collectionc
|
||||||
|
|
Loading…
Reference in New Issue