Initial strict HL bindings for passing Image, Rectangle, Bytes

This commit is contained in:
Joshua Granick
2018-05-23 19:43:55 -07:00
parent f01e980114
commit 2fe10275e3
12 changed files with 369 additions and 1 deletions

View File

@@ -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;

View File

@@ -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;

View File

@@ -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);

View File

@@ -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 ();

View File

@@ -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 ();

View File

@@ -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 ();

View File

@@ -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);
} }

View File

@@ -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;

View File

@@ -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;

View File

@@ -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) {

View File

@@ -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;

View File

@@ -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 ();