Progress on HL bindings
This commit is contained in:
14
.vscode/settings.json
vendored
14
.vscode/settings.json
vendored
@@ -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"
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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;
|
||||
|
||||
};
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user