From ae90d2c485318beb8b4b938d09ffaf5c6f0a5e21 Mon Sep 17 00:00:00 2001 From: Jay Berkenbilt Date: Fri, 18 Aug 2017 19:52:53 -0400 Subject: Implement Pl_DCT pipeline Additional testing is added in later commits to be supported by additional changes in the library. --- include/qpdf/Pl_DCT.hh | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 include/qpdf/Pl_DCT.hh (limited to 'include') diff --git a/include/qpdf/Pl_DCT.hh b/include/qpdf/Pl_DCT.hh new file mode 100644 index 00000000..b7415394 --- /dev/null +++ b/include/qpdf/Pl_DCT.hh @@ -0,0 +1,70 @@ +// Copyright (c) 2005-2015 Jay Berkenbilt +// +// This file is part of qpdf. This software may be distributed under +// the terms of version 2 of the Artistic License which may be found +// in the source distribution. It is provided "as is" without express +// or implied warranty. + +#ifndef __PL_DCT_HH__ +#define __PL_DCT_HH__ + +#include +#include +#include + +class Pl_DCT: public Pipeline +{ + public: + // Constructor for decompressing image data + QPDF_DLL + Pl_DCT(char const* identifier, Pipeline* next); + + class CompressConfig + { + public: + CompressConfig() + { + } + virtual ~CompressConfig() + { + } + virtual void apply(jpeg_compress_struct*) = 0; + }; + + // Constructor for compressing image data + QPDF_DLL + Pl_DCT(char const* identifier, Pipeline* next, + JDIMENSION image_width, + JDIMENSION image_height, + int components, + J_COLOR_SPACE color_space, + CompressConfig* config_callback = 0); + + QPDF_DLL + virtual ~Pl_DCT(); + + QPDF_DLL + virtual void write(unsigned char* data, size_t len); + QPDF_DLL + virtual void finish(); + + private: + void compress(void* cinfo, PointerHolder); + void decompress(void* cinfo, PointerHolder); + + enum action_e { a_compress, a_decompress }; + + action_e action; + Pl_Buffer buf; + + // Used for compression + JDIMENSION image_width; + JDIMENSION image_height; + int components; + J_COLOR_SPACE color_space; + + CompressConfig* config_callback; + +}; + +#endif // __PL_DCT_HH__ -- cgit v1.2.3-54-g00ecf