Hi, A simple code (to efficiency and avoid mistakes) are:
File: eps.c ----------- - replace int pat_save(FILE * fp, char *epsf, char *name) by int pat_store(FILE *fp, int code, char *epsf, double pwidth, double sc, int R, int G, int B) { char buf[1024]; FILE *epsfp; double llx, lly, urx, ury; if ((epsfp = fopen(epsf, "r")) == NULL) return (0); eps_bbox(epsf, &llx, &lly, &urx, &ury); fprintf(fp, "/PATTERN%d\n", code); fprintf(PS.fp, "<< /PatternType 1\n /PaintType 1\n /TilingType 1\n"); fprintf(PS.fp, " /BBox [%f %f %f %f]\n", llx*sc, lly*sc, urx*sc, ury*sc); fprintf(PS.fp, " /XStep %f\n /YStep %f\n", (urx-llx)*sc, (ury-lly)*sc); fprintf(PS.fp, " /PaintProc\n"); fprintf(PS.fp, " { begin\n"); fprintf(PS.fp, " %.4f %.4f scale\n", sc, sc); fprintf(PS.fp, " %.4f %.4f %.4f C\n", R/255., G/255., B/255.); fprintf(PS.fp, " %.8f W\n", pwidth); while (fgets(buf, 1024, epsfp) != NULL) { if (strncmp(buf, "%!PS-Adobe", 10) == 0 || strncmp(buf, "%%BoundingBox", 13) == 0) continue; fprintf(fp, " %s", buf); } fprintf(PS.fp, " end }\n"); fprintf(PS.fp, ">> store\n"); fclose(epsfp); return (1); } File: vareas.c -------------- replace code by if (vector.layer[vec].pat != NULL) { /* use pattern */ pat_store(PS.fp, vec, vector.layer[vec].pat, vector.layer[vec].pwidth, vector.layer[vec].scale, vector.layer[vec].fcolor.r, vector.layer[vec].fcolor.g, vector.layer[vec].fcolor.b); /* define pattern, TODO check if exist */ /* use pattern by number, now */ fprintf(PS.fp, "/Pattern setcolorspace "); fprintf(PS.fp, "PATTERN%d matrix makepattern setcolor\n", vec); File: vlegend.c --------------- replace code by if (vector.layer[i].pat != NULL) { /* use pattern by number, now */ fprintf(PS.fp, "/Pattern setcolorspace "); fprintf(PS.fp, "PATTERN%d matrix makepattern setcolor\n", i); } -- E. Jorge Tizado _______________________________________________ grass-dev mailing list grass-dev@lists.osgeo.org http://lists.osgeo.org/mailman/listinfo/grass-dev