This commit is contained in:
Hartmut Seichter 2019-01-31 16:54:12 +01:00
parent 62281699ea
commit 7037abbcb6
11 changed files with 114 additions and 31 deletions

View file

@ -58,6 +58,8 @@ public:
typedef shared_ptr<image> ptr; typedef shared_ptr<image> ptr;
sizei size() const;
protected: protected:
sizei _size; sizei _size;

View file

@ -48,6 +48,11 @@ uint32_t image::bytes_per_pixel(image::pixel_layout t)
return std::numeric_limits<uint32_t>::max(); return std::numeric_limits<uint32_t>::max();
} }
sizei image::size() const
{
return _size;
}
image::pixel_layout image::layout() const image::pixel_layout image::layout() const
{ {
return _layout; return _layout;

View file

@ -5,6 +5,7 @@ set(scripts_demo
set(scripts_test set(scripts_test
${CMAKE_SOURCE_DIR}/src/scripts/tests/test_core.lua ${CMAKE_SOURCE_DIR}/src/scripts/tests/test_core.lua
${CMAKE_SOURCE_DIR}/src/scripts/tests/test_io.lua
) )
add_executable(pixwerx WIN32 MACOSX_BUNDLE add_executable(pixwerx WIN32 MACOSX_BUNDLE

View file

@ -37,13 +37,15 @@ public:
bool write(const std::string& uri,uint32_t flags = 0); bool write(const std::string& uri,uint32_t flags = 0);
~image_io();
protected: protected:
struct impl; struct impl;
std::unique_ptr<impl> _impl; std::unique_ptr<impl> _impl;
image_io() = default; image_io();
~image_io() = default;
}; };

View file

@ -1,7 +1,8 @@
#include "pw/io/image_io.hpp" #include "pw/io/image_io.hpp"
#define STB_IMAGE_IMPLEMENTATION
#include "stb_image.h" #include "stb_image.h"
#include "stb_image_write.h" // #include "stb_image_write.h"
namespace pw { namespace pw {
@ -26,6 +27,11 @@ struct image_io::impl
return image(); return image();
} }
bool write(const std::string& uri, uint32_t flags)
{
return false;
}
}; };
@ -40,4 +46,22 @@ image image_io::read(const std::string &uri, uint32_t flags)
return _impl->read_impl(uri,flags); return _impl->read_impl(uri,flags);
} }
bool image_io::write(const std::string &uri, uint32_t flags)
{
return _impl->write(uri,flags);
}
//
//
//
image_io::image_io()
{
_impl = make_unique<impl>();
}
image_io::~image_io()
{
}
} }

View file

@ -1,36 +1,39 @@
set(hdrs set(hdrs
include/pw/scripting/script.hpp include/pw/scripting/script.hpp
) )
set(srcs set(srcs
src/script.cpp src/script.cpp
# src/script_core.hpp
src/script_core.cpp src/script_core.cpp
# src/script_system.hpp
src/script_system.cpp src/script_system.cpp
# src/script_scene.hpp src/script_io.cpp
src/script_scene.cpp src/script_scene.cpp
# src/script_visual.hpp
src/script_visual.cpp src/script_visual.cpp
src/runtime_lua.hpp src/runtime_lua.hpp
src/runtime_lua.cpp src/runtime_lua.cpp
) )
add_library(pwscripting add_library(pwscripting
STATIC STATIC
${hdrs} ${hdrs}
${srcs} ${srcs}
) )
target_include_directories( target_include_directories(
pwscripting pwscripting
PRIVATE PRIVATE
${CMAKE_SOURCE_DIR}/src/deps/lua-5.3.5/src ${CMAKE_SOURCE_DIR}/src/deps/lua-5.3.5/src
${CMAKE_SOURCE_DIR}/src/deps/sol2-2.20.6 ${CMAKE_SOURCE_DIR}/src/deps/sol2-2.20.6
PUBLIC PUBLIC
include include
) )
target_link_libraries(pwscripting lualib pwcore pwsystem pwscene pwvisual) target_link_libraries(pwscripting
lualib
pwcore
pwsystem
pwio
pwscene
pwvisual)

View file

@ -10,6 +10,7 @@ namespace pw {
PW_REGISTER_DECL_LUA(core) PW_REGISTER_DECL_LUA(core)
PW_REGISTER_DECL_LUA(system) PW_REGISTER_DECL_LUA(system)
PW_REGISTER_DECL_LUA(io)
PW_REGISTER_DECL_LUA(scene) PW_REGISTER_DECL_LUA(scene)
PW_REGISTER_DECL_LUA(visual) PW_REGISTER_DECL_LUA(visual)
@ -89,6 +90,7 @@ void script::initialize()
PW_REGISTER_USE_LUA(core) PW_REGISTER_USE_LUA(core)
PW_REGISTER_USE_LUA(system) PW_REGISTER_USE_LUA(system)
PW_REGISTER_USE_LUA(io)
PW_REGISTER_USE_LUA(scene) PW_REGISTER_USE_LUA(scene)
PW_REGISTER_USE_LUA(visual) PW_REGISTER_USE_LUA(visual)

View file

@ -6,6 +6,7 @@
#include "pw/core/point.hpp" #include "pw/core/point.hpp"
#include "pw/core/timer.hpp" #include "pw/core/timer.hpp"
#include "pw/core/mesh.hpp" #include "pw/core/mesh.hpp"
#include "pw/core/image.hpp"
#include "runtime_lua.hpp" #include "runtime_lua.hpp"
@ -75,6 +76,12 @@ void register_core_function(sol::state& lua,sol::table& ns)
, "height",&size::height , "height",&size::height
); );
ns.new_usertype<sizei>("sizei"
, sol::constructors<sizei(),sizei(int,int)>()
, "width",&sizei::width
, "height",&sizei::height
);
ns.new_usertype<point>("point", ns.new_usertype<point>("point",
sol::constructors<point(),point(Scalar,Scalar)>(), sol::constructors<point(),point(Scalar,Scalar)>(),
"x",&point::x, "x",&point::x,
@ -109,6 +116,17 @@ void register_core_function(sol::state& lua,sol::table& ns)
, "line_strip", mesh::topology_type::line_strip , "line_strip", mesh::topology_type::line_strip
); );
ns.new_usertype<image>("image"
,"create",&image::create
,"size",sol::readonly_property(&image::size)
,"change_count",sol::property(&image::change_count,&image::set_change_count)
).new_enum("layout"
,"rgb8", image::RGB8
,"rgb32", image::RGBA8
,"gray", image::LUM);
} }

View file

@ -0,0 +1,21 @@
#include "pw/io/image_io.hpp"
#include "runtime_lua.hpp"
namespace pw {
void register_io_function(sol::state& lua,sol::table& ns)
{
ns.new_usertype<image_io>("imageio"
,"new", sol::no_constructor
,"get",&image_io::get
,"read",&image_io::read
, "write",&image_io::write
);
}
PW_REGISTER_LUA(io)
}

View file

@ -0,0 +1,11 @@
--
-- pixwerx - test - io
--
-- loading our libraries
pw.script:load_all()
local img = pw.imageio:get():read("/home/hartmut/Development/pixwerx/share/assets/textures/checkerboard-512-32.png",0)
print(img.size.width,img.size.height)

View file

@ -1,10 +1,8 @@
#include "pw/core/size.hpp" #include "pw/core/size.hpp"
#include "pw/core/matrix.hpp" #include "pw/core/matrix.hpp"
#include "pw/core/mesh.hpp" #include "pw/core/mesh.hpp"
#include "pw/core/timer.hpp" #include "pw/core/timer.hpp"
#include "pw/core/debug.hpp" #include "pw/core/debug.hpp"
#include "pw/visual/pipeline.hpp" #include "pw/visual/pipeline.hpp"
#include "pw/visual/shader.hpp" #include "pw/visual/shader.hpp"
@ -19,7 +17,6 @@ class queue {
// vector<commands> ... // vector<commands> ...
}; };
struct triangle_renderer struct triangle_renderer
{ {
GLuint vbo = 0; GLuint vbo = 0;
@ -35,11 +32,8 @@ struct triangle_renderer
{ {
} }
void setup() void setup()
{ {
mesh::vertex3array_t vertices = { mesh::vertex3array_t vertices = {
{ 0.0f, 0.5f, 0.0f} { 0.0f, 0.5f, 0.0f}
,{ 0.5f, -0.5f, 0.0f} ,{ 0.5f, -0.5f, 0.0f}