-/*
- * Copyright (c) 2020 Samsung Electronics Co., Ltd All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
#ifndef _THORVG_H_
#define _THORVG_H_
A() = delete; \
~A() = delete
-#define _TVG_DECLARE_ACCESSOR(A) \
- friend A
+#define _TVG_DECLARE_ACCESSOR() \
+ friend Canvas; \
+ friend Scene; \
+ friend Picture
#define _TVG_DECALRE_IDENTIFIER() \
auto id() const { return _id; } \
class RenderMethod;
class Scene;
+class Picture;
class Canvas;
Result transform(const Matrix& m) noexcept;
Result bounds(float* x, float* y, float* w, float* h) const noexcept;
+ _TVG_DECLARE_ACCESSOR();
_TVG_DECLARE_PRIVATE(Paint);
- _TVG_DECLARE_ACCESSOR(Canvas);
- _TVG_DECLARE_ACCESSOR(Scene);
};
};
-
/**
* @class LinearGradient
*
//Shape
Result appendRect(float x, float y, float w, float h, float rx, float ry) noexcept;
Result appendCircle(float cx, float cy, float rx, float ry) noexcept;
+ Result appendArc(float cx, float cy, float radius, float startAngle, float sweep, bool pie) noexcept;
Result appendPath(const PathCommand* cmds, uint32_t cmdCnt, const Point* pts, uint32_t ptsCnt) noexcept;
//Stroke
/**
+ * @class Picture
+ *
+ * @ingroup ThorVG
+ *
+ * @brief description...
+ *
+ */
+class TVG_EXPORT Picture final : public Paint
+{
+public:
+ ~Picture();
+
+ Result load(const std::string& path) noexcept;
+ Result load(const char* data, uint32_t size) noexcept;
+ Result viewbox(float* x, float* y, float* w, float* h) const noexcept;
+
+ static std::unique_ptr<Picture> gen() noexcept;
+
+ _TVG_DECLARE_PRIVATE(Picture);
+};
+
+
+/**
* @class Scene
*
* @ingroup ThorVG
Result push(std::unique_ptr<Paint> paint) noexcept;
Result reserve(uint32_t size) noexcept;
- Result load(const std::string& path) noexcept;
static std::unique_ptr<Scene> gen() noexcept;
public:
~SwCanvas();
- Result target(uint32_t* buffer, uint32_t stride, uint32_t w, uint32_t h) noexcept;
+ enum Colorspace { ABGR8888 = 0, ARGB8888 };
+
+ Result target(uint32_t* buffer, uint32_t stride, uint32_t w, uint32_t h, Colorspace cs) noexcept;
static std::unique_ptr<SwCanvas> gen() noexcept;
*
* @see ...
*/
- static Result init(CanvasEngine engine) noexcept;
+ static Result init(CanvasEngine engine, uint32_t threads) noexcept;
static Result term(CanvasEngine engine) noexcept;
_TVG_DISABLE_CTOR(Initializer);