summaryrefslogtreecommitdiff
path: root/Build/source/libs/poppler/poppler-src/goo/TiffWriter.cc
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/libs/poppler/poppler-src/goo/TiffWriter.cc')
-rw-r--r--Build/source/libs/poppler/poppler-src/goo/TiffWriter.cc242
1 files changed, 0 insertions, 242 deletions
diff --git a/Build/source/libs/poppler/poppler-src/goo/TiffWriter.cc b/Build/source/libs/poppler/poppler-src/goo/TiffWriter.cc
deleted file mode 100644
index fd2eaa31485..00000000000
--- a/Build/source/libs/poppler/poppler-src/goo/TiffWriter.cc
+++ /dev/null
@@ -1,242 +0,0 @@
-//========================================================================
-//
-// TiffWriter.cc
-//
-// This file is licensed under the GPLv2 or later
-//
-// Copyright (C) 2010, 2012 William Bader <williambader@hotmail.com>
-// Copyright (C) 2012 Albert Astals Cid <aacid@kde.org>
-// Copyright (C) 2012, 2017 Adrian Johnson <ajohnson@redneon.com>
-// Copyright (C) 2012 Pino Toscano <pino@kde.org>
-// Copyright (C) 2014 Steven Lee <roc.sky@gmail.com>
-//
-//========================================================================
-
-#include "TiffWriter.h"
-
-#ifdef ENABLE_LIBTIFF
-
-#include <string.h>
-
-#ifdef _WIN32
-#include <io.h>
-#endif
-
-extern "C" {
-#include <tiffio.h>
-}
-
-struct TiffWriterPrivate {
- TIFF *f; // LibTiff file context
- int numRows; // number of rows in the image
- int curRow; // number of rows written
- const char *compressionString; // compression type
- TiffWriter::Format format; // format of image data
-};
-
-TiffWriter::~TiffWriter()
-{
- delete priv;
-}
-
-TiffWriter::TiffWriter(Format formatA)
-{
- priv = new TiffWriterPrivate;
- priv->f = nullptr;
- priv->numRows = 0;
- priv->curRow = 0;
- priv->compressionString = nullptr;
- priv->format = formatA;
-}
-
-// Set the compression type
-
-void TiffWriter::setCompressionString(const char *compressionStringArg)
-{
- priv->compressionString = compressionStringArg;
-}
-
-// Write a TIFF file.
-
-bool TiffWriter::init(FILE *openedFile, int width, int height, int hDPI, int vDPI)
-{
- unsigned int compression;
- uint16 photometric = 0;
- uint32 rowsperstrip = (uint32) -1;
- int bitspersample;
- uint16 samplesperpixel = 0;
- const struct compression_name_tag {
- const char *compressionName; // name of the compression option from the command line
- unsigned int compressionCode; // internal libtiff code
- const char *compressionDescription; // descriptive name
- } compressionList[] = {
- { "none", COMPRESSION_NONE, "no compression" },
- { "ccittrle", COMPRESSION_CCITTRLE, "CCITT modified Huffman RLE" },
- { "ccittfax3", COMPRESSION_CCITTFAX3,"CCITT Group 3 fax encoding" },
- { "ccittt4", COMPRESSION_CCITT_T4, "CCITT T.4 (TIFF 6 name)" },
- { "ccittfax4", COMPRESSION_CCITTFAX4, "CCITT Group 4 fax encoding" },
- { "ccittt6", COMPRESSION_CCITT_T6, "CCITT T.6 (TIFF 6 name)" },
- { "lzw", COMPRESSION_LZW, "Lempel-Ziv & Welch" },
- { "ojpeg", COMPRESSION_OJPEG, "!6.0 JPEG" },
- { "jpeg", COMPRESSION_JPEG, "%JPEG DCT compression" },
- { "next", COMPRESSION_NEXT, "NeXT 2-bit RLE" },
- { "packbits", COMPRESSION_PACKBITS, "Macintosh RLE" },
- { "ccittrlew", COMPRESSION_CCITTRLEW, "CCITT modified Huffman RLE w/ word alignment" },
- { "deflate", COMPRESSION_DEFLATE, "Deflate compression" },
- { "adeflate", COMPRESSION_ADOBE_DEFLATE, "Deflate compression, as recognized by Adobe" },
- { "dcs", COMPRESSION_DCS, "Kodak DCS encoding" },
- { "jbig", COMPRESSION_JBIG, "ISO JBIG" },
- { "jp2000", COMPRESSION_JP2000, "Leadtools JPEG2000" },
- { nullptr, 0, nullptr }
- };
-
- // Initialize
-
- priv->f = nullptr;
- priv->curRow = 0;
-
- // Store the number of rows
-
- priv->numRows = height;
-
- // Set the compression
-
- compression = COMPRESSION_NONE;
-
- if (priv->compressionString == nullptr || strcmp(priv->compressionString, "") == 0) {
- compression = COMPRESSION_NONE;
- } else {
- int i;
- for (i = 0; compressionList[i].compressionName != nullptr; i++) {
- if (strcmp(priv->compressionString, compressionList[i].compressionName) == 0) {
- compression = compressionList[i].compressionCode;
- break;
- }
- }
- if (compressionList[i].compressionName == nullptr) {
- fprintf(stderr, "TiffWriter: Unknown compression type '%.10s', using 'none'.\n", priv->compressionString);
- fprintf(stderr, "Known compression types (the tiff library might not support every type)\n");
- for (i = 0; compressionList[i].compressionName != nullptr; i++) {
- fprintf(stderr, "%10s %s\n", compressionList[i].compressionName, compressionList[i].compressionDescription);
- }
- }
- }
-
- // Set bits per sample, samples per pixel, and photometric type from format
-
- bitspersample = (priv->format == MONOCHROME ? 1 : 8);
-
- switch (priv->format) {
- case MONOCHROME:
- case GRAY:
- samplesperpixel = 1;
- photometric = PHOTOMETRIC_MINISBLACK;
- break;
-
- case RGB:
- samplesperpixel = 3;
- photometric = PHOTOMETRIC_RGB;
- break;
-
- case RGBA_PREMULTIPLIED:
- samplesperpixel = 4;
- photometric = PHOTOMETRIC_RGB;
- break;
-
- case CMYK:
- samplesperpixel = 4;
- photometric = PHOTOMETRIC_SEPARATED;
- break;
-
- case RGB48:
- samplesperpixel = 3;
- bitspersample = 16;
- photometric = PHOTOMETRIC_RGB;
- break;
- }
-
- // Open the file
-
- if (openedFile == nullptr) {
- fprintf(stderr, "TiffWriter: No output file given.\n");
- return false;
- }
-
-#ifdef _WIN32
- //Convert C Library handle to Win32 Handle
- priv->f = TIFFFdOpen(_get_osfhandle(fileno(openedFile)), "-", "w");
-#else
- priv->f = TIFFFdOpen(fileno(openedFile), "-", "w");
-#endif
-
-
- if (!priv->f) {
- return false;
- }
-
- // Set TIFF tags
-
- TIFFSetField(priv->f, TIFFTAG_IMAGEWIDTH, width);
- TIFFSetField(priv->f, TIFFTAG_IMAGELENGTH, height);
- TIFFSetField(priv->f, TIFFTAG_ORIENTATION, ORIENTATION_TOPLEFT);
- TIFFSetField(priv->f, TIFFTAG_SAMPLESPERPIXEL, samplesperpixel);
- TIFFSetField(priv->f, TIFFTAG_BITSPERSAMPLE, bitspersample);
- TIFFSetField(priv->f, TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG);
- TIFFSetField(priv->f, TIFFTAG_PHOTOMETRIC, photometric);
- TIFFSetField(priv->f, TIFFTAG_COMPRESSION, (uint16) compression);
- TIFFSetField(priv->f, TIFFTAG_ROWSPERSTRIP, TIFFDefaultStripSize(priv->f, rowsperstrip));
- TIFFSetField(priv->f, TIFFTAG_XRESOLUTION, (double) hDPI);
- TIFFSetField(priv->f, TIFFTAG_YRESOLUTION, (double) vDPI);
- TIFFSetField(priv->f, TIFFTAG_RESOLUTIONUNIT, RESUNIT_INCH);
-
- if (priv->format == RGBA_PREMULTIPLIED) {
- uint16 extra = EXTRASAMPLE_ASSOCALPHA;
- TIFFSetField(priv->f, TIFFTAG_EXTRASAMPLES, 1, &extra);
- }
-
- if (priv->format == CMYK) {
- TIFFSetField(priv->f, TIFFTAG_INKSET, INKSET_CMYK);
- TIFFSetField(priv->f, TIFFTAG_NUMBEROFINKS, 4);
- }
-
- return true;
-}
-
-bool TiffWriter::writePointers(unsigned char **rowPointers, int rowCount)
-{
- // Write all rows to the file
-
- for (int row = 0; row < rowCount; row++) {
- if (TIFFWriteScanline(priv->f, rowPointers[row], row, 0) < 0) {
- fprintf(stderr, "TiffWriter: Error writing tiff row %d\n", row);
- return false;
- }
- }
-
- return true;
-}
-
-bool TiffWriter::writeRow(unsigned char **rowData)
-{
- // Add a single row
-
- if (TIFFWriteScanline(priv->f, *rowData, priv->curRow, 0) < 0) {
- fprintf(stderr, "TiffWriter: Error writing tiff row %d\n", priv->curRow);
- return false;
- }
-
- priv->curRow++;
-
- return true;
-}
-
-bool TiffWriter::close()
-{
- // Close the file
-
- TIFFClose(priv->f);
-
- return true;
-}
-
-#endif