Progress on HL bindings

This commit is contained in:
Joshua Granick
2018-05-24 19:05:19 -07:00
parent 2fe10275e3
commit d0b9e00c0f
9 changed files with 80 additions and 13 deletions

14
.vscode/settings.json vendored
View File

@@ -20,6 +20,18 @@
"xtree": "cpp",
"xutility": "cpp",
"system_error": "cpp",
"xfunctional": "cpp"
"xfunctional": "cpp",
"chrono": "cpp",
"ratio": "cpp",
"xlocmon": "cpp",
"xstddef": "cpp",
"xtr1common": "cpp",
"iterator": "cpp",
"map": "cpp",
"memory": "cpp",
"set": "cpp",
"streambuf": "cpp",
"unordered_map": "cpp",
"xmemory0": "cpp"
}
}

View File

@@ -104,7 +104,7 @@ class NativeApplication {
public function create (config:Config):Void {
#if (!macro && lime_cffi)
handle = NativeCFFI.lime_application_create ( { } );
handle = NativeCFFI.lime_application_create ();
#end
}

View File

@@ -33,7 +33,7 @@ class NativeCFFI {
#if (lime_cffi && !macro && !hl)
@:cffi private static function lime_application_create (config:Dynamic):Dynamic;
@:cffi private static function lime_application_create ():Dynamic;
@:cffi private static function lime_application_event_manager_register (callback:Dynamic, eventObject:Dynamic):Void;
@:cffi private static function lime_application_exec (handle:Dynamic):Int;
@:cffi private static function lime_application_init (handle:Dynamic):Void;
@@ -183,7 +183,7 @@ class NativeCFFI {
#end
#if hl
@:cffi private static function lime_application_create (config:Dynamic):Dynamic;
@:hlNative("lime", "lime_application_create") private static function lime_application_create ():CFFIPointer { return null; }
@:cffi private static function lime_application_event_manager_register (callback:Dynamic, eventObject:Dynamic):Void;
@:cffi private static function lime_application_exec (handle:Dynamic):Int;
@:cffi private static function lime_application_init (handle:Dynamic):Void;

View File

@@ -16,6 +16,7 @@
<!-- <set name="LIME_FAUDIO" value="1" /> -->
<set name="LIME_FREETYPE" value="1" />
<set name="LIME_HARFBUZZ" value="1" />
<set name="LIME_HASHLINK" value="1" if="windows || mac || linux" />
<set name="LIME_LZMA" value="1" />
<set name="LIME_MBEDTLS" value="1" unless="emscripten" />
<!-- <set name="LIME_NEKO" value="1" if="linux" /> -->
@@ -121,6 +122,13 @@
</section>
<section if="LIME_HASHLINK">
<!-- <compilerflag value="-I${HASHLINK_PATH}/include" /> -->
<compilerflag value="-DLIBHL_EXPORTS" />
</section>
<section if="LIME_JPEG">
<compilerflag value="-I${NATIVE_TOOLKIT_PATH}/jpeg/" />
@@ -381,6 +389,10 @@
<lib name="comdlg32.lib" />
<lib name="comsuppw.lib" />
<!-- <lib name="-libpath:${HASHLINK_PATH}" />
<lib name="libhl.lib" />
<lib name="-delayload:libhl.lib" /> -->
</section>
<section if="linux">

View File

@@ -5,6 +5,7 @@
#include <hl.h>
#include <hx/CFFI.h>
#include <graphics/ImageBuffer.h>
#include <math/Rectangle.h>
namespace lime {
@@ -18,11 +19,12 @@ namespace lime {
int height;
int offsetX;
int offsetY;
HL_Rectangle* rect;
/*ImageType*/ int type;
int version;
int width;
// double x;
// double y;
double x;
double y;
};

View File

@@ -22,9 +22,9 @@ namespace lime {
bool transparent;
int width;
void* __srcBitmapData;
// void* __srcCanvas;
void* __srcCanvas;
void* __srcContext;
// void* __srcCustom;
void* __srcCustom;
void* __srcImage;
void* __srcImageData;

View File

@@ -2,6 +2,7 @@
#define LIME_SYSTEM_CFFI_POINTER_H
#include <hl.h>
#include <hx/CFFIPrime.h>
@@ -16,8 +17,17 @@ namespace hx {
namespace lime {
struct HL_CFFIPointer {
void* finalizer;
void* ptr;
};
value CFFIPointer (void* ptr, hx::finalizer finalizer = 0);
value CFFIPointer (value handle, hx::finalizer finalizer = 0);
HL_CFFIPointer* HLCFFIPointer (void* ptr, hx::finalizer finalizer = 0);
}

View File

@@ -128,15 +128,24 @@ namespace lime {
}
value lime_application_create (value callback) {
value lime_application_create () {
Application* application = CreateApplication ();
Application::callback = new AutoGCRoot (callback);
// Application::callback = new ValuePointer (callback);
return CFFIPointer (application, gc_application);
}
HL_PRIM HL_CFFIPointer* hl_lime_application_create () {
Application* application = CreateApplication ();
// Application::callback = new ValuePointer (callback);
return HLCFFIPointer (application, gc_application);
}
void lime_application_event_manager_register (value callback, value eventObject) {
ApplicationEvent::callback = new AutoGCRoot (callback);
@@ -1986,7 +1995,7 @@ namespace lime {
}
DEFINE_PRIME1 (lime_application_create);
DEFINE_PRIME0 (lime_application_create);
DEFINE_PRIME2v (lime_application_event_manager_register);
DEFINE_PRIME1 (lime_application_exec);
DEFINE_PRIME1v (lime_application_init);
@@ -2141,14 +2150,17 @@ namespace lime {
#define _ENUM "?"
// #define TCFFIPOINTER _ABSTRACT (HL_CFFIPointer)
#define TCFFIPOINTER _DYN
#define TBYTES _OBJ (_I32 _BYTES)
#define TARRAYBUFFER TBYTES
#define TARRAYBUFFERVIEW _OBJ (_I32 TARRAYBUFFER _I32 _I32 _I32 _I32)
#define TIMAGEBUFFER _OBJ (_I32 TARRAYBUFFERVIEW _I32 _I32 _BOOL _BOOL _I32 _DYN _DYN _DYN _DYN)
#define TIMAGE _OBJ (TIMAGEBUFFER _BOOL _I32 _I32 _I32 _ENUM _I32 _I32)
#define TIMAGEBUFFER _OBJ (_I32 TARRAYBUFFERVIEW _I32 _I32 _BOOL _BOOL _I32 _DYN _DYN _DYN _DYN _DYN _DYN)
#define TRECTANGLE _OBJ (_F64 _F64 _F64 _F64)
#define TIMAGE _OBJ (TIMAGEBUFFER _BOOL _I32 _I32 _I32 TRECTANGLE _ENUM _I32 _I32 _F64 _F64)
DEFINE_HL_PRIM (TCFFIPOINTER, lime_application_create, _VOID);
DEFINE_HL_PRIM (_VOID, lime_image_data_util_fill_rect, TIMAGE TRECTANGLE _I32 _I32);

View File

@@ -40,4 +40,23 @@ namespace lime {
}
HL_CFFIPointer* HLCFFIPointer (void* handle, hx::finalizer finalizer) {
if (handle) {
// HL_CFFIPointer* pointer = (HL_CFFIPointer*)hl_gc_alloc_finalizer (sizeof (HL_CFFIPointer));
// pointer->finalizer = finalizer ? finalizer : 0;
// pointer->ptr = handle;
// return pointer;
return 0;
} else {
return 0;
}
}
}