diff --git a/src/loaders/lottie/tvgLottieLoader.cpp b/src/loaders/lottie/tvgLottieLoader.cpp index 0a9cc71b..6a2f833a 100644 --- a/src/loaders/lottie/tvgLottieLoader.cpp +++ b/src/loaders/lottie/tvgLottieLoader.cpp @@ -292,12 +292,12 @@ bool LottieLoader::read() } -unique_ptr LottieLoader::paint() +Paint* LottieLoader::paint() { this->done(); if (!comp) return nullptr; comp->initiated = true; - return cast(comp->scene); + return comp->scene; } diff --git a/src/loaders/lottie/tvgLottieLoader.h b/src/loaders/lottie/tvgLottieLoader.h index 1bab6a35..f8e77c13 100644 --- a/src/loaders/lottie/tvgLottieLoader.h +++ b/src/loaders/lottie/tvgLottieLoader.h @@ -54,7 +54,7 @@ public: bool open(const char* data, uint32_t size, const std::string& rpath, bool copy) override; bool resize(Paint* paint, float w, float h) override; bool read() override; - unique_ptr paint() override; + Paint* paint() override; //Frame Controls bool frame(float no) override; diff --git a/src/loaders/svg/tvgSvgLoader.cpp b/src/loaders/svg/tvgSvgLoader.cpp index 183b3421..7962ef2d 100644 --- a/src/loaders/svg/tvgSvgLoader.cpp +++ b/src/loaders/svg/tvgSvgLoader.cpp @@ -3555,7 +3555,7 @@ void SvgLoader::run(unsigned tid) //According to the SVG standard the value of the width/height of the viewbox set to 0 disables rendering if ((viewFlag & SvgViewFlag::Viewbox) && (fabsf(vw) <= FLT_EPSILON || fabsf(vh) <= FLT_EPSILON)) { TVGLOG("SVG", "The width and/or height set to 0 - rendering disabled."); - root = Scene::gen(); + root = Scene::gen().release(); return; } @@ -3748,8 +3748,8 @@ bool SvgLoader::close() } -unique_ptr SvgLoader::paint() +Paint* SvgLoader::paint() { this->done(); - return std::move(root); + return root; } diff --git a/src/loaders/svg/tvgSvgLoader.h b/src/loaders/svg/tvgSvgLoader.h index a4055e73..ba3e999c 100644 --- a/src/loaders/svg/tvgSvgLoader.h +++ b/src/loaders/svg/tvgSvgLoader.h @@ -35,7 +35,7 @@ public: uint32_t size = 0; SvgLoaderData loaderData; - unique_ptr root; + Scene* root = nullptr; bool copy = false; @@ -49,7 +49,7 @@ public: bool read() override; bool close() override; - unique_ptr paint() override; + Paint* paint() override; private: SvgViewFlag viewFlag = SvgViewFlag::None; diff --git a/src/loaders/svg/tvgSvgSceneBuilder.cpp b/src/loaders/svg/tvgSvgSceneBuilder.cpp index 599b8486..819353aa 100644 --- a/src/loaders/svg/tvgSvgSceneBuilder.cpp +++ b/src/loaders/svg/tvgSvgSceneBuilder.cpp @@ -845,7 +845,7 @@ static void _updateInvalidViewSize(const Scene* scene, Box& vBox, float& w, floa /* External Class Implementation */ /************************************************************************/ -unique_ptr svgSceneBuild(SvgLoaderData& loaderData, Box vBox, float w, float h, AspectRatioAlign align, AspectRatioMeetOrSlice meetOrSlice, const string& svgPath, SvgViewFlag viewFlag) +Scene* svgSceneBuild(SvgLoaderData& loaderData, Box vBox, float w, float h, AspectRatioAlign align, AspectRatioMeetOrSlice meetOrSlice, const string& svgPath, SvgViewFlag viewFlag) { //TODO: aspect ratio is valid only if viewBox was set @@ -880,5 +880,5 @@ unique_ptr svgSceneBuild(SvgLoaderData& loaderData, Box vBox, float w, fl loaderData.doc->node.doc.w = w; loaderData.doc->node.doc.h = h; - return root; + return root.release(); } diff --git a/src/loaders/svg/tvgSvgSceneBuilder.h b/src/loaders/svg/tvgSvgSceneBuilder.h index f6a60f85..744a7035 100644 --- a/src/loaders/svg/tvgSvgSceneBuilder.h +++ b/src/loaders/svg/tvgSvgSceneBuilder.h @@ -25,6 +25,6 @@ #include "tvgCommon.h" -unique_ptr svgSceneBuild(SvgLoaderData& loaderData, Box vBox, float w, float h, AspectRatioAlign align, AspectRatioMeetOrSlice meetOrSlice, const string& svgPath, SvgViewFlag viewFlag); +Scene* svgSceneBuild(SvgLoaderData& loaderData, Box vBox, float w, float h, AspectRatioAlign align, AspectRatioMeetOrSlice meetOrSlice, const string& svgPath, SvgViewFlag viewFlag); #endif //_TVG_SVG_SCENE_BUILDER_H_ diff --git a/src/loaders/tvg/tvgTvgBinInterpreter.cpp b/src/loaders/tvg/tvgTvgBinInterpreter.cpp index 3d322004..d19e822b 100644 --- a/src/loaders/tvg/tvgTvgBinInterpreter.cpp +++ b/src/loaders/tvg/tvgTvgBinInterpreter.cpp @@ -483,7 +483,7 @@ static Paint* _parsePaint(TvgBinBlock baseBlock) /* External Class Implementation */ /************************************************************************/ -unique_ptr TvgBinInterpreter::run(const char *ptr, const char* end) +Scene* TvgBinInterpreter::run(const char *ptr, const char* end) { auto scene = Scene::gen(); if (!scene) return nullptr; @@ -498,5 +498,5 @@ unique_ptr TvgBinInterpreter::run(const char *ptr, const char* end) ptr = block.end; } - return scene; + return scene.release(); } diff --git a/src/loaders/tvg/tvgTvgCommon.h b/src/loaders/tvg/tvgTvgCommon.h index 1954ba8e..92e7a58d 100644 --- a/src/loaders/tvg/tvgTvgCommon.h +++ b/src/loaders/tvg/tvgTvgCommon.h @@ -39,7 +39,7 @@ public: /* ptr: points the tvg binary body (after header) end: end of the tvg binary data */ - virtual unique_ptr run(const char* ptr, const char* end) = 0; + virtual Scene* run(const char* ptr, const char* end) = 0; }; @@ -47,7 +47,7 @@ public: class TvgBinInterpreter : public TvgBinInterpreterBase { public: - unique_ptr run(const char* ptr, const char* end) override; + Scene* run(const char* ptr, const char* end) override; }; diff --git a/src/loaders/tvg/tvgTvgLoader.cpp b/src/loaders/tvg/tvgTvgLoader.cpp index 1c2d3e63..c8055bb5 100644 --- a/src/loaders/tvg/tvgTvgLoader.cpp +++ b/src/loaders/tvg/tvgTvgLoader.cpp @@ -103,8 +103,6 @@ bool TvgLoader::readHeader() void TvgLoader::run(unsigned tid) { - if (root) root.reset(); - auto data = const_cast(ptr); if (compressed) { @@ -223,8 +221,8 @@ bool TvgLoader::read() } -unique_ptr TvgLoader::paint() +Paint* TvgLoader::paint() { this->done(); - return std::move(root); + return root; } diff --git a/src/loaders/tvg/tvgTvgLoader.h b/src/loaders/tvg/tvgTvgLoader.h index 389425e7..f149dea4 100644 --- a/src/loaders/tvg/tvgTvgLoader.h +++ b/src/loaders/tvg/tvgTvgLoader.h @@ -34,7 +34,7 @@ public: const char* ptr = nullptr; uint32_t size = 0; uint16_t version = 0; - unique_ptr root = nullptr; + Scene* root = nullptr; TvgBinInterpreterBase* interpreter = nullptr; uint32_t uncompressedSize = 0; uint32_t compressedSize = 0; @@ -51,7 +51,7 @@ public: bool read() override; bool resize(Paint* paint, float w, float h) override; - unique_ptr paint() override; + Paint* paint() override; private: bool readHeader(); diff --git a/src/renderer/tvgLoadModule.h b/src/renderer/tvgLoadModule.h index 9cda65ca..b0533c64 100644 --- a/src/renderer/tvgLoadModule.h +++ b/src/renderer/tvgLoadModule.h @@ -70,7 +70,7 @@ struct LoadModule } virtual unique_ptr bitmap() { return nullptr; } - virtual unique_ptr paint() { return nullptr; } + virtual Paint* paint() { return nullptr; } }; } diff --git a/src/renderer/tvgPicture.cpp b/src/renderer/tvgPicture.cpp index 23c6d55b..1f2271a0 100644 --- a/src/renderer/tvgPicture.cpp +++ b/src/renderer/tvgPicture.cpp @@ -30,8 +30,8 @@ RenderUpdateFlag Picture::Impl::load() { if (loader) { if (!paint) { - if (auto p = loader->paint()) { - paint = p.release(); + paint = loader->paint(); + if (paint) { if (w != loader->w || h != loader->h) { if (!resizing) { w = loader->w; @@ -40,7 +40,7 @@ RenderUpdateFlag Picture::Impl::load() loader->resize(paint, w, h); resizing = false; } - if (paint) return RenderUpdateFlag::None; + return RenderUpdateFlag::None; } } else loader->sync();