Exemplo n.º 1
0
static int ft_cubic_to(const FT_Vector* _c1, const FT_Vector* _c2, const FT_Vector* _to, void* user)
{
    gfxdrawinfo_t* info = (gfxdrawinfo_t*)user;
    gfxdrawer_t* draw = info->draw;
    double tox = _to->x*FT_SCALE/(float)FT_SUBPIXELS;
    double toy = -_to->y*FT_SCALE/(float)FT_SUBPIXELS;
    double c1x = _c1->x*FT_SCALE/(float)FT_SUBPIXELS;
    double c1y = -_c1->y*FT_SCALE/(float)FT_SUBPIXELS;
    double c2x = _c2->x*FT_SCALE/(float)FT_SUBPIXELS;
    double c2y = -_c2->y*FT_SCALE/(float)FT_SUBPIXELS;
    gfxdraw_cubicTo(draw, c1x, c1y, c2x, c2y, tox, toy, info->quality);
    return 0;
}
Exemplo n.º 2
0
gfxline_t*gfxline_fromstring(const char*string)
{
    gfxdrawer_t d;
    gfxdrawer_target_gfxline(&d);

    const char*p = string;
    while(*p) {
	char*token = getToken(&p);
	if(!token)
	    break;
	if (!*token) {
	    free(token);
	    break;
	}
	if(!strcmp(token, "M")) {
	    double x = getFloat(&p);
	    double y = getFloat(&p);
	    d.moveTo(&d, x, y);
	} else if(!strncmp(token, "L", 1)) {
	    double x = getFloat(&p);
	    double y = getFloat(&p);
	    d.lineTo(&d, x, y);
	} else if(!strncmp(token, "C", 1)) {
	    double x1 = getFloat(&p);
	    double y1 = getFloat(&p);
	    double x2 = getFloat(&p);
	    double y2 = getFloat(&p);
	    double x3 = getFloat(&p);
	    double y3 = getFloat(&p);
	    gfxdraw_cubicTo(&d, x1,y1, x2,y2, x3,y3, 0.9);
	} else if(!strncmp(token, "z", 1)) {
	    //ignore
	} else    
	    fprintf(stderr, "gfxdraw: Warning: unknown primitive '%s'\n", token);
	free(token);
    }
    gfxline_t*line = d.result(&d);
    return line;
}