mirror of
https://github.com/ONLYOFFICE/core.git
synced 2026-04-07 13:55:33 +08:00
93 lines
2.6 KiB
C++
93 lines
2.6 KiB
C++
#ifndef _CMAP_H
|
|
#define _CMAP_H
|
|
|
|
#include "CharTypes.h"
|
|
#include "GlobalParams.h"
|
|
#include "..\..\AVSImageStudio3\AVSGraphics\Interfaces\XmlUtils.h"
|
|
#include "TemporaryCS.h"
|
|
|
|
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(CString sFilePath);
|
|
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(XmlUtils::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;
|
|
|
|
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 /* _CMAP_H */
|