int main(int argc, char *argv[]) { printArguments(argc, argv); return 0; }
int main(int argc, char* argv[]) { BApplication app("application/x-vnd.Haiku.dump-print-job"); bool printPicture = false; bool hasFiles = false; for (int i = 1; i < argc; i ++) { const char* arg = argv[i]; if (strcmp(arg, "--pictures") == 0) { printPicture = true; continue; } hasFiles = true; BFile jobFile(arg, B_READ_WRITE); if (jobFile.InitCheck() != B_OK) { fprintf(stderr, "Error opening file %s!\n", arg); continue; } PrintJobReader reader(&jobFile); if (reader.InitCheck() != B_OK) { fprintf(stderr, "Error reading spool file %s!", arg); continue; } printf("Spool file: %s\n", arg); printf("Job settings message:\n"); reader.JobSettings()->PrintToStream(); int32 pages = reader.NumberOfPages(); printf("Number of pages: %d\n", (int)pages); for (int page = 0; page < pages; page ++) { printf("Page: %d\n", page+1); PrintJobPage pjp; if (reader.GetPage(page, pjp) != B_OK) { fprintf(stderr, "Error reading page!\n"); break; } BPicture picture; BPoint pos; BRect rect; printf("Number of pictures: %ld\n", pjp.NumberOfPictures()); while (pjp.NextPicture(picture, pos, rect) == B_OK) { printf("Picture position = (%f, %f) bounds = [l: %f t: %f r: %f b: %f]\n", pos.x, pos.y, rect.left, rect.top, rect.right, rect.bottom); if (printPicture) { printf("Picture:\n"); PicturePrinter printer; printer.Iterate(&picture); } } } } if (!hasFiles) printArguments(argv[0]); }