if(!verbose)
return;
va_start(arglist, format);
- vsprintf(buf, format, arglist);
+ vsnprintf(buf, sizeof(buf)-1, format, arglist);
va_end(arglist);
l = strlen(buf);
while(l && buf[l-1]=='\n') {
this->config_remapunicode=0;
this->config_transparent=0;
this->config_extrafontdata = 0;
- this->config_optimize_polygons = 0;
+ this->config_disable_polygon_conversion = 0;
this->config_multiply = 1;
this->page2page = 0;
this->num_pages = 0;
this->config_multiply = atoi(value);
if(this->config_multiply<1)
this->config_multiply=1;
- } else if(!strcmp(key,"optimize_polygons")) {
- this->config_optimize_polygons = atoi(value);
+ } else if(!strcmp(key,"disable_polygon_conversion")) {
+ this->config_disable_polygon_conversion = atoi(value);
}
}
}
}
+void gfxPath_dump(GfxPath*path)
+{
+ int num = path->getNumSubpaths();
+ int t;
+ int cpos=0;
+ for(t = 0; t < num; t++) {
+ GfxSubpath *subpath = path->getSubpath(t);
+ int subnum = subpath->getNumPoints();
+ int s;
+ for(s=0;s<subnum;s++) {
+ double x=subpath->getX(s);
+ double y=subpath->getY(s);
+ if(s==0 && !subpath->getCurve(s)) {
+ printf("M %f %f\n", x, y);
+ } else if(s==0 && subpath->getCurve(s)) {
+ printf("E %f %f\n", x, y);
+ } else if(subpath->getCurve(s)) {
+ printf("C %f %f\n", x, y);
+ } else {
+ printf("T %f %f\n", x, y);
+ }
+ }
+ }
+}
+
gfxline_t* GFXOutputDev::gfxPath_to_gfxline(GfxState*state, GfxPath*path, int closed, int user_movex, int user_movey)
{
int num = path->getNumSubpaths();
}
if(flags&STROKE_FILL) {
- gfxpoly_t* poly = gfxpoly_strokeToPoly(line, width, capType, joinType, miterLimit);
- gfxline_t*gfxline = gfxpoly_to_gfxline(poly);
+ gfxpoly_t* poly = gfxpoly_from_stroke(line, width, capType, joinType, miterLimit, DEFAULT_GRID);
+ gfxline_t*gfxline = gfxline_from_gfxpoly(poly);
if(getLogLevel() >= LOGLEVEL_TRACE) {
dump_outline(gfxline);
}
device->fill(device, gfxline, &col);
}
gfxline_free(gfxline);
- gfxpoly_free(poly);
+ gfxpoly_destroy(poly);
} else {
if(flags&STROKE_CLIP)
msg("<error> Stroke&clip not supported at the same time");
GfxPath * path = state->getPath();
msg("<trace> clip");
gfxline_t*line = gfxPath_to_gfxline(state, path, 1, user_movex + clipmovex, user_movey + clipmovey);
- if(config_optimize_polygons) {
- gfxline_t*line2 = gfxline_circularToEvenOdd(line);
+ if(!config_disable_polygon_conversion) {
+ gfxline_t*line2 = gfxpoly_circular_to_evenodd(line, DEFAULT_GRID);
gfxline_free(line);
line = line2;
}
GfxPath * path = state->getPath();
gfxline_t*line= gfxPath_to_gfxline(state, path, 1, user_movex + clipmovex, user_movey + clipmovey);
- if(config_optimize_polygons) {
- gfxline_t*line2 = gfxline_circularToEvenOdd(line);
+ if(!config_disable_polygon_conversion) {
+ gfxline_t*line2 = gfxpoly_circular_to_evenodd(line, DEFAULT_GRID);
gfxline_free(line);
line = line2;
}
memset(f, 0, sizeof(fontfile_t));
f->filename = filename;
int len = strlen(filename);
- char*r1 = strrchr(filename, '/');
- char*r2 = strrchr(filename, '\\');
+ char*r1 = strrchr((char*)filename, '/');
+ char*r2 = strrchr((char*)filename, '\\');
if(r2>r1)
r1 = r2;
if(r1) {