diff --git a/lime/_backend/native/NativeCFFI.hx b/lime/_backend/native/NativeCFFI.hx index 85222bd01..d1522ae85 100644 --- a/lime/_backend/native/NativeCFFI.hx +++ b/lime/_backend/native/NativeCFFI.hx @@ -22,6 +22,8 @@ import lime.math.Matrix3; import lime.math.Vector2; import lime.media.openal.ALContext; import lime.media.openal.ALDevice; +import lime.system.DisplayMode; +import lime.utils.ArrayBufferView; #end #if cpp @@ -88,6 +90,8 @@ class NativeCFFI { @: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_load_bytes (data:Dynamic):Dynamic; + @:cffi private static function lime_font_load_file (path: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; @@ -214,83 +218,90 @@ class NativeCFFI { @:hlNative("lime", "lime_bytes_read_file") private static function lime_bytes_read_file (path:String, bytes:Bytes):Bytes { return null; } @:cffi private static function lime_cffi_get_native_pointer (ptr:Dynamic):Float; @:hlNative("lime", "lime_clipboard_event_manager_register") private static function lime_clipboard_event_manager_register (callback:Void->Void, eventObject:ClipboardEventInfo):Void {} - @:cffi private static function lime_clipboard_get_text ():Dynamic; - @:cffi private static function lime_clipboard_set_text (text:String):Void; + @:hlNative("lime", "lime_clipboard_get_text") private static function lime_clipboard_get_text ():hl.Bytes { return null; } + @:hlNative("lime", "lime_clipboard_set_text") 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; + @:hlNative("lime", "lime_deflate_compress") private static function lime_deflate_compress (data:Bytes, bytes:Bytes):Bytes { return null; } + @:hlNative("lime", "lime_deflate_decompress") private static function lime_deflate_decompress (data:Bytes, bytes:Bytes):Bytes { return null; } @:hlNative("lime", "lime_drop_event_manager_register") private static function lime_drop_event_manager_register (callback:Void->Void, eventObject:DropEventInfo):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; + @:hlNative("lime", "lime_file_dialog_open_directory") private static function lime_file_dialog_open_directory (title:String, filter:String, defaultPath:String):hl.Bytes { return null; } + @:hlNative("lime", "lime_file_dialog_open_file") private static function lime_file_dialog_open_file (title:String, filter:String, defaultPath:String):hl.Bytes { return null; } + @:hlNative("lime", "lime_file_dialog_open_files") private static function lime_file_dialog_open_files (title:String, filter:String, defaultPath:String):Array { return null; } + @:hlNative("lime", "lime_file_dialog_save_file") private static function lime_file_dialog_save_file (title:String, filter:String, defaultPath:String):hl.Bytes { return null; } + @:hlNative("lime", "lime_file_watcher_create") private static function lime_file_watcher_create (callback:Dynamic):CFFIPointer { return null; } + @:hlNative("lime", "lime_file_watcher_add_directory") private static function lime_file_watcher_add_directory (handle:CFFIPointer, path:String, recursive:Bool):Int { return 0; } + @:hlNative("lime", "lime_file_watcher_remove_directory") private static function lime_file_watcher_remove_directory (handle:CFFIPointer, watchID:Int):Void {} + @:hlNative("lime", "lime_file_watcher_update") private static function lime_file_watcher_update (handle:CFFIPointer):Void {} + @:hlNative("lime", "lime_font_get_ascender") private static function lime_font_get_ascender (handle:CFFIPointer):Int { return 0; } + @:hlNative("lime", "lime_font_get_descender") private static function lime_font_get_descender (handle:CFFIPointer):Int { return 0; } + @:hlNative("lime", "lime_font_get_family_name") private static function lime_font_get_family_name (handle:CFFIPointer):hl.Bytes { return null; } + @:hlNative("lime", "lime_font_get_glyph_index") private static function lime_font_get_glyph_index (handle:CFFIPointer, character:String):Int { return 0; } + @:hlNative("lime", "lime_font_get_glyph_indices") private static function lime_font_get_glyph_indices (handle:CFFIPointer, characters:String):Array { return null; } + @:hlNative("lime", "lime_font_get_glyph_metrics") private static function lime_font_get_glyph_metrics (handle:CFFIPointer, index:Int):Dynamic { return null; } + @:hlNative("lime", "lime_font_get_height") private static function lime_font_get_height (handle:CFFIPointer):Int { return 0; } + @:hlNative("lime", "lime_font_get_num_glyphs") private static function lime_font_get_num_glyphs (handle:CFFIPointer):Int { return 0; } + @:hlNative("lime", "lime_font_get_underline_position") private static function lime_font_get_underline_position (handle:CFFIPointer):Int { return 0; } + @:hlNative("lime", "lime_font_get_underline_thickness") private static function lime_font_get_underline_thickness (handle:CFFIPointer):Int { return 0; } + @:hlNative("lime", "lime_font_get_units_per_em") private static function lime_font_get_units_per_em (handle:CFFIPointer):Int { return 0; } + // @:hlNative("lime", "") private static function lime_font_load (data:Dynamic):Dynamic { return null; } + @:hlNative("lime", "lime_font_load_bytes") private static function lime_font_load_bytes (data:Bytes):CFFIPointer { return null; } + @:hlNative("lime", "lime_font_load_file") private static function lime_font_load_file (path:String):CFFIPointer { return null; } + @:hlNative("lime", "lime_font_outline_decompose") private static function lime_font_outline_decompose (handle:CFFIPointer, size:Int):Dynamic { return null; } + @:hlNative("lime", "lime_font_render_glyph") private static function lime_font_render_glyph (handle:CFFIPointer, index:Int, data:Bytes):Bool { return false; } + @:hlNative("lime", "lime_font_render_glyphs") private static function lime_font_render_glyphs (handle:CFFIPointer, indices:Array, data:Bytes):Bool { return false; } + @:hlNative("lime", "lime_font_set_size") private static function lime_font_set_size (handle:CFFIPointer, size:Int):Void {} + @:hlNative("lime", "lime_gamepad_add_mappings") private static function lime_gamepad_add_mappings (mappings:Array):Void {} + @:hlNative("lime", "lime_gamepad_get_device_guid") private static function lime_gamepad_get_device_guid (id:Int):hl.Bytes { return null; } + @:hlNative("lime", "lime_gamepad_get_device_name") private static function lime_gamepad_get_device_name (id:Int):hl.Bytes { return null; } @:hlNative("lime", "lime_gamepad_event_manager_register") private static function lime_gamepad_event_manager_register (callback:Void->Void, eventObject:GamepadEventInfo):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; + @:hlNative("lime", "lime_gzip_compress") private static function lime_gzip_compress (data:Bytes, bytes:Bytes):Bytes { return null; } + @:hlNative("lime", "lime_gzip_decompress") private static function lime_gzip_decompress (data:Bytes, bytes:Bytes):Bytes { return null; } + @:hlNative("lime", "lime_haptic_vibrate") private static function lime_haptic_vibrate (period:Int, duration:Int):Void {} + @:hlNative("lime", "lime_image_encode") private static function lime_image_encode (data:ImageBuffer, type:Int, quality:Int, bytes:Bytes):Bytes { return null; } @:cffi private static function lime_image_load (data:Dynamic, buffer:Dynamic):Dynamic; @:hlNative("lime", "lime_image_load_bytes") private static function lime_image_load_bytes (data:Bytes, buffer:ImageBuffer):ImageBuffer { return null; } @:hlNative("lime", "lime_image_load_file") private static function lime_image_load_file (path:String, buffer:ImageBuffer):ImageBuffer { return null; } - @:cffi private static function lime_image_data_util_color_transform (image:Dynamic, rect:Dynamic, colorMatrix:Dynamic):Void; + @:hlNative("lime", "lime_image_data_util_color_transform") private static function lime_image_data_util_color_transform (image:Image, rect:Rectangle, colorMatrix:ArrayBufferView):Void {} @:cffi private static function lime_image_data_util_copy_channel (image:Dynamic, sourceImage:Dynamic, sourceRect:Dynamic, destPoint:Dynamic, srcChannel:Int, destChannel:Int):Void; + // @:hlNative("lime", "lime_image_data_util_copy_channel") private static function lime_image_data_util_copy_channel (image:Image, sourceImage:Image, sourceRect:Rectangle, destPoint:Vector2, 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_copy_pixels") private static function lime_image_data_util_copy_pixels (image:Image, sourceImage:Image, sourceRect:Rectangle, destPoint:Vector2, alphaImage:Image, alphaPoint:Vector2, 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; + @:hlNative("lime", "lime_image_data_util_flood_fill") private static function lime_image_data_util_flood_fill (image:Image, x:Int, y:Int, rg:Int, ba:Int):Void {} + @:hlNative("lime", "lime_image_data_util_get_pixels") private static function lime_image_data_util_get_pixels (image:Image, rect:Rectangle, format:Int, bytes:Bytes):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; + // @:hlNative("lime", "lime_image_data_util_merge") private static function lime_image_data_util_merge (image:Image, sourceImage:Image, sourceRect:Rectangle, destPoint:Vector2, redMultiplier:Int, greenMultiplier:Int, blueMultiplier:Int, alphaMultiplier:Int):Void {} + @:hlNative("lime", "lime_image_data_util_multiply_alpha") private static function lime_image_data_util_multiply_alpha (image:Image):Void {} + @:hlNative("lime", "lime_image_data_util_resize") private static function lime_image_data_util_resize (image:Image, buffer:ImageBuffer, width:Int, height:Int):Void {} + @:hlNative("lime", "lime_image_data_util_set_format") private static function lime_image_data_util_set_format (image:Image, 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; + // @:hlNative("lime", "lime_image_data_util_set_pixels") private static function lime_image_data_util_set_pixels (image:Image, rect:Rectangle, bytes:Bytes, 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; + // @:hlNative("lime", "lime_image_data_util_threshold") private static function lime_image_data_util_threshold (image:Image, sourceImage:Image, sourceRect:Rectangle, destPoint:Vector2, operation:Int, thresholdRG:Int, thresholdBA:Int, colorRG:Int, colorBA:Int, maskRG:Int, maskBA:Int, copySource:Bool):Int { return 0; } + @:hlNative("lime", "lime_image_data_util_unmultiply_alpha") private static function lime_image_data_util_unmultiply_alpha (image:Image):Void {} + @:hlNative("lime", "lime_joystick_get_device_guid") private static function lime_joystick_get_device_guid (id:Int):hl.Bytes { return null; } + @:hlNative("lime", "lime_joystick_get_device_name") private static function lime_joystick_get_device_name (id:Int):hl.Bytes { return null; } + @:hlNative("lime", "lime_joystick_get_num_axes") private static function lime_joystick_get_num_axes (id:Int):Int { return 0; } + @:hlNative("lime", "lime_joystick_get_num_buttons") private static function lime_joystick_get_num_buttons (id:Int):Int { return 0; } + @:hlNative("lime", "lime_joystick_get_num_hats") private static function lime_joystick_get_num_hats (id:Int):Int { return 0; } + @:hlNative("lime", "lime_joystick_get_num_trackballs") private static function lime_joystick_get_num_trackballs (id:Int):Int { return 0; } @:hlNative("lime", "lime_joystick_event_manager_register") private static function lime_joystick_event_manager_register (callback:Void->Void, eventObject:JoystickEventInfo):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; + @:hlNative("lime", "lime_jpeg_decode_bytes") private static function lime_jpeg_decode_bytes (data:Bytes, decodeData:Bool, buffer:ImageBuffer):ImageBuffer { return null; } + @:hlNative("lime", "lime_jpeg_decode_file") private static function lime_jpeg_decode_file (path:String, decodeData:Bool, buffer:ImageBuffer):ImageBuffer { return null; } + @:hlNative("lime", "lime_key_code_from_scan_code") private static function lime_key_code_from_scan_code (scanCode:hl.F32):hl.F32 { return 0; } + @:hlNative("lime", "lime_key_code_to_scan_code") private static function lime_key_code_to_scan_code (keyCode:hl.F32):hl.F32 { return 0; } @:hlNative("lime", "lime_key_event_manager_register") private static function lime_key_event_manager_register (callback:Void->Void, eventObject:KeyEventInfo):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; + @:hlNative("lime", "lime_lzma_compress") private static function lime_lzma_compress (data:Bytes, bytes:Bytes):Bytes { return null; } + @:hlNative("lime", "lime_lzma_decompress") private static function lime_lzma_decompress (data:Bytes, bytes:Bytes):Bytes { return null; } + @:hlNative("lime", "lime_mouse_hide") private static function lime_mouse_hide ():Void {} + @:hlNative("lime", "lime_mouse_set_cursor") private static function lime_mouse_set_cursor (cursor:Int):Void {} + @:hlNative("lime", "lime_mouse_set_lock") private static function lime_mouse_set_lock (lock:Bool):Void {} + @:hlNative("lime", "lime_mouse_show") private static function lime_mouse_show ():Void {} + @:hlNative("lime", "lime_mouse_warp") private static function lime_mouse_warp (x:Int, y:Int, window:CFFIPointer):Void {} @:hlNative("lime", "lime_mouse_event_manager_register") private static function lime_mouse_event_manager_register (callback:Void->Void, eventObject:MouseEventInfo):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; + @:hlNative("lime", "lime_png_decode_bytes") private static function lime_png_decode_bytes (data:Bytes, decodeData:Bool, buffer:ImageBuffer):ImageBuffer { return null; } + @:hlNative("lime", "lime_png_decode_file") private static function lime_png_decode_file (path:String, decodeData:Bool, buffer:ImageBuffer):ImageBuffer { return null; } @:hlNative("lime", "lime_renderer_create") private static function lime_renderer_create (window:CFFIPointer):CFFIPointer { return null; } @:hlNative("lime", "lime_renderer_flip") private static function lime_renderer_flip (handle:CFFIPointer):Void {} @:hlNative("lime", "lime_renderer_get_context") private static function lime_renderer_get_context (handle:CFFIPointer):Float { return 0; } @@ -302,31 +313,31 @@ class NativeCFFI { @:hlNative("lime", "lime_renderer_unlock") private static function lime_renderer_unlock (handle:CFFIPointer):Void {} @:hlNative("lime", "lime_render_event_manager_register") private static function lime_render_event_manager_register (callback:Void->Void, eventObject:RenderEventInfo):Void {} @:hlNative("lime", "lime_sensor_event_manager_register") private static function lime_sensor_event_manager_register (callback:Void->Void, eventObject:SensorEventInfo):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; + @:hlNative("lime", "lime_system_get_allow_screen_timeout") private static function lime_system_get_allow_screen_timeout ():Bool { return false; } + @:hlNative("lime", "lime_system_set_allow_screen_timeout") private static function lime_system_set_allow_screen_timeout (value:Bool):Bool { return false; } + @:hlNative("lime", "lime_system_get_device_model") private static function lime_system_get_device_model ():hl.Bytes { return null; } + @:hlNative("lime", "lime_system_get_device_vendor") private static function lime_system_get_device_vendor ():hl.Bytes { return null; } + @:hlNative("lime", "lime_system_get_directory") private static function lime_system_get_directory (type:Int, company:String, title:String):hl.Bytes { return null; } + @:hlNative("lime", "lime_system_get_display") private static function lime_system_get_display (index:Int):Dynamic { return null; } + @:hlNative("lime", "lime_system_get_ios_tablet") private static function lime_system_get_ios_tablet ():Bool { return false; } + @:hlNative("lime", "lime_system_get_num_displays") private static function lime_system_get_num_displays ():Int { return 0; } + @:hlNative("lime", "lime_system_get_platform_label") private static function lime_system_get_platform_label ():hl.Bytes { return null; } + @:hlNative("lime", "lime_system_get_platform_name") private static function lime_system_get_platform_name ():hl.Bytes { return null; } + @:hlNative("lime", "lime_system_get_platform_version") private static function lime_system_get_platform_version ():hl.Bytes { return null; } @:hlNative("lime", "lime_system_get_timer") private static function lime_system_get_timer ():Float { return 0; } - @:cffi private static function lime_system_open_file (path:String):Void; - @:cffi private static function lime_system_open_url (url:String, target:String):Void; + @:hlNative("lime", "lime_system_open_file") private static function lime_system_open_file (path:String):Void {} + @:hlNative("lime", "lime_system_open_url") private static function lime_system_open_url (url:String, target:String):Void {} @:hlNative("lime", "lime_text_event_manager_register") private static function lime_text_event_manager_register (callback:Void->Void, eventObject:TextEventInfo):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; + @:hlNative("lime", "lime_text_layout_create") private static function lime_text_layout_create (direction:Int, script:String, language:String):Dynamic { return null; } + @:hlNative("lime", "lime_text_layout_position") private static function lime_text_layout_position (textHandle:CFFIPointer, fontHandle:CFFIPointer, size:Int, textString:String, data:Bytes):Bytes { return null; } + @:hlNative("lime", "lime_text_layout_set_direction") private static function lime_text_layout_set_direction (textHandle:CFFIPointer, direction:Int):Void {} + @:hlNative("lime", "lime_text_layout_set_language") private static function lime_text_layout_set_language (textHandle:CFFIPointer, language:String):Void {} + @:hlNative("lime", "lime_text_layout_set_script") private static function lime_text_layout_set_script (textHandle:CFFIPointer, script:String):Void {} @:hlNative("lime", "lime_touch_event_manager_register") private static function lime_touch_event_manager_register (callback:Void->Void, eventObject:TouchEventInfo):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; + @:hlNative("lime", "lime_window_alert") private static function lime_window_alert (handle:CFFIPointer, message:String, title:String):Void {} + @:hlNative("lime", "lime_window_close") private static function lime_window_close (handle:CFFIPointer):Void {} @:hlNative("lime", "lime_window_create") private static function lime_window_create (application:CFFIPointer, width:Int, height:Int, flags:Int, title:String):CFFIPointer { return null; } - @:cffi private static function lime_window_focus (handle:Dynamic):Void; + @:hlNative("lime", "lime_window_focus") private static function lime_window_focus (handle:CFFIPointer):Void {} @:hlNative("lime", "lime_window_get_display") private static function lime_window_get_display (handle:CFFIPointer):Int { return 0; } @:hlNative("lime", "lime_window_get_display_mode") private static function lime_window_get_display_mode (handle:CFFIPointer):Dynamic { return null; } @:hlNative("lime", "lime_window_get_enable_text_events") private static function lime_window_get_enable_text_events (handle:CFFIPointer):Bool { return false; } @@ -335,20 +346,20 @@ class NativeCFFI { @:hlNative("lime", "lime_window_get_width") private static function lime_window_get_width (handle:CFFIPointer):Int { return 0; } @:hlNative("lime", "lime_window_get_x") private static function lime_window_get_x (handle:CFFIPointer):Int { return 0; } @:hlNative("lime", "lime_window_get_y") private static function lime_window_get_y (handle:CFFIPointer):Int { return 0; } - @: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; + @:hlNative("lime", "lime_window_move") private static function lime_window_move (handle:CFFIPointer, x:Int, y:Int):Void {} + @:hlNative("lime", "lime_window_resize") private static function lime_window_resize (handle:CFFIPointer, width:Int, height:Int):Void {} + @:hlNative("lime", "lime_window_set_borderless") private static function lime_window_set_borderless (handle:CFFIPointer, borderless:Bool):Bool { return false; } + @:hlNative("lime", "lime_window_set_display_mode") private static function lime_window_set_display_mode (handle:CFFIPointer, displayMode:DisplayMode):DisplayMode { return null; } + @:hlNative("lime", "lime_window_set_enable_text_events") private static function lime_window_set_enable_text_events (handle:CFFIPointer, enabled:Bool):Void {} + @:hlNative("lime", "lime_window_set_fullscreen") private static function lime_window_set_fullscreen (handle:CFFIPointer, fullscreen:Bool):Bool { return false; } + @:hlNative("lime", "lime_window_set_icon") private static function lime_window_set_icon (handle:CFFIPointer, buffer:ImageBuffer):Void {} + @:hlNative("lime", "lime_window_set_maximized") private static function lime_window_set_maximized (handle:CFFIPointer, maximized:Bool):Bool { return false; } + @:hlNative("lime", "lime_window_set_minimized") private static function lime_window_set_minimized (handle:CFFIPointer, minimized:Bool):Bool { return false; } + @:hlNative("lime", "lime_window_set_resizable") private static function lime_window_set_resizable (handle:CFFIPointer, resizable:Bool):Bool { return false; } @:hlNative("lime", "lime_window_set_title") private static function lime_window_set_title (handle:CFFIPointer, title:String):String { return null; } @:hlNative("lime", "lime_window_event_manager_register") private static function lime_window_event_manager_register (callback:Void->Void, eventObject:WindowEventInfo):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; + @:hlNative("lime", "lime_zlib_compress") private static function lime_zlib_compress (data:Bytes, bytes:Bytes):Bytes { return null; } + @:hlNative("lime", "lime_zlib_decompress") private static function lime_zlib_decompress (data:Bytes, bytes:Bytes):Bytes { return null; } #end #if (lime_cffi && !macro && android) diff --git a/lime/graphics/format/JPEG.hx b/lime/graphics/format/JPEG.hx index f9476801f..39c1e6cfa 100644 --- a/lime/graphics/format/JPEG.hx +++ b/lime/graphics/format/JPEG.hx @@ -38,7 +38,13 @@ class JPEG { #if (lime_cffi && !macro) #if !cs - return NativeCFFI.lime_jpeg_decode_bytes (bytes, decodeData, new ImageBuffer (new UInt8Array (Bytes.alloc (0)))); + var buffer = NativeCFFI.lime_jpeg_decode_bytes (bytes, decodeData, new ImageBuffer (new UInt8Array (Bytes.alloc (0)))); + + if (buffer != null) { + + return new Image (buffer); + + } #else var bufferData:Dynamic = NativeCFFI.lime_jpeg_decode_bytes (bytes, decodeData, null); @@ -63,7 +69,13 @@ class JPEG { #if (lime_cffi && !macro) #if !cs - return NativeCFFI.lime_jpeg_decode_file (path, decodeData, new ImageBuffer (new UInt8Array (Bytes.alloc (0)))); + var buffer = NativeCFFI.lime_jpeg_decode_file (path, decodeData, new ImageBuffer (new UInt8Array (Bytes.alloc (0)))); + + if (buffer != null) { + + return new Image (buffer); + + } #else var bufferData:Dynamic = NativeCFFI.lime_jpeg_decode_file (path, decodeData, null); diff --git a/lime/graphics/format/PNG.hx b/lime/graphics/format/PNG.hx index e154e14aa..76549fb34 100644 --- a/lime/graphics/format/PNG.hx +++ b/lime/graphics/format/PNG.hx @@ -38,7 +38,13 @@ class PNG { #if (lime_cffi && !macro) #if !cs - return NativeCFFI.lime_png_decode_bytes (bytes, decodeData, new ImageBuffer (new UInt8Array (Bytes.alloc (0)))); + var buffer = NativeCFFI.lime_png_decode_bytes (bytes, decodeData, new ImageBuffer (new UInt8Array (Bytes.alloc (0)))); + + if (buffer != null) { + + return new Image (buffer); + + } #else var bufferData:Dynamic = NativeCFFI.lime_png_decode_bytes (bytes, decodeData, null); @@ -63,7 +69,13 @@ class PNG { #if (lime_cffi && !macro) #if !cs - return NativeCFFI.lime_png_decode_file (path, decodeData, new ImageBuffer (new UInt8Array (Bytes.alloc (0)))); + var buffer = NativeCFFI.lime_png_decode_file (path, decodeData, new ImageBuffer (new UInt8Array (Bytes.alloc (0)))); + + if (buffer != null) { + + return new Image (buffer); + + } #else var bufferData:Dynamic = NativeCFFI.lime_png_decode_file (path, decodeData, null); diff --git a/lime/system/Clipboard.hx b/lime/system/Clipboard.hx index 9c945ffbe..8e2f11984 100644 --- a/lime/system/Clipboard.hx +++ b/lime/system/Clipboard.hx @@ -35,7 +35,11 @@ class Clipboard { var cacheText = _text; #if (lime_cffi && !macro) + #if hl + _text = @:privateAccess String.fromUCS2 (NativeCFFI.lime_clipboard_get_text ()); + #else _text = NativeCFFI.lime_clipboard_get_text (); + #end #elseif flash if (FlashClipboard.generalClipboard.hasFormat (TEXT_FORMAT)) { diff --git a/lime/system/System.hx b/lime/system/System.hx index 263006791..284ba7d35 100644 --- a/lime/system/System.hx +++ b/lime/system/System.hx @@ -467,11 +467,19 @@ class System { } + #if hl + path = @:privateAccess String.fromUCS2 (NativeCFFI.lime_system_get_directory (type, company, file)); + #else path = NativeCFFI.lime_system_get_directory (type, company, file); + #end } else { + #if hl + path = @:privateAccess String.fromUCS2 (NativeCFFI.lime_system_get_directory (type, null, null)); + #else path = NativeCFFI.lime_system_get_directory (type, null, null); + #end } @@ -712,7 +720,11 @@ class System { if (__deviceModel == null) { #if (windows || ios || tvos) + #if hl + __deviceModel = @:privateAccess String.fromUCS2 (NativeCFFI.lime_system_get_device_model ()); + #else __deviceModel = NativeCFFI.lime_system_get_device_model (); + #end #elseif android var manufacturer:String = JNI.createStaticField ("android/os/Build", "MANUFACTURER", "Ljava/lang/String;").get (); var model:String = JNI.createStaticField ("android/os/Build", "MODEL", "Ljava/lang/String;").get (); @@ -743,7 +755,11 @@ class System { if (__deviceVendor == null) { #if (windows && !html5) + #if hl + __deviceVendor = @:privateAccess String.fromUCS2 (NativeCFFI.lime_system_get_device_vendor ()); + #else __deviceVendor = NativeCFFI.lime_system_get_device_vendor (); + #end #elseif android var vendor:String = JNI.createStaticField ("android/os/Build", "MANUFACTURER", "Ljava/lang/String;").get (); if (vendor != null) { @@ -840,7 +856,11 @@ class System { if (__platformLabel == null) { #if (windows && !html5) + #if hl + var label:String = @:privateAccess String.fromUCS2 (NativeCFFI.lime_system_get_platform_label ()); + #else var label:String = NativeCFFI.lime_system_get_platform_label (); + #end if (label != null) __platformLabel = StringTools.trim (label); #elseif linux __platformLabel = __runProcess ("lsb_release", [ "-ds" ]); @@ -904,7 +924,11 @@ class System { if (__platformVersion == null) { #if (windows && !html5) + #if hl + __platformVersion = @:privateAccess String.fromUCS2 (NativeCFFI.lime_system_get_platform_version ()); + #else __platformVersion = NativeCFFI.lime_system_get_platform_version (); + #end #elseif android var release = JNI.createStaticField ("android/os/Build$VERSION", "RELEASE", "Ljava/lang/String;").get (); var api = JNI.createStaticField ("android/os/Build$VERSION", "SDK_INT", "I").get (); diff --git a/lime/text/Font.hx b/lime/text/Font.hx index bf2bf3446..75351c1eb 100644 --- a/lime/text/Font.hx +++ b/lime/text/Font.hx @@ -446,7 +446,7 @@ class Font { #if (lime_cffi && !macro) __fontPathWithoutDirectory = null; - src = NativeCFFI.lime_font_load (bytes); + src = NativeCFFI.lime_font_load_bytes (bytes); __initializeSource (); #end @@ -461,7 +461,7 @@ class Font { #if (lime_cffi && !macro) __fontPathWithoutDirectory = Path.withoutDirectory (__fontPath); - src = NativeCFFI.lime_font_load (__fontPath); + src = NativeCFFI.lime_font_load_file (__fontPath); __initializeSource (); #end diff --git a/lime/ui/Gamepad.hx b/lime/ui/Gamepad.hx index 112f04d15..67a282341 100644 --- a/lime/ui/Gamepad.hx +++ b/lime/ui/Gamepad.hx @@ -79,7 +79,11 @@ class Gamepad { @:noCompletion private inline function get_guid ():String { #if (lime_cffi && !macro) + #if hl + return @:privateAccess String.fromUCS2 (NativeCFFI.lime_gamepad_get_device_guid (this.id)); + #else return NativeCFFI.lime_gamepad_get_device_guid (this.id); + #end #elseif (js && html5) var devices = Joystick.__getDeviceData (); return devices[this.id].id; @@ -93,7 +97,11 @@ class Gamepad { @:noCompletion private inline function get_name ():String { #if (lime_cffi && !macro) + #if hl + return @:privateAccess String.fromUCS2 (NativeCFFI.lime_gamepad_get_device_name (this.id)); + #else return NativeCFFI.lime_gamepad_get_device_name (this.id); + #end #elseif (js && html5) var devices = Joystick.__getDeviceData (); return devices[this.id].id; diff --git a/lime/ui/Joystick.hx b/lime/ui/Joystick.hx index 8bc7d36cc..bbd1118fe 100644 --- a/lime/ui/Joystick.hx +++ b/lime/ui/Joystick.hx @@ -84,7 +84,11 @@ class Joystick { @:noCompletion private inline function get_guid ():String { #if (lime_cffi && !macro) + #if hl + return @:privateAccess String.fromUCS2 (NativeCFFI.lime_joystick_get_device_guid (this.id)); + #else return NativeCFFI.lime_joystick_get_device_guid (this.id); + #end #elseif (js && html5) var devices = __getDeviceData (); return devices[this.id].id; @@ -98,7 +102,11 @@ class Joystick { @:noCompletion private inline function get_name ():String { #if (lime_cffi && !macro) + #if hl + return @:privateAccess String.fromUCS2 (NativeCFFI.lime_joystick_get_device_name (this.id)); + #else return NativeCFFI.lime_joystick_get_device_name (this.id); + #end #elseif (js && html5) var devices = __getDeviceData (); return devices[this.id].id; diff --git a/project/include/math/ColorMatrix.h b/project/include/math/ColorMatrix.h index b7836ac85..cf9fc4f9b 100644 --- a/project/include/math/ColorMatrix.h +++ b/project/include/math/ColorMatrix.h @@ -4,6 +4,7 @@ #include #include +#include #include @@ -17,6 +18,7 @@ namespace lime { ColorMatrix (); ColorMatrix (value colorMatrix); + ColorMatrix (HL_ArrayBufferView* colorMatrix); ~ColorMatrix (); float GetAlphaMultiplier (); diff --git a/project/include/math/Vector2.h b/project/include/math/Vector2.h index 456f96166..ce61808f1 100644 --- a/project/include/math/Vector2.h +++ b/project/include/math/Vector2.h @@ -26,6 +26,7 @@ namespace lime { Vector2 (); Vector2 (double x, double y); Vector2 (value vec); + Vector2 (HL_Vector2* vec); vdynamic* Dynamic (); value Value (); diff --git a/project/include/media/AudioBuffer.h b/project/include/media/AudioBuffer.h index 8a1e15da5..0c564620a 100644 --- a/project/include/media/AudioBuffer.h +++ b/project/include/media/AudioBuffer.h @@ -55,9 +55,10 @@ namespace lime { AudioBuffer (); AudioBuffer (value audioBuffer); + AudioBuffer (HL_AudioBuffer* audioBuffer); ~AudioBuffer (); - value Value (); + void* Value (); int bitsPerSample; int channels; @@ -66,7 +67,8 @@ namespace lime { private: - value mValue; + HL_AudioBuffer* _buffer; + value _value; }; diff --git a/project/include/system/CFFI.h b/project/include/system/CFFI.h index 9d91ef681..0abfcab9b 100644 --- a/project/include/system/CFFI.h +++ b/project/include/system/CFFI.h @@ -5,6 +5,12 @@ #define HL_NAME(n) hl_##n #include +struct hl_varray : varray {}; +struct hl_vstring : vstring {}; + +#undef hl_aptr +#define hl_aptr(a,t) ((t*)(((hl_varray*)(a))+1)) + #include diff --git a/project/include/system/DisplayMode.h b/project/include/system/DisplayMode.h index 33dce0c32..4a58aa278 100644 --- a/project/include/system/DisplayMode.h +++ b/project/include/system/DisplayMode.h @@ -9,21 +9,37 @@ namespace lime { + struct HL_DisplayMode { + + hl_type* t; + int height; + PixelFormat pixelFormat; + int refreshRate; + int width; + + }; + + class DisplayMode { public: DisplayMode (); DisplayMode (value DisplayMode); + DisplayMode (HL_DisplayMode* DisplayMode); DisplayMode (int width, int height, PixelFormat pixelFormat, int refreshRate); - value Value (); + void* Value (); int height; PixelFormat pixelFormat; int refreshRate; int width; + private: + + HL_DisplayMode* _mode; + }; diff --git a/project/src/ExternalInterface.cpp b/project/src/ExternalInterface.cpp index 1aa2d04bc..a68140dbc 100644 --- a/project/src/ExternalInterface.cpp +++ b/project/src/ExternalInterface.cpp @@ -306,14 +306,14 @@ namespace lime { if (WAV::Decode (&resource, &audioBuffer)) { - return audioBuffer.Value (); + return (value)audioBuffer.Value (); } #ifdef LIME_OGG if (OGG::Decode (&resource, &audioBuffer)) { - return audioBuffer.Value (); + return (value)audioBuffer.Value (); } #endif @@ -323,29 +323,29 @@ namespace lime { } - HL_PRIM vdynamic* hl_lime_audio_load_bytes (HL_Bytes* data, HL_AudioBuffer* buffer) { + HL_PRIM HL_AudioBuffer* hl_lime_audio_load_bytes (HL_Bytes* data, HL_AudioBuffer* buffer) { - // Resource resource; - // Bytes bytes; + Resource resource; + Bytes bytes; - // AudioBuffer audioBuffer = AudioBuffer (buffer); + AudioBuffer audioBuffer = AudioBuffer (buffer); - // bytes.Set (data); - // resource = Resource (&bytes); + bytes.Set (data); + resource = Resource (&bytes); - // if (WAV::Decode (&resource, &audioBuffer)) { + if (WAV::Decode (&resource, &audioBuffer)) { - // return audioBuffer.Value (); + return (HL_AudioBuffer*)audioBuffer.Value (); - // } + } - // #ifdef LIME_OGG - // if (OGG::Decode (&resource, &audioBuffer)) { + #ifdef LIME_OGG + if (OGG::Decode (&resource, &audioBuffer)) { - // return audioBuffer.Value (); + return (HL_AudioBuffer*)audioBuffer.Value (); - // } - // #endif + } + #endif return 0; @@ -363,14 +363,14 @@ namespace lime { if (WAV::Decode (&resource, &audioBuffer)) { - return audioBuffer.Value (); + return (value)audioBuffer.Value (); } #ifdef LIME_OGG if (OGG::Decode (&resource, &audioBuffer)) { - return audioBuffer.Value (); + return (value)audioBuffer.Value (); } #endif @@ -380,28 +380,28 @@ namespace lime { } - HL_PRIM vdynamic* hl_lime_audio_load_file (vbyte* data, HL_AudioBuffer* buffer) { + HL_PRIM HL_AudioBuffer* hl_lime_audio_load_file (HL_String* data, HL_AudioBuffer* buffer) { - // Resource resource; - // Bytes bytes; + Resource resource; + Bytes bytes; - // AudioBuffer audioBuffer = AudioBuffer (buffer); + AudioBuffer audioBuffer = AudioBuffer (buffer); - // resource = Resource (val_string (data)); + resource = Resource (data ? hl_to_utf8 ((const uchar*)data->bytes) : NULL); - // if (WAV::Decode (&resource, &audioBuffer)) { + if (WAV::Decode (&resource, &audioBuffer)) { - // return audioBuffer.Value (); + return (HL_AudioBuffer*)audioBuffer.Value (); - // } + } - // #ifdef LIME_OGG - // if (OGG::Decode (&resource, &audioBuffer)) { + #ifdef LIME_OGG + if (OGG::Decode (&resource, &audioBuffer)) { - // return audioBuffer.Value (); + return (HL_AudioBuffer*)audioBuffer.Value (); - // } - // #endif + } + #endif return 0; @@ -571,9 +571,9 @@ namespace lime { } - HL_PRIM void hl_lime_clipboard_set_text (vbyte* text) { + HL_PRIM void hl_lime_clipboard_set_text (HL_String* text) { - Clipboard::SetText ((const char*)text); + Clipboard::SetText (text ? (const char*)hl_to_utf8 ((const uchar*)text->bytes) : NULL); } @@ -601,19 +601,18 @@ namespace lime { } - HL_PRIM vdynamic* hl_lime_deflate_compress (HL_Bytes* buffer, HL_Bytes* bytes) { + HL_PRIM HL_Bytes* hl_lime_deflate_compress (HL_Bytes* buffer, HL_Bytes* bytes) { - // #ifdef LIME_ZLIB - // Bytes data (buffer); - // Bytes result (bytes); + #ifdef LIME_ZLIB + Bytes data (buffer); + Bytes result (bytes); - // Zlib::Compress (DEFLATE, &data, &result); + Zlib::Compress (DEFLATE, &data, &result); - // return result.Value (); - // #else - // return alloc_null(); - // #endif + return (HL_Bytes*)result.Value (); + #else return 0; + #endif } @@ -634,19 +633,18 @@ namespace lime { } - HL_PRIM vdynamic* hl_lime_deflate_decompress (HL_Bytes* buffer, HL_Bytes* bytes) { + HL_PRIM HL_Bytes* hl_lime_deflate_decompress (HL_Bytes* buffer, HL_Bytes* bytes) { - // #ifdef LIME_ZLIB - // Bytes data (buffer); - // Bytes result (bytes); + #ifdef LIME_ZLIB + Bytes data (buffer); + Bytes result (bytes); - // Zlib::Decompress (DEFLATE, &data, &result); + Zlib::Decompress (DEFLATE, &data, &result); - // return result.Value (); - // #else - // return alloc_null (); - // #endif + return (HL_Bytes*)result.Value (); + #else return 0; + #endif } @@ -701,7 +699,7 @@ namespace lime { } - HL_PRIM vbyte* hl_lime_file_dialog_open_directory (vbyte* title, vbyte* filter, vbyte* defaultPath) { + HL_PRIM vbyte* hl_lime_file_dialog_open_directory (HL_String* title, HL_String* filter, HL_String* defaultPath) { // #ifdef LIME_TINYFILEDIALOGS @@ -769,7 +767,7 @@ namespace lime { } - HL_PRIM vbyte* hl_lime_file_dialog_open_file (vbyte* title, vbyte* filter, vbyte* defaultPath) { + HL_PRIM vbyte* hl_lime_file_dialog_open_file (HL_String* title, HL_String* filter, HL_String* defaultPath) { // #ifdef LIME_TINYFILEDIALOGS @@ -836,7 +834,7 @@ namespace lime { } - HL_PRIM vdynamic* hl_lime_file_dialog_open_files (vbyte* title, vbyte* filter, vbyte* defaultPath) { + HL_PRIM hl_varray* hl_lime_file_dialog_open_files (HL_String* title, HL_String* filter, HL_String* defaultPath) { // #ifdef LIME_TINYFILEDIALOGS @@ -903,7 +901,7 @@ namespace lime { } - HL_PRIM vbyte* hl_lime_file_dialog_save_file (vbyte* title, vbyte* filter, vbyte* defaultPath) { + HL_PRIM vbyte* hl_lime_file_dialog_save_file (HL_String* title, HL_String* filter, HL_String* defaultPath) { // #ifdef LIME_TINYFILEDIALOGS @@ -953,11 +951,10 @@ namespace lime { // #ifdef LIME_EFSW // FileWatcher* watcher = new FileWatcher (callback); - // return CFFIPointer (watcher, gc_file_watcher); + // return HLCFFIPointer (watcher, (hl_finalizer)hl_gc_file_watcher); // #else - // return alloc_null (); - // #endif return 0; + // #endif } @@ -974,7 +971,7 @@ namespace lime { } - HL_PRIM int hl_lime_file_watcher_add_directory (HL_CFFIPointer* handle, vbyte* path, bool recursive) { + HL_PRIM int hl_lime_file_watcher_add_directory (HL_CFFIPointer* handle, HL_String* path, bool recursive) { #ifdef LIME_EFSW FileWatcher* watcher = (FileWatcher*)handle->ptr; @@ -1114,11 +1111,11 @@ namespace lime { } - HL_PRIM int hl_lime_font_get_glyph_index (HL_CFFIPointer* fontHandle, vbyte* character) { + HL_PRIM int hl_lime_font_get_glyph_index (HL_CFFIPointer* fontHandle, HL_String* character) { #ifdef LIME_FREETYPE Font *font = (Font*)fontHandle->ptr; - return font->GetGlyphIndex ((char*)character); + return font->GetGlyphIndex (character ? (char*)hl_to_utf8 ((const uchar*)character->bytes) : NULL); #else return -1; #endif @@ -1138,11 +1135,11 @@ namespace lime { } - HL_PRIM vdynamic* hl_lime_font_get_glyph_indices (HL_CFFIPointer* fontHandle, vbyte* characters) { + HL_PRIM hl_varray* hl_lime_font_get_glyph_indices (HL_CFFIPointer* fontHandle, HL_String* characters) { // #ifdef LIME_FREETYPE // Font *font = (Font*)fontHandle->ptr; - // return font->GetGlyphIndices ((char*)characters); + // return font->GetGlyphIndices (characters ? (char*)hl_to_utf8 ((const uchar*)characters->bytes) : NULL); // #else return 0; // #endif @@ -1162,7 +1159,7 @@ namespace lime { } - HL_PRIM vdynamic* hl_lime_font_get_glyph_metrics (HL_CFFIPointer* fontHandle, int index) { + HL_PRIM vdynobj* hl_lime_font_get_glyph_metrics (HL_CFFIPointer* fontHandle, int index) { // #ifdef LIME_FREETYPE // Font *font = (Font*)fontHandle->ptr; @@ -1327,29 +1324,29 @@ namespace lime { HL_PRIM HL_CFFIPointer* hl_lime_font_load_bytes (HL_Bytes* data) { - // #ifdef LIME_FREETYPE - // Resource resource; - // Bytes bytes; + #ifdef LIME_FREETYPE + Resource resource; + Bytes bytes; - // bytes.Set (data); - // resource = Resource (&bytes); + bytes.Set (data); + resource = Resource (&bytes); - // Font *font = new Font (&resource, 0); + Font *font = new Font (&resource, 0); - // if (font) { + if (font) { - // if (font->face) { + if (font->face) { - // return CFFIPointer (font, gc_font); + return HLCFFIPointer (font, (hl_finalizer)hl_gc_font); - // } else { + } else { - // delete font; + delete font; - // } + } - // } - // #endif + } + #endif return 0; @@ -1386,30 +1383,30 @@ namespace lime { } - HL_PRIM HL_CFFIPointer* hl_lime_font_load_file (vbyte* data) { + HL_PRIM HL_CFFIPointer* hl_lime_font_load_file (HL_String* data) { - // #ifdef LIME_FREETYPE - // Resource resource; - // Bytes bytes; + #ifdef LIME_FREETYPE + Resource resource; + Bytes bytes; - // resource = Resource (val_string (data)); + resource = Resource (data ? hl_to_utf8 ((const uchar*)data->bytes) : NULL); - // Font *font = new Font (&resource, 0); + Font *font = new Font (&resource, 0); - // if (font) { + if (font) { - // if (font->face) { + if (font->face) { - // return CFFIPointer (font, gc_font); + return HLCFFIPointer (font, (hl_finalizer)hl_gc_font); - // } else { + } else { - // delete font; + delete font; - // } + } - // } - // #endif + } + #endif return 0; @@ -1443,7 +1440,7 @@ namespace lime { } - HL_PRIM vdynamic* hl_lime_font_outline_decompose (HL_CFFIPointer* fontHandle, int size) { + HL_PRIM vdynobj* hl_lime_font_outline_decompose (HL_CFFIPointer* fontHandle, int size) { // #ifdef LIME_FREETYPE // Font *font = (Font*)fontHandle->ptr; @@ -1470,13 +1467,13 @@ namespace lime { HL_PRIM bool hl_lime_font_render_glyph (HL_CFFIPointer* fontHandle, int index, HL_Bytes* data) { - // #ifdef LIME_FREETYPE - // Font *font = (Font*)val_data (fontHandle); - // Bytes bytes (data); - // return font->RenderGlyph (index, &bytes); - // #else + #ifdef LIME_FREETYPE + Font *font = (Font*)fontHandle->ptr; + Bytes bytes (data); + return font->RenderGlyph (index, &bytes); + #else return false; - // #endif + #endif } @@ -1494,10 +1491,10 @@ namespace lime { } - HL_PRIM bool hl_lime_font_render_glyphs (HL_CFFIPointer* fontHandle, vdynamic* indices, HL_Bytes* data) { + HL_PRIM bool hl_lime_font_render_glyphs (HL_CFFIPointer* fontHandle, hl_varray* indices, HL_Bytes* data) { // #ifdef LIME_FREETYPE - // Font *font = (Font*)val_data (fontHandle); + // Font *font = (Font*)fontHandle->ptr; // Bytes bytes (data); // return font->RenderGlyphs (indices, &bytes); // #else @@ -1540,13 +1537,14 @@ namespace lime { } - HL_PRIM void hl_lime_gamepad_add_mappings (vdynamic* mappings) { + HL_PRIM void hl_lime_gamepad_add_mappings (hl_varray* mappings) { - // int length = val_array_size (mappings); + // int length = mappings->size; + // HL_String** mappingsData = hl_aptr (mappings, HL_String*); // for (int i = 0; i < length; i++) { - // Gamepad::AddMapping (val_string (val_array_i (mappings, i))); + // Gamepad::AddMapping (hl_to_utf8 ((const uchar*)((*mappingsData++)->bytes))); // } @@ -1639,18 +1637,18 @@ namespace lime { } - HL_PRIM vdynamic* hl_lime_gzip_compress (HL_Bytes* buffer, HL_Bytes* bytes) { + HL_PRIM HL_Bytes* hl_lime_gzip_compress (HL_Bytes* buffer, HL_Bytes* bytes) { - // #ifdef LIME_ZLIB - // Bytes data (buffer); - // Bytes result (bytes); + #ifdef LIME_ZLIB + Bytes data (buffer); + Bytes result (bytes); - // Zlib::Compress (GZIP, &data, &result); + Zlib::Compress (GZIP, &data, &result); - // return result.Value (); - // #else + return (HL_Bytes*)result.Value (); + #else return 0; - // #endif + #endif } @@ -1671,18 +1669,18 @@ namespace lime { } - HL_PRIM vdynamic* hl_lime_gzip_decompress (HL_Bytes* buffer, HL_Bytes* bytes) { + HL_PRIM HL_Bytes* hl_lime_gzip_decompress (HL_Bytes* buffer, HL_Bytes* bytes) { - // #ifdef LIME_ZLIB - // Bytes data (buffer); - // Bytes result (bytes); + #ifdef LIME_ZLIB + Bytes data (buffer); + Bytes result (bytes); - // Zlib::Decompress (GZIP, &data, &result); + Zlib::Decompress (GZIP, &data, &result); - // return result.Value (); - // #else + return (HL_Bytes*)result.Value (); + #else return 0; - // #endif + #endif } @@ -1743,38 +1741,38 @@ namespace lime { } - HL_PRIM vdynamic* hl_lime_image_encode (HL_ImageBuffer* buffer, int type, int quality, HL_Bytes* bytes) { + HL_PRIM HL_Bytes* hl_lime_image_encode (HL_ImageBuffer* buffer, int type, int quality, HL_Bytes* bytes) { - // ImageBuffer imageBuffer = ImageBuffer (buffer); - // Bytes data = Bytes (bytes); + ImageBuffer imageBuffer = ImageBuffer (buffer); + Bytes data = Bytes (bytes); - // switch (type) { + switch (type) { - // case 0: + case 0: - // #ifdef LIME_PNG - // if (PNG::Encode (&imageBuffer, &data)) { + #ifdef LIME_PNG + if (PNG::Encode (&imageBuffer, &data)) { - // return data.Value (); + return (HL_Bytes*)data.Value (); - // } - // #endif - // break; + } + #endif + break; - // case 1: + case 1: - // #ifdef LIME_JPEG - // if (JPEG::Encode (&imageBuffer, &data, quality)) { + #ifdef LIME_JPEG + if (JPEG::Encode (&imageBuffer, &data, quality)) { - // return data.Value (); + return (HL_Bytes*)data.Value (); - // } - // #endif - // break; + } + #endif + break; - // default: break; + default: break; - // } + } return 0; @@ -1930,10 +1928,10 @@ namespace lime { HL_PRIM void hl_lime_image_data_util_color_transform (HL_Image* image, HL_Rectangle* rect, HL_ArrayBufferView* colorMatrix) { - // Image _image = Image (image); - // Rectangle _rect = Rectangle (rect); - // ColorMatrix _colorMatrix = ColorMatrix (colorMatrix); - // ImageDataUtil::ColorTransform (&_image, &_rect, &_colorMatrix); + Image _image = Image (image); + Rectangle _rect = Rectangle (rect); + ColorMatrix _colorMatrix = ColorMatrix (colorMatrix); + ImageDataUtil::ColorTransform (&_image, &_rect, &_colorMatrix); } @@ -1951,11 +1949,11 @@ namespace lime { HL_PRIM void hl_lime_image_data_util_copy_channel (HL_Image* image, HL_Image* sourceImage, HL_Rectangle* sourceRect, HL_Vector2* destPoint, int srcChannel, int destChannel) { - // Image _image = Image (image); - // Image _sourceImage = Image (sourceImage); - // Rectangle _sourceRect = Rectangle (sourceRect); - // Vector2 _destPoint = Vector2 (destPoint); - // ImageDataUtil::CopyChannel (&_image, &_sourceImage, &_sourceRect, &_destPoint, srcChannel, destChannel); + Image _image = Image (image); + Image _sourceImage = Image (sourceImage); + Rectangle _sourceRect = Rectangle (sourceRect); + Vector2 _destPoint = Vector2 (destPoint); + ImageDataUtil::CopyChannel (&_image, &_sourceImage, &_sourceRect, &_destPoint, srcChannel, destChannel); } @@ -1985,23 +1983,23 @@ namespace lime { HL_PRIM void hl_lime_image_data_util_copy_pixels (HL_Image* image, HL_Image* sourceImage, HL_Rectangle* sourceRect, HL_Vector2* destPoint, HL_Image* alphaImage, HL_Vector2* alphaPoint, bool mergeAlpha) { - // Image _image = Image (image); - // Image _sourceImage = Image (sourceImage); - // Rectangle _sourceRect = Rectangle (sourceRect); - // Vector2 _destPoint = Vector2 (destPoint); + Image _image = Image (image); + Image _sourceImage = Image (sourceImage); + Rectangle _sourceRect = Rectangle (sourceRect); + Vector2 _destPoint = Vector2 (destPoint); - // if (val_is_null (alphaImage)) { + if (!alphaImage) { - // ImageDataUtil::CopyPixels (&_image, &_sourceImage, &_sourceRect, &_destPoint, 0, 0, mergeAlpha); + ImageDataUtil::CopyPixels (&_image, &_sourceImage, &_sourceRect, &_destPoint, 0, 0, mergeAlpha); - // } else { + } else { - // Image _alphaImage = Image (alphaImage); - // Vector2 _alphaPoint = Vector2 (alphaPoint); + Image _alphaImage = Image (alphaImage); + Vector2 _alphaPoint = Vector2 (alphaPoint); - // ImageDataUtil::CopyPixels (&_image, &_sourceImage, &_sourceRect, &_destPoint, &_alphaImage, &_alphaPoint, mergeAlpha); + ImageDataUtil::CopyPixels (&_image, &_sourceImage, &_sourceRect, &_destPoint, &_alphaImage, &_alphaPoint, mergeAlpha); - // } + } } @@ -2057,11 +2055,11 @@ namespace lime { HL_PRIM void hl_lime_image_data_util_get_pixels (HL_Image* image, HL_Rectangle* rect, int format, HL_Bytes* bytes) { - // Image _image = Image (image); - // Rectangle _rect = Rectangle (rect); - // PixelFormat _format = (PixelFormat)format; - // Bytes pixels = Bytes (bytes); - // ImageDataUtil::GetPixels (&_image, &_rect, _format, &pixels); + Image _image = Image (image); + Rectangle _rect = Rectangle (rect); + PixelFormat _format = (PixelFormat)format; + Bytes pixels = Bytes (bytes); + ImageDataUtil::GetPixels (&_image, &_rect, _format, &pixels); } @@ -2079,11 +2077,11 @@ namespace lime { HL_PRIM void hl_lime_image_data_util_merge (HL_Image* image, HL_Image* sourceImage, HL_Rectangle* sourceRect, HL_Vector2* destPoint, int redMultiplier, int greenMultiplier, int blueMultiplier, int alphaMultiplier) { - // Image _image = Image (image); - // Image _sourceImage = Image (sourceImage); - // Rectangle _sourceRect = Rectangle (sourceRect); - // Vector2 _destPoint = Vector2 (destPoint); - // ImageDataUtil::Merge (&_image, &_sourceImage, &_sourceRect, &_destPoint, redMultiplier, greenMultiplier, blueMultiplier, alphaMultiplier); + Image _image = Image (image); + Image _sourceImage = Image (sourceImage); + Rectangle _sourceRect = Rectangle (sourceRect); + Vector2 _destPoint = Vector2 (destPoint); + ImageDataUtil::Merge (&_image, &_sourceImage, &_sourceRect, &_destPoint, redMultiplier, greenMultiplier, blueMultiplier, alphaMultiplier); } @@ -2180,15 +2178,14 @@ namespace lime { HL_PRIM int hl_lime_image_data_util_threshold (HL_Image* image, HL_Image* sourceImage, HL_Rectangle* sourceRect, HL_Vector2* destPoint, int operation, int thresholdRG, int thresholdBA, int colorRG, int colorBA, int maskRG, int maskBA, bool copySource) { - // Image _image = Image (image); - // Image _sourceImage = Image (sourceImage); - // Rectangle _sourceRect = Rectangle (sourceRect); - // Vector2 _destPoint = Vector2 (destPoint); - // int32_t threshold = (thresholdRG << 16) | thresholdBA; - // int32_t color = (colorRG << 16) | colorBA; - // int32_t mask = (maskRG << 16) | maskBA; - // return ImageDataUtil::Threshold (&_image, &_sourceImage, &_sourceRect, &_destPoint, operation, threshold, color, mask, copySource); - return 0; + Image _image = Image (image); + Image _sourceImage = Image (sourceImage); + Rectangle _sourceRect = Rectangle (sourceRect); + Vector2 _destPoint = Vector2 (destPoint); + int32_t threshold = (thresholdRG << 16) | thresholdBA; + int32_t color = (colorRG << 16) | colorBA; + int32_t mask = (maskRG << 16) | maskBA; + return ImageDataUtil::Threshold (&_image, &_sourceImage, &_sourceRect, &_destPoint, operation, threshold, color, mask, copySource); } @@ -2510,18 +2507,18 @@ namespace lime { } - HL_PRIM vdynamic* hl_lime_lzma_compress (HL_Bytes* buffer, HL_Bytes* bytes) { + HL_PRIM HL_Bytes* hl_lime_lzma_compress (HL_Bytes* buffer, HL_Bytes* bytes) { - // #ifdef LIME_LZMA - // Bytes data (buffer); - // Bytes result (bytes); + #ifdef LIME_LZMA + Bytes data (buffer); + Bytes result (bytes); - // LZMA::Compress (&data, &result); + LZMA::Compress (&data, &result); - // return result.Value (); - // #else + return (HL_Bytes*)result.Value (); + #else return 0; - // #endif + #endif } @@ -2542,18 +2539,18 @@ namespace lime { } - HL_PRIM vdynamic* hl_lime_lzma_decompress (HL_Bytes* buffer, HL_Bytes* bytes) { + HL_PRIM HL_Bytes* hl_lime_lzma_decompress (HL_Bytes* buffer, HL_Bytes* bytes) { - // #ifdef LIME_LZMA - // Bytes data (buffer); - // Bytes result (bytes); + #ifdef LIME_LZMA + Bytes data (buffer); + Bytes result (bytes); - // LZMA::Decompress (&data, &result); + LZMA::Decompress (&data, &result); - // return result.Value (); - // #else + return (HL_Bytes*)result.Value (); + #else return 0; - // #endif + #endif } @@ -2887,24 +2884,23 @@ namespace lime { } - HL_PRIM vdynamic* hl_lime_renderer_read_pixels (HL_CFFIPointer* renderer, HL_Rectangle* rect, HL_ImageBuffer* imageBuffer) { + HL_PRIM HL_ImageBuffer* hl_lime_renderer_read_pixels (HL_CFFIPointer* renderer, HL_Rectangle* rect, HL_ImageBuffer* imageBuffer) { - // Renderer* targetRenderer = (Renderer*)renderer->ptr; - // ImageBuffer buffer (imageBuffer); + Renderer* targetRenderer = (Renderer*)renderer->ptr; + ImageBuffer buffer (imageBuffer); - // if (rect) { + if (rect) { - // Rectangle _rect = Rectangle (rect); - // targetRenderer->ReadPixels (&buffer, &_rect); + Rectangle _rect = Rectangle (rect); + targetRenderer->ReadPixels (&buffer, &_rect); - // } else { + } else { - // targetRenderer->ReadPixels (&buffer, NULL); + targetRenderer->ReadPixels (&buffer, NULL); - // } + } - // return buffer.Value (); - return 0; + return (HL_ImageBuffer*)buffer.Value (); } @@ -3054,9 +3050,9 @@ namespace lime { } - HL_PRIM vbyte* hl_lime_system_get_directory (int type, vbyte* company, vbyte* title) { + HL_PRIM vbyte* hl_lime_system_get_directory (int type, HL_String* company, HL_String* title) { - std::wstring* path = System::GetDirectory ((SystemDirectory)type, (char*)company, (char*)title); + std::wstring* path = System::GetDirectory ((SystemDirectory)type, company ? (char*)hl_to_utf8 ((const uchar*)company->bytes) : NULL, title ? (char*)hl_to_utf8 ((const uchar*)title->bytes) : NULL); if (path) { @@ -3083,10 +3079,10 @@ namespace lime { } - HL_PRIM vdynamic* hl_lime_system_get_display (int id) { + HL_PRIM vdynobj* hl_lime_system_get_display (int id) { - // return System::GetDisplay (id); return 0; + //return System::GetDisplay (id); } @@ -3390,11 +3386,11 @@ namespace lime { } - HL_PRIM HL_CFFIPointer* hl_lime_text_layout_create (int direction, vbyte* script, vbyte* language) { + HL_PRIM HL_CFFIPointer* hl_lime_text_layout_create (int direction, HL_String* script, HL_String* language) { #if defined (LIME_FREETYPE) && defined (LIME_HARFBUZZ) - TextLayout *text = new TextLayout (direction, (char*)script, (char*)language); + TextLayout *text = new TextLayout (direction, script ? (char*)hl_to_utf8 ((const uchar*)script->bytes) : NULL, language ? (char*)hl_to_utf8 ((const uchar*)language->bytes) : NULL); return HLCFFIPointer (text, (hl_finalizer)hl_gc_text_layout); #else @@ -3423,17 +3419,17 @@ namespace lime { } - HL_PRIM vdynamic* hl_lime_text_layout_position (HL_CFFIPointer* textHandle, HL_CFFIPointer* fontHandle, int size, vbyte* textString, HL_Bytes* data) { + HL_PRIM HL_Bytes* hl_lime_text_layout_position (HL_CFFIPointer* textHandle, HL_CFFIPointer* fontHandle, int size, HL_String* textString, HL_Bytes* data) { - // #if defined(LIME_FREETYPE) && defined(LIME_HARFBUZZ) + #if defined(LIME_FREETYPE) && defined(LIME_HARFBUZZ) - // TextLayout *text = (TextLayout*)val_data (textHandle); - // Font *font = (Font*)val_data (fontHandle); - // Bytes bytes (data); - // text->Position (font, size, textString.c_str (), &bytes); - // return bytes.Value (); + TextLayout *text = (TextLayout*)textHandle->ptr; + Font *font = (Font*)fontHandle->ptr; + Bytes bytes (data); + text->Position (font, size, textString ? hl_to_utf8 ((const uchar*)textString->bytes) : NULL, &bytes); + return (HL_Bytes*)bytes.Value (); - // #endif + #endif return 0; @@ -3470,11 +3466,11 @@ namespace lime { } - HL_PRIM void hl_lime_text_layout_set_language (HL_CFFIPointer* textHandle, vbyte* language) { + HL_PRIM void hl_lime_text_layout_set_language (HL_CFFIPointer* textHandle, HL_String* language) { #if defined (LIME_FREETYPE) && defined (LIME_HARFBUZZ) TextLayout *text = (TextLayout*)textHandle->ptr; - text->SetLanguage ((char*)language); + text->SetLanguage ((char*)hl_to_utf8 ((const uchar*)language->bytes)); #endif } @@ -3490,11 +3486,11 @@ namespace lime { } - HL_PRIM void hl_lime_text_layout_set_script (HL_CFFIPointer* textHandle, vbyte* script) { + HL_PRIM void hl_lime_text_layout_set_script (HL_CFFIPointer* textHandle, HL_String* script) { #if defined (LIME_FREETYPE) && defined (LIME_HARFBUZZ) TextLayout *text = (TextLayout*)textHandle->ptr; - text->SetScript ((char*)script); + text->SetScript ((char*)hl_to_utf8 ((const uchar*)script->bytes)); #endif } @@ -3524,10 +3520,10 @@ namespace lime { } - HL_PRIM void hl_lime_window_alert (HL_CFFIPointer* window, vbyte* message, vbyte* title) { + HL_PRIM void hl_lime_window_alert (HL_CFFIPointer* window, HL_String* message, HL_String* title) { Window* targetWindow = (Window*)window->ptr; - targetWindow->Alert ((const char*)message, (const char*)title); + targetWindow->Alert (message ? (const char*)hl_to_utf8 ((const uchar*)message) : NULL, title ? (const char*)hl_to_utf8 ((const uchar*)title) : NULL); } @@ -3617,18 +3613,17 @@ namespace lime { Window* targetWindow = (Window*)val_data (window); DisplayMode displayMode; targetWindow->GetDisplayMode (&displayMode); - return displayMode.Value (); + return (value)displayMode.Value (); } - HL_PRIM vdynamic* hl_lime_window_get_display_mode (HL_CFFIPointer* window) { + HL_PRIM HL_DisplayMode* hl_lime_window_get_display_mode (HL_CFFIPointer* window, HL_DisplayMode* displayMode) { - // Window* targetWindow = (Window*)window->ptr; - // DisplayMode displayMode; - // targetWindow->GetDisplayMode (&displayMode); - // return displayMode.Value (); - return 0; + Window* targetWindow = (Window*)window->ptr; + DisplayMode _displayMode = DisplayMode (displayMode); + targetWindow->GetDisplayMode (&_displayMode); + return (HL_DisplayMode*)_displayMode.Value (); } @@ -3783,19 +3778,18 @@ namespace lime { DisplayMode _displayMode (displayMode); targetWindow->SetDisplayMode (&_displayMode); targetWindow->GetDisplayMode (&_displayMode); - return _displayMode.Value (); + return (value)_displayMode.Value (); } - HL_PRIM vdynamic* hl_lime_window_set_display_mode (HL_CFFIPointer* window, vdynamic* displayMode) { + HL_PRIM HL_DisplayMode* hl_lime_window_set_display_mode (HL_CFFIPointer* window, HL_DisplayMode* displayMode) { - // Window* targetWindow = (Window*)val_data (window); - // DisplayMode _displayMode (displayMode); - // targetWindow->SetDisplayMode (&_displayMode); - // targetWindow->GetDisplayMode (&_displayMode); - // return _displayMode.Value (); - return 0; + Window* targetWindow = (Window*)window->ptr; + DisplayMode _displayMode (displayMode); + targetWindow->SetDisplayMode (&_displayMode); + targetWindow->GetDisplayMode (&_displayMode); + return (HL_DisplayMode*)_displayMode.Value (); } @@ -3968,18 +3962,18 @@ namespace lime { } - HL_PRIM vdynamic* hl_lime_zlib_compress (HL_Bytes* buffer, HL_Bytes* bytes) { + HL_PRIM HL_Bytes* hl_lime_zlib_compress (HL_Bytes* buffer, HL_Bytes* bytes) { - // #ifdef LIME_ZLIB - // Bytes data (buffer); - // Bytes result (bytes); + #ifdef LIME_ZLIB + Bytes data (buffer); + Bytes result (bytes); - // Zlib::Compress (ZLIB, &data, &result); + Zlib::Compress (ZLIB, &data, &result); - // return result.Value (); - // #else + return (HL_Bytes*)result.Value (); + #else return 0; - // #endif + #endif } @@ -4000,18 +3994,18 @@ namespace lime { } - HL_PRIM vdynamic* hl_lime_zlib_decompress (HL_Bytes* buffer, HL_Bytes* bytes) { + HL_PRIM HL_Bytes* hl_lime_zlib_decompress (HL_Bytes* buffer, HL_Bytes* bytes) { - // #ifdef LIME_ZLIB - // Bytes data (buffer); - // Bytes result (bytes); + #ifdef LIME_ZLIB + Bytes data (buffer); + Bytes result (bytes); - // Zlib::Decompress (ZLIB, &data, &result); + Zlib::Decompress (ZLIB, &data, &result); - // return result.Value (); - // #else + return (HL_Bytes*)result.Value (); + #else return 0; - // #endif + #endif } @@ -4057,6 +4051,8 @@ namespace lime { DEFINE_PRIME1 (lime_font_get_underline_thickness); DEFINE_PRIME1 (lime_font_get_units_per_em); DEFINE_PRIME1 (lime_font_load); + DEFINE_PRIME1 (lime_font_load_bytes); + DEFINE_PRIME1 (lime_font_load_file); DEFINE_PRIME2 (lime_font_outline_decompose); DEFINE_PRIME3 (lime_font_render_glyph); DEFINE_PRIME3 (lime_font_render_glyphs); @@ -4179,6 +4175,7 @@ namespace lime { #define _TBYTES _OBJ (_I32 _BYTES) #define _TCFFIPOINTER _DYN #define _TCLIPBOARD_EVENT _OBJ (_I32) + #define _TDISPLAYMODE _OBJ (_I32 _I32 _I32 _I32) #define _TDROP_EVENT _OBJ (_STRING _I32) #define _TGAMEPAD_EVENT _OBJ (_I32 _I32 _I32 _I32 _F64) #define _TJOYSTICK_EVENT _OBJ (_I32 _I32 _I32 _I32 _F64 _F64) @@ -4189,12 +4186,17 @@ namespace lime { #define _TSENSOR_EVENT _OBJ (_I32 _F64 _F64 _F64 _I32) #define _TTEXT_EVENT _OBJ (_I32 _I32 _I32 _STRING _I32 _I32) #define _TTOUCH_EVENT _OBJ (_I32 _F64 _F64 _I32 _F64 _I32 _F64 _F64) + #define _TVECTOR2 _OBJ (_I32 _I32 _I32) #define _TWINDOW_EVENT _OBJ (_I32 _I32 _I32 _I32 _I32 _I32) #define _TARRAYBUFFERVIEW _OBJ (_I32 _TARRAYBUFFER _I32 _I32 _I32 _I32) + #define _TAUDIOBUFFER _OBJ (_I32 _I32 _TARRAYBUFFERVIEW _I32 _DYN _DYN _DYN _DYN _DYN _DYN _DYN) #define _TIMAGEBUFFER _OBJ (_I32 _TARRAYBUFFERVIEW _I32 _I32 _BOOL _BOOL _I32 _DYN _DYN _DYN _DYN _DYN _DYN) #define _TIMAGE _OBJ (_TIMAGEBUFFER _BOOL _I32 _I32 _I32 _TRECTANGLE _ENUM _I32 _I32 _F64 _F64) + #define _TARRAY _OBJ (_BYTES _I32) + #define _TARRAY2 _OBJ (_ARR) + DEFINE_HL_PRIM (_TCFFIPOINTER, lime_application_create, _NO_ARG); DEFINE_HL_PRIM (_VOID, lime_application_event_manager_register, _FUN(_VOID, _NO_ARG) _TAPPLICATION_EVENT); @@ -4203,7 +4205,8 @@ namespace lime { DEFINE_HL_PRIM (_I32, lime_application_quit, _TCFFIPOINTER); DEFINE_HL_PRIM (_VOID, lime_application_set_frame_rate, _TCFFIPOINTER _F64); DEFINE_HL_PRIM (_BOOL, lime_application_update, _TCFFIPOINTER); - // DEFINE_PRIME2 (lime_audio_load); + DEFINE_HL_PRIM (_TAUDIOBUFFER, lime_audio_load_bytes, _TBYTES _TAUDIOBUFFER); + DEFINE_HL_PRIM (_TAUDIOBUFFER, lime_audio_load_file, _STRING _TAUDIOBUFFER); // DEFINE_PRIME2 (lime_bytes_from_data_pointer); DEFINE_HL_PRIM (_F64, lime_bytes_get_data_pointer, _TBYTES); // DEFINE_PRIME2 (lime_bytes_get_data_pointer_offset); @@ -4211,85 +4214,87 @@ namespace lime { // DEFINE_PRIME1 (lime_cffi_get_native_pointer); // DEFINE_PRIME1 (lime_cffi_set_finalizer); DEFINE_HL_PRIM (_VOID, lime_clipboard_event_manager_register, _FUN(_VOID, _NO_ARG) _TCLIPBOARD_EVENT); - // DEFINE_PRIME0 (lime_clipboard_get_text); - // DEFINE_PRIME1v (lime_clipboard_set_text); + DEFINE_HL_PRIM (_BYTES, lime_clipboard_get_text, _NO_ARG); + DEFINE_HL_PRIM (_VOID, lime_clipboard_set_text, _STRING); // DEFINE_PRIME2 (lime_data_pointer_offset); - // DEFINE_PRIME2 (lime_deflate_compress); - // DEFINE_PRIME2 (lime_deflate_decompress); + DEFINE_HL_PRIM (_TBYTES, lime_deflate_compress, _TBYTES _TBYTES); + DEFINE_HL_PRIM (_TBYTES, lime_deflate_decompress, _TBYTES _TBYTES); DEFINE_HL_PRIM (_VOID, lime_drop_event_manager_register, _FUN(_VOID, _NO_ARG) _TDROP_EVENT); - // DEFINE_PRIME3 (lime_file_dialog_open_directory); - // DEFINE_PRIME3 (lime_file_dialog_open_file); - // DEFINE_PRIME3 (lime_file_dialog_open_files); - // DEFINE_PRIME3 (lime_file_dialog_save_file); - // DEFINE_PRIME1 (lime_file_watcher_create); - // DEFINE_PRIME3 (lime_file_watcher_add_directory); - // DEFINE_PRIME2v (lime_file_watcher_remove_directory); - // DEFINE_PRIME1v (lime_file_watcher_update); - // DEFINE_PRIME1 (lime_font_get_ascender); - // DEFINE_PRIME1 (lime_font_get_descender); - // DEFINE_PRIME1 (lime_font_get_family_name); - // DEFINE_PRIME2 (lime_font_get_glyph_index); - // DEFINE_PRIME2 (lime_font_get_glyph_indices); - // DEFINE_PRIME2 (lime_font_get_glyph_metrics); - // DEFINE_PRIME1 (lime_font_get_height); - // DEFINE_PRIME1 (lime_font_get_num_glyphs); - // DEFINE_PRIME1 (lime_font_get_underline_position); - // DEFINE_PRIME1 (lime_font_get_underline_thickness); - // DEFINE_PRIME1 (lime_font_get_units_per_em); + DEFINE_HL_PRIM (_BYTES, lime_file_dialog_open_directory, _STRING _STRING _STRING); + DEFINE_HL_PRIM (_BYTES, lime_file_dialog_open_file, _STRING _STRING _STRING); + DEFINE_HL_PRIM (_TARRAY2, lime_file_dialog_open_files, _STRING _STRING _STRING); + DEFINE_HL_PRIM (_BYTES, lime_file_dialog_save_file, _STRING _STRING _STRING); + DEFINE_HL_PRIM (_TCFFIPOINTER, lime_file_watcher_create, _DYN); + DEFINE_HL_PRIM (_I32, lime_file_watcher_add_directory, _TCFFIPOINTER _STRING _BOOL); + DEFINE_HL_PRIM (_VOID, lime_file_watcher_remove_directory, _TCFFIPOINTER _I32); + DEFINE_HL_PRIM (_VOID, lime_file_watcher_update, _TCFFIPOINTER); + DEFINE_HL_PRIM (_I32, lime_font_get_ascender, _TCFFIPOINTER); + DEFINE_HL_PRIM (_I32, lime_font_get_descender, _TCFFIPOINTER); + DEFINE_HL_PRIM (_BYTES, lime_font_get_family_name, _TCFFIPOINTER); + DEFINE_HL_PRIM (_I32, lime_font_get_glyph_index, _TCFFIPOINTER _STRING); + DEFINE_HL_PRIM (_TARRAY, lime_font_get_glyph_indices, _TCFFIPOINTER _STRING); + DEFINE_HL_PRIM (_DYN, lime_font_get_glyph_metrics, _TCFFIPOINTER _I32); + DEFINE_HL_PRIM (_I32, lime_font_get_height, _TCFFIPOINTER); + DEFINE_HL_PRIM (_I32, lime_font_get_num_glyphs, _TCFFIPOINTER); + DEFINE_HL_PRIM (_I32, lime_font_get_underline_position, _TCFFIPOINTER); + DEFINE_HL_PRIM (_I32, lime_font_get_underline_thickness, _TCFFIPOINTER); + DEFINE_HL_PRIM (_I32, lime_font_get_units_per_em, _TCFFIPOINTER); // DEFINE_PRIME1 (lime_font_load); - // DEFINE_PRIME2 (lime_font_outline_decompose); - // DEFINE_PRIME3 (lime_font_render_glyph); - // DEFINE_PRIME3 (lime_font_render_glyphs); - // DEFINE_PRIME2v (lime_font_set_size); - DEFINE_HL_PRIM (_VOID, lime_gamepad_add_mappings, _DYN); + DEFINE_HL_PRIM (_TCFFIPOINTER, lime_font_load_bytes, _TBYTES); + DEFINE_HL_PRIM (_TCFFIPOINTER, lime_font_load_file, _STRING); + DEFINE_HL_PRIM (_DYN, lime_font_outline_decompose, _TCFFIPOINTER _I32); + DEFINE_HL_PRIM (_BOOL, lime_font_render_glyph, _TCFFIPOINTER _I32 _TBYTES); + DEFINE_HL_PRIM (_BOOL, lime_font_render_glyphs, _TCFFIPOINTER _TARRAY _TBYTES); + DEFINE_HL_PRIM (_VOID, lime_font_set_size, _TCFFIPOINTER _I32); + DEFINE_HL_PRIM (_VOID, lime_gamepad_add_mappings, _TARRAY2); DEFINE_HL_PRIM (_VOID, lime_gamepad_event_manager_register, _FUN(_VOID, _NO_ARG) _TGAMEPAD_EVENT); - // DEFINE_PRIME1 (lime_gamepad_get_device_guid); - // DEFINE_PRIME1 (lime_gamepad_get_device_name); - // DEFINE_PRIME2 (lime_gzip_compress); - // DEFINE_PRIME2 (lime_gzip_decompress); - // DEFINE_PRIME2v (lime_haptic_vibrate); - // DEFINE_PRIME3v (lime_image_data_util_color_transform); - // DEFINE_PRIME6v (lime_image_data_util_copy_channel); - // DEFINE_PRIME7v (lime_image_data_util_copy_pixels); + DEFINE_HL_PRIM (_BYTES, lime_gamepad_get_device_guid, _I32); + DEFINE_HL_PRIM (_BYTES, lime_gamepad_get_device_name, _I32); + DEFINE_HL_PRIM (_TBYTES, lime_gzip_compress, _TBYTES _TBYTES); + DEFINE_HL_PRIM (_TBYTES, lime_gzip_decompress, _TBYTES _TBYTES); + DEFINE_HL_PRIM (_VOID, lime_haptic_vibrate, _I32 _I32); + DEFINE_HL_PRIM (_VOID, lime_image_data_util_color_transform, _TIMAGE _TRECTANGLE _TARRAYBUFFERVIEW); + DEFINE_HL_PRIM (_VOID, lime_image_data_util_copy_channel, _TIMAGE _TIMAGE _TRECTANGLE _TVECTOR2 _I32 _I32); + DEFINE_HL_PRIM (_VOID, lime_image_data_util_copy_pixels, _TIMAGE _TIMAGE _TRECTANGLE _TVECTOR2 _TIMAGE _TVECTOR2 _BOOL); DEFINE_HL_PRIM (_VOID, lime_image_data_util_fill_rect, _TIMAGE _TRECTANGLE _I32 _I32); - // DEFINE_PRIME5v (lime_image_data_util_flood_fill); - // DEFINE_PRIME4v (lime_image_data_util_get_pixels); - // DEFINE_PRIME8v (lime_image_data_util_merge); - // DEFINE_PRIME1v (lime_image_data_util_multiply_alpha); - // DEFINE_PRIME4v (lime_image_data_util_resize); - // DEFINE_PRIME2v (lime_image_data_util_set_format); - // DEFINE_PRIME6v (lime_image_data_util_set_pixels); - // DEFINE_PRIME12 (lime_image_data_util_threshold); - // DEFINE_PRIME1v (lime_image_data_util_unmultiply_alpha); - // DEFINE_PRIME4 (lime_image_encode); + DEFINE_HL_PRIM (_VOID, lime_image_data_util_flood_fill, _TIMAGE _I32 _I32 _I32 _I32); + DEFINE_HL_PRIM (_VOID, lime_image_data_util_get_pixels, _TIMAGE _TRECTANGLE _I32 _TBYTES); + DEFINE_HL_PRIM (_VOID, lime_image_data_util_merge, _TIMAGE _TIMAGE _TRECTANGLE _TVECTOR2 _I32 _I32 _I32 _I32); + DEFINE_HL_PRIM (_VOID, lime_image_data_util_multiply_alpha, _TIMAGE); + DEFINE_HL_PRIM (_VOID, lime_image_data_util_resize, _TIMAGE _TIMAGEBUFFER _I32 _I32); + DEFINE_HL_PRIM (_VOID, lime_image_data_util_set_format, _TIMAGE _I32); + DEFINE_HL_PRIM (_VOID, lime_image_data_util_set_pixels, _TIMAGE _TRECTANGLE _TBYTES _I32 _I32 _I32); + DEFINE_HL_PRIM (_I32, lime_image_data_util_threshold, _TIMAGE _TIMAGE _TRECTANGLE _TVECTOR2 _I32 _I32 _I32 _I32 _I32 _I32 _I32 _BOOL); + DEFINE_HL_PRIM (_VOID, lime_image_data_util_unmultiply_alpha, _TIMAGE); + DEFINE_HL_PRIM (_TBYTES, lime_image_encode, _TIMAGEBUFFER _I32 _I32 _TBYTES); // DEFINE_PRIME2 (lime_image_load); DEFINE_HL_PRIM (_TIMAGEBUFFER, lime_image_load_bytes, _TBYTES _TIMAGEBUFFER); DEFINE_HL_PRIM (_TIMAGEBUFFER, lime_image_load_file, _STRING _TIMAGEBUFFER); - // DEFINE_PRIME0 (lime_jni_getenv); + DEFINE_HL_PRIM (_F64, lime_jni_getenv, _NO_ARG); DEFINE_HL_PRIM (_VOID, lime_joystick_event_manager_register, _FUN(_VOID, _NO_ARG) _TJOYSTICK_EVENT); - // DEFINE_PRIME1 (lime_joystick_get_device_guid); - // DEFINE_PRIME1 (lime_joystick_get_device_name); - // DEFINE_PRIME1 (lime_joystick_get_num_axes); - // DEFINE_PRIME1 (lime_joystick_get_num_buttons); - // DEFINE_PRIME1 (lime_joystick_get_num_hats); - // DEFINE_PRIME1 (lime_joystick_get_num_trackballs); - // DEFINE_PRIME3 (lime_jpeg_decode_bytes); - // DEFINE_PRIME3 (lime_jpeg_decode_file); - // DEFINE_PRIME1 (lime_key_code_from_scan_code); - // DEFINE_PRIME1 (lime_key_code_to_scan_code); + DEFINE_HL_PRIM (_BYTES, lime_joystick_get_device_guid, _I32); + DEFINE_HL_PRIM (_BYTES, lime_joystick_get_device_name, _I32); + DEFINE_HL_PRIM (_I32, lime_joystick_get_num_axes, _I32); + DEFINE_HL_PRIM (_I32, lime_joystick_get_num_buttons, _I32); + DEFINE_HL_PRIM (_I32, lime_joystick_get_num_hats, _I32); + DEFINE_HL_PRIM (_I32, lime_joystick_get_num_trackballs, _I32); + DEFINE_HL_PRIM (_TIMAGEBUFFER, lime_jpeg_decode_bytes, _TBYTES _BOOL _TIMAGEBUFFER); + DEFINE_HL_PRIM (_TIMAGEBUFFER, lime_jpeg_decode_file, _STRING _BOOL _TIMAGEBUFFER); + DEFINE_HL_PRIM (_F32, lime_key_code_from_scan_code, _F32); + DEFINE_HL_PRIM (_F32, lime_key_code_to_scan_code, _F32); DEFINE_HL_PRIM (_VOID, lime_key_event_manager_register, _FUN (_VOID, _NO_ARG) _TKEY_EVENT); - // DEFINE_PRIME0 (lime_locale_get_system_locale); - // DEFINE_PRIME2 (lime_lzma_compress); - // DEFINE_PRIME2 (lime_lzma_decompress); + DEFINE_HL_PRIM (_BYTES, lime_locale_get_system_locale, _NO_ARG); + DEFINE_HL_PRIM (_TBYTES, lime_lzma_compress, _TBYTES _TBYTES); + DEFINE_HL_PRIM (_TBYTES, lime_lzma_decompress, _TBYTES _TBYTES); DEFINE_HL_PRIM (_VOID, lime_mouse_event_manager_register, _FUN (_VOID, _NO_ARG) _TMOUSE_EVENT); - // DEFINE_PRIME0v (lime_mouse_hide); - // DEFINE_PRIME1v (lime_mouse_set_cursor); - // DEFINE_PRIME1v (lime_mouse_set_lock); - // DEFINE_PRIME0v (lime_mouse_show); - // DEFINE_PRIME3v (lime_mouse_warp); + DEFINE_HL_PRIM (_VOID, lime_mouse_hide, _NO_ARG); + DEFINE_HL_PRIM (_VOID, lime_mouse_set_cursor, _I32); + DEFINE_HL_PRIM (_VOID, lime_mouse_set_lock, _BOOL); + DEFINE_HL_PRIM (_VOID, lime_mouse_show, _NO_ARG); + DEFINE_HL_PRIM (_VOID, lime_mouse_warp, _I32 _I32 _TCFFIPOINTER); // DEFINE_PRIME1v (lime_neko_execute); - // DEFINE_PRIME3 (lime_png_decode_bytes); - // DEFINE_PRIME3 (lime_png_decode_file); + DEFINE_HL_PRIM (_TIMAGEBUFFER, lime_png_decode_bytes, _TBYTES _BOOL _TIMAGEBUFFER); + DEFINE_HL_PRIM (_TIMAGEBUFFER, lime_png_decode_file, _STRING _BOOL _TIMAGEBUFFER); DEFINE_HL_PRIM (_TCFFIPOINTER, lime_renderer_create, _TCFFIPOINTER); DEFINE_HL_PRIM (_VOID, lime_renderer_flip, _TCFFIPOINTER); DEFINE_HL_PRIM (_F64, lime_renderer_get_context, _TCFFIPOINTER); @@ -4301,32 +4306,30 @@ namespace lime { DEFINE_HL_PRIM (_VOID, lime_renderer_unlock, _TCFFIPOINTER); DEFINE_HL_PRIM (_VOID, lime_render_event_manager_register, _FUN (_VOID, _NO_ARG) _TRENDER_EVENT); DEFINE_HL_PRIM (_VOID, lime_sensor_event_manager_register, _FUN (_VOID, _NO_ARG) _TSENSOR_EVENT); - // DEFINE_PRIME2v (lime_render_event_manager_register); - // DEFINE_PRIME2v (lime_sensor_event_manager_register); - // DEFINE_PRIME0 (lime_system_get_allow_screen_timeout); - // DEFINE_PRIME0 (lime_system_get_device_model); - // DEFINE_PRIME0 (lime_system_get_device_vendor); - // DEFINE_PRIME3 (lime_system_get_directory); - // DEFINE_PRIME1 (lime_system_get_display); - // DEFINE_PRIME0 (lime_system_get_ios_tablet); - // DEFINE_PRIME0 (lime_system_get_num_displays); - // DEFINE_PRIME0 (lime_system_get_platform_label); - // DEFINE_PRIME0 (lime_system_get_platform_name); - // DEFINE_PRIME0 (lime_system_get_platform_version); + DEFINE_HL_PRIM (_BOOL, lime_system_get_allow_screen_timeout, _NO_ARG); + DEFINE_HL_PRIM (_BYTES, lime_system_get_device_model, _NO_ARG); + DEFINE_HL_PRIM (_BYTES, lime_system_get_device_vendor, _NO_ARG); + DEFINE_HL_PRIM (_BYTES, lime_system_get_directory, _I32 _STRING _STRING); + DEFINE_HL_PRIM (_DYN, lime_system_get_display, _I32); + DEFINE_HL_PRIM (_BOOL, lime_system_get_ios_tablet, _NO_ARG); + DEFINE_HL_PRIM (_I32, lime_system_get_num_displays, _NO_ARG); + DEFINE_HL_PRIM (_BYTES, lime_system_get_platform_label, _NO_ARG); + DEFINE_HL_PRIM (_BYTES, lime_system_get_platform_name, _NO_ARG); + DEFINE_HL_PRIM (_BYTES, lime_system_get_platform_version, _NO_ARG); DEFINE_HL_PRIM (_F64, lime_system_get_timer, _NO_ARG); - // DEFINE_PRIME1 (lime_system_get_windows_console_mode); - // DEFINE_PRIME1v (lime_system_open_file); - // DEFINE_PRIME2v (lime_system_open_url); - // DEFINE_PRIME1 (lime_system_set_allow_screen_timeout); - // DEFINE_PRIME2 (lime_system_set_windows_console_mode); + DEFINE_HL_PRIM (_I32, lime_system_get_windows_console_mode, _I32); + DEFINE_HL_PRIM (_VOID, lime_system_open_file, _STRING); + DEFINE_HL_PRIM (_VOID, lime_system_open_url, _STRING _STRING); + DEFINE_HL_PRIM (_BOOL, lime_system_set_allow_screen_timeout, _BOOL); + DEFINE_HL_PRIM (_BOOL, lime_system_set_windows_console_mode, _I32 _I32); DEFINE_HL_PRIM (_VOID, lime_text_event_manager_register, _FUN (_VOID, _NO_ARG) _TTEXT_EVENT); - // DEFINE_PRIME3 (lime_text_layout_create); - // DEFINE_PRIME5 (lime_text_layout_position); - // DEFINE_PRIME2v (lime_text_layout_set_direction); - // DEFINE_PRIME2v (lime_text_layout_set_language); - // DEFINE_PRIME2v (lime_text_layout_set_script); + DEFINE_HL_PRIM (_TCFFIPOINTER, lime_text_layout_create, _I32 _STRING _STRING); + DEFINE_HL_PRIM (_TBYTES, lime_text_layout_position, _TCFFIPOINTER _TCFFIPOINTER _I32 _STRING _TBYTES); + DEFINE_HL_PRIM (_VOID, lime_text_layout_set_direction, _TCFFIPOINTER _I32); + DEFINE_HL_PRIM (_VOID, lime_text_layout_set_language, _TCFFIPOINTER _STRING); + DEFINE_HL_PRIM (_VOID, lime_text_layout_set_script, _TCFFIPOINTER _STRING); DEFINE_HL_PRIM (_VOID, lime_touch_event_manager_register, _FUN (_VOID, _NO_ARG) _TTOUCH_EVENT); - DEFINE_HL_PRIM (_VOID, lime_window_alert, _TCFFIPOINTER _TBYTES _TBYTES); + DEFINE_HL_PRIM (_VOID, lime_window_alert, _TCFFIPOINTER _STRING _STRING); DEFINE_HL_PRIM (_VOID, lime_window_close, _TCFFIPOINTER); DEFINE_HL_PRIM (_TCFFIPOINTER, lime_window_create, _TCFFIPOINTER _I32 _I32 _I32 _STRING); DEFINE_HL_PRIM (_VOID, lime_window_event_manager_register, _FUN (_VOID, _NO_ARG) _TWINDOW_EVENT); @@ -4339,19 +4342,19 @@ namespace lime { DEFINE_HL_PRIM (_I32, lime_window_get_width, _TCFFIPOINTER); DEFINE_HL_PRIM (_I32, lime_window_get_x, _TCFFIPOINTER); DEFINE_HL_PRIM (_I32, lime_window_get_y, _TCFFIPOINTER); - DEFINE_HL_PRIM (_VOID, lime_window_move, _TCFFIPOINTER _I32); - DEFINE_HL_PRIM (_VOID, lime_window_resize, _TCFFIPOINTER _I32); + DEFINE_HL_PRIM (_VOID, lime_window_move, _TCFFIPOINTER _I32 _I32); + DEFINE_HL_PRIM (_VOID, lime_window_resize, _TCFFIPOINTER _I32 _I32); DEFINE_HL_PRIM (_BOOL, lime_window_set_borderless, _TCFFIPOINTER _BOOL); - // DEFINE_PRIME2 (lime_window_set_display_mode, _TCFFIPOINTER ); + DEFINE_HL_PRIM (_TDISPLAYMODE, lime_window_set_display_mode, _TCFFIPOINTER _TDISPLAYMODE); DEFINE_HL_PRIM (_VOID, lime_window_set_enable_text_events, _TCFFIPOINTER _BOOL); - // DEFINE_PRIME2 (lime_window_set_fullscreen); - // DEFINE_PRIME2v (lime_window_set_icon); - // DEFINE_PRIME2 (lime_window_set_maximized); - // DEFINE_PRIME2 (lime_window_set_minimized); - // DEFINE_PRIME2 (lime_window_set_resizable); + DEFINE_HL_PRIM (_BOOL, lime_window_set_fullscreen, _TCFFIPOINTER _BOOL); + DEFINE_HL_PRIM (_VOID, lime_window_set_icon, _TCFFIPOINTER _TIMAGEBUFFER); + DEFINE_HL_PRIM (_BOOL, lime_window_set_maximized, _TCFFIPOINTER _BOOL); + DEFINE_HL_PRIM (_BOOL, lime_window_set_minimized, _TCFFIPOINTER _BOOL); + DEFINE_HL_PRIM (_BOOL, lime_window_set_resizable, _TCFFIPOINTER _BOOL); DEFINE_HL_PRIM (_STRING, lime_window_set_title, _TCFFIPOINTER _STRING); - // DEFINE_PRIME2 (lime_zlib_compress); - // DEFINE_PRIME2 (lime_zlib_decompress); + DEFINE_HL_PRIM (_TBYTES, lime_zlib_compress, _TBYTES _TBYTES); + DEFINE_HL_PRIM (_TBYTES, lime_zlib_decompress, _TBYTES _TBYTES); } diff --git a/project/src/backend/sdl/SDLSystem.cpp b/project/src/backend/sdl/SDLSystem.cpp index 9a1448420..c86824b80 100644 --- a/project/src/backend/sdl/SDLSystem.cpp +++ b/project/src/backend/sdl/SDLSystem.cpp @@ -343,7 +343,7 @@ namespace lime { mode.refreshRate = displayMode.refresh_rate; mode.width = displayMode.w; - alloc_field (display, id_currentMode, mode.Value ()); + alloc_field (display, id_currentMode, (value)mode.Value ()); int numDisplayModes = SDL_GetNumDisplayModes (id); value supportedModes = alloc_array (numDisplayModes); @@ -376,7 +376,7 @@ namespace lime { mode.refreshRate = displayMode.refresh_rate; mode.width = displayMode.w; - val_array_set_i (supportedModes, i, mode.Value ()); + val_array_set_i (supportedModes, i, (value)mode.Value ()); } diff --git a/project/src/math/ColorMatrix.cpp b/project/src/math/ColorMatrix.cpp index 5159ac45f..e741c8b32 100644 --- a/project/src/math/ColorMatrix.cpp +++ b/project/src/math/ColorMatrix.cpp @@ -51,6 +51,21 @@ namespace lime { } + ColorMatrix::ColorMatrix (HL_ArrayBufferView* colorMatrix) { + + Bytes bytes; + bytes.Set (colorMatrix->buffer); + float* src = (float*)bytes.Data (); + + for (int i = 0; i < 20; i++) { + + data[i] = src[i]; + + } + + } + + ColorMatrix::~ColorMatrix () { diff --git a/project/src/math/Vector2.cpp b/project/src/math/Vector2.cpp index f98756803..3ec03634e 100644 --- a/project/src/math/Vector2.cpp +++ b/project/src/math/Vector2.cpp @@ -50,6 +50,14 @@ namespace lime { } + Vector2::Vector2 (HL_Vector2* vec) { + + x = vec->x; + y = vec->y; + + } + + vdynamic* Vector2::Dynamic () { HL_Vector2* result = (HL_Vector2*)malloc (sizeof (HL_Vector2)); diff --git a/project/src/media/AudioBuffer.cpp b/project/src/media/AudioBuffer.cpp index 9349d3693..1f4df3b19 100644 --- a/project/src/media/AudioBuffer.cpp +++ b/project/src/media/AudioBuffer.cpp @@ -17,7 +17,8 @@ namespace lime { channels = 0; data = new ArrayBufferView (); sampleRate = 0; - mValue = 0; + _buffer = 0; + _value = 0; } @@ -50,7 +51,20 @@ namespace lime { } - mValue = audioBuffer; + _buffer = 0; + _value = audioBuffer; + + } + + + AudioBuffer::AudioBuffer (HL_AudioBuffer* audioBuffer) { + + bitsPerSample = audioBuffer->bitsPerSample; + channels = audioBuffer->channels; + data = new ArrayBufferView (audioBuffer->data); + sampleRate = audioBuffer->sampleRate; + _buffer = audioBuffer; + _value = 0; } @@ -62,30 +76,42 @@ namespace lime { } - value AudioBuffer::Value () { + void* AudioBuffer::Value () { - if (!init) { + if (_buffer) { - id_bitsPerSample = val_id ("bitsPerSample"); - id_channels = val_id ("channels"); - id_data = val_id ("data"); - id_sampleRate = val_id ("sampleRate"); - init = true; + _buffer->bitsPerSample = bitsPerSample; + _buffer->channels = channels; + //data + _buffer->sampleRate = sampleRate; + return _buffer; + + } else { + + if (!init) { + + id_bitsPerSample = val_id ("bitsPerSample"); + id_channels = val_id ("channels"); + id_data = val_id ("data"); + id_sampleRate = val_id ("sampleRate"); + init = true; + + } + + if (val_is_null (_value)) { + + _value = alloc_empty_object (); + + } + + alloc_field (_value, id_bitsPerSample, alloc_int (bitsPerSample)); + alloc_field (_value, id_channels, alloc_int (channels)); + alloc_field (_value, id_data, data ? data->Value () : alloc_null ()); + alloc_field (_value, id_sampleRate, alloc_int (sampleRate)); + return _value; } - if (val_is_null (mValue)) { - - mValue = alloc_empty_object (); - - } - - alloc_field (mValue, id_bitsPerSample, alloc_int (bitsPerSample)); - alloc_field (mValue, id_channels, alloc_int (channels)); - alloc_field (mValue, id_data, data ? data->Value () : alloc_null ()); - alloc_field (mValue, id_sampleRate, alloc_int (sampleRate)); - return mValue; - } diff --git a/project/src/system/DisplayMode.cpp b/project/src/system/DisplayMode.cpp index f3ec27259..b01f46184 100644 --- a/project/src/system/DisplayMode.cpp +++ b/project/src/system/DisplayMode.cpp @@ -31,6 +31,16 @@ namespace lime { } + DisplayMode::DisplayMode (HL_DisplayMode* displayMode) { + + width = displayMode->width; + height = displayMode->height; + pixelFormat = displayMode->pixelFormat; + refreshRate = displayMode->refreshRate; + + } + + DisplayMode::DisplayMode (int _width, int _height, PixelFormat _pixelFormat, int _refreshRate) { width = _width; @@ -41,25 +51,37 @@ namespace lime { } - value DisplayMode::Value () { + void* DisplayMode::Value () { - if (!init) { + if (_mode) { - id_height = val_id ("height"); - id_pixelFormat = val_id ("pixelFormat"); - id_refreshRate = val_id ("refreshRate"); - id_width = val_id ("width"); - init = true; + _mode->height = height; + _mode->pixelFormat = pixelFormat; + _mode->refreshRate = refreshRate; + _mode->width = width; + return _mode; + + } else { + + if (!init) { + + id_height = val_id ("height"); + id_pixelFormat = val_id ("pixelFormat"); + id_refreshRate = val_id ("refreshRate"); + id_width = val_id ("width"); + init = true; + + } + + value displayMode = alloc_empty_object (); + alloc_field (displayMode, id_height, alloc_int (height)); + alloc_field (displayMode, id_pixelFormat, alloc_int (pixelFormat)); + alloc_field (displayMode, id_refreshRate, alloc_int (refreshRate)); + alloc_field (displayMode, id_width, alloc_int (width)); + return displayMode; } - value displayMode = alloc_empty_object (); - alloc_field (displayMode, id_height, alloc_int (height)); - alloc_field (displayMode, id_pixelFormat, alloc_int (pixelFormat)); - alloc_field (displayMode, id_refreshRate, alloc_int (refreshRate)); - alloc_field (displayMode, id_width, alloc_int (width)); - return displayMode; - }