int update(RenderMethod* engine) noexcept override;
int clear() noexcept;
+ int moveTo(float x, float y) noexcept;
+ int lineTo(float x, float y) noexcept;
+ int cubicTo(float cx1, float cy1, float cx2, float cy2, float x, float y) noexcept;
+ int close() noexcept;
+
int appendRect(float x, float y, float w, float h, float cornerRadius) noexcept;
int appendCircle(float cx, float cy, float radiusW, float radiusH) noexcept;
int appendPath(const PathCommand* cmds, size_t cmdCnt, const Point* pts, size_t ptsCnt) noexcept;
auto impl = pImpl.get();
assert(impl);
+ impl->path->grow(cmdCnt, ptsCnt);
impl->path->append(cmds, cmdCnt, pts, ptsCnt);
return 0;
}
+int ShapeNode::moveTo(float x, float y) noexcept
+{
+ auto impl = pImpl.get();
+ assert(impl);
+
+ impl->path->moveTo(x, y);
+
+ return 0;
+}
+
+
+int ShapeNode::lineTo(float x, float y) noexcept
+{
+ auto impl = pImpl.get();
+ assert(impl);
+
+ impl->path->lineTo(x, y);
+
+ return 0;
+}
+
+
+int ShapeNode::cubicTo(float cx1, float cy1, float cx2, float cy2, float x, float y) noexcept
+{
+ auto impl = pImpl.get();
+ assert(impl);
+
+ impl->path->cubicTo(cx1, cy1, cx2, cy2, x, y);
+
+ return 0;
+}
+
+
+int ShapeNode::close() noexcept
+{
+ auto impl = pImpl.get();
+ assert(impl);
+
+ impl->path->close();
+
+ return 0;
+}
+
+
int ShapeNode::appendCircle(float cx, float cy, float radiusW, float radiusH) noexcept
{
auto impl = pImpl.get();
assert(pts);
}
- void reserve(size_t cmdCnt, size_t ptsCnt)
- {
- reserveCmd(cmdCnt);
- reservePts(ptsCnt);
- }
-
void grow(size_t cmdCnt, size_t ptsCnt)
{
reserveCmd(this->cmdCnt + cmdCnt);
void append(const PathCommand* cmds, size_t cmdCnt, const Point* pts, size_t ptsCnt)
{
- grow(cmdCnt, ptsCnt);
memcpy(this->cmds + this->cmdCnt, cmds, sizeof(PathCommand) * cmdCnt);
memcpy(this->pts + this->ptsCnt, pts, sizeof(Point) * ptsCnt);
this->cmdCnt += cmdCnt;
void close()
{
+ if (cmdCnt > 0 && cmds[cmdCnt - 1] == PathCommand::Close) return;
+
if (cmdCnt + 1 > reservedCmdCnt) reserveCmd((cmdCnt + 1) * 2);
cmds[cmdCnt++] = PathCommand::Close;
}
--- /dev/null
+#include <tizenvg.h>
+#include <Elementary.h>
+
+using namespace std;
+
+#define WIDTH 800
+#define HEIGHT 800
+
+static uint32_t buffer[WIDTH * HEIGHT];
+
+void tvgtest()
+{
+ //Initialize TizenVG Engine
+ tvg::Engine::init();
+
+ //Create a Canvas
+ auto canvas = tvg::SwCanvas::gen(buffer, WIDTH, HEIGHT);
+
+ //Star
+ auto shape1 = tvg::ShapeNode::gen();
+
+ //Appends Paths
+ shape1->moveTo(199, 34);
+ shape1->lineTo(253, 143);
+ shape1->lineTo(374, 160);
+ shape1->lineTo(287, 244);
+ shape1->lineTo(307, 365);
+ shape1->lineTo(199, 309);
+ shape1->lineTo(97, 365);
+ shape1->lineTo(112, 245);
+ shape1->lineTo(26, 161);
+ shape1->lineTo(146, 143);
+ shape1->close();
+ shape1->fill(0, 0, 255, 255);
+ canvas->push(move(shape1));
+
+ //Circle
+ auto shape2 = tvg::ShapeNode::gen();
+
+ auto cx = 550.0f;
+ auto cy = 550.0f;
+ auto radius = 125.0f;
+ auto halfRadius = radius * 0.552284f;
+
+ //Append Paths
+ shape2->moveTo(cx, cy - radius);
+ shape2->cubicTo(cx + halfRadius, cy - radius, cx + radius, cy - halfRadius, cx + radius, cy);
+ shape2->cubicTo(cx + radius, cy + halfRadius, cx + halfRadius, cy + radius, cx, cy+ radius);
+ shape2->cubicTo(cx - halfRadius, cy + radius, cx - radius, cy + halfRadius, cx - radius, cy);
+ shape2->cubicTo(cx - radius, cy - halfRadius, cx - halfRadius, cy - radius, cx, cy - radius);
+ shape2->fill(255, 0, 0, 255);
+ canvas->push(move(shape2));
+
+ canvas->draw();
+ canvas->sync();
+
+ //Terminate TizenVG Engine
+ tvg::Engine::term();
+}
+
+void
+win_del(void *data, Evas_Object *o, void *ev)
+{
+ elm_exit();
+}
+
+int main(int argc, char **argv)
+{
+ tvgtest();
+
+ //Show the result using EFL...
+ elm_init(argc, argv);
+
+ Eo* win = elm_win_util_standard_add(NULL, "TizenVG Test");
+ evas_object_smart_callback_add(win, "delete,request", win_del, 0);
+
+ Eo* img = evas_object_image_filled_add(evas_object_evas_get(win));
+ evas_object_image_size_set(img, WIDTH, HEIGHT);
+ evas_object_image_data_set(img, buffer);
+ evas_object_size_hint_weight_set(img, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(img);
+
+ elm_win_resize_object_add(win, img);
+ evas_object_geometry_set(win, 0, 0, WIDTH, HEIGHT);
+ evas_object_show(win);
+
+ elm_run();
+ elm_shutdown();
+}