api: change api name strokeTrim() -> trimpath()

No changes in behaviour so far.
This commit is contained in:
Mira Grudzinska 2025-02-19 00:01:31 +09:00 committed by Hermet Park
parent 02678b67f4
commit b939a60bfa
14 changed files with 30 additions and 35 deletions

View file

@ -149,7 +149,7 @@ void contents()
tvg_shape_set_stroke_width(scene_shape1, 10.0f);
tvg_shape_set_stroke_cap(scene_shape1, Tvg_Stroke_Cap::TVG_STROKE_CAP_ROUND);
tvg_shape_set_stroke_join(scene_shape1, Tvg_Stroke_Join::TVG_STROKE_JOIN_ROUND);
tvg_shape_set_stroke_trim(scene_shape1, 0.25f, 0.75f, true);
tvg_shape_set_trimpath(scene_shape1, 0.25f, 0.75f, true);
//Set circles with a dashed stroke
Tvg_Paint* scene_shape2 = tvg_paint_duplicate(scene_shape1);

View file

@ -43,7 +43,7 @@ struct UserExample : tvgexam::Example
shape1->strokeJoin(tvg::StrokeJoin::Round);
shape1->strokeCap(tvg::StrokeCap::Round);
shape1->strokeWidth(12);
shape1->strokeTrim(0.25f, 0.75f, false);
shape1->trimpath(0.25f, 0.75f, false);
auto shape2 = static_cast<tvg::Shape*>(shape1->duplicate());
shape2->translate(300, 300);
@ -52,7 +52,7 @@ struct UserExample : tvgexam::Example
float dashPatterns[] = {10, 20};
shape2->strokeDash(dashPatterns, 2, 10);
shape2->strokeTrim(0.25f, 0.75f, true);
shape2->trimpath(0.25f, 0.75f, true);
canvas->push(shape1);
canvas->push(shape2);

View file

@ -1097,7 +1097,7 @@ public:
Result strokeMiterlimit(float miterlimit) noexcept;
/**
* @brief Sets the trim of the stroke along the defined path segment, allowing control over which part of the stroke is visible.
* @brief Sets the trim of the shape along the defined path segment, allowing control over which part of the shape is visible.
*
* If the values of the arguments @p begin and @p end exceed the 0-1 range, they are wrapped around in a manner similar to angle wrapping, effectively treating the range as circular.
*
@ -1108,7 +1108,7 @@ public:
*
* @note Experimental API
*/
Result strokeTrim(float begin, float end, bool simultaneous = true) noexcept;
Result trimpath(float begin, float end, bool simultaneous = true) noexcept;
/**
* @brief Sets the solid color for all of the figures from the path.

View file

@ -1413,7 +1413,7 @@ TVG_API Tvg_Result tvg_shape_get_stroke_miterlimit(const Tvg_Paint* paint, float
/*!
* @brief Sets the trim of the stroke along the defined path segment, allowing control over which part of the stroke is visible.
* @brief Sets the trim of the shape along the defined path segment, allowing control over which part of the shape is visible.
*
* If the values of the arguments @p begin and @p end exceed the 0-1 range, they are wrapped around in a manner similar to angle wrapping, effectively treating the range as circular.
*
@ -1428,7 +1428,7 @@ TVG_API Tvg_Result tvg_shape_get_stroke_miterlimit(const Tvg_Paint* paint, float
*
* @note Experimental API
*/
TVG_API Tvg_Result tvg_shape_set_stroke_trim(Tvg_Paint* paint, float begin, float end, bool simultaneous);
TVG_API Tvg_Result tvg_shape_set_trimpath(Tvg_Paint* paint, float begin, float end, bool simultaneous);
/*!

View file

@ -478,10 +478,10 @@ TVG_API Tvg_Result tvg_shape_get_stroke_miterlimit(const Tvg_Paint* paint, float
}
TVG_API Tvg_Result tvg_shape_set_stroke_trim(Tvg_Paint* paint, float begin, float end, bool simultaneous)
TVG_API Tvg_Result tvg_shape_set_trimpath(Tvg_Paint* paint, float begin, float end, bool simultaneous)
{
if (!paint) return TVG_RESULT_INVALID_ARGUMENT;
return (Tvg_Result) reinterpret_cast<Shape*>(paint)->strokeTrim(begin, end, simultaneous);
return (Tvg_Result) reinterpret_cast<Shape*>(paint)->trimpath(begin, end, simultaneous);
}

View file

@ -764,7 +764,7 @@ void LottieBuilder::updateTrimpath(TVG_UNUSED LottieGroup* parent, LottieObject*
end = (length * end) + pbegin;
}
ctx->propagator->strokeTrim(begin, end, trimpath->type == LottieTrimpath::Type::Simultaneous);
ctx->propagator->trimpath(begin, end, trimpath->type == LottieTrimpath::Type::Simultaneous);
ctx->merging = nullptr;
}
@ -1257,7 +1257,7 @@ void LottieBuilder::updateStrokeEffect(LottieLayer* layer, LottieFxStroke* effec
}
shape->transform(layer->cache.matrix);
shape->strokeTrim(effect->begin(frameNo) * 0.01f, effect->end(frameNo) * 0.01f);
shape->trimpath(effect->begin(frameNo) * 0.01f, effect->end(frameNo) * 0.01f);
shape->strokeFill(255, 255, 255, (int)(effect->opacity(frameNo) * 255.0f));
shape->strokeJoin(StrokeJoin::Round);
shape->strokeCap(StrokeCap::Round);

View file

@ -1544,7 +1544,7 @@ void Stroker::stroke(const RenderShape *rshape)
Point *pts, *trimmedPts = nullptr;
uint32_t cmdCnt = 0, ptsCnt = 0;
if (rshape->strokeTrim()) {
if (rshape->trimpath()) {
RenderPath trimmedPath;
if (!rshape->stroke->trim.trim(rshape->path, trimmedPath)) return;

View file

@ -85,7 +85,7 @@ struct SwShapeTask : SwTask
Additionally, the stroke style should not be dashed. */
bool antialiasing(float strokeWidth)
{
return strokeWidth < 2.0f || rshape->stroke->dashCnt > 0 || rshape->stroke->strokeFirst || rshape->strokeTrim() || rshape->stroke->color.a < 255;
return strokeWidth < 2.0f || rshape->stroke->dashCnt > 0 || rshape->stroke->strokeFirst || rshape->trimpath() || rshape->stroke->color.a < 255;
}
float validStrokeWidth(bool clipper)

View file

@ -510,7 +510,7 @@ bool shapeGenStrokeRle(SwShape* shape, const RenderShape* rshape, const Matrix&
auto ret = true;
//Dash style with/without trimming
auto trimmed = rshape->strokeTrim();
auto trimmed = rshape->trimpath();
if (rshape->stroke->dashCnt > 0) {
shapeOutline = _genDashOutline(rshape, transform, mpool, tid, trimmed);
if (!shapeOutline) return false;

View file

@ -175,18 +175,18 @@ struct RenderShape
if (a) *a = color.a;
}
bool trimpath() const
{
if (!stroke) return false;
return stroke->trim.valid();
}
float strokeWidth() const
{
if (!stroke) return 0;
return stroke->width;
}
bool strokeTrim() const
{
if (!stroke) return false;
return stroke->trim.valid();
}
bool strokeFill(uint8_t* r, uint8_t* g, uint8_t* b, uint8_t* a) const
{
if (!stroke) return false;

View file

@ -231,9 +231,9 @@ float Shape::strokeMiterlimit() const noexcept
}
Result Shape::strokeTrim(float begin, float end, bool simultaneous) noexcept
Result Shape::trimpath(float begin, float end, bool simultaneous) noexcept
{
SHAPE(this)->strokeTrim(begin, end, simultaneous);
SHAPE(this)->trimpath({begin, end, simultaneous});
return Result::Success;
}

View file

@ -209,25 +209,20 @@ struct Shape::Impl : Paint::Impl
renderFlag |= RenderUpdateFlag::Stroke;
}
void strokeTrim(float begin, float end, bool simultaneous)
void trimpath(const TrimPath& trim)
{
//Even if there is no trimming effect, begin can still affect dashing starting point
if (fabsf(end - begin) >= 1.0f) end = begin + 1.0f;
if (!rs.stroke) {
if (begin == 0.0f && end == 1.0f) return;
if (trim.begin == 0.0f && trim.end == 1.0f) return;
rs.stroke = new RenderStroke();
}
if (tvg::equal(rs.stroke->trim.begin, begin) && tvg::equal(rs.stroke->trim.end, end) && rs.stroke->trim.simultaneous == simultaneous) return;
if (tvg::equal(rs.stroke->trim.begin, trim.begin) && tvg::equal(rs.stroke->trim.end, trim.end) && rs.stroke->trim.simultaneous == trim.simultaneous) return;
rs.stroke->trim.begin = begin;
rs.stroke->trim.end = end;
rs.stroke->trim.simultaneous = simultaneous;
renderFlag |= RenderUpdateFlag::Stroke;
rs.stroke->trim = trim;
renderFlag |= RenderUpdateFlag::Path;
}
bool strokeTrim(float* begin, float* end)
bool trimpath(float* begin, float* end)
{
if (rs.stroke) {
if (begin) *begin = rs.stroke->trim.begin;

View file

@ -374,7 +374,7 @@ void WgRenderDataShape::updateMeshes(WgContext& context, const RenderShape &rsha
// path decoded vertex buffer
auto pbuff = pool->reqVertexBuffer(scale);
if (rshape.strokeTrim()) {
if (rshape.trimpath()) {
auto trimbuff = pool->reqVertexBuffer(scale);
pbuff->decodePath(rshape, true, [&](const WgVertexBuffer& path_buff) {
appendShape(context, path_buff);

View file

@ -196,7 +196,7 @@ TEST_CASE("Stroking", "[tvgShape]")
REQUIRE(shape->strokeMiterlimit() == 1000.0f);
REQUIRE(shape->strokeMiterlimit(-0.001f) == Result::InvalidArguments);
REQUIRE(shape->strokeTrim(0.3f, 0.88f, false) == Result::Success);
REQUIRE(shape->trimpath(0.3f, 0.88f, false) == Result::Success);
//Stroke Order After Stroke Setting
REQUIRE(shape->order(true) == Result::Success);