blob: e34761ae7861c6184258f73a05ae56f6ff0bf028 [file] [log] [blame]
// Copyright 2016 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
#ifndef CORE_FPDFAPI_FPDF_PARSER_INCLUDE_IPDF_DATA_AVAIL_H_
#define CORE_FPDFAPI_FPDF_PARSER_INCLUDE_IPDF_DATA_AVAIL_H_
#include "core/fxcrt/include/fx_stream.h"
#include "core/fxcrt/include/fx_system.h"
class CPDF_Document;
class CPDF_Object;
class IPDF_DataAvail {
public:
// Must match PDF_DATA_* definitions in public/fpdf_dataavail.h, but cannot
// #include that header. fpdfsdk/fpdf_dataavail.cpp has static_asserts
// to make sure the two sets of values match.
enum DocAvailStatus {
DataError = -1, // PDF_DATA_ERROR
DataNotAvailable = 0, // PDF_DATA_NOTAVAIL
DataAvailable = 1, // PDF_DATA_AVAIL
};
// Must match PDF_*LINEAR* definitions in public/fpdf_dataavail.h, but cannot
// #include that header. fpdfsdk/fpdf_dataavail.cpp has static_asserts
// to make sure the two sets of values match.
enum DocLinearizationStatus {
LinearizationUnknown = -1, // PDF_LINEARIZATION_UNKNOWN
NotLinearized = 0, // PDF_NOT_LINEARIZED
Linearized = 1, // PDF_LINEARIZED
};
// Must match PDF_FORM_* definitions in public/fpdf_dataavail.h, but cannot
// #include that header. fpdfsdk/fpdf_dataavail.cpp has static_asserts
// to make sure the two sets of values match.
enum DocFormStatus {
FormError = -1, // PDF_FORM_ERROR
FormNotAvailable = 0, // PDF_FORM_NOTAVAIL
FormAvailable = 1, // PDF_FORM_AVAIL
FormNotExist = 2, // PDF_FORM_NOTEXIST
};
class FileAvail {
public:
virtual ~FileAvail();
virtual FX_BOOL IsDataAvail(FX_FILESIZE offset, uint32_t size) = 0;
};
class DownloadHints {
public:
virtual ~DownloadHints();
virtual void AddSegment(FX_FILESIZE offset, uint32_t size) = 0;
};
static IPDF_DataAvail* Create(FileAvail* pFileAvail, IFX_FileRead* pFileRead);
virtual ~IPDF_DataAvail();
FileAvail* GetFileAvail() const { return m_pFileAvail; }
IFX_FileRead* GetFileRead() const { return m_pFileRead; }
virtual DocAvailStatus IsDocAvail(DownloadHints* pHints) = 0;
virtual void SetDocument(CPDF_Document* pDoc) = 0;
virtual DocAvailStatus IsPageAvail(int iPage, DownloadHints* pHints) = 0;
virtual FX_BOOL IsLinearized() = 0;
virtual DocFormStatus IsFormAvail(DownloadHints* pHints) = 0;
virtual DocLinearizationStatus IsLinearizedPDF() = 0;
virtual void GetLinearizedMainXRefInfo(FX_FILESIZE* pPos,
uint32_t* pSize) = 0;
protected:
IPDF_DataAvail(FileAvail* pFileAvail, IFX_FileRead* pFileRead);
FileAvail* m_pFileAvail;
IFX_FileRead* m_pFileRead;
};
#endif // CORE_FPDFAPI_FPDF_PARSER_INCLUDE_IPDF_DATA_AVAIL_H_