| /* |
| * Raster test program routines for CUPS. |
| * |
| * Copyright © 2007-2019 by Apple Inc. |
| * Copyright © 1997-2007 by Easy Software Products. |
| * |
| * Licensed under Apache License v2.0. See the file "LICENSE" for more |
| * information. |
| */ |
| |
| /* |
| * Include necessary headers... |
| */ |
| |
| #include <cups/raster-private.h> |
| #include <math.h> |
| |
| |
| /* |
| * Local functions... |
| */ |
| |
| static int do_ras_file(const char *filename); |
| static int do_raster_tests(cups_mode_t mode); |
| static void print_changes(cups_page_header2_t *header, cups_page_header2_t *expected); |
| |
| |
| /* |
| * 'main()' - Test the raster functions. |
| */ |
| |
| int /* O - Exit status */ |
| main(int argc, /* I - Number of command-line args */ |
| char *argv[]) /* I - Command-line arguments */ |
| { |
| int errors = 0; /* Number of errors */ |
| |
| |
| if (argc == 1) |
| { |
| errors += do_raster_tests(CUPS_RASTER_WRITE); |
| errors += do_raster_tests(CUPS_RASTER_WRITE_COMPRESSED); |
| errors += do_raster_tests(CUPS_RASTER_WRITE_PWG); |
| errors += do_raster_tests(CUPS_RASTER_WRITE_APPLE); |
| } |
| else |
| { |
| int i; /* Looping var */ |
| |
| for (i = 1; i < argc; i ++) |
| errors += do_ras_file(argv[i]); |
| } |
| |
| return (errors); |
| } |
| |
| |
| /* |
| * 'do_ras_file()' - Test reading of a raster file. |
| */ |
| |
| static int /* O - Number of errors */ |
| do_ras_file(const char *filename) /* I - Filename */ |
| { |
| unsigned y; /* Looping vars */ |
| int fd; /* File descriptor */ |
| cups_raster_t *ras; /* Raster stream */ |
| cups_page_header2_t header; /* Page header */ |
| unsigned char *data; /* Raster data */ |
| int errors = 0; /* Number of errors */ |
| unsigned pages = 0; /* Number of pages */ |
| |
| |
| if ((fd = open(filename, O_RDONLY)) < 0) |
| { |
| printf("%s: %s\n", filename, strerror(errno)); |
| return (1); |
| } |
| |
| if ((ras = cupsRasterOpen(fd, CUPS_RASTER_READ)) == NULL) |
| { |
| printf("%s: cupsRasterOpen failed.\n", filename); |
| close(fd); |
| return (1); |
| } |
| |
| printf("%s:\n", filename); |
| |
| while (cupsRasterReadHeader2(ras, &header)) |
| { |
| pages ++; |
| data = malloc(header.cupsBytesPerLine); |
| |
| printf(" Page %u: %ux%ux%u@%ux%udpi", pages, |
| header.cupsWidth, header.cupsHeight, header.cupsBitsPerPixel, |
| header.HWResolution[0], header.HWResolution[1]); |
| fflush(stdout); |
| |
| for (y = 0; y < header.cupsHeight; y ++) |
| if (cupsRasterReadPixels(ras, data, header.cupsBytesPerLine) < |
| header.cupsBytesPerLine) |
| break; |
| |
| if (y < header.cupsHeight) |
| printf(" ERROR AT LINE %d\n", y); |
| else |
| putchar('\n'); |
| |
| free(data); |
| } |
| |
| printf("EOF at %ld\n", (long)lseek(fd, SEEK_CUR, 0)); |
| |
| cupsRasterClose(ras); |
| close(fd); |
| |
| return (errors); |
| } |
| |
| |
| /* |
| * 'do_raster_tests()' - Test reading and writing of raster data. |
| */ |
| |
| static int /* O - Number of errors */ |
| do_raster_tests(cups_mode_t mode) /* O - Write mode */ |
| { |
| unsigned page, x, y, count;/* Looping vars */ |
| FILE *fp; /* Raster file */ |
| cups_raster_t *r; /* Raster stream */ |
| cups_page_header2_t header, /* Page header */ |
| expected; /* Expected page header */ |
| unsigned char data[2048]; /* Raster data */ |
| int errors = 0; /* Number of errors */ |
| |
| |
| /* |
| * Test writing... |
| */ |
| |
| printf("cupsRasterOpen(%s): ", |
| mode == CUPS_RASTER_WRITE ? "CUPS_RASTER_WRITE" : |
| mode == CUPS_RASTER_WRITE_COMPRESSED ? "CUPS_RASTER_WRITE_COMPRESSED" : |
| mode == CUPS_RASTER_WRITE_PWG ? "CUPS_RASTER_WRITE_PWG" : |
| "CUPS_RASTER_WRITE_APPLE"); |
| fflush(stdout); |
| |
| if ((fp = fopen("test.raster", "wb")) == NULL) |
| { |
| printf("FAIL (%s)\n", strerror(errno)); |
| return (1); |
| } |
| |
| if ((r = cupsRasterOpen(fileno(fp), mode)) == NULL) |
| { |
| printf("FAIL (%s)\n", strerror(errno)); |
| fclose(fp); |
| return (1); |
| } |
| |
| puts("PASS"); |
| |
| for (page = 0; page < 4; page ++) |
| { |
| memset(&header, 0, sizeof(header)); |
| header.cupsWidth = 256; |
| header.cupsHeight = 256; |
| header.cupsBytesPerLine = 256; |
| header.HWResolution[0] = 64; |
| header.HWResolution[1] = 64; |
| header.PageSize[0] = 288; |
| header.PageSize[1] = 288; |
| header.cupsPageSize[0] = 288.0f; |
| header.cupsPageSize[1] = 288.0f; |
| |
| strlcpy(header.MediaType, "auto", sizeof(header.MediaType)); |
| |
| if (page & 1) |
| { |
| header.cupsBytesPerLine *= 4; |
| header.cupsColorSpace = CUPS_CSPACE_CMYK; |
| header.cupsColorOrder = CUPS_ORDER_CHUNKED; |
| header.cupsNumColors = 4; |
| } |
| else |
| { |
| header.cupsColorSpace = CUPS_CSPACE_W; |
| header.cupsColorOrder = CUPS_ORDER_CHUNKED; |
| header.cupsNumColors = 1; |
| } |
| |
| if (page & 2) |
| { |
| header.cupsBytesPerLine *= 2; |
| header.cupsBitsPerColor = 16; |
| header.cupsBitsPerPixel = (page & 1) ? 64 : 16; |
| } |
| else |
| { |
| header.cupsBitsPerColor = 8; |
| header.cupsBitsPerPixel = (page & 1) ? 32 : 8; |
| } |
| |
| printf("cupsRasterWriteHeader2(page %d): ", page + 1); |
| |
| if (cupsRasterWriteHeader2(r, &header)) |
| { |
| puts("PASS"); |
| } |
| else |
| { |
| puts("FAIL"); |
| errors ++; |
| } |
| |
| fputs("cupsRasterWritePixels: ", stdout); |
| fflush(stdout); |
| |
| memset(data, 0, header.cupsBytesPerLine); |
| for (y = 0; y < 64; y ++) |
| if (!cupsRasterWritePixels(r, data, header.cupsBytesPerLine)) |
| break; |
| |
| if (y < 64) |
| { |
| puts("FAIL"); |
| errors ++; |
| } |
| else |
| { |
| for (x = 0; x < header.cupsBytesPerLine; x ++) |
| data[x] = (unsigned char)x; |
| |
| for (y = 0; y < 64; y ++) |
| if (!cupsRasterWritePixels(r, data, header.cupsBytesPerLine)) |
| break; |
| |
| if (y < 64) |
| { |
| puts("FAIL"); |
| errors ++; |
| } |
| else |
| { |
| memset(data, 255, header.cupsBytesPerLine); |
| for (y = 0; y < 64; y ++) |
| if (!cupsRasterWritePixels(r, data, header.cupsBytesPerLine)) |
| break; |
| |
| if (y < 64) |
| { |
| puts("FAIL"); |
| errors ++; |
| } |
| else |
| { |
| for (x = 0; x < header.cupsBytesPerLine; x ++) |
| data[x] = (unsigned char)(x / 4); |
| |
| for (y = 0; y < 64; y ++) |
| if (!cupsRasterWritePixels(r, data, header.cupsBytesPerLine)) |
| break; |
| |
| if (y < 64) |
| { |
| puts("FAIL"); |
| errors ++; |
| } |
| else |
| puts("PASS"); |
| } |
| } |
| } |
| } |
| |
| cupsRasterClose(r); |
| fclose(fp); |
| |
| /* |
| * Test reading... |
| */ |
| |
| fputs("cupsRasterOpen(CUPS_RASTER_READ): ", stdout); |
| fflush(stdout); |
| |
| if ((fp = fopen("test.raster", "rb")) == NULL) |
| { |
| printf("FAIL (%s)\n", strerror(errno)); |
| return (1); |
| } |
| |
| if ((r = cupsRasterOpen(fileno(fp), CUPS_RASTER_READ)) == NULL) |
| { |
| printf("FAIL (%s)\n", strerror(errno)); |
| fclose(fp); |
| return (1); |
| } |
| |
| puts("PASS"); |
| |
| for (page = 0; page < 4; page ++) |
| { |
| memset(&expected, 0, sizeof(expected)); |
| expected.cupsWidth = 256; |
| expected.cupsHeight = 256; |
| expected.cupsBytesPerLine = 256; |
| expected.HWResolution[0] = 64; |
| expected.HWResolution[1] = 64; |
| expected.PageSize[0] = 288; |
| expected.PageSize[1] = 288; |
| |
| strlcpy(expected.MediaType, "auto", sizeof(expected.MediaType)); |
| |
| if (mode != CUPS_RASTER_WRITE_PWG) |
| { |
| expected.cupsPageSize[0] = 288.0f; |
| expected.cupsPageSize[1] = 288.0f; |
| } |
| |
| if (mode >= CUPS_RASTER_WRITE_PWG) |
| { |
| strlcpy(expected.MediaClass, "PwgRaster", sizeof(expected.MediaClass)); |
| expected.cupsInteger[7] = 0xffffff; |
| } |
| |
| if (page & 1) |
| { |
| expected.cupsBytesPerLine *= 4; |
| expected.cupsColorSpace = CUPS_CSPACE_CMYK; |
| expected.cupsColorOrder = CUPS_ORDER_CHUNKED; |
| expected.cupsNumColors = 4; |
| } |
| else |
| { |
| expected.cupsColorSpace = CUPS_CSPACE_W; |
| expected.cupsColorOrder = CUPS_ORDER_CHUNKED; |
| expected.cupsNumColors = 1; |
| } |
| |
| if (page & 2) |
| { |
| expected.cupsBytesPerLine *= 2; |
| expected.cupsBitsPerColor = 16; |
| expected.cupsBitsPerPixel = (page & 1) ? 64 : 16; |
| } |
| else |
| { |
| expected.cupsBitsPerColor = 8; |
| expected.cupsBitsPerPixel = (page & 1) ? 32 : 8; |
| } |
| |
| printf("cupsRasterReadHeader2(page %d): ", page + 1); |
| fflush(stdout); |
| |
| if (!cupsRasterReadHeader2(r, &header)) |
| { |
| puts("FAIL (read error)"); |
| errors ++; |
| break; |
| } |
| else if (memcmp(&header, &expected, sizeof(header))) |
| { |
| puts("FAIL (bad page header)"); |
| errors ++; |
| print_changes(&header, &expected); |
| } |
| else |
| puts("PASS"); |
| |
| fputs("cupsRasterReadPixels: ", stdout); |
| fflush(stdout); |
| |
| for (y = 0; y < 64; y ++) |
| { |
| if (!cupsRasterReadPixels(r, data, header.cupsBytesPerLine)) |
| { |
| puts("FAIL (read error)"); |
| errors ++; |
| break; |
| } |
| |
| if (data[0] != 0 || memcmp(data, data + 1, header.cupsBytesPerLine - 1)) |
| { |
| printf("FAIL (raster line %d corrupt)\n", y); |
| |
| for (x = 0, count = 0; x < header.cupsBytesPerLine && count < 10; x ++) |
| { |
| if (data[x]) |
| { |
| count ++; |
| |
| if (count == 10) |
| puts(" ..."); |
| else |
| printf(" %4u %02X (expected %02X)\n", x, data[x], 0); |
| } |
| } |
| |
| errors ++; |
| break; |
| } |
| } |
| |
| if (y == 64) |
| { |
| for (y = 0; y < 64; y ++) |
| { |
| if (!cupsRasterReadPixels(r, data, header.cupsBytesPerLine)) |
| { |
| puts("FAIL (read error)"); |
| errors ++; |
| break; |
| } |
| |
| for (x = 0; x < header.cupsBytesPerLine; x ++) |
| if (data[x] != (x & 255)) |
| break; |
| |
| if (x < header.cupsBytesPerLine) |
| { |
| printf("FAIL (raster line %d corrupt)\n", y + 64); |
| |
| for (x = 0, count = 0; x < header.cupsBytesPerLine && count < 10; x ++) |
| { |
| if (data[x] != (x & 255)) |
| { |
| count ++; |
| |
| if (count == 10) |
| puts(" ..."); |
| else |
| printf(" %4u %02X (expected %02X)\n", x, data[x], x & 255); |
| } |
| } |
| |
| errors ++; |
| break; |
| } |
| } |
| |
| if (y == 64) |
| { |
| for (y = 0; y < 64; y ++) |
| { |
| if (!cupsRasterReadPixels(r, data, header.cupsBytesPerLine)) |
| { |
| puts("FAIL (read error)"); |
| errors ++; |
| break; |
| } |
| |
| if (data[0] != 255 || memcmp(data, data + 1, header.cupsBytesPerLine - 1)) |
| { |
| printf("fail (raster line %d corrupt)\n", y + 128); |
| |
| for (x = 0, count = 0; x < header.cupsBytesPerLine && count < 10; x ++) |
| { |
| if (data[x] != 255) |
| { |
| count ++; |
| |
| if (count == 10) |
| puts(" ..."); |
| else |
| printf(" %4u %02X (expected %02X)\n", x, data[x], 255); |
| } |
| } |
| |
| errors ++; |
| break; |
| } |
| } |
| |
| if (y == 64) |
| { |
| for (y = 0; y < 64; y ++) |
| { |
| if (!cupsRasterReadPixels(r, data, header.cupsBytesPerLine)) |
| { |
| puts("FAIL (read error)"); |
| errors ++; |
| break; |
| } |
| |
| for (x = 0; x < header.cupsBytesPerLine; x ++) |
| if (data[x] != ((x / 4) & 255)) |
| break; |
| |
| if (x < header.cupsBytesPerLine) |
| { |
| printf("FAIL (raster line %d corrupt)\n", y + 192); |
| |
| for (x = 0, count = 0; x < header.cupsBytesPerLine && count < 10; x ++) |
| { |
| if (data[x] != ((x / 4) & 255)) |
| { |
| count ++; |
| |
| if (count == 10) |
| puts(" ..."); |
| else |
| printf(" %4u %02X (expected %02X)\n", x, data[x], (x / 4) & 255); |
| } |
| } |
| |
| errors ++; |
| break; |
| } |
| } |
| |
| if (y == 64) |
| puts("PASS"); |
| } |
| } |
| } |
| } |
| |
| cupsRasterClose(r); |
| fclose(fp); |
| |
| return (errors); |
| } |
| |
| |
| /* |
| * 'print_changes()' - Print differences in the page header. |
| */ |
| |
| static void |
| print_changes( |
| cups_page_header2_t *header, /* I - Actual page header */ |
| cups_page_header2_t *expected) /* I - Expected page header */ |
| { |
| int i; /* Looping var */ |
| |
| |
| if (strcmp(header->MediaClass, expected->MediaClass)) |
| printf(" MediaClass (%s), expected (%s)\n", header->MediaClass, |
| expected->MediaClass); |
| |
| if (strcmp(header->MediaColor, expected->MediaColor)) |
| printf(" MediaColor (%s), expected (%s)\n", header->MediaColor, |
| expected->MediaColor); |
| |
| if (strcmp(header->MediaType, expected->MediaType)) |
| printf(" MediaType (%s), expected (%s)\n", header->MediaType, |
| expected->MediaType); |
| |
| if (strcmp(header->OutputType, expected->OutputType)) |
| printf(" OutputType (%s), expected (%s)\n", header->OutputType, |
| expected->OutputType); |
| |
| if (header->AdvanceDistance != expected->AdvanceDistance) |
| printf(" AdvanceDistance %d, expected %d\n", header->AdvanceDistance, |
| expected->AdvanceDistance); |
| |
| if (header->AdvanceMedia != expected->AdvanceMedia) |
| printf(" AdvanceMedia %d, expected %d\n", header->AdvanceMedia, |
| expected->AdvanceMedia); |
| |
| if (header->Collate != expected->Collate) |
| printf(" Collate %d, expected %d\n", header->Collate, |
| expected->Collate); |
| |
| if (header->CutMedia != expected->CutMedia) |
| printf(" CutMedia %d, expected %d\n", header->CutMedia, |
| expected->CutMedia); |
| |
| if (header->Duplex != expected->Duplex) |
| printf(" Duplex %d, expected %d\n", header->Duplex, |
| expected->Duplex); |
| |
| if (header->HWResolution[0] != expected->HWResolution[0] || |
| header->HWResolution[1] != expected->HWResolution[1]) |
| printf(" HWResolution [%d %d], expected [%d %d]\n", |
| header->HWResolution[0], header->HWResolution[1], |
| expected->HWResolution[0], expected->HWResolution[1]); |
| |
| if (memcmp(header->ImagingBoundingBox, expected->ImagingBoundingBox, |
| sizeof(header->ImagingBoundingBox))) |
| printf(" ImagingBoundingBox [%d %d %d %d], expected [%d %d %d %d]\n", |
| header->ImagingBoundingBox[0], |
| header->ImagingBoundingBox[1], |
| header->ImagingBoundingBox[2], |
| header->ImagingBoundingBox[3], |
| expected->ImagingBoundingBox[0], |
| expected->ImagingBoundingBox[1], |
| expected->ImagingBoundingBox[2], |
| expected->ImagingBoundingBox[3]); |
| |
| if (header->InsertSheet != expected->InsertSheet) |
| printf(" InsertSheet %d, expected %d\n", header->InsertSheet, |
| expected->InsertSheet); |
| |
| if (header->Jog != expected->Jog) |
| printf(" Jog %d, expected %d\n", header->Jog, |
| expected->Jog); |
| |
| if (header->LeadingEdge != expected->LeadingEdge) |
| printf(" LeadingEdge %d, expected %d\n", header->LeadingEdge, |
| expected->LeadingEdge); |
| |
| if (header->Margins[0] != expected->Margins[0] || |
| header->Margins[1] != expected->Margins[1]) |
| printf(" Margins [%d %d], expected [%d %d]\n", |
| header->Margins[0], header->Margins[1], |
| expected->Margins[0], expected->Margins[1]); |
| |
| if (header->ManualFeed != expected->ManualFeed) |
| printf(" ManualFeed %d, expected %d\n", header->ManualFeed, |
| expected->ManualFeed); |
| |
| if (header->MediaPosition != expected->MediaPosition) |
| printf(" MediaPosition %d, expected %d\n", header->MediaPosition, |
| expected->MediaPosition); |
| |
| if (header->MediaWeight != expected->MediaWeight) |
| printf(" MediaWeight %d, expected %d\n", header->MediaWeight, |
| expected->MediaWeight); |
| |
| if (header->MirrorPrint != expected->MirrorPrint) |
| printf(" MirrorPrint %d, expected %d\n", header->MirrorPrint, |
| expected->MirrorPrint); |
| |
| if (header->NegativePrint != expected->NegativePrint) |
| printf(" NegativePrint %d, expected %d\n", header->NegativePrint, |
| expected->NegativePrint); |
| |
| if (header->NumCopies != expected->NumCopies) |
| printf(" NumCopies %d, expected %d\n", header->NumCopies, |
| expected->NumCopies); |
| |
| if (header->Orientation != expected->Orientation) |
| printf(" Orientation %d, expected %d\n", header->Orientation, |
| expected->Orientation); |
| |
| if (header->OutputFaceUp != expected->OutputFaceUp) |
| printf(" OutputFaceUp %d, expected %d\n", header->OutputFaceUp, |
| expected->OutputFaceUp); |
| |
| if (header->PageSize[0] != expected->PageSize[0] || |
| header->PageSize[1] != expected->PageSize[1]) |
| printf(" PageSize [%d %d], expected [%d %d]\n", |
| header->PageSize[0], header->PageSize[1], |
| expected->PageSize[0], expected->PageSize[1]); |
| |
| if (header->Separations != expected->Separations) |
| printf(" Separations %d, expected %d\n", header->Separations, |
| expected->Separations); |
| |
| if (header->TraySwitch != expected->TraySwitch) |
| printf(" TraySwitch %d, expected %d\n", header->TraySwitch, |
| expected->TraySwitch); |
| |
| if (header->Tumble != expected->Tumble) |
| printf(" Tumble %d, expected %d\n", header->Tumble, |
| expected->Tumble); |
| |
| if (header->cupsWidth != expected->cupsWidth) |
| printf(" cupsWidth %d, expected %d\n", header->cupsWidth, |
| expected->cupsWidth); |
| |
| if (header->cupsHeight != expected->cupsHeight) |
| printf(" cupsHeight %d, expected %d\n", header->cupsHeight, |
| expected->cupsHeight); |
| |
| if (header->cupsMediaType != expected->cupsMediaType) |
| printf(" cupsMediaType %d, expected %d\n", header->cupsMediaType, |
| expected->cupsMediaType); |
| |
| if (header->cupsBitsPerColor != expected->cupsBitsPerColor) |
| printf(" cupsBitsPerColor %d, expected %d\n", header->cupsBitsPerColor, |
| expected->cupsBitsPerColor); |
| |
| if (header->cupsBitsPerPixel != expected->cupsBitsPerPixel) |
| printf(" cupsBitsPerPixel %d, expected %d\n", header->cupsBitsPerPixel, |
| expected->cupsBitsPerPixel); |
| |
| if (header->cupsBytesPerLine != expected->cupsBytesPerLine) |
| printf(" cupsBytesPerLine %d, expected %d\n", header->cupsBytesPerLine, |
| expected->cupsBytesPerLine); |
| |
| if (header->cupsColorOrder != expected->cupsColorOrder) |
| printf(" cupsColorOrder %d, expected %d\n", header->cupsColorOrder, |
| expected->cupsColorOrder); |
| |
| if (header->cupsColorSpace != expected->cupsColorSpace) |
| printf(" cupsColorSpace %d, expected %d\n", header->cupsColorSpace, |
| expected->cupsColorSpace); |
| |
| if (header->cupsCompression != expected->cupsCompression) |
| printf(" cupsCompression %d, expected %d\n", header->cupsCompression, |
| expected->cupsCompression); |
| |
| if (header->cupsRowCount != expected->cupsRowCount) |
| printf(" cupsRowCount %d, expected %d\n", header->cupsRowCount, |
| expected->cupsRowCount); |
| |
| if (header->cupsRowFeed != expected->cupsRowFeed) |
| printf(" cupsRowFeed %d, expected %d\n", header->cupsRowFeed, |
| expected->cupsRowFeed); |
| |
| if (header->cupsRowStep != expected->cupsRowStep) |
| printf(" cupsRowStep %d, expected %d\n", header->cupsRowStep, |
| expected->cupsRowStep); |
| |
| if (header->cupsNumColors != expected->cupsNumColors) |
| printf(" cupsNumColors %d, expected %d\n", header->cupsNumColors, |
| expected->cupsNumColors); |
| |
| if (fabs(header->cupsBorderlessScalingFactor - expected->cupsBorderlessScalingFactor) > 0.001) |
| printf(" cupsBorderlessScalingFactor %g, expected %g\n", |
| header->cupsBorderlessScalingFactor, |
| expected->cupsBorderlessScalingFactor); |
| |
| if (fabs(header->cupsPageSize[0] - expected->cupsPageSize[0]) > 0.001 || |
| fabs(header->cupsPageSize[1] - expected->cupsPageSize[1]) > 0.001) |
| printf(" cupsPageSize [%g %g], expected [%g %g]\n", |
| header->cupsPageSize[0], header->cupsPageSize[1], |
| expected->cupsPageSize[0], expected->cupsPageSize[1]); |
| |
| if (fabs(header->cupsImagingBBox[0] - expected->cupsImagingBBox[0]) > 0.001 || |
| fabs(header->cupsImagingBBox[1] - expected->cupsImagingBBox[1]) > 0.001 || |
| fabs(header->cupsImagingBBox[2] - expected->cupsImagingBBox[2]) > 0.001 || |
| fabs(header->cupsImagingBBox[3] - expected->cupsImagingBBox[3]) > 0.001) |
| printf(" cupsImagingBBox [%g %g %g %g], expected [%g %g %g %g]\n", |
| header->cupsImagingBBox[0], header->cupsImagingBBox[1], |
| header->cupsImagingBBox[2], header->cupsImagingBBox[3], |
| expected->cupsImagingBBox[0], expected->cupsImagingBBox[1], |
| expected->cupsImagingBBox[2], expected->cupsImagingBBox[3]); |
| |
| for (i = 0; i < 16; i ++) |
| if (header->cupsInteger[i] != expected->cupsInteger[i]) |
| printf(" cupsInteger%d %d, expected %d\n", i, header->cupsInteger[i], |
| expected->cupsInteger[i]); |
| |
| for (i = 0; i < 16; i ++) |
| if (fabs(header->cupsReal[i] - expected->cupsReal[i]) > 0.001) |
| printf(" cupsReal%d %g, expected %g\n", i, header->cupsReal[i], |
| expected->cupsReal[i]); |
| |
| for (i = 0; i < 16; i ++) |
| if (strcmp(header->cupsString[i], expected->cupsString[i])) |
| printf(" cupsString%d (%s), expected (%s)\n", i, |
| header->cupsString[i], expected->cupsString[i]); |
| |
| if (strcmp(header->cupsMarkerType, expected->cupsMarkerType)) |
| printf(" cupsMarkerType (%s), expected (%s)\n", header->cupsMarkerType, |
| expected->cupsMarkerType); |
| |
| if (strcmp(header->cupsRenderingIntent, expected->cupsRenderingIntent)) |
| printf(" cupsRenderingIntent (%s), expected (%s)\n", |
| header->cupsRenderingIntent, |
| expected->cupsRenderingIntent); |
| |
| if (strcmp(header->cupsPageSizeName, expected->cupsPageSizeName)) |
| printf(" cupsPageSizeName (%s), expected (%s)\n", |
| header->cupsPageSizeName, |
| expected->cupsPageSizeName); |
| } |