#include #include #include #include "src/wp2/decode.h" using namespace emscripten; thread_local const val Uint8ClampedArray = val::global("Uint8ClampedArray"); thread_local const val ImageData = val::global("ImageData"); val decode(std::string image_in) { WP2::ArgbBuffer buffer(WP2_rgbA_32); WP2Status status = WP2::Decode(image_in, &buffer); if (status != WP2_STATUS_OK) { return val::null(); } return ImageData.new_(Uint8ClampedArray.new_(typed_memory_view(buffer.stride() * buffer.height(), buffer.GetRow8(0))), buffer.width(), buffer.height()); } EMSCRIPTEN_BINDINGS(my_module) { function("decode", &decode); }