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)
|
||||
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")
|
||||
self.cursor_state = true
|
||||
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")
|
||||
-- self.cursor_state = true
|
||||
end
|
||||
|
||||
local function toggle_mouse_cursor(self)
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
[project]
|
||||
title = DefOS
|
||||
version = 1.0
|
||||
dependencies = https://github.com/subsoap/defos/archive/master.zip
|
||||
dependencies =
|
||||
|
||||
[bootstrap]
|
||||
main_collection = /example/example.collectionc
|
||||
|
|
Loading…
Reference in New Issue