diff options
author | Adrian Johnson <ajohnson@redneon.com> | 2013-08-28 08:05:23 +0930 |
---|---|---|
committer | Adrian Johnson <ajohnson@redneon.com> | 2013-08-30 21:35:45 +0930 |
commit | e116ef32504b589001814f0f579309ecf7ec89d9 (patch) | |
tree | 7b6a6ec2897974c004a702ea573871849b633923 /cpp | |
parent | a87a11ee6bbd0f5707a3ac34ac2b9cc79f4e92d0 (diff) |
Make cpp/poppler-image.cc use goo/NetPBMWriter
Diffstat (limited to 'cpp')
-rw-r--r-- | cpp/CMakeLists.txt | 1 | ||||
-rw-r--r-- | cpp/Makefile.am | 2 | ||||
-rw-r--r-- | cpp/PNMWriter.cc | 119 | ||||
-rw-r--r-- | cpp/PNMWriter.h | 43 | ||||
-rw-r--r-- | cpp/poppler-image.cpp | 14 |
5 files changed, 6 insertions, 173 deletions
diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt index af61606a..e606988a 100644 --- a/cpp/CMakeLists.txt +++ b/cpp/CMakeLists.txt @@ -8,7 +8,6 @@ configure_file(poppler-version.h.in ${CMAKE_CURRENT_BINARY_DIR}/poppler-version. add_subdirectory(tests) set(poppler_cpp_SRCS - PNMWriter.cc poppler-document.cpp poppler-embedded-file.cpp poppler-font.cpp diff --git a/cpp/Makefile.am b/cpp/Makefile.am index f381e581..50856e2c 100644 --- a/cpp/Makefile.am +++ b/cpp/Makefile.am @@ -41,8 +41,6 @@ poppler_include_HEADERS = \ lib_LTLIBRARIES = libpoppler-cpp.la libpoppler_cpp_la_SOURCES = \ - PNMWriter.cc \ - PNMWriter.h \ poppler-document.cpp \ poppler-document-private.h \ poppler-embedded-file.cpp \ diff --git a/cpp/PNMWriter.cc b/cpp/PNMWriter.cc deleted file mode 100644 index a2b9a777..00000000 --- a/cpp/PNMWriter.cc +++ /dev/null @@ -1,119 +0,0 @@ -//======================================================================== -// -// PNMWriter.cc -// -// This file is licensed under the GPLv2 or later -// -// Copyright (C) 2011 Pino Toscano <pino@kde.org> -// -//======================================================================== - -#include "PNMWriter.h" - -#include <vector> - -using namespace poppler; - -PNMWriter::PNMWriter(OutFormat formatArg) - : format(formatArg) - , file(0) - , imgWidth(0) - , rowSize(0) -{ -} - -PNMWriter::~PNMWriter() -{ -} - -bool PNMWriter::init(FILE *f, int width, int height, int /*hDPI*/, int /*vDPI*/) -{ - file = f; - imgWidth = width; - - switch (format) - { - case PNMWriter::PBM: - fprintf(file, "P4\n%d %d\n", width, height); - rowSize = (width + 7) >> 3; - break; - case PNMWriter::PGM: - fprintf(file, "P5\n%d %d\n255\n", width, height); - rowSize = width; - break; - case PNMWriter::PPM: - fprintf(file, "P6\n%d %d\n255\n", width, height); - rowSize = width * 3; - break; - } - - return true; -} - -bool PNMWriter::writePointers(unsigned char **rowPointers, int rowCount) -{ - bool ret = true; - for (int i = 0; ret && (i < rowCount); ++i) { - ret = writeRow(&(rowPointers[i])); - } - - return ret; -} - -bool PNMWriter::writeRow(unsigned char **row) -{ - std::vector<unsigned char> newRow; - unsigned char *rowPtr = *row; - unsigned char *p = *row; - - switch (format) - { - case PNMWriter::PBM: - newRow.resize(rowSize, 0); - rowPtr = &newRow[0]; - for (int i = 0; i < imgWidth; ++i) { - unsigned char pixel = p[0]; - if (p[0] == p[1] && p[1] == p[2]) { - // gray, stored already - } else { - pixel = static_cast<unsigned char>((p[0] * 11 + p[1] * 16 + p[2] * 5) / 32); - } - if (pixel < 0x7F) { - *(rowPtr + (i >> 3)) |= (1 << (i & 7)); - } - p += 3; - } - break; - case PNMWriter::PGM: - newRow.resize(rowSize, 0); - rowPtr = &newRow[0]; - for (int i = 0; i < imgWidth; ++i) { - if (p[0] == p[1] && p[1] == p[2]) { - // gray, store directly - newRow[i] = p[0]; - } else { - // calculate the gray value - newRow[i] = static_cast<unsigned char>((p[0] * 11 + p[1] * 16 + p[2] * 5) / 32); - } - p += 3; - } - break; - case PNMWriter::PPM: - break; - } - - if (int(fwrite(rowPtr, 1, rowSize, file)) < rowSize) { - return false; - } - - return true; -} - -bool PNMWriter::close() -{ - file = 0; - imgWidth = 0; - rowSize = 0; - - return true; -} diff --git a/cpp/PNMWriter.h b/cpp/PNMWriter.h deleted file mode 100644 index 8d8da2d9..00000000 --- a/cpp/PNMWriter.h +++ /dev/null @@ -1,43 +0,0 @@ -//======================================================================== -// -// PNMWriter.h -// -// This file is licensed under the GPLv2 or later -// -// Copyright (C) 2011 Pino Toscano <pino@kde.org> -// -//======================================================================== - -#ifndef PNMWRITER_H -#define PNMWRITER_H - -#include "ImgWriter.h" - -namespace poppler -{ - -class PNMWriter : public ImgWriter -{ - public: - enum OutFormat { PBM, PGM, PPM }; - - PNMWriter(OutFormat formatArg); - ~PNMWriter(); - - bool init(FILE *f, int width, int height, int hDPI, int vDPI); - - bool writePointers(unsigned char **rowPointers, int rowCount); - bool writeRow(unsigned char **row); - - bool close(); - - private: - const OutFormat format; - FILE *file; - int imgWidth; - int rowSize; -}; - -} - -#endif diff --git a/cpp/poppler-image.cpp b/cpp/poppler-image.cpp index 8e9ac63d..18f9c797 100644 --- a/cpp/poppler-image.cpp +++ b/cpp/poppler-image.cpp @@ -31,7 +31,7 @@ #if defined(ENABLE_LIBTIFF) #include "TiffWriter.h" #endif -#include "PNMWriter.h" +#include "NetPBMWriter.h" #include <cstdlib> #include <cstring> @@ -39,8 +39,6 @@ #include <memory> #include <vector> -using poppler::PNMWriter; - namespace { struct FileCloser { @@ -69,17 +67,17 @@ int calc_bytes_per_row(int width, poppler::image::format_enum format) return 0; } -PNMWriter::OutFormat pnm_format(poppler::image::format_enum format) +NetPBMWriter::Format pnm_format(poppler::image::format_enum format) { switch (format) { case poppler::image::format_invalid: // unused, anyway case poppler::image::format_mono: - return PNMWriter::PBM; + return NetPBMWriter::MONOCHROME; case poppler::image::format_rgb24: case poppler::image::format_argb32: - return PNMWriter::PPM; + return NetPBMWriter::RGB; } - return PNMWriter::PPM; + return NetPBMWriter::RGB; } } @@ -366,7 +364,7 @@ bool image::save(const std::string &file_name, const std::string &out_format, in } #endif else if (fmt == "pnm") { - w.reset(new PNMWriter(pnm_format(d->format))); + w.reset(new NetPBMWriter(pnm_format(d->format))); } if (!w.get()) { return false; |