diff options
Diffstat (limited to 'core/extension/gdextension_interface.cpp')
-rw-r--r-- | core/extension/gdextension_interface.cpp | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/core/extension/gdextension_interface.cpp b/core/extension/gdextension_interface.cpp index 98f5cb4d02..85f83eecfd 100644 --- a/core/extension/gdextension_interface.cpp +++ b/core/extension/gdextension_interface.cpp @@ -805,12 +805,24 @@ static void gdextension_string_new_with_utf8_chars_and_len(GDExtensionUninitiali dest->parse_utf8(p_contents, p_size); } +static GDExtensionInt gdextension_string_new_with_utf8_chars_and_len2(GDExtensionUninitializedStringPtr r_dest, const char *p_contents, GDExtensionInt p_size) { + memnew_placement(r_dest, String); + String *dest = reinterpret_cast<String *>(r_dest); + return (GDExtensionInt)dest->parse_utf8(p_contents, p_size); +} + static void gdextension_string_new_with_utf16_chars_and_len(GDExtensionUninitializedStringPtr r_dest, const char16_t *p_contents, GDExtensionInt p_char_count) { memnew_placement(r_dest, String); String *dest = reinterpret_cast<String *>(r_dest); dest->parse_utf16(p_contents, p_char_count); } +static GDExtensionInt gdextension_string_new_with_utf16_chars_and_len2(GDExtensionUninitializedStringPtr r_dest, const char16_t *p_contents, GDExtensionInt p_char_count, GDExtensionBool p_default_little_endian) { + memnew_placement(r_dest, String); + String *dest = reinterpret_cast<String *>(r_dest); + return (GDExtensionInt)dest->parse_utf16(p_contents, p_char_count, p_default_little_endian); +} + static void gdextension_string_new_with_utf32_chars_and_len(GDExtensionUninitializedStringPtr r_dest, const char32_t *p_contents, GDExtensionInt p_char_count) { memnew_placement(r_dest, String((const char32_t *)p_contents, p_char_count)); } @@ -962,6 +974,16 @@ static uint64_t gdextension_file_access_get_buffer(GDExtensionConstObjectPtr p_i return fa->get_buffer(p_dst, p_length); } +static uint8_t *gdextension_image_ptrw(GDExtensionObjectPtr p_instance) { + Image *img = (Image *)p_instance; + return img->ptrw(); +} + +static const uint8_t *gdextension_image_ptr(GDExtensionObjectPtr p_instance) { + Image *img = (Image *)p_instance; + return img->ptr(); +} + static int64_t gdextension_worker_thread_pool_add_native_group_task(GDExtensionObjectPtr p_instance, void (*p_func)(void *, uint32_t), void *p_userdata, int p_elements, int p_tasks, GDExtensionBool p_high_priority, GDExtensionConstStringPtr p_description) { WorkerThreadPool *p = (WorkerThreadPool *)p_instance; const String *description = (const String *)p_description; @@ -1598,7 +1620,9 @@ void gdextension_setup_interface() { REGISTER_INTERFACE_FUNC(string_new_with_wide_chars); REGISTER_INTERFACE_FUNC(string_new_with_latin1_chars_and_len); REGISTER_INTERFACE_FUNC(string_new_with_utf8_chars_and_len); + REGISTER_INTERFACE_FUNC(string_new_with_utf8_chars_and_len2); REGISTER_INTERFACE_FUNC(string_new_with_utf16_chars_and_len); + REGISTER_INTERFACE_FUNC(string_new_with_utf16_chars_and_len2); REGISTER_INTERFACE_FUNC(string_new_with_utf32_chars_and_len); REGISTER_INTERFACE_FUNC(string_new_with_wide_chars_and_len); REGISTER_INTERFACE_FUNC(string_to_latin1_chars); @@ -1684,6 +1708,8 @@ void gdextension_setup_interface() { REGISTER_INTERFACE_FUNC(editor_remove_plugin); REGISTER_INTERFACE_FUNC(editor_help_load_xml_from_utf8_chars); REGISTER_INTERFACE_FUNC(editor_help_load_xml_from_utf8_chars_and_len); + REGISTER_INTERFACE_FUNC(image_ptrw); + REGISTER_INTERFACE_FUNC(image_ptr); } #undef REGISTER_INTERFACE_FUNCTION |