aboutsummaryrefslogtreecommitdiff
path: root/core/fxcodec/jbig2/jbig2_decoder.h
diff options
context:
space:
mode:
Diffstat (limited to 'core/fxcodec/jbig2/jbig2_decoder.h')
-rw-r--r--core/fxcodec/jbig2/jbig2_decoder.h65
1 files changed, 65 insertions, 0 deletions
diff --git a/core/fxcodec/jbig2/jbig2_decoder.h b/core/fxcodec/jbig2/jbig2_decoder.h
new file mode 100644
index 000000000..0a94f5de8
--- /dev/null
+++ b/core/fxcodec/jbig2/jbig2_decoder.h
@@ -0,0 +1,65 @@
+// Copyright 2016 The PDFium Authors
+// 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
+
+#ifndef CORE_FXCODEC_JBIG2_JBIG2_DECODER_H_
+#define CORE_FXCODEC_JBIG2_JBIG2_DECODER_H_
+
+#include <memory>
+
+#include "core/fxcodec/fx_codec_def.h"
+#include "third_party/base/span.h"
+
+class CJBig2_Context;
+class JBig2_DocumentContext;
+class PauseIndicatorIface;
+
+namespace fxcodec {
+
+class Jbig2Context {
+ public:
+ Jbig2Context();
+ ~Jbig2Context();
+
+ uint32_t m_width = 0;
+ uint32_t m_height = 0;
+ uint64_t m_nGlobalKey = 0;
+ uint64_t m_nSrcKey = 0;
+ pdfium::span<const uint8_t> m_pGlobalSpan;
+ pdfium::span<const uint8_t> m_pSrcSpan;
+ uint8_t* m_dest_buf = nullptr;
+ uint32_t m_dest_pitch = 0;
+ std::unique_ptr<CJBig2_Context> m_pContext;
+};
+
+class Jbig2Decoder {
+ public:
+ static FXCODEC_STATUS StartDecode(
+ Jbig2Context* pJbig2Context,
+ JBig2_DocumentContext* pJbig2DocumentContext,
+ uint32_t width,
+ uint32_t height,
+ pdfium::span<const uint8_t> src_span,
+ uint64_t src_key,
+ pdfium::span<const uint8_t> global_span,
+ uint64_t global_key,
+ pdfium::span<uint8_t> dest_buf,
+ uint32_t dest_pitch,
+ PauseIndicatorIface* pPause);
+
+ static FXCODEC_STATUS ContinueDecode(Jbig2Context* pJbig2Context,
+ PauseIndicatorIface* pPause);
+
+ Jbig2Decoder() = delete;
+ Jbig2Decoder(const Jbig2Decoder&) = delete;
+ Jbig2Decoder& operator=(const Jbig2Decoder&) = delete;
+};
+
+} // namespace fxcodec
+
+using Jbig2Context = fxcodec::Jbig2Context;
+using Jbig2Decoder = fxcodec::Jbig2Decoder;
+
+#endif // CORE_FXCODEC_JBIG2_JBIG2_DECODER_H_