diff --git a/inc/thorvg.h b/inc/thorvg.h index e4f45a7c..71f6b498 100644 --- a/inc/thorvg.h +++ b/inc/thorvg.h @@ -122,7 +122,7 @@ public: uint32_t colorStops(const ColorStop** colorStops) const noexcept; FillSpread spread() const noexcept; - std::unique_ptr duplicate() const noexcept; + Fill* duplicate() const noexcept; _TVG_DECALRE_IDENTIFIER(); _TVG_DECLARE_PRIVATE(Fill); diff --git a/src/lib/tvgFill.cpp b/src/lib/tvgFill.cpp index c9d3f1c7..f89ba8b9 100644 --- a/src/lib/tvgFill.cpp +++ b/src/lib/tvgFill.cpp @@ -85,7 +85,7 @@ FillSpread Fill::spread() const noexcept } -unique_ptr Fill::duplicate() const noexcept +Fill* Fill::duplicate() const noexcept { return pImpl->duplicate(); } diff --git a/src/lib/tvgFill.h b/src/lib/tvgFill.h index 07af49c0..5036337d 100644 --- a/src/lib/tvgFill.h +++ b/src/lib/tvgFill.h @@ -28,7 +28,7 @@ template struct DuplicateMethod { virtual ~DuplicateMethod(){} - virtual unique_ptr duplicate() = 0; + virtual T* duplicate() = 0; }; template @@ -39,7 +39,7 @@ struct FillDup : DuplicateMethod FillDup(T* _inst) : inst(_inst) {} ~FillDup(){} - unique_ptr duplicate() override + Fill* duplicate() override { return inst->duplicate(); } @@ -63,7 +63,7 @@ struct Fill::Impl this->dup = dup; } - unique_ptr duplicate() + Fill* duplicate() { auto ret = dup->duplicate(); if (!ret) return nullptr; diff --git a/src/lib/tvgLinearGradient.cpp b/src/lib/tvgLinearGradient.cpp index 5258b335..f647d449 100644 --- a/src/lib/tvgLinearGradient.cpp +++ b/src/lib/tvgLinearGradient.cpp @@ -32,7 +32,7 @@ struct LinearGradient::Impl float x2 = 0; float y2 = 0; - unique_ptr duplicate() + Fill* duplicate() { auto ret = LinearGradient::gen(); if (!ret) return nullptr; @@ -42,7 +42,7 @@ struct LinearGradient::Impl ret->pImpl->x2 = x2; ret->pImpl->y2 = y2; - return ret; + return ret.release(); } }; diff --git a/src/lib/tvgPaint.h b/src/lib/tvgPaint.h index 63c08499..3bdba812 100644 --- a/src/lib/tvgPaint.h +++ b/src/lib/tvgPaint.h @@ -34,7 +34,7 @@ namespace tvg virtual bool update(RenderMethod& renderer, const RenderTransform* transform, RenderUpdateFlag pFlag) = 0; virtual bool render(RenderMethod& renderer) = 0; virtual bool bounds(float* x, float* y, float* w, float* h) const = 0; - virtual unique_ptr duplicate() = 0; + virtual Paint* duplicate() = 0; }; struct Paint::Impl @@ -150,7 +150,7 @@ namespace tvg Paint* duplicate() { - return smethod->duplicate().release(); + return smethod->duplicate(); } }; @@ -183,7 +183,7 @@ namespace tvg return inst->render(renderer); } - unique_ptr duplicate() override + Paint* duplicate() override { return inst->duplicate(); } diff --git a/src/lib/tvgPictureImpl.h b/src/lib/tvgPictureImpl.h index b1e4fb19..b4c5ed58 100644 --- a/src/lib/tvgPictureImpl.h +++ b/src/lib/tvgPictureImpl.h @@ -105,7 +105,7 @@ struct Picture::Impl return Result::Success; } - unique_ptr duplicate() + Paint* duplicate() { //TODO: return nullptr; diff --git a/src/lib/tvgRadialGradient.cpp b/src/lib/tvgRadialGradient.cpp index d02d2e08..03164ae3 100644 --- a/src/lib/tvgRadialGradient.cpp +++ b/src/lib/tvgRadialGradient.cpp @@ -31,7 +31,7 @@ struct RadialGradient::Impl float cy = 0; float radius = 0; - unique_ptr duplicate() + Fill* duplicate() { auto ret = RadialGradient::gen(); if (!ret) return nullptr; @@ -40,7 +40,7 @@ struct RadialGradient::Impl ret->pImpl->cy = cy; ret->pImpl->radius = radius; - return ret; + return ret.release(); } }; diff --git a/src/lib/tvgSceneImpl.h b/src/lib/tvgSceneImpl.h index 00f2ccce..d9d60947 100644 --- a/src/lib/tvgSceneImpl.h +++ b/src/lib/tvgSceneImpl.h @@ -89,7 +89,7 @@ struct Scene::Impl return true; } - unique_ptr duplicate() + Paint* duplicate() { //TODO: return nullptr; diff --git a/src/lib/tvgShapeImpl.h b/src/lib/tvgShapeImpl.h index 5186003e..7dc18115 100644 --- a/src/lib/tvgShapeImpl.h +++ b/src/lib/tvgShapeImpl.h @@ -176,7 +176,7 @@ struct Shape::Impl return true; } - unique_ptr duplicate() + Paint* duplicate() { auto ret = Shape::gen(); if (!ret) return nullptr; @@ -200,11 +200,11 @@ struct Shape::Impl } if (fill) { - dup->fill = fill->duplicate().release(); + dup->fill = fill->duplicate(); dup->flag |= RenderUpdateFlag::Gradient; } - return ret; + return ret.release(); } };