diff options
-rw-r--r-- | BUILD.gn | 1 | ||||
-rw-r--r-- | core/include/fxcodec/fx_codec_flate.h | 26 | ||||
-rw-r--r-- | core/src/fpdfapi/fpdf_parser/fpdf_parser_filters.cpp | 32 | ||||
-rw-r--r-- | core/src/fxcodec/codec/fx_codec_flate.cpp | 39 | ||||
-rw-r--r-- | pdfium.gyp | 1 |
5 files changed, 64 insertions, 35 deletions
@@ -323,6 +323,7 @@ static_library("fxcodec") { sources = [ "core/include/fxcodec/fx_codec.h", "core/include/fxcodec/fx_codec_def.h", + "core/include/fxcodec/fx_codec_flate.h", "core/include/fxcodec/fx_codec_provider.h", "core/src/fxcodec/codec/codec_int.h", "core/src/fxcodec/codec/fx_codec.cpp", diff --git a/core/include/fxcodec/fx_codec_flate.h b/core/include/fxcodec/fx_codec_flate.h new file mode 100644 index 0000000000..8495a37496 --- /dev/null +++ b/core/include/fxcodec/fx_codec_flate.h @@ -0,0 +1,26 @@ +// Copyright 2015 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "../../../third_party/zlib_v128/zlib.h" + +#ifdef __cplusplus +extern "C" { +#endif + +// Note: Some of these return Z_* status codes from zlib.h. +void* FPDFAPI_FlateInit(void* (*alloc_func)(void*, unsigned int, unsigned int), + void (*free_func)(void*, void*)); +void FPDFAPI_FlateInput(void* context, const unsigned char* src_buf, + unsigned int src_size); +int FPDFAPI_FlateOutput(void* context, unsigned char* dest_buf, + unsigned int dest_size); +int FPDFAPI_FlateGetAvailIn(void* context); +int FPDFAPI_FlateGetAvailOut(void* context); +void FPDFAPI_FlateEnd(void* context); + +#ifdef __cplusplus +} // extern "C" +#endif diff --git a/core/src/fpdfapi/fpdf_parser/fpdf_parser_filters.cpp b/core/src/fpdfapi/fpdf_parser/fpdf_parser_filters.cpp index efe085c2ee..fed4546fab 100644 --- a/core/src/fpdfapi/fpdf_parser/fpdf_parser_filters.cpp +++ b/core/src/fpdfapi/fpdf_parser/fpdf_parser_filters.cpp @@ -4,12 +4,25 @@ // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com -#include "../../../../third_party/zlib_v128/zlib.h" #include "../../../include/fpdfapi/fpdf_parser.h" #include "../../../include/fxcodec/fx_codec.h" +#include "../../../include/fxcodec/fx_codec_flate.h" #include "../../../include/fpdfapi/fpdf_module.h" #include "filters_int.h" +extern "C" { + +static void* my_alloc_func(void* opaque, unsigned int items, unsigned int size) +{ + return FX_Alloc2D(uint8_t, items, size); +} +static void my_free_func(void* opaque, void* address) +{ + FX_Free(address); +} + +} // extern "C" + CFX_DataFilter::CFX_DataFilter() { m_bEOF = FALSE; @@ -288,23 +301,6 @@ void CPDF_DecryptFilter::v_FilterFinish(CFX_BinaryBuf& dest_buf) m_pCryptoHandler->DecryptFinish(m_pContext, dest_buf); m_pContext = NULL; } -extern "C" { - static void* my_alloc_func (void* opaque, unsigned int items, unsigned int size) - { - return FX_Alloc2D(uint8_t, items, size); - } - static void my_free_func (void* opaque, void* address) - { - FX_Free(address); - } - void* FPDFAPI_FlateInit(void* (*alloc_func)(void*, unsigned int, unsigned int), - void (*free_func)(void*, void*)); - void FPDFAPI_FlateInput(void* context, const unsigned char* src_buf, unsigned int src_size); - int FPDFAPI_FlateOutput(void* context, unsigned char* dest_buf, unsigned int dest_size); - int FPDFAPI_FlateGetAvailIn(void* context); - int FPDFAPI_FlateGetAvailOut(void* context); - void FPDFAPI_FlateEnd(void* context); -} CPDF_FlateFilter::CPDF_FlateFilter() { m_pContext = NULL; diff --git a/core/src/fxcodec/codec/fx_codec_flate.cpp b/core/src/fxcodec/codec/fx_codec_flate.cpp index 99643e4470..6223b9c670 100644 --- a/core/src/fxcodec/codec/fx_codec_flate.cpp +++ b/core/src/fxcodec/codec/fx_codec_flate.cpp @@ -7,18 +7,34 @@ #include "../../../../third_party/base/nonstd_unique_ptr.h" #include "../../../../third_party/zlib_v128/zlib.h" #include "../../../include/fxcodec/fx_codec.h" +#include "../../../include/fxcodec/fx_codec_flate.h" #include "codec_int.h" extern "C" { - static void* my_alloc_func (void* opaque, unsigned int items, unsigned int size) + static void* my_alloc_func(void* opaque, unsigned int items, unsigned int size) { return FX_Alloc2D(uint8_t, items, size); } - static void my_free_func (void* opaque, void* address) + static void my_free_func(void* opaque, void* address) { FX_Free(address); } + static int FPDFAPI_FlateGetTotalOut(void* context) + { + return ((z_stream*)context)->total_out; + } + static int FPDFAPI_FlateGetTotalIn(void* context) + { + return ((z_stream*)context)->total_in; + } + static void FPDFAPI_FlateCompress(unsigned char* dest_buf, + unsigned long* dest_size, + const unsigned char* src_buf, + unsigned long src_size) + { + compress(dest_buf, dest_size, src_buf, src_size); + } void* FPDFAPI_FlateInit(void* (*alloc_func)(void*, unsigned int, unsigned int), void (*free_func)(void*, void*)) { @@ -37,10 +53,6 @@ extern "C" ((z_stream*)context)->next_in = (unsigned char*)src_buf; ((z_stream*)context)->avail_in = src_size; } - int FPDFAPI_FlateGetTotalOut(void* context) - { - return ((z_stream*)context)->total_out; - } int FPDFAPI_FlateOutput(void* context, unsigned char* dest_buf, unsigned int dest_size) { ((z_stream*)context)->next_out = dest_buf; @@ -54,28 +66,21 @@ extern "C" } return ret; } - int FPDFAPI_FlateGetTotalIn(void* context) + int FPDFAPI_FlateGetAvailIn(void* context) { - return ((z_stream*)context)->total_in; + return ((z_stream*)context)->avail_in; } int FPDFAPI_FlateGetAvailOut(void* context) { return ((z_stream*)context)->avail_out; } - int FPDFAPI_FlateGetAvailIn(void* context) - { - return ((z_stream*)context)->avail_in; - } void FPDFAPI_FlateEnd(void* context) { inflateEnd((z_stream*)context); ((z_stream*)context)->zfree(0, context); } - void FPDFAPI_FlateCompress(unsigned char* dest_buf, unsigned long* dest_size, const unsigned char* src_buf, unsigned long src_size) - { - compress(dest_buf, dest_size, src_buf, src_size); - } -} +} // extern "C" + class CLZWDecoder { public: diff --git a/pdfium.gyp b/pdfium.gyp index f95a4a6fe6..7ccc15e7d8 100644 --- a/pdfium.gyp +++ b/pdfium.gyp @@ -338,6 +338,7 @@ 'sources': [ 'core/include/fxcodec/fx_codec.h', 'core/include/fxcodec/fx_codec_def.h', + 'core/include/fxcodec/fx_codec_flate.h', 'core/include/fxcodec/fx_codec_provider.h', 'core/src/fxcodec/codec/codec_int.h', 'core/src/fxcodec/codec/fx_codec.cpp', |