mirror of
https://github.com/michaelrsweet/pdfio.git
synced 2024-12-27 05:48:20 +01:00
Fix issues with grayscale PNG images.
Update PNG test page content.
This commit is contained in:
parent
bbd0b854b7
commit
c158587070
@ -1751,7 +1751,7 @@ copy_png(pdfio_dict_t *dict, // I - Dictionary
|
|||||||
pdfioDictSetNumber(dict, "Height", height);
|
pdfioDictSetNumber(dict, "Height", height);
|
||||||
pdfioDictSetNumber(dict, "BitsPerComponent", bit_depth);
|
pdfioDictSetNumber(dict, "BitsPerComponent", bit_depth);
|
||||||
if (color_type == _PDFIO_PNG_TYPE_GRAY)
|
if (color_type == _PDFIO_PNG_TYPE_GRAY)
|
||||||
pdfioDictSetArray(dict, "ColorSpace", pdfioArrayCreateCalibratedColorFromMatrix(dict->pdf, 1, pdfioSRGBGamma, NULL, NULL));
|
pdfioDictSetArray(dict, "ColorSpace", pdfioArrayCreateCalibratedColorFromMatrix(dict->pdf, 1, pdfioSRGBGamma, NULL, pdfioSRGBWhitePoint));
|
||||||
else if (color_type == _PDFIO_PNG_TYPE_RGB)
|
else if (color_type == _PDFIO_PNG_TYPE_RGB)
|
||||||
pdfioDictSetArray(dict, "ColorSpace", pdfioArrayCreateCalibratedColorFromMatrix(dict->pdf, 3, pdfioSRGBGamma, pdfioSRGBMatrix, pdfioSRGBWhitePoint));
|
pdfioDictSetArray(dict, "ColorSpace", pdfioArrayCreateCalibratedColorFromMatrix(dict->pdf, 3, pdfioSRGBGamma, pdfioSRGBMatrix, pdfioSRGBWhitePoint));
|
||||||
pdfioDictSetName(dict, "Filter", "FlateDecode");
|
pdfioDictSetName(dict, "Filter", "FlateDecode");
|
||||||
@ -1830,9 +1830,9 @@ copy_png(pdfio_dict_t *dict, // I - Dictionary
|
|||||||
temp = (unsigned)((buffer[0] << 24) | (buffer[1] << 16) | (buffer[2] << 8) | buffer[3]);
|
temp = (unsigned)((buffer[0] << 24) | (buffer[1] << 16) | (buffer[2] << 8) | buffer[3]);
|
||||||
if (temp != crc)
|
if (temp != crc)
|
||||||
{
|
{
|
||||||
pdfioStreamClose(st);
|
// pdfioStreamClose(st);
|
||||||
_pdfioFileError(dict->pdf, "Bad CRC.");
|
_pdfioFileError(dict->pdf, "Bad CRC (0x%08x != 0x%08x).", temp, crc);
|
||||||
return (NULL);
|
// return (NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
208
testpdfio.c
208
testpdfio.c
@ -32,6 +32,7 @@ static int write_color_test(pdfio_file_t *pdf, int number, pdfio_obj_t *font);
|
|||||||
static pdfio_obj_t *write_image_object(pdfio_file_t *pdf, _pdfio_predictor_t predictor);
|
static pdfio_obj_t *write_image_object(pdfio_file_t *pdf, _pdfio_predictor_t predictor);
|
||||||
static int write_images(pdfio_file_t *pdf, int number, pdfio_obj_t *font);
|
static int write_images(pdfio_file_t *pdf, int number, pdfio_obj_t *font);
|
||||||
static int write_page(pdfio_file_t *pdf, int number, pdfio_obj_t *font, pdfio_obj_t *image);
|
static int write_page(pdfio_file_t *pdf, int number, pdfio_obj_t *font, pdfio_obj_t *image);
|
||||||
|
static int write_png(pdfio_file_t *pdf, int number, pdfio_obj_t *font);
|
||||||
static int write_text(pdfio_file_t *pdf, int first_page, pdfio_obj_t *font, const char *filename);
|
static int write_text(pdfio_file_t *pdf, int first_page, pdfio_obj_t *font, const char *filename);
|
||||||
|
|
||||||
|
|
||||||
@ -266,17 +267,21 @@ do_unit_tests(void)
|
|||||||
if (write_page(outpdf, 4, helvetica, gray_jpg))
|
if (write_page(outpdf, 4, helvetica, gray_jpg))
|
||||||
return (1);
|
return (1);
|
||||||
|
|
||||||
|
// Write a page with PNG images...
|
||||||
|
if (write_png(outpdf, 5, helvetica))
|
||||||
|
return (1);
|
||||||
|
|
||||||
// Write a page that tests multiple color spaces...
|
// Write a page that tests multiple color spaces...
|
||||||
if (write_color_test(outpdf, 5, helvetica))
|
if (write_color_test(outpdf, 6, helvetica))
|
||||||
return (1);
|
return (1);
|
||||||
|
|
||||||
// Write a page with test images...
|
// Write a page with test images...
|
||||||
first_image = pdfioFileGetNumObjects(outpdf);
|
first_image = pdfioFileGetNumObjects(outpdf);
|
||||||
if (write_images(outpdf, 6, helvetica))
|
if (write_images(outpdf, 7, helvetica))
|
||||||
return (1);
|
return (1);
|
||||||
|
|
||||||
// Print this text file...
|
// Print this text file...
|
||||||
if (write_text(outpdf, 7, helvetica, "README.md"))
|
if (write_text(outpdf, 8, helvetica, "README.md"))
|
||||||
return (1);
|
return (1);
|
||||||
|
|
||||||
// Close the test PDF file...
|
// Close the test PDF file...
|
||||||
@ -1349,6 +1354,203 @@ write_page(pdfio_file_t *pdf, // I - PDF file
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// 'write_png()' - Write a page of PNG test images.
|
||||||
|
//
|
||||||
|
|
||||||
|
static int // O - 0 on success, 1 on failure
|
||||||
|
write_png(pdfio_file_t *pdf, // I - PDF file
|
||||||
|
int number, // I - Page number
|
||||||
|
pdfio_obj_t *font) // I - Page number font
|
||||||
|
{
|
||||||
|
pdfio_dict_t *dict; // Page dictionary
|
||||||
|
pdfio_stream_t *st; // Page contents stream
|
||||||
|
pdfio_obj_t *color, // pdfio-color.png
|
||||||
|
*gray, // pdfio-gray.png
|
||||||
|
*indexed; // pdfio-indexed.png
|
||||||
|
|
||||||
|
|
||||||
|
// Import the PNG test images
|
||||||
|
fputs("pdfioFileCreateImageObject(\"testfiles/pdfio-color.png\"): ", stdout);
|
||||||
|
if ((color = pdfioFileCreateImageObject(pdf, "testfiles/pdfio-color.png", false)) != NULL)
|
||||||
|
puts("PASS");
|
||||||
|
else
|
||||||
|
return (1);
|
||||||
|
|
||||||
|
fputs("pdfioFileCreateImageObject(\"testfiles/pdfio-gray.png\"): ", stdout);
|
||||||
|
if ((gray = pdfioFileCreateImageObject(pdf, "testfiles/pdfio-gray.png", false)) != NULL)
|
||||||
|
puts("PASS");
|
||||||
|
else
|
||||||
|
return (1);
|
||||||
|
|
||||||
|
fputs("pdfioFileCreateImageObject(\"testfiles/pdfio-indexed.png\"): ", stdout);
|
||||||
|
if ((indexed = pdfioFileCreateImageObject(pdf, "testfiles/pdfio-indexed.png", false)) != NULL)
|
||||||
|
puts("PASS");
|
||||||
|
else
|
||||||
|
return (1);
|
||||||
|
|
||||||
|
// Create the page dictionary, object, and stream...
|
||||||
|
fputs("pdfioDictCreate: ", stdout);
|
||||||
|
if ((dict = pdfioDictCreate(pdf)) != NULL)
|
||||||
|
puts("PASS");
|
||||||
|
else
|
||||||
|
return (1);
|
||||||
|
|
||||||
|
fputs("pdfioPageDictAddImage(color): ", stdout);
|
||||||
|
if (pdfioPageDictAddImage(dict, "IM1", color))
|
||||||
|
puts("PASS");
|
||||||
|
else
|
||||||
|
return (1);
|
||||||
|
|
||||||
|
fputs("pdfioPageDictAddImage(gray): ", stdout);
|
||||||
|
if (pdfioPageDictAddImage(dict, "IM2", gray))
|
||||||
|
puts("PASS");
|
||||||
|
else
|
||||||
|
return (1);
|
||||||
|
|
||||||
|
fputs("pdfioPageDictAddImage(indexed): ", stdout);
|
||||||
|
if (pdfioPageDictAddImage(dict, "IM3", indexed))
|
||||||
|
puts("PASS");
|
||||||
|
else
|
||||||
|
return (1);
|
||||||
|
|
||||||
|
fputs("pdfioPageDictAddFont(F1): ", stdout);
|
||||||
|
if (pdfioPageDictAddFont(dict, "F1", font))
|
||||||
|
puts("PASS");
|
||||||
|
else
|
||||||
|
return (1);
|
||||||
|
|
||||||
|
printf("pdfioFileCreatePage(%d): ", number);
|
||||||
|
|
||||||
|
if ((st = pdfioFileCreatePage(pdf, dict)) != NULL)
|
||||||
|
puts("PASS");
|
||||||
|
else
|
||||||
|
return (1);
|
||||||
|
|
||||||
|
// Show content...
|
||||||
|
fputs("pdfioContentSetFillColorDeviceGray(0.0): ", stdout);
|
||||||
|
if (pdfioContentSetFillColorDeviceGray(st, 0.0))
|
||||||
|
puts("PASS");
|
||||||
|
else
|
||||||
|
goto error;
|
||||||
|
|
||||||
|
fputs("pdfioContentTextBegin(): ", stdout);
|
||||||
|
if (pdfioContentTextBegin(st))
|
||||||
|
puts("PASS");
|
||||||
|
else
|
||||||
|
goto error;
|
||||||
|
|
||||||
|
fputs("pdfioContentSetTextFont(\"F1\", 12.0): ", stdout);
|
||||||
|
if (pdfioContentSetTextFont(st, "F1", 12.0))
|
||||||
|
puts("PASS");
|
||||||
|
else
|
||||||
|
goto error;
|
||||||
|
|
||||||
|
fputs("pdfioContentTextMoveTo(550.0, 36.0): ", stdout);
|
||||||
|
if (pdfioContentTextMoveTo(st, 550.0, 36.0))
|
||||||
|
puts("PASS");
|
||||||
|
else
|
||||||
|
goto error;
|
||||||
|
|
||||||
|
printf("pdfioContentTextShowf(\"%d\"): ", number);
|
||||||
|
if (pdfioContentTextShowf(st, "%d", number))
|
||||||
|
puts("PASS");
|
||||||
|
else
|
||||||
|
goto error;
|
||||||
|
|
||||||
|
fputs("pdfioContentTextEnd(): ", stdout);
|
||||||
|
if (pdfioContentTextEnd(st))
|
||||||
|
puts("PASS");
|
||||||
|
else
|
||||||
|
goto error;
|
||||||
|
|
||||||
|
fputs("pdfioContentTextBegin(): ", stdout);
|
||||||
|
if (pdfioContentTextBegin(st))
|
||||||
|
puts("PASS");
|
||||||
|
else
|
||||||
|
goto error;
|
||||||
|
|
||||||
|
fputs("pdfioContentSetTextFont(\"F1\", 18.0): ", stdout);
|
||||||
|
if (pdfioContentSetTextFont(st, "F1", 18.0))
|
||||||
|
puts("PASS");
|
||||||
|
else
|
||||||
|
goto error;
|
||||||
|
|
||||||
|
fputs("pdfioContentTextMoveTo(36.0, 342.0): ", stdout);
|
||||||
|
if (pdfioContentTextMoveTo(st, 36.0, 342.0))
|
||||||
|
puts("PASS");
|
||||||
|
else
|
||||||
|
goto error;
|
||||||
|
|
||||||
|
fputs("pdfioContentTextShow(\"PNG Color\"): ", stdout);
|
||||||
|
if (pdfioContentTextShow(st, "PNG Color"))
|
||||||
|
puts("PASS");
|
||||||
|
else
|
||||||
|
goto error;
|
||||||
|
|
||||||
|
fputs("pdfioContentTextMoveTo(288.0, 0.0): ", stdout);
|
||||||
|
if (pdfioContentTextMoveTo(st, 288.0, 0.0))
|
||||||
|
puts("PASS");
|
||||||
|
else
|
||||||
|
goto error;
|
||||||
|
|
||||||
|
fputs("pdfioContentTextShow(\"PNG Gray\"): ", stdout);
|
||||||
|
if (pdfioContentTextShow(st, "PNG Gray"))
|
||||||
|
puts("PASS");
|
||||||
|
else
|
||||||
|
goto error;
|
||||||
|
|
||||||
|
fputs("pdfioContentTextMoveTo(-288.0, 288.0): ", stdout);
|
||||||
|
if (pdfioContentTextMoveTo(st, -288.0, 288.0))
|
||||||
|
puts("PASS");
|
||||||
|
else
|
||||||
|
goto error;
|
||||||
|
|
||||||
|
fputs("pdfioContentTextShow(\"PNG Indexed\"): ", stdout);
|
||||||
|
if (pdfioContentTextShow(st, "PNG Indexed"))
|
||||||
|
puts("PASS");
|
||||||
|
else
|
||||||
|
goto error;
|
||||||
|
|
||||||
|
fputs("pdfioContentTextEnd(): ", stdout);
|
||||||
|
if (pdfioContentTextEnd(st))
|
||||||
|
puts("PASS");
|
||||||
|
else
|
||||||
|
goto error;
|
||||||
|
|
||||||
|
fputs("pdfioContentDrawImage(\"IM1\"): ", stdout);
|
||||||
|
if (pdfioContentDrawImage(st, "IM1", 36, 108, 216, 216))
|
||||||
|
puts("PASS");
|
||||||
|
else
|
||||||
|
goto error;
|
||||||
|
|
||||||
|
fputs("pdfioContentDrawImage(\"IM2\"): ", stdout);
|
||||||
|
if (pdfioContentDrawImage(st, "IM2", 324, 108, 216, 216))
|
||||||
|
puts("PASS");
|
||||||
|
else
|
||||||
|
goto error;
|
||||||
|
|
||||||
|
fputs("pdfioContentDrawImage(\"IM3\"): ", stdout);
|
||||||
|
if (pdfioContentDrawImage(st, "IM3", 36, 396, 216, 216))
|
||||||
|
puts("PASS");
|
||||||
|
else
|
||||||
|
goto error;
|
||||||
|
|
||||||
|
fputs("pdfioStreamClose: ", stdout);
|
||||||
|
if (pdfioStreamClose(st))
|
||||||
|
puts("PASS");
|
||||||
|
else
|
||||||
|
return (1);
|
||||||
|
|
||||||
|
return (0);
|
||||||
|
|
||||||
|
error:
|
||||||
|
|
||||||
|
pdfioStreamClose(st);
|
||||||
|
return (1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// 'write_text()' - Print a plain text file.
|
// 'write_text()' - Print a plain text file.
|
||||||
//
|
//
|
||||||
|
Loading…
Reference in New Issue
Block a user