Files
core/ASCOfficePDFReader/Catalog.h

109 lines
2.1 KiB
C++

#ifndef _CATALOG_H
#define _CATALOG_H
#include "GlobalParams.h"
class XRef;
class Object;
class Page;
class PageAttrs;
struct Ref;
class LinkDestination;
//------------------------------------------------------------------------
// Catalog
//------------------------------------------------------------------------
class Catalog
{
public:
Catalog(GlobalParams *pGlobalParams, XRef *pXref);
~Catalog();
BOOL CheckValidation()
{
return m_bValid;
}
int GetPagesCount()
{
return m_nPagesCount;
}
Page *GetPage(int nIndex)
{
return m_ppPages[nIndex - 1];
}
Ref *GetPageRef(int nIndex)
{
return &m_pPageRefs[nIndex - 1];
}
StringExt *GetBaseURI()
{
return m_seBaseURI;
}
StringExt *ReadMetadata();
Object *GetStructTreeRoot()
{
return &m_oStructTreeRoot;
}
// Èùåì íîìåð ñòðàíèöû â ñïèñêå, ïî åå îáúåêòíûì íîìåðàì.
int FindPage(int nNum, int nGen);
// Èùåì Named destination.
LinkDestination *FindDest(StringExt *seName);
Object *GetDests()
{
return &m_oDests;
}
Object *GetNameTree()
{
return &m_oNameTree;
}
Object *GetOutline()
{
return &m_oOutline;
}
Object *GetAcroForm()
{
return &m_oAcroForm;
}
private:
int ReadPageTree(Dict *pPages, PageAttrs *pAttrs, int nStart, char *sAlreadyRead);
Object *FindDestInTree(Object *pTree, StringExt *seName, Object *pObject);
private:
XRef *m_pXref; // Òàáëèöà xref äëÿ äàííîãî PDF ôàéëà
Page **m_ppPages; // Ìàññèâ ñòðàíèö
Ref *m_pPageRefs; // Îáúåêòíûå íîìåðà âñåõ ñòðàíèö
int m_nPagesCount; // ×èñëî ñòðàíèö
int m_nPagesSize; // Ðàçìåð ìàññèâà ñòðàíèö(â áàéòàõ)
Object m_oDests; // Destination dictionary
Object m_oNameTree; // Name tree
StringExt *m_seBaseURI; // Äëÿ ññûëîê URI
Object m_oMetadata; // Metadata
Object m_oStructTreeRoot; // Ñòðóêòóðà ñòðàíèö
Object m_oOutline; // Outline
Object m_oAcroForm; // AcroForm
BOOL m_bValid; // True, åñëè Ñatalog - êîððåòíûé
GlobalParams *m_pGlobalParams;
};
#endif /* _CATALOG_H */