return 0;
}
-static void free_stroke (stroke_t* sp)
-{
- if (sp) {
- free (sp->vertices);
- free (sp);
- }
+static void free_stroke(stroke_t sp) {
+ free(sp.vertices);
}
typedef double (*radfunc_t)(double,double,double);
color = pencolor;
if (tapered) {
- stroke_t* stp;
if (*color == '\0') color = DEFAULT_COLOR;
if (*fillcolor == '\0') fillcolor = DEFAULT_COLOR;
gvrender_set_pencolor(job, "transparent");
gvrender_set_fillcolor(job, color);
bz = ED_spl(e)->list[0];
- stp = taper (&bz, taperfun (e), penwidth, 0, 0);
- gvrender_polygon(job, stp->vertices, stp->nvertices, TRUE);
- free_stroke (stp);
+ stroke_t stp = taper(&bz, taperfun (e), penwidth, 0, 0);
+ gvrender_polygon(job, stp.vertices, stp.nvertices, TRUE);
+ free_stroke(stp);
gvrender_set_pencolor(job, color);
if (fillcolor != color)
gvrender_set_fillcolor(job, fillcolor);
RENDER_API void shape_clip(node_t * n, pointf curve[4]);
RENDER_API void make_simple_label (GVC_t * gvc, textlabel_t* rv);
RENDER_API int stripedBox (GVJ_t * job, pointf* AF, char* clrs, int rotate);
- RENDER_API stroke_t* taper (bezier*, double (*radfunc_t)(double,double,double), double initwid, int linejoin, int linecap);
+ RENDER_API stroke_t taper (bezier*, double (*radfunc_t)(double,double,double), double initwid, int linejoin, int linecap);
RENDER_API pointf textspan_size(GVC_t * gvc, textspan_t * span);
RENDER_API Dt_t * textfont_dict_open(GVC_t *gvc);
RENDER_API void textfont_dict_close(GVC_t *gvc);
* The linejoin and linecap parameters have roughly the same meaning as in postscript.
* - linejoin = 0 or 1
* - linecap = 0 or 1 or 2
- *
- * Calling function needs to free the allocated stroke_t.
*/
-stroke_t* taper (bezier* bez, radfunc_t radfunc, double initwid, int linejoin, int linecap)
+stroke_t taper (bezier* bez, radfunc_t radfunc, double initwid, int linejoin, int linecap)
{
int i, l, n;
int pathcount, bevel;
double lx, ly, ldir;
double lineout=0, linerad=0, linelen=0;
double theta, phi;
- stroke_t* p;
pathcount = arr->cnt;
pathpoints = arr->pts;
}
/* draw line */
- p = NEW(stroke_t);
+ stroke_t p = {0};
/* side 1 */
for (i = 0; i < pathcount; i++) {
cur_point = pathpoints[i];
bevel = cur_point.bevel;
direction_2 = cur_point.dir2;
if (i == 0) {
- moveto (p, x+cos(direction)*lineout, y+sin(direction)*lineout);
+ moveto(&p, x+cos(direction)*lineout, y+sin(direction)*lineout);
} else {
- lineto (p, x+cos(direction)*lineout, y+sin(direction)*lineout);
+ lineto(&p, x+cos(direction)*lineout, y+sin(direction)*lineout);
}
if (bevel) {
- drawbevel (x, y, lineout, TRUE, direction, direction_2, linejoin, p);
+ drawbevel(x, y, lineout, TRUE, direction, direction_2, linejoin, &p);
}
}
/* end circle as needed */
if (linecap == 1) {
- arcn (p, x,y,lineout,direction,direction+D2R(180));
+ arcn(&p, x,y,lineout,direction,direction+D2R(180));
} else {
direction += D2R(180);
- lineto (p, x+cos(direction)*lineout, y+sin(direction)*lineout);
+ lineto(&p, x+cos(direction)*lineout, y+sin(direction)*lineout);
}
/* side 2 */
for (i = pathcount-2; i >= 0; i--) {
lineout = cur_point.lout;
bevel = cur_point.bevel;
direction_2 = cur_point.dir2 + D2R(180);
- lineto (p, x+cos(direction_2)*lineout, y+sin(direction_2)*lineout);
+ lineto(&p, x+cos(direction_2)*lineout, y+sin(direction_2)*lineout);
if (bevel) {
- drawbevel (x, y, lineout, FALSE, direction, direction_2, linejoin, p);
+ drawbevel(x, y, lineout, FALSE, direction, direction_2, linejoin, &p);
}
}
/* start circle if needed */
if (linecap == 1) {
- arcn (p, x,y,lineout,direction,direction+D2R(180));
+ arcn(&p, x,y,lineout,direction,direction+D2R(180));
}
- /* closepath (p); */
+ /* closepath(&p); */
freeArr (arr);
return p;
}