Skip to content

Commit ca0b529

Browse files
committed
#17 avoid dynamic allocation
1 parent 4a7a190 commit ca0b529

2 files changed

Lines changed: 7 additions & 4 deletions

File tree

Sources/vger/vger.mm

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -293,18 +293,18 @@ void vgerStrokeBezier(vgerContext vg, vgerBezierSegment s, float width, vgerPain
293293
};
294294

295295
// First, subdivide the curve if needed
296-
std::vector<vgerBezierSegment> segments;
297-
subdivideBezierForStroke(s, width, segments);
296+
vg->segments.clear();
297+
subdivideBezierForStroke(s, width, vg->segments);
298298

299299
// If no valid segments, don't render
300-
if (segments.empty()) {
300+
if (vg->segments.empty()) {
301301
return;
302302
}
303303

304304
// Generate a single closed path from all segments
305305
std::vector<float2> top_points, bottom_points;
306306

307-
for (const auto& seg : segments) {
307+
for (const auto& seg : vg->segments) {
308308
// Calculate tangent vectors for this segment
309309
float2 d0 = rot90 * width * normalize(seg.b - seg.a);
310310
float2 d1 = rot90 * width * normalize(seg.c - seg.a);

Sources/vger/vger_private.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,9 @@ struct vger {
126126
/// Used in vgerTextBounds.
127127
std::vector<CGPoint> origins;
128128

129+
/// Used in vgerStrokeBezier.
130+
std::vector<vgerBezierSegment> segments;
131+
129132
vger(uint32_t flags, MTLPixelFormat pixelFormat);
130133

131134
void addPrim(const vgerPrim& prim) {

0 commit comments

Comments
 (0)