mirror of
https://github.com/thorvg/thorvg.git
synced 2025-06-07 21:23:32 +00:00
canvas: add reserve() method.
This allocates nodes slots in advance to avoid memory grow & copy. it will be benefit if you know how many shapes will be used in your canvas. Change-Id: I7d93d166c9c054078bd86593d3471a2ade3671ee
This commit is contained in:
parent
0e6faa9276
commit
809dfd8644
4 changed files with 11 additions and 2 deletions
|
@ -90,6 +90,7 @@ public:
|
|||
Canvas(RenderMethod*);
|
||||
virtual ~Canvas();
|
||||
|
||||
int reserve(size_t n);
|
||||
virtual int push(std::unique_ptr<PaintNode> paint) noexcept;
|
||||
virtual int clear() noexcept;
|
||||
virtual int update() noexcept;
|
||||
|
|
|
@ -120,6 +120,14 @@ Canvas::~Canvas()
|
|||
}
|
||||
|
||||
|
||||
int Canvas::reserve(size_t n)
|
||||
{
|
||||
auto impl = pImpl.get();
|
||||
assert(impl);
|
||||
return impl->reserve(n);
|
||||
}
|
||||
|
||||
|
||||
int Canvas::push(unique_ptr<PaintNode> paint) noexcept
|
||||
{
|
||||
auto impl = pImpl.get();
|
||||
|
|
|
@ -15,7 +15,7 @@ void tvgtest()
|
|||
|
||||
//Create a Canvas
|
||||
auto canvas = tvg::SwCanvas::gen(buffer, WIDTH, HEIGHT);
|
||||
//canvas->reserve(2); //reserve 2 shape nodes (optional)
|
||||
canvas->reserve(3); //reserve 3 shape nodes (optional)
|
||||
|
||||
//Prepare Round Rectangle
|
||||
auto shape1 = tvg::ShapeNode::gen();
|
||||
|
|
|
@ -18,7 +18,7 @@ void tvgtest()
|
|||
|
||||
//Prepare a Shape (Rectangle)
|
||||
auto shape1 = tvg::ShapeNode::gen();
|
||||
shape1->appendRect(0, 0, 400, 400, 0); //x, y, w, h, cornerRadius
|
||||
shape1->appendRect(100, 100, 400, 400, 0); //x, y, w, h, cornerRadius
|
||||
shape1->fill(255, 0, 0, 255); //r, g, b, a
|
||||
|
||||
/* Push the shape into the Canvas drawing list
|
||||
|
|
Loading…
Add table
Reference in a new issue