From a5830ad9cde733c9e0166033af89144877443c2e Mon Sep 17 00:00:00 2001 From: Hartmut Seichter Date: Tue, 7 Jun 2022 17:13:02 +0200 Subject: [PATCH] banned raw void pointer from public API --- src/binding/src/script_core.cpp | 18 +++++++++--------- src/core/include/pw/core/image.hpp | 11 ++++++----- src/core/src/image.cpp | 6 ++++-- src/io/src/image_io.cpp | 4 ++-- src/scripts/demos/simple_004.lua | 5 ++++- 5 files changed, 25 insertions(+), 19 deletions(-) diff --git a/src/binding/src/script_core.cpp b/src/binding/src/script_core.cpp index e301337..9cd9343 100644 --- a/src/binding/src/script_core.cpp +++ b/src/binding/src/script_core.cpp @@ -65,8 +65,8 @@ void register_core_function(sol::state& lua,sol::table& ns) sol::call_constructor,sol::constructors(), "row",&matrix4x4::row, "column",&matrix4x4::column, - "inverse",sol::readonly_property(&matrix4x4::inverse), - "identity",sol::readonly_property(matrix4x4::identity), + "inverse", sol::readonly_property(&matrix4x4::inverse), + "identity",sol::readonly_property(&matrix4x4::identity), sol::meta_function::multiplication,[](const matrix4x4& a,const vector4& b) { return vector4(a * b); } ); @@ -229,13 +229,13 @@ void register_core_function(sol::state& lua,sol::table& ns) auto image_type = ns.new_usertype("image" - ,sol::call_constructor,sol::constructors() - ,"create",&image::create - ,"release",&image::release - ,"is_valid",sol::readonly_property(&image::is_valid) - ,"size",sol::readonly_property(&image::size) - ,"generate_noise",&image::generate_noise - ,"change_count",sol::property(&image::change_count,&image::set_change_count) + ,sol::call_constructor,sol::constructors() + ,"create", &image::create + ,"release", &image::release + ,"is_valid", sol::readonly_property(&image::is_valid) + ,"size", sol::readonly_property(&image::size) + ,"generate_noise", &image::generate_noise + ,"change_count", sol::property(&image::change_count,&image::set_change_count) ); ns.create_named("pixel_layout" diff --git a/src/core/include/pw/core/image.hpp b/src/core/include/pw/core/image.hpp index 875bbe3..6fd14d7 100644 --- a/src/core/include/pw/core/image.hpp +++ b/src/core/include/pw/core/image.hpp @@ -43,9 +43,10 @@ public: HDR }; - image(const size& s, pixel_layout t, const void *ptr = nullptr); - bool create(const size& s, pixel_layout t, const void *ptr = nullptr); + image(const size& s, pixel_layout t, const data_t *ptr = nullptr); + + bool create(const size& s, pixel_layout t, const data_t *ptr = nullptr); void release(bool release_memory = false); @@ -72,9 +73,9 @@ public: protected: - ::pw::size _size; - pixel_layout _layout; - uint64_t _change_count; + ::pw::size _size { 0, 0 }; + pixel_layout _layout { pixel_layout::RGB8 }; + uint64_t _change_count { 0 }; std::vector _data; diff --git a/src/core/src/image.cpp b/src/core/src/image.cpp index c35536d..43b52a4 100644 --- a/src/core/src/image.cpp +++ b/src/core/src/image.cpp @@ -6,7 +6,9 @@ namespace pw { -image::image(const ::pw::size &s, image::pixel_layout t, const void *ptr) +image::image(const ::pw::size &s, + image::pixel_layout t, + const data_t *ptr) { if (!this->create(s,t,ptr)) { debug::w() << __PRETTY_FUNCTION__ << " create failed"; @@ -15,7 +17,7 @@ image::image(const ::pw::size &s, image::pixel_layout t, const void *ptr) bool image::create(const ::pw::size &s, image::pixel_layout t, - const void *ptr) + const data_t *ptr) { size_t n = bytes_per_pixel(t) * s.area(); _size = s; diff --git a/src/io/src/image_io.cpp b/src/io/src/image_io.cpp index e1052aa..66db1c6 100644 --- a/src/io/src/image_io.cpp +++ b/src/io/src/image_io.cpp @@ -18,13 +18,13 @@ struct image_io::impl image read_impl(const std::string& uri,uint32_t flags) { int x{ 0 }, y{ 0 }, n{ 0 }; - auto data = stbi_load(uri.c_str(), &x, &y, &n, 4); + const auto data = stbi_load(uri.c_str(), &x, &y, &n, 4); if (data) { image r; - r.create(size(x,y),image::pixel_layout::RGBA8,data); + r.create(size(x,y),image::pixel_layout::RGBA8,reinterpret_cast(data)); stbi_image_free(data); diff --git a/src/scripts/demos/simple_004.lua b/src/scripts/demos/simple_004.lua index 6ae3955..f2264f2 100644 --- a/src/scripts/demos/simple_004.lua +++ b/src/scripts/demos/simple_004.lua @@ -13,8 +13,11 @@ for k,v in pairs(pw.path.get().resource_paths) do end +-- create image local img = pw.image() -if not img:create(pw.size(512,512),pw.pixel_layout.rgb8) then + +-- initialize with data +if not img:create(pw.size(512,512),pw.pixel_layout.rgb8,nil) then print("image couldnt be created") else