From 4482664740a0f4514a195314c746a01683927eb8 Mon Sep 17 00:00:00 2001 From: Hermet Park Date: Mon, 26 Jun 2023 14:47:56 +0900 Subject: [PATCH] common array: ++enhance the usability. + end() which indicates the end of the data pointer. --- src/lib/sw_engine/tvgSwRenderer.cpp | 18 +++++++++--------- src/lib/tvgArray.h | 4 ++-- src/savers/tvg/tvgTvgSaver.cpp | 12 ++++++------ src/wasm/thorvgwasm.cpp | 2 +- 4 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/lib/sw_engine/tvgSwRenderer.cpp b/src/lib/sw_engine/tvgSwRenderer.cpp index 30546093..336c57b4 100644 --- a/src/lib/sw_engine/tvgSwRenderer.cpp +++ b/src/lib/sw_engine/tvgSwRenderer.cpp @@ -167,7 +167,7 @@ struct SwShapeTask : SwTask shapeDelOutline(&shape, mpool, tid); //Clip Path - for (auto clip = clips.data; clip < (clips.data + clips.count); ++clip) { + for (auto clip = clips.data; clip < clips.end(); ++clip) { auto clipper = static_cast(*clip); //Clip shape rle if (shape.rle && !clipper->clip(shape.rle)) goto err; @@ -228,7 +228,7 @@ struct SwSceneTask : SwTask rleMerge(sceneRle, clipper1->rle(), clipper2->rle()); //Unify the remained clippers - for (auto rd = scene.data + 2; rd < (scene.data + scene.count); ++rd) { + for (auto rd = scene.data + 2; rd < scene.end(); ++rd) { auto clipper = static_cast(*rd); rleMerge(sceneRle, sceneRle, clipper->rle()); } @@ -290,7 +290,7 @@ struct SwImageTask : SwTask if (image.rle) { //Clear current task memorypool here if the clippers would use the same memory pool imageDelOutline(&image, mpool, tid); - for (auto clip = clips.data; clip < (clips.data + clips.count); ++clip) { + for (auto clip = clips.data; clip < clips.end(); ++clip) { auto clipper = static_cast(*clip); if (!clipper->clip(image.rle)) goto err; } @@ -367,7 +367,7 @@ SwRenderer::~SwRenderer() bool SwRenderer::clear() { - for (auto task = tasks.data; task < (tasks.data + tasks.count); ++task) { + for (auto task = tasks.data; task < tasks.end(); ++task) { if ((*task)->disposed) { delete(*task); } else { @@ -440,7 +440,7 @@ bool SwRenderer::preRender() void SwRenderer::clearCompositors() { //Free Composite Caches - for (auto comp = compositors.data; comp < (compositors.data + compositors.count); ++comp) { + for (auto comp = compositors.data; comp < compositors.end(); ++comp) { free((*comp)->compositor->image.data); delete((*comp)->compositor); delete(*comp); @@ -456,7 +456,7 @@ bool SwRenderer::postRender() rasterUnpremultiply(surface); } - for (auto task = tasks.data; task < (tasks.data + tasks.count); ++task) { + for (auto task = tasks.data; task < tasks.end(); ++task) { (*task)->pushed = false; } tasks.clear(); @@ -613,7 +613,7 @@ Compositor* SwRenderer::target(const RenderRegion& region, ColorSpace cs) auto reqChannelSize = CHANNEL_SIZE(cs); //Use cached data - for (auto p = compositors.data; p < (compositors.data + compositors.count); ++p) { + for (auto p = compositors.data; p < compositors.end(); ++p) { if ((*p)->compositor->valid && (*p)->compositor->image.channelSize == reqChannelSize) { cmp = *p; break; @@ -719,7 +719,7 @@ void* SwRenderer::prepareCommon(SwTask* task, const RenderTransform* transform, //TODO: Failed threading them. It would be better if it's possible. //See: https://github.com/thorvg/thorvg/issues/1409 //Guarantee composition targets get ready. - for (auto clip = clips.data; clip < (clips.data + clips.count); ++clip) { + for (auto clip = clips.data; clip < clips.end(); ++clip) { static_cast(*clip)->done(); } @@ -776,7 +776,7 @@ RenderData SwRenderer::prepare(const Array& scene, RenderData data, //TODO: Failed threading them. It would be better if it's possible. //See: https://github.com/thorvg/thorvg/issues/1409 //Guarantee composition targets get ready. - for (auto task = scene.data; task < (scene.data + scene.count); ++task) { + for (auto task = scene.data; task < scene.end(); ++task) { static_cast(*task)->done(); } return prepareCommon(task, transform, clips, opacity, flags); diff --git a/src/lib/tvgArray.h b/src/lib/tvgArray.h index 65a40a0c..6360bc5d 100644 --- a/src/lib/tvgArray.h +++ b/src/lib/tvgArray.h @@ -68,12 +68,12 @@ struct Array return reserve(count + size); } - T* ptr() + T* end() const { return data + count; } - T* last() + T* last() const { return data + count - 1; } diff --git a/src/savers/tvg/tvgTvgSaver.cpp b/src/savers/tvg/tvgTvgSaver.cpp index e52fcf44..8c5c96c4 100644 --- a/src/savers/tvg/tvgTvgSaver.cpp +++ b/src/savers/tvg/tvgTvgSaver.cpp @@ -219,7 +219,7 @@ bool TvgSaver::writeHeader() buffer.grow(headerSize); //1. Signature - auto ptr = buffer.ptr(); + auto ptr = buffer.end(); memcpy(ptr, TVG_HEADER_SIGNATURE, TVG_HEADER_SIGNATURE_LENGTH); ptr += TVG_HEADER_SIGNATURE_LENGTH; @@ -244,7 +244,7 @@ bool TvgSaver::writeHeader() void TvgSaver::writeTag(TvgBinTag tag) { buffer.grow(SIZE(TvgBinTag)); - memcpy(buffer.ptr(), &tag, SIZE(TvgBinTag)); + memcpy(buffer.end(), &tag, SIZE(TvgBinTag)); buffer.count += SIZE(TvgBinTag); } @@ -252,14 +252,14 @@ void TvgSaver::writeTag(TvgBinTag tag) void TvgSaver::writeCount(TvgBinCounter cnt) { buffer.grow(SIZE(TvgBinCounter)); - memcpy(buffer.ptr(), &cnt, SIZE(TvgBinCounter)); + memcpy(buffer.end(), &cnt, SIZE(TvgBinCounter)); buffer.count += SIZE(TvgBinCounter); } void TvgSaver::writeReservedCount(TvgBinCounter cnt) { - memcpy(buffer.ptr() - cnt - SIZE(TvgBinCounter), &cnt, SIZE(TvgBinCounter)); + memcpy(buffer.end() - cnt - SIZE(TvgBinCounter), &cnt, SIZE(TvgBinCounter)); } @@ -273,7 +273,7 @@ void TvgSaver::reserveCount() TvgBinCounter TvgSaver::writeData(const void* data, TvgBinCounter cnt) { buffer.grow(cnt); - memcpy(buffer.ptr(), data, cnt); + memcpy(buffer.end(), data, cnt); buffer.count += cnt; return cnt; @@ -286,7 +286,7 @@ TvgBinCounter TvgSaver::writeTagProperty(TvgBinTag tag, TvgBinCounter cnt, const buffer.grow(growCnt); - auto ptr = buffer.ptr(); + auto ptr = buffer.end(); *ptr = tag; ++ptr; diff --git a/src/wasm/thorvgwasm.cpp b/src/wasm/thorvgwasm.cpp index 472d9c81..74568e6c 100644 --- a/src/wasm/thorvgwasm.cpp +++ b/src/wasm/thorvgwasm.cpp @@ -189,7 +189,7 @@ public: mBounds[0], mBounds[1] + mBounds[3], //(x1, y2) }; - for (auto paint = parents.data; paint < (parents.data + parents.count); ++paint) { + for (auto paint = parents.data; paint < parents.end(); ++paint) { auto m = const_cast(*paint)->transform(); for (int i = 0; i<8; i += 2) { float x = points[i] * m.e11 + points[i+1] * m.e12 + m.e13;