int imageList::createPage(int pageno) { char *s; if (currentPageNo == pageno) return 0; if (currentPageNo >= 1) { /* * We need to unlink the files which change each time a new page is * processed. The final unlink is done by xtmpfile when pre-grohtml * exits. */ unlink(imagePageName); unlink(psPageName); } if (show_progress) { fprintf(stderr, "[%d] ", pageno); fflush(stderr); } #if defined(DEBUGGING) if (debug) fprintf(stderr, "creating page %d\n", pageno); #endif s = make_message("psselect -q -p%d %s %s\n", pageno, psFileName, psPageName); if (s == NULL) sys_fatal("make_message"); html_system(s, 1); s = make_message("echo showpage | " "%s%s -q -dBATCH -dSAFER " "-dDEVICEHEIGHTPOINTS=792 " "-dDEVICEWIDTHPOINTS=%d -dFIXEDMEDIA=true " "-sDEVICE=%s -r%d %s " "-sOutputFile=%s %s -\n", image_gen, EXE_EXT, (getMaxX(pageno) * image_res) / postscriptRes, image_device, image_res, antiAlias, imagePageName, psPageName); if (s == NULL) sys_fatal("make_message"); html_system(s, 1); free(s); currentPageNo = pageno; return 0; }
void imageList::createImage(imageItem *i) { if (i->X1 != -1) { char *s; int x1 = max(min(i->X1, i->X2) * image_res / postscriptRes - IMAGE_BOARDER_PIXELS, 0); int y1 = max(image_res * vertical_offset / 72 + min(i->Y1, i->Y2) * image_res / postscriptRes - IMAGE_BOARDER_PIXELS, 0); int x2 = max(i->X1, i->X2) * image_res / postscriptRes + IMAGE_BOARDER_PIXELS; int y2 = image_res * vertical_offset / 72 + max(i->Y1, i->Y2) * image_res / postscriptRes + 1 + IMAGE_BOARDER_PIXELS; if (createPage(i->pageNo) == 0) { s = make_message("pnmcut%s %d %d %d %d < %s " "| pnmcrop -quiet | pnmtopng%s %s > %s\n", EXE_EXT, x1, y1, x2 - x1 + 1, y2 - y1 + 1, imagePageName, EXE_EXT, TRANSPARENT, i->imageName); if (s == NULL) sys_fatal("make_message"); #if defined(DEBUGGING) if (debug) { fprintf(stderr, s); fflush(stderr); } #endif html_system(s, 0); free(s); } else { fprintf(stderr, "failed to generate image of page %d\n", i->pageNo); fflush(stderr); } #if defined(DEBUGGING) } else { if (debug) { fprintf(stderr, "ignoring image as x1 coord is -1\n"); fflush(stderr); } #endif } }