Files
core/PdfReader/Src/CMap.h
Ilya.Kirillov 65d72ae4ec Убраны лишние файлы. Все файлы сконвертированы в UTF8.
git-svn-id: svn://fileserver/activex/AVS/Sources/TeamlabOffice/trunk/ServerComponents@62550 954022d7-b5bf-4e40-9824-e11837661b57
2016-05-21 00:02:55 +03:00

96 lines
3.0 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef _PDF_READER_CMAP_H
#define _PDF_READER_CMAP_H
#include "CharTypes.h"
#include "GlobalParams.h"
#include "XmlUtils.h"
#include "../../DesktopEditor/graphics/TemporaryCS.h"
namespace PdfReader
{
class StringExt;
struct CMapVectorEntry;
class CMapCache;
//-------------------------------------------------------------------------------------------------------------------------------
class CMap
{
public:
// Создаем карту CMap определенную по <seCollection> и <seCMapName>.
// Устанавливаем счетчик ссылок на 1.
static CMap *Parse(CMapCache *pCache, StringExt *seCollection, StringExt *seCMapName, GlobalParams *pGlobalParams, wchar_t *wsFilePath = NULL);
~CMap();
// Считаем ссылки
void AddRef();
void Release();
// Название коллекции возвращаем в следующем формате: registry-ordering.
StringExt *GetCollection()
{
return m_seCollection;
}
// Возвращаем true, если параметры CMap совпадают с заданными <seCollection> и <seCMapName>.
bool Match(StringExt *seCollection, StringExt *seCMapName);
// Возвращаем CID соответствующий коду символа, который начинается в <sChar>,
// и содержит <nLen> байт.
CID GetCID(char *sChar, int nLen, int *pnUsed);
// Writing mode (0 = horizontal, 1 = vertical).
int GetWMode()
{
return m_nWMode;
}
void ToXml(std::wstring wsFilePath);
private:
CMap(GlobalParams *pGlobalParams, StringExt *seCollection, StringExt *seCMapName);
CMap(GlobalParams *pGlobalParams, StringExt *seCollection, StringExt *seCMapName, int nWMode);
void UseCMap(CMapCache *pCache, char *sUseName);
void CopyVector(CMapVectorEntry *pDest, CMapVectorEntry *pSrc);
void AddCodeSpace(CMapVectorEntry *pVector, unsigned int unStart, unsigned int unEnd, unsigned int unBytesCount);
void AddCIDs(unsigned int unStart, unsigned int unEnd, unsigned int unBytesCount, CID nFirstCID);
void FreeCMapVector(CMapVectorEntry *pVector);
void WriteVectorToXml(CXmlWriter *pWriter, CMapVectorEntry *pVector);
private:
StringExt *m_seCollection; //
StringExt *m_seCMapName; //
int m_nWMode; // writing mode (0=horizontal, 1=vertical)
CMapVectorEntry *m_pVector; // vector for first byte (NULL for identity CMap)
int m_nRef; // Счетчик ссылок
GlobalParams *m_pGlobalParams;
NSCriticalSection::CRITICAL_SECTION m_oCS;
};
//-------------------------------------------------------------------------------------------------------------------------------
#define CMapCacheSize 4
class CMapCache
{
public:
CMapCache();
~CMapCache();
CMap *GetCMap(StringExt *seCollection, StringExt *seCMapName, GlobalParams *pGlobalParams, wchar_t *wsFilePath = NULL);
private:
CMap *m_ppCache[CMapCacheSize];
};
}
#endif // _PDF_READER_CMAP_H