44#include <string.h>
55
66#include "arena/arena.h"
7- #include "arena/string.h"
87#include "canvas/canvas.h"
98#include "logger/log.h"
109#include "path_builder.h"
10+ #include "str/alloc_str.h"
1111
1212#define DVEC_NAME SvgPartsVec
1313#define DVEC_LOWERCASE_NAME svg_parts_vec
14- #define DVEC_TYPE ArenaString *
14+ #define DVEC_TYPE Str *
1515#include "arena/dvec_impl.h"
1616
1717struct ScalableCanvas {
@@ -43,7 +43,7 @@ ScalableCanvas* scalable_canvas_new(
4343
4444 svg_parts_vec_push (
4545 canvas -> parts ,
46- arena_string_new_fmt (
46+ str_new_fmt (
4747 arena ,
4848 "<rect width=\"%u\" height=\"%u\" fill=\"#%08x\" />" ,
4949 width ,
@@ -71,7 +71,7 @@ void scalable_canvas_draw_circle(
7171
7272 svg_parts_vec_push (
7373 canvas -> parts ,
74- arena_string_new_fmt (
74+ str_new_fmt (
7575 canvas -> arena ,
7676 "<circle cx=\"%f\" cy=\"%f\" r=\"%f\" fill=\"#%08x\" />" ,
7777 x ,
@@ -95,7 +95,7 @@ void scalable_canvas_draw_line(
9595
9696 svg_parts_vec_push (
9797 canvas -> parts ,
98- arena_string_new_fmt (
98+ str_new_fmt (
9999 canvas -> arena ,
100100 "<line x1=\"%f\" y1=\"%f\" x2=\"%f\" y2=\"%f\" stroke=\"#%08x\" stroke-width=\"%f\" fill=\"transparent\" />" ,
101101 x1 ,
@@ -123,7 +123,7 @@ void scalable_canvas_draw_bezier(
123123
124124 svg_parts_vec_push (
125125 canvas -> parts ,
126- arena_string_new_fmt (
126+ str_new_fmt (
127127 canvas -> arena ,
128128 "<path d=\"M %f %f Q %f %f %f %f\" stroke=\"#%08x\" stroke-width=\"%f\" fill=\"transparent\" />" ,
129129 x1 ,
@@ -146,10 +146,7 @@ void scalable_canvas_draw_path(
146146 RELEASE_ASSERT (canvas );
147147 RELEASE_ASSERT (path );
148148
149- svg_parts_vec_push (
150- canvas -> parts ,
151- arena_string_new_fmt (canvas -> arena , "<path d=\"" )
152- );
149+ svg_parts_vec_push (canvas -> parts , str_new_fmt (canvas -> arena , "<path d=\"" ));
153150
154151 for (size_t contour_idx = 0 ;
155152 contour_idx < path_contour_vec_len (path -> contours );
@@ -160,10 +157,7 @@ void scalable_canvas_draw_path(
160157 );
161158
162159 if (contour_idx != 0 ) {
163- svg_parts_vec_push (
164- canvas -> parts ,
165- arena_string_new_fmt (canvas -> arena , "Z " )
166- );
160+ svg_parts_vec_push (canvas -> parts , str_new_fmt (canvas -> arena , "Z " ));
167161 }
168162
169163 for (size_t segment_idx = 0 ; segment_idx < path_contour_len (contour );
@@ -175,7 +169,7 @@ void scalable_canvas_draw_path(
175169 case PATH_CONTOUR_SEGMENT_TYPE_START : {
176170 svg_parts_vec_push (
177171 canvas -> parts ,
178- arena_string_new_fmt (
172+ str_new_fmt (
179173 canvas -> arena ,
180174 "M %f %f " ,
181175 segment .value .start .x ,
@@ -187,7 +181,7 @@ void scalable_canvas_draw_path(
187181 case PATH_CONTOUR_SEGMENT_TYPE_LINE : {
188182 svg_parts_vec_push (
189183 canvas -> parts ,
190- arena_string_new_fmt (
184+ str_new_fmt (
191185 canvas -> arena ,
192186 "L %f %f " ,
193187 segment .value .line .x ,
@@ -199,7 +193,7 @@ void scalable_canvas_draw_path(
199193 case PATH_CONTOUR_SEGMENT_TYPE_QUAD_BEZIER : {
200194 svg_parts_vec_push (
201195 canvas -> parts ,
202- arena_string_new_fmt (
196+ str_new_fmt (
203197 canvas -> arena ,
204198 "Q %f %f %f %f " ,
205199 segment .value .quad_bezier .control .x ,
@@ -213,7 +207,7 @@ void scalable_canvas_draw_path(
213207 case PATH_CONTOUR_SEGMENT_TYPE_CUBIC_BEZIER : {
214208 svg_parts_vec_push (
215209 canvas -> parts ,
216- arena_string_new_fmt (
210+ str_new_fmt (
217211 canvas -> arena ,
218212 "C %f %f, %f %f, %f %f " ,
219213 segment .value .cubic_bezier .control_a .x ,
@@ -234,23 +228,19 @@ void scalable_canvas_draw_path(
234228 if (brush .enable_fill ) {
235229 svg_parts_vec_push (
236230 canvas -> parts ,
237- arena_string_new_fmt (
238- canvas -> arena ,
239- "\" fill=\"#%08x\"" ,
240- brush .fill_rgba
241- )
231+ str_new_fmt (canvas -> arena , "\" fill=\"#%08x\"" , brush .fill_rgba )
242232 );
243233 } else {
244234 svg_parts_vec_push (
245235 canvas -> parts ,
246- arena_string_new_fmt (canvas -> arena , "\" fill=\"none\"" )
236+ str_new_fmt (canvas -> arena , "\" fill=\"none\"" )
247237 );
248238 }
249239
250240 if (brush .enable_stroke ) {
251241 svg_parts_vec_push (
252242 canvas -> parts ,
253- arena_string_new_fmt (
243+ str_new_fmt (
254244 canvas -> arena ,
255245 " stroke=\"#%08x\" stroke-width=\"%f\"" ,
256246 brush .stroke_rgba ,
@@ -275,11 +265,7 @@ void scalable_canvas_draw_path(
275265 }
276266 svg_parts_vec_push (
277267 canvas -> parts ,
278- arena_string_new_fmt (
279- canvas -> arena ,
280- " stroke-linecap=\"%s\"" ,
281- line_cap
282- )
268+ str_new_fmt (canvas -> arena , " stroke-linecap=\"%s\"" , line_cap )
283269 );
284270
285271 const char * line_join = NULL ;
@@ -299,17 +285,13 @@ void scalable_canvas_draw_path(
299285 }
300286 svg_parts_vec_push (
301287 canvas -> parts ,
302- arena_string_new_fmt (
303- canvas -> arena ,
304- " stroke-linejoin=\"%s\"" ,
305- line_join
306- )
288+ str_new_fmt (canvas -> arena , " stroke-linejoin=\"%s\"" , line_join )
307289 );
308290
309291 if (brush .line_join == CANVAS_LINEJOIN_MITER ) {
310292 svg_parts_vec_push (
311293 canvas -> parts ,
312- arena_string_new_fmt (
294+ str_new_fmt (
313295 canvas -> arena ,
314296 " stroke-miterlimit=\"%f\"" ,
315297 brush .miter_limit
@@ -318,10 +300,7 @@ void scalable_canvas_draw_path(
318300 }
319301 }
320302
321- svg_parts_vec_push (
322- canvas -> parts ,
323- arena_string_new_fmt (canvas -> arena , " />" )
324- );
303+ svg_parts_vec_push (canvas -> parts , str_new_fmt (canvas -> arena , " />" ));
325304}
326305
327306void scalable_canvas_draw_pixel (
@@ -333,7 +312,7 @@ void scalable_canvas_draw_pixel(
333312
334313 svg_parts_vec_push (
335314 canvas -> parts ,
336- arena_string_new_fmt (
315+ str_new_fmt (
337316 canvas -> arena ,
338317 "<rect x=\"%f\" y=\"%f\" width=\"%f\" height=\"%f\" fill=\"#%08x\" />" ,
339318 position .x ,
@@ -363,10 +342,10 @@ bool scalable_canvas_write_file(ScalableCanvas* canvas, const char* path) {
363342 }
364343
365344 for (size_t idx = 0 ; idx < svg_parts_vec_len (canvas -> parts ); ++ idx ) {
366- ArenaString * operation ;
345+ Str * operation ;
367346 RELEASE_ASSERT (svg_parts_vec_get (canvas -> parts , idx , & operation ));
368347
369- const char * opbuf = arena_string_buffer (operation );
348+ const char * opbuf = str_get_cstr (operation );
370349 size_t oplen = strlen (opbuf );
371350
372351 if (oplen > 0 ) {
0 commit comments