From b3387cb2c7efb88faa41d15891d0f6090867b152 Mon Sep 17 00:00:00 2001 From: sam Date: Wed, 30 May 2018 00:26:31 +0100 Subject: [PATCH] Add GIF export binding wrapper --- geometrize/script/bindings/bindingscreator.cpp | 3 +-- geometrize/script/bindings/bindingswrapper.cpp | 14 ++++++++++++++ geometrize/script/bindings/bindingswrapper.h | 10 ++++++++++ geometrize/script/chaiscriptcreator.cpp | 1 + 4 files changed, 26 insertions(+), 2 deletions(-) diff --git a/geometrize/script/bindings/bindingscreator.cpp b/geometrize/script/bindings/bindingscreator.cpp index 786675ad..2081182a 100644 --- a/geometrize/script/bindings/bindingscreator.cpp +++ b/geometrize/script/bindings/bindingscreator.cpp @@ -36,7 +36,6 @@ #include "geometrize/shaperesult.h" #include "dialog/launchwindow.h" -#include "exporter/gifexporter.h" #include "exporter/imageexporter.h" #include "image/imageloader.h" #include "script/bindings/bindingshelpers.h" @@ -219,7 +218,7 @@ std::shared_ptr createImageExportBindings() std::shared_ptr createAnimatedGifExportBindings() { - using namespace geometrize::exporter; + using namespace geometrize::script::bindings; auto module{std::make_shared()}; diff --git a/geometrize/script/bindings/bindingswrapper.cpp b/geometrize/script/bindings/bindingswrapper.cpp index 9c548b26..58882c55 100644 --- a/geometrize/script/bindings/bindingswrapper.cpp +++ b/geometrize/script/bindings/bindingswrapper.cpp @@ -7,6 +7,7 @@ #include "common/formatsupport.h" #include "common/searchpaths.h" #include "common/util.h" +#include "exporter/gifexporter.h" #include "localization/localization.h" #include "task/taskutil.h" @@ -194,6 +195,19 @@ void setTranslatorsForLocale(const std::string& locale) geometrize::setTranslatorsForLocale(QString::fromStdString(locale)); } +bool exportGIF(const std::vector& data, + const std::uint32_t inputWidth, + const std::uint32_t inputHeight, + const std::uint32_t outputWidth, + const std::uint32_t outputHeight, + const std::size_t frameSkip, + const std::string& filePath) +{ + return geometrize::exporter::exportGIF(data, inputWidth, inputHeight, outputWidth, outputHeight, [frameSkip](std::size_t frameIndex) { + return frameSkip == 0U ? false : (frameIndex % frameSkip == 0); + }, filePath); +} + } } diff --git a/geometrize/script/bindings/bindingswrapper.h b/geometrize/script/bindings/bindingswrapper.h index 625c4ff6..889a44b7 100644 --- a/geometrize/script/bindings/bindingswrapper.h +++ b/geometrize/script/bindings/bindingswrapper.h @@ -5,6 +5,8 @@ #include +#include "geometrize/shaperesult.h" + namespace geometrize { @@ -78,6 +80,14 @@ std::vector split(const std::string& s, const char delimiter); void setTranslatorsForLocale(const std::string& locale); +bool exportGIF(const std::vector& data, + std::uint32_t inputWidth, + std::uint32_t inputHeight, + std::uint32_t outputWidth, + std::uint32_t outputHeight, + std::size_t frameSkip, + const std::string& filePath); + } } diff --git a/geometrize/script/chaiscriptcreator.cpp b/geometrize/script/chaiscriptcreator.cpp index f4f97f8c..294b2381 100644 --- a/geometrize/script/chaiscriptcreator.cpp +++ b/geometrize/script/chaiscriptcreator.cpp @@ -65,6 +65,7 @@ std::unique_ptr createImageTaskEngine() chai->add(bindings::createImageBindings()); chai->add(bindings::createImageTaskBindings()); chai->add(bindings::createImageExportBindings()); + chai->add(bindings::createAnimatedGifExportBindings()); addPrintRedirect(chai);