/* * Copyright 2002-2007, Haiku. * Distributed under the terms of the MIT License. * * Authors: * Michael Pfeiffer */ #include #include #include "PicturePrinter.h" #include "PrintJobReader.h" void printArguments(const char* application) { printf("Usage: %s [--pictures] files\n", application); printf("Prints the contents of the specified spool files to stdout.\n" "Arguments:\n" " --pictures print contents of pictures\n"); } 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]); }