Initial strict HL bindings for passing Image, Rectangle, Bytes
This commit is contained in:
@@ -7,6 +7,8 @@ import lime.graphics.opengl.GLProgram;
|
|||||||
import lime.graphics.opengl.GLRenderbuffer;
|
import lime.graphics.opengl.GLRenderbuffer;
|
||||||
import lime.graphics.opengl.GLShader;
|
import lime.graphics.opengl.GLShader;
|
||||||
import lime.graphics.opengl.GLTexture;
|
import lime.graphics.opengl.GLTexture;
|
||||||
|
import lime.graphics.Image;
|
||||||
|
import lime.math.Rectangle;
|
||||||
import lime.media.openal.ALAuxiliaryEffectSlot;
|
import lime.media.openal.ALAuxiliaryEffectSlot;
|
||||||
import lime.system.CFFIPointer;
|
import lime.system.CFFIPointer;
|
||||||
import lime.utils.DataPointer;
|
import lime.utils.DataPointer;
|
||||||
@@ -30,7 +32,7 @@ typedef Float32 = Float;
|
|||||||
class NativeCFFI {
|
class NativeCFFI {
|
||||||
|
|
||||||
|
|
||||||
#if (lime_cffi && !macro)
|
#if (lime_cffi && !macro && !hl)
|
||||||
@:cffi private static function lime_application_create (config:Dynamic):Dynamic;
|
@:cffi private static function lime_application_create (config:Dynamic):Dynamic;
|
||||||
@:cffi private static function lime_application_event_manager_register (callback:Dynamic, eventObject:Dynamic):Void;
|
@: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_exec (handle:Dynamic):Int;
|
||||||
@@ -180,6 +182,156 @@ class NativeCFFI {
|
|||||||
@:cffi private static function lime_zlib_decompress (data:Dynamic, bytes:Dynamic):Dynamic;
|
@:cffi private static function lime_zlib_decompress (data:Dynamic, bytes:Dynamic):Dynamic;
|
||||||
#end
|
#end
|
||||||
|
|
||||||
|
#if hl
|
||||||
|
@:cffi private static function lime_application_create (config:Dynamic):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;
|
||||||
|
@:cffi private static function lime_application_quit (handle:Dynamic):Int;
|
||||||
|
@:cffi private static function lime_application_set_frame_rate (handle:Dynamic, value:Float):Void;
|
||||||
|
@:cffi private static function lime_application_update (handle:Dynamic):Bool;
|
||||||
|
@:cffi private static function lime_audio_load (data:Dynamic, buffer:Dynamic):Dynamic;
|
||||||
|
@:cffi private static function lime_bytes_from_data_pointer (data:Float, length:Int):Dynamic;
|
||||||
|
@:cffi private static function lime_bytes_get_data_pointer (data:Dynamic):Float;
|
||||||
|
@:cffi private static function lime_bytes_get_data_pointer_offset (data:Dynamic, offset:Int):Float;
|
||||||
|
@:cffi private static function lime_bytes_read_file (path:String, bytes:Dynamic):Dynamic;
|
||||||
|
@:cffi private static function lime_cffi_get_native_pointer (ptr:Dynamic):Float;
|
||||||
|
@:cffi private static function lime_clipboard_event_manager_register (callback:Dynamic, eventObject:Dynamic):Void;
|
||||||
|
@:cffi private static function lime_clipboard_get_text ():Dynamic;
|
||||||
|
@:cffi private static function lime_clipboard_set_text (text:String):Void;
|
||||||
|
@:cffi private static function lime_data_pointer_offset (dataPointer:DataPointer, offset:Int):Float;
|
||||||
|
@:cffi private static function lime_deflate_compress (data:Dynamic, bytes:Dynamic):Dynamic;
|
||||||
|
@:cffi private static function lime_deflate_decompress (data:Dynamic, bytes:Dynamic):Dynamic;
|
||||||
|
@:cffi private static function lime_drop_event_manager_register (callback:Dynamic, eventObject:Dynamic):Void;
|
||||||
|
@:cffi private static function lime_file_dialog_open_directory (title:String, filter:String, defaultPath:String):Dynamic;
|
||||||
|
@:cffi private static function lime_file_dialog_open_file (title:String, filter:String, defaultPath:String):Dynamic;
|
||||||
|
@:cffi private static function lime_file_dialog_open_files (title:String, filter:String, defaultPath:String):Dynamic;
|
||||||
|
@:cffi private static function lime_file_dialog_save_file (title:String, filter:String, defaultPath:String):Dynamic;
|
||||||
|
@:cffi private static function lime_file_watcher_create (callback:Dynamic):CFFIPointer;
|
||||||
|
@:cffi private static function lime_file_watcher_add_directory (handle:CFFIPointer, path:Dynamic, recursive:Bool):Dynamic;
|
||||||
|
@:cffi private static function lime_file_watcher_remove_directory (handle:CFFIPointer, watchID:Dynamic):Void;
|
||||||
|
@:cffi private static function lime_file_watcher_update (handle:CFFIPointer):Void;
|
||||||
|
@:cffi private static function lime_font_get_ascender (handle:Dynamic):Int;
|
||||||
|
@:cffi private static function lime_font_get_descender (handle:Dynamic):Int;
|
||||||
|
@:cffi private static function lime_font_get_family_name (handle:Dynamic):Dynamic;
|
||||||
|
@:cffi private static function lime_font_get_glyph_index (handle:Dynamic, character:String):Int;
|
||||||
|
@:cffi private static function lime_font_get_glyph_indices (handle:Dynamic, characters:String):Dynamic;
|
||||||
|
@:cffi private static function lime_font_get_glyph_metrics (handle:Dynamic, index:Int):Dynamic;
|
||||||
|
@:cffi private static function lime_font_get_height (handle:Dynamic):Int;
|
||||||
|
@:cffi private static function lime_font_get_num_glyphs (handle:Dynamic):Int;
|
||||||
|
@:cffi private static function lime_font_get_underline_position (handle:Dynamic):Int;
|
||||||
|
@:cffi private static function lime_font_get_underline_thickness (handle:Dynamic):Int;
|
||||||
|
@:cffi private static function lime_font_get_units_per_em (handle:Dynamic):Int;
|
||||||
|
@:cffi private static function lime_font_load (data:Dynamic):Dynamic;
|
||||||
|
@:cffi private static function lime_font_outline_decompose (handle:Dynamic, size:Int):Dynamic;
|
||||||
|
@:cffi private static function lime_font_render_glyph (handle:Dynamic, index:Int, data:Dynamic):Bool;
|
||||||
|
@:cffi private static function lime_font_render_glyphs (handle:Dynamic, indices:Dynamic, data:Dynamic):Bool;
|
||||||
|
@:cffi private static function lime_font_set_size (handle:Dynamic, size:Int):Void;
|
||||||
|
@:cffi private static function lime_gamepad_add_mappings (mappings:Dynamic):Void;
|
||||||
|
@:cffi private static function lime_gamepad_get_device_guid (id:Int):Dynamic;
|
||||||
|
@:cffi private static function lime_gamepad_get_device_name (id:Int):Dynamic;
|
||||||
|
@:cffi private static function lime_gamepad_event_manager_register (callback:Dynamic, eventObject:Dynamic):Void;
|
||||||
|
@:cffi private static function lime_gzip_compress (data:Dynamic, bytes:Dynamic):Dynamic;
|
||||||
|
@:cffi private static function lime_gzip_decompress (data:Dynamic, bytes:Dynamic):Dynamic;
|
||||||
|
@:cffi private static function lime_haptic_vibrate (period:Int, duration:Int):Void;
|
||||||
|
@:cffi private static function lime_image_encode (data:Dynamic, type:Int, quality:Int, bytes:Dynamic):Dynamic;
|
||||||
|
@:cffi private static function lime_image_load (data:Dynamic, buffer:Dynamic):Dynamic;
|
||||||
|
@:cffi private static function lime_image_data_util_color_transform (image:Dynamic, rect:Dynamic, colorMatrix:Dynamic):Void;
|
||||||
|
@:cffi private static function lime_image_data_util_copy_channel (image:Dynamic, sourceImage:Dynamic, sourceRect:Dynamic, destPoint:Dynamic, srcChannel:Int, destChannel:Int):Void;
|
||||||
|
@:cffi private static function lime_image_data_util_copy_pixels (image:Dynamic, sourceImage:Dynamic, sourceRect:Dynamic, destPoint:Dynamic, alphaImage:Dynamic, alphaPoint:Dynamic, mergeAlpha:Bool):Void;
|
||||||
|
@:hlNative("lime", "lime_image_data_util_fill_rect") private static function lime_image_data_util_fill_rect (image:Image, rect:Rectangle, rg:Int, ba:Int):Void {}
|
||||||
|
@:cffi private static function lime_image_data_util_flood_fill (image:Dynamic, x:Int, y:Int, rg:Int, ba:Int):Void;
|
||||||
|
@:cffi private static function lime_image_data_util_get_pixels (image:Dynamic, rect:Dynamic, format:Int, bytes:Dynamic):Void;
|
||||||
|
@:cffi private static function lime_image_data_util_merge (image:Dynamic, sourceImage:Dynamic, sourceRect:Dynamic, destPoint:Dynamic, redMultiplier:Int, greenMultiplier:Int, blueMultiplier:Int, alphaMultiplier:Int):Void;
|
||||||
|
@:cffi private static function lime_image_data_util_multiply_alpha (image:Dynamic):Void;
|
||||||
|
@:cffi private static function lime_image_data_util_resize (image:Dynamic, buffer:Dynamic, width:Int, height:Int):Void;
|
||||||
|
@:cffi private static function lime_image_data_util_set_format (image:Dynamic, format:Int):Void;
|
||||||
|
@:cffi private static function lime_image_data_util_set_pixels (image:Dynamic, rect:Dynamic, bytes:Dynamic, offset:Int, format:Int, endian:Int):Void;
|
||||||
|
@:cffi private static function lime_image_data_util_threshold (image:Dynamic, sourceImage:Dynamic, sourceRect:Dynamic, destPoint:Dynamic, operation:Int, thresholdRG:Int, thresholdBA:Int, colorRG:Int, colorBA:Int, maskRG:Int, maskBA:Int, copySource:Bool):Int;
|
||||||
|
@:cffi private static function lime_image_data_util_unmultiply_alpha (image:Dynamic):Void;
|
||||||
|
@:cffi private static function lime_joystick_get_device_guid (id:Int):Dynamic;
|
||||||
|
@:cffi private static function lime_joystick_get_device_name (id:Int):Dynamic;
|
||||||
|
@:cffi private static function lime_joystick_get_num_axes (id:Int):Int;
|
||||||
|
@:cffi private static function lime_joystick_get_num_buttons (id:Int):Int;
|
||||||
|
@:cffi private static function lime_joystick_get_num_hats (id:Int):Int;
|
||||||
|
@:cffi private static function lime_joystick_get_num_trackballs (id:Int):Int;
|
||||||
|
@:cffi private static function lime_joystick_event_manager_register (callback:Dynamic, eventObject:Dynamic):Void;
|
||||||
|
@:cffi private static function lime_jpeg_decode_bytes (data:Dynamic, decodeData:Bool, buffer:Dynamic):Dynamic;
|
||||||
|
@:cffi private static function lime_jpeg_decode_file (path:String, decodeData:Bool, buffer:Dynamic):Dynamic;
|
||||||
|
@:cffi private static function lime_key_code_from_scan_code (scanCode:Float32):Float32;
|
||||||
|
@:cffi private static function lime_key_code_to_scan_code (keyCode:Float32):Float32;
|
||||||
|
@:cffi private static function lime_key_event_manager_register (callback:Dynamic, eventObject:Dynamic):Void;
|
||||||
|
@:cffi private static function lime_lzma_compress (data:Dynamic, bytes:Dynamic):Dynamic;
|
||||||
|
@:cffi private static function lime_lzma_decompress (data:Dynamic, bytes:Dynamic):Dynamic;
|
||||||
|
@:cffi private static function lime_mouse_hide ():Void;
|
||||||
|
@:cffi private static function lime_mouse_set_cursor (cursor:Int):Void;
|
||||||
|
@:cffi private static function lime_mouse_set_lock (lock:Bool):Void;
|
||||||
|
@:cffi private static function lime_mouse_show ():Void;
|
||||||
|
@:cffi private static function lime_mouse_warp (x:Int, y:Int, window:Dynamic):Void;
|
||||||
|
@:cffi private static function lime_mouse_event_manager_register (callback:Dynamic, eventObject:Dynamic):Void;
|
||||||
|
@:cffi private static function lime_neko_execute (module:String):Void;
|
||||||
|
@:cffi private static function lime_png_decode_bytes (data:Dynamic, decodeData:Bool, buffer:Dynamic):Dynamic;
|
||||||
|
@:cffi private static function lime_png_decode_file (path:String, decodeData:Bool, buffer:Dynamic):Dynamic;
|
||||||
|
@:cffi private static function lime_renderer_create (window:Dynamic):Dynamic;
|
||||||
|
@:cffi private static function lime_renderer_flip (handle:Dynamic):Void;
|
||||||
|
@:cffi private static function lime_renderer_get_context (handle:Dynamic):Float;
|
||||||
|
@:cffi private static function lime_renderer_get_scale (handle:Dynamic):Float;
|
||||||
|
@:cffi private static function lime_renderer_get_type (handle:Dynamic):Dynamic;
|
||||||
|
@:cffi private static function lime_renderer_lock (handle:Dynamic):Dynamic;
|
||||||
|
@:cffi private static function lime_renderer_make_current (handle:Dynamic):Void;
|
||||||
|
@:cffi private static function lime_renderer_read_pixels (handle:Dynamic, rect:Dynamic, imageBuffer:Dynamic):Dynamic;
|
||||||
|
@:cffi private static function lime_renderer_unlock (handle:Dynamic):Void;
|
||||||
|
@:cffi private static function lime_render_event_manager_register (callback:Dynamic, eventObject:Dynamic):Void;
|
||||||
|
@:cffi private static function lime_sensor_event_manager_register (callback:Dynamic, eventObject:Dynamic):Void;
|
||||||
|
@:cffi private static function lime_system_get_allow_screen_timeout ():Bool;
|
||||||
|
@:cffi private static function lime_system_set_allow_screen_timeout (value:Bool):Bool;
|
||||||
|
@:cffi private static function lime_system_get_device_model ():Dynamic;
|
||||||
|
@:cffi private static function lime_system_get_device_vendor ():Dynamic;
|
||||||
|
@:cffi private static function lime_system_get_directory (type:Int, company:String, title:String):Dynamic;
|
||||||
|
@:cffi private static function lime_system_get_display (index:Int):Dynamic;
|
||||||
|
@:cffi private static function lime_system_get_ios_tablet ():Bool;
|
||||||
|
@:cffi private static function lime_system_get_num_displays ():Int;
|
||||||
|
@:cffi private static function lime_system_get_platform_label ():Dynamic;
|
||||||
|
@:cffi private static function lime_system_get_platform_name ():Dynamic;
|
||||||
|
@:cffi private static function lime_system_get_platform_version ():Dynamic;
|
||||||
|
@:cffi private static function lime_system_get_timer ():Float;
|
||||||
|
@:cffi private static function lime_system_open_file (path:String):Void;
|
||||||
|
@:cffi private static function lime_system_open_url (url:String, target:String):Void;
|
||||||
|
@:cffi private static function lime_text_event_manager_register (callback:Dynamic, eventObject:Dynamic):Void;
|
||||||
|
@:cffi private static function lime_text_layout_create (direction:Int, script:String, language:String):Dynamic;
|
||||||
|
@:cffi private static function lime_text_layout_position (textHandle:Dynamic, fontHandle:Dynamic, size:Int, textString:String, data:Dynamic):Dynamic;
|
||||||
|
@:cffi private static function lime_text_layout_set_direction (textHandle:Dynamic, direction:Int):Void;
|
||||||
|
@:cffi private static function lime_text_layout_set_language (textHandle:Dynamic, language:String):Void;
|
||||||
|
@:cffi private static function lime_text_layout_set_script (textHandle:Dynamic, script:String):Void;
|
||||||
|
@:cffi private static function lime_touch_event_manager_register (callback:Dynamic, eventObject:Dynamic):Void;
|
||||||
|
@:cffi private static function lime_window_alert (handle:Dynamic, message:String, title:String):Void;
|
||||||
|
@:cffi private static function lime_window_close (handle:Dynamic):Void;
|
||||||
|
@:cffi private static function lime_window_create (application:Dynamic, width:Int, height:Int, flags:Int, title:String):Dynamic;
|
||||||
|
@:cffi private static function lime_window_focus (handle:Dynamic):Void;
|
||||||
|
@:cffi private static function lime_window_get_display (handle:Dynamic):Int;
|
||||||
|
@:cffi private static function lime_window_get_display_mode (handle:Dynamic):Dynamic;
|
||||||
|
@:cffi private static function lime_window_get_enable_text_events (handle:Dynamic):Bool;
|
||||||
|
@:cffi private static function lime_window_get_height (handle:Dynamic):Int;
|
||||||
|
@:cffi private static function lime_window_get_id (handle:Dynamic):Int;
|
||||||
|
@:cffi private static function lime_window_get_width (handle:Dynamic):Int;
|
||||||
|
@:cffi private static function lime_window_get_x (handle:Dynamic):Int;
|
||||||
|
@:cffi private static function lime_window_get_y (handle:Dynamic):Int;
|
||||||
|
@:cffi private static function lime_window_move (handle:Dynamic, x:Int, y:Int):Void;
|
||||||
|
@:cffi private static function lime_window_resize (handle:Dynamic, width:Int, height:Int):Void;
|
||||||
|
@:cffi private static function lime_window_set_borderless (handle:Dynamic, borderless:Bool):Bool;
|
||||||
|
@:cffi private static function lime_window_set_display_mode (handle:Dynamic, displayMode:Dynamic):Dynamic;
|
||||||
|
@:cffi private static function lime_window_set_enable_text_events (handle:Dynamic, enabled:Bool):Void;
|
||||||
|
@:cffi private static function lime_window_set_fullscreen (handle:Dynamic, fullscreen:Bool):Bool;
|
||||||
|
@:cffi private static function lime_window_set_icon (handle:Dynamic, buffer:Dynamic):Void;
|
||||||
|
@:cffi private static function lime_window_set_maximized (handle:Dynamic, maximized:Bool):Bool;
|
||||||
|
@:cffi private static function lime_window_set_minimized (handle:Dynamic, minimized:Bool):Bool;
|
||||||
|
@:cffi private static function lime_window_set_resizable (handle:Dynamic, resizable:Bool):Bool;
|
||||||
|
@:cffi private static function lime_window_set_title (handle:Dynamic, title:String):Dynamic;
|
||||||
|
@:cffi private static function lime_window_event_manager_register (callback:Dynamic, eventObject:Dynamic):Void;
|
||||||
|
@:cffi private static function lime_zlib_compress (data:Dynamic, bytes:Dynamic):Dynamic;
|
||||||
|
@:cffi private static function lime_zlib_decompress (data:Dynamic, bytes:Dynamic):Dynamic;
|
||||||
|
#end
|
||||||
|
|
||||||
#if (lime_cffi && !macro && android)
|
#if (lime_cffi && !macro && android)
|
||||||
@:cffi private static function lime_jni_call_member (jniMethod:Dynamic, jniObject:Dynamic, args:Dynamic):Dynamic;
|
@:cffi private static function lime_jni_call_member (jniMethod:Dynamic, jniObject:Dynamic, args:Dynamic):Dynamic;
|
||||||
@:cffi private static function lime_jni_call_static (jniMethod:Dynamic, args:Dynamic):Dynamic;
|
@:cffi private static function lime_jni_call_static (jniMethod:Dynamic, args:Dynamic):Dynamic;
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
#define LIME_GRAPHICS_IMAGE_H
|
#define LIME_GRAPHICS_IMAGE_H
|
||||||
|
|
||||||
|
|
||||||
|
#include <hl.h>
|
||||||
#include <hx/CFFI.h>
|
#include <hx/CFFI.h>
|
||||||
#include <graphics/ImageBuffer.h>
|
#include <graphics/ImageBuffer.h>
|
||||||
|
|
||||||
@@ -9,6 +10,23 @@
|
|||||||
namespace lime {
|
namespace lime {
|
||||||
|
|
||||||
|
|
||||||
|
struct HL_Image {
|
||||||
|
|
||||||
|
hl_type* t;
|
||||||
|
HL_ImageBuffer* buffer;
|
||||||
|
bool dirty;
|
||||||
|
int height;
|
||||||
|
int offsetX;
|
||||||
|
int offsetY;
|
||||||
|
/*ImageType*/ int type;
|
||||||
|
int version;
|
||||||
|
int width;
|
||||||
|
// double x;
|
||||||
|
// double y;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
class Image {
|
class Image {
|
||||||
|
|
||||||
|
|
||||||
@@ -16,6 +34,7 @@ namespace lime {
|
|||||||
|
|
||||||
Image ();
|
Image ();
|
||||||
Image (value image);
|
Image (value image);
|
||||||
|
Image (HL_Image* image);
|
||||||
~Image ();
|
~Image ();
|
||||||
|
|
||||||
ImageBuffer *buffer;
|
ImageBuffer *buffer;
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
#define LIME_GRAPHICS_IMAGE_BUFFER_H
|
#define LIME_GRAPHICS_IMAGE_BUFFER_H
|
||||||
|
|
||||||
|
|
||||||
|
#include <hl.h>
|
||||||
#include <hx/CFFI.h>
|
#include <hx/CFFI.h>
|
||||||
#include <graphics/PixelFormat.h>
|
#include <graphics/PixelFormat.h>
|
||||||
#include <utils/ArrayBufferView.h>
|
#include <utils/ArrayBufferView.h>
|
||||||
@@ -10,6 +11,26 @@
|
|||||||
namespace lime {
|
namespace lime {
|
||||||
|
|
||||||
|
|
||||||
|
struct HL_ImageBuffer {
|
||||||
|
|
||||||
|
hl_type* t;
|
||||||
|
int bitsPerPixel;
|
||||||
|
HL_ArrayBufferView* data;
|
||||||
|
PixelFormat format;
|
||||||
|
int height;
|
||||||
|
bool premultiplied;
|
||||||
|
bool transparent;
|
||||||
|
int width;
|
||||||
|
void* __srcBitmapData;
|
||||||
|
// void* __srcCanvas;
|
||||||
|
void* __srcContext;
|
||||||
|
// void* __srcCustom;
|
||||||
|
void* __srcImage;
|
||||||
|
void* __srcImageData;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
class ImageBuffer {
|
class ImageBuffer {
|
||||||
|
|
||||||
|
|
||||||
@@ -17,6 +38,7 @@ namespace lime {
|
|||||||
|
|
||||||
ImageBuffer ();
|
ImageBuffer ();
|
||||||
ImageBuffer (value imageBuffer);
|
ImageBuffer (value imageBuffer);
|
||||||
|
ImageBuffer (HL_ImageBuffer* imageBuffer);
|
||||||
~ImageBuffer ();
|
~ImageBuffer ();
|
||||||
|
|
||||||
void Blit (const unsigned char *data, int x, int y, int width, int height);
|
void Blit (const unsigned char *data, int x, int y, int width, int height);
|
||||||
|
|||||||
@@ -2,12 +2,24 @@
|
|||||||
#define LIME_MATH_RECTANGLE_H
|
#define LIME_MATH_RECTANGLE_H
|
||||||
|
|
||||||
|
|
||||||
|
#include <hl.h>
|
||||||
#include <hx/CFFI.h>
|
#include <hx/CFFI.h>
|
||||||
|
|
||||||
|
|
||||||
namespace lime {
|
namespace lime {
|
||||||
|
|
||||||
|
|
||||||
|
struct HL_Rectangle {
|
||||||
|
|
||||||
|
hl_type* type;
|
||||||
|
double height;
|
||||||
|
double width;
|
||||||
|
double x;
|
||||||
|
double y;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
class Rectangle {
|
class Rectangle {
|
||||||
|
|
||||||
|
|
||||||
@@ -16,6 +28,7 @@ namespace lime {
|
|||||||
Rectangle ();
|
Rectangle ();
|
||||||
Rectangle (double x, double y, double width, double height);
|
Rectangle (double x, double y, double width, double height);
|
||||||
Rectangle (value rect);
|
Rectangle (value rect);
|
||||||
|
Rectangle (HL_Rectangle* rect);
|
||||||
|
|
||||||
void Contract (double x, double y, double width, double height);
|
void Contract (double x, double y, double width, double height);
|
||||||
value Value ();
|
value Value ();
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
#define LIME_UTILS_ARRAY_BUFFER_VIEW_H
|
#define LIME_UTILS_ARRAY_BUFFER_VIEW_H
|
||||||
|
|
||||||
|
|
||||||
|
#include <hl.h>
|
||||||
#include <hx/CFFI.h>
|
#include <hx/CFFI.h>
|
||||||
#include <utils/Bytes.h>
|
#include <utils/Bytes.h>
|
||||||
|
|
||||||
@@ -9,6 +10,19 @@
|
|||||||
namespace lime {
|
namespace lime {
|
||||||
|
|
||||||
|
|
||||||
|
struct HL_ArrayBufferView {
|
||||||
|
|
||||||
|
hl_type* t;
|
||||||
|
/*TypedArrayType*/ int type;
|
||||||
|
HL_Bytes* buffer;
|
||||||
|
int byteOffset;
|
||||||
|
int byteLength;
|
||||||
|
int length;
|
||||||
|
int bytesPerElement;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
class ArrayBufferView {
|
class ArrayBufferView {
|
||||||
|
|
||||||
|
|
||||||
@@ -17,6 +31,7 @@ namespace lime {
|
|||||||
ArrayBufferView ();
|
ArrayBufferView ();
|
||||||
ArrayBufferView (int size);
|
ArrayBufferView (int size);
|
||||||
ArrayBufferView (value arrayBufferView);
|
ArrayBufferView (value arrayBufferView);
|
||||||
|
ArrayBufferView (HL_ArrayBufferView* arrayBufferView);
|
||||||
~ArrayBufferView ();
|
~ArrayBufferView ();
|
||||||
|
|
||||||
unsigned char *Data ();
|
unsigned char *Data ();
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
#define LIME_UTILS_BYTES_H
|
#define LIME_UTILS_BYTES_H
|
||||||
|
|
||||||
|
|
||||||
|
#include <hl.h>
|
||||||
#include <hx/CFFI.h>
|
#include <hx/CFFI.h>
|
||||||
#include <utils/QuickVec.h>
|
#include <utils/QuickVec.h>
|
||||||
|
|
||||||
@@ -9,12 +10,22 @@
|
|||||||
namespace lime {
|
namespace lime {
|
||||||
|
|
||||||
|
|
||||||
|
struct HL_Bytes {
|
||||||
|
|
||||||
|
hl_type* t;
|
||||||
|
int length;
|
||||||
|
unsigned char* b;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
struct Bytes {
|
struct Bytes {
|
||||||
|
|
||||||
|
|
||||||
Bytes ();
|
Bytes ();
|
||||||
Bytes (int size);
|
Bytes (int size);
|
||||||
Bytes (value bytes);
|
Bytes (value bytes);
|
||||||
|
Bytes (HL_Bytes* bytes);
|
||||||
Bytes (const char* path);
|
Bytes (const char* path);
|
||||||
Bytes (const QuickVec<unsigned char> data);
|
Bytes (const QuickVec<unsigned char> data);
|
||||||
~Bytes ();
|
~Bytes ();
|
||||||
@@ -25,6 +36,7 @@ namespace lime {
|
|||||||
void ReadFile (const char* path);
|
void ReadFile (const char* path);
|
||||||
void Resize (int size);
|
void Resize (int size);
|
||||||
void Set (value bytes);
|
void Set (value bytes);
|
||||||
|
void Set (HL_Bytes* bytes);
|
||||||
void Set (const QuickVec<unsigned char> data);
|
void Set (const QuickVec<unsigned char> data);
|
||||||
value Value ();
|
value Value ();
|
||||||
|
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#include <hl.h>
|
||||||
#include <hx/CFFIPrime.h>
|
#include <hx/CFFIPrime.h>
|
||||||
#include <app/Application.h>
|
#include <app/Application.h>
|
||||||
#include <app/ApplicationEvent.h>
|
#include <app/ApplicationEvent.h>
|
||||||
@@ -989,6 +990,16 @@ namespace lime {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
HL_PRIM void hl_lime_image_data_util_fill_rect (HL_Image* image, HL_Rectangle* rect, int rg, int ba) {
|
||||||
|
|
||||||
|
Image _image = Image (image);
|
||||||
|
Rectangle _rect = Rectangle (rect);
|
||||||
|
int32_t color = (rg << 16) | ba;
|
||||||
|
ImageDataUtil::FillRect (&_image, &_rect, color);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void lime_image_data_util_flood_fill (value image, int x, int y, int rg, int ba) {
|
void lime_image_data_util_flood_fill (value image, int x, int y, int rg, int ba) {
|
||||||
|
|
||||||
Image _image = Image (image);
|
Image _image = Image (image);
|
||||||
@@ -2129,6 +2140,18 @@ namespace lime {
|
|||||||
DEFINE_PRIME2 (lime_zlib_decompress);
|
DEFINE_PRIME2 (lime_zlib_decompress);
|
||||||
|
|
||||||
|
|
||||||
|
#define _ENUM "?"
|
||||||
|
#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 TRECTANGLE _OBJ (_F64 _F64 _F64 _F64)
|
||||||
|
|
||||||
|
|
||||||
|
DEFINE_HL_PRIM (_VOID, lime_image_data_util_fill_rect, TIMAGE TRECTANGLE _I32 _I32);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -45,6 +45,17 @@ namespace lime {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Image::Image (HL_Image* image) {
|
||||||
|
|
||||||
|
width = image->width;
|
||||||
|
height = image->height;
|
||||||
|
buffer = new ImageBuffer (image->buffer);
|
||||||
|
offsetX = image->offsetX;
|
||||||
|
offsetY = image->offsetY;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
Image::~Image () {
|
Image::~Image () {
|
||||||
|
|
||||||
delete buffer;
|
delete buffer;
|
||||||
|
|||||||
@@ -70,6 +70,35 @@ namespace lime {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ImageBuffer::ImageBuffer (HL_ImageBuffer* imageBuffer) {
|
||||||
|
|
||||||
|
if (imageBuffer) {
|
||||||
|
|
||||||
|
width = imageBuffer->width;
|
||||||
|
height = imageBuffer->height;
|
||||||
|
bitsPerPixel = imageBuffer->bitsPerPixel;
|
||||||
|
format = imageBuffer->format;
|
||||||
|
transparent = imageBuffer->transparent;
|
||||||
|
premultiplied = imageBuffer->premultiplied;
|
||||||
|
data = new ArrayBufferView (imageBuffer->data);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
width = 0;
|
||||||
|
height = 0;
|
||||||
|
bitsPerPixel = 32;
|
||||||
|
format = RGBA32;
|
||||||
|
data = 0;
|
||||||
|
premultiplied = false;
|
||||||
|
transparent = false;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
mValue = 0;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
ImageBuffer::~ImageBuffer () {
|
ImageBuffer::~ImageBuffer () {
|
||||||
|
|
||||||
delete data;
|
delete data;
|
||||||
|
|||||||
@@ -51,6 +51,16 @@ namespace lime {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Rectangle::Rectangle (HL_Rectangle* rect) {
|
||||||
|
|
||||||
|
width = rect->width;
|
||||||
|
height = rect->height;
|
||||||
|
x = rect->x;
|
||||||
|
y = rect->y;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void Rectangle::Contract (double x, double y, double width, double height) {
|
void Rectangle::Contract (double x, double y, double width, double height) {
|
||||||
|
|
||||||
if (this->width == 0 && this->height == 0) {
|
if (this->width == 0 && this->height == 0) {
|
||||||
|
|||||||
@@ -60,6 +60,27 @@ namespace lime {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ArrayBufferView::ArrayBufferView (HL_ArrayBufferView* arrayBufferView) {
|
||||||
|
|
||||||
|
if (arrayBufferView) {
|
||||||
|
|
||||||
|
buffer = new Bytes (arrayBufferView->buffer);
|
||||||
|
byteLength = arrayBufferView->byteLength;
|
||||||
|
length = arrayBufferView->length;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
buffer = new Bytes ();
|
||||||
|
byteLength = 0;
|
||||||
|
length = 0;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
mValue = 0;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
ArrayBufferView::~ArrayBufferView () {
|
ArrayBufferView::~ArrayBufferView () {
|
||||||
|
|
||||||
delete buffer;
|
delete buffer;
|
||||||
|
|||||||
@@ -70,6 +70,19 @@ namespace lime {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Bytes::Bytes (HL_Bytes* bytes) {
|
||||||
|
|
||||||
|
// _initializeBytes ();
|
||||||
|
|
||||||
|
_data = 0;
|
||||||
|
_length = 0;
|
||||||
|
_value = 0;
|
||||||
|
|
||||||
|
Set (bytes);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
Bytes::Bytes (const char* path) {
|
Bytes::Bytes (const char* path) {
|
||||||
|
|
||||||
_initializeBytes ();
|
_initializeBytes ();
|
||||||
@@ -245,6 +258,34 @@ namespace lime {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Bytes::Set (HL_Bytes* bytes) {
|
||||||
|
|
||||||
|
if (!bytes) {
|
||||||
|
|
||||||
|
_length = 0;
|
||||||
|
_data = 0;
|
||||||
|
_value = 0;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
_value = 0;
|
||||||
|
_length = bytes->length;
|
||||||
|
|
||||||
|
if (_length > 0) {
|
||||||
|
|
||||||
|
_data = bytes->b;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
_data = 0;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void Bytes::Set (const QuickVec<unsigned char> data) {
|
void Bytes::Set (const QuickVec<unsigned char> data) {
|
||||||
|
|
||||||
int size = data.size ();
|
int size = data.size ();
|
||||||
|
|||||||
Reference in New Issue
Block a user