diff options
Diffstat (limited to 'core/src')
-rw-r--r-- | core/src/fpdfapi/fpdf_edit/fpdf_edit_image.cpp | 6 | ||||
-rw-r--r-- | core/src/fpdfapi/fpdf_page/fpdf_page.cpp | 38 | ||||
-rw-r--r-- | core/src/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp | 16 | ||||
-rw-r--r-- | core/src/fpdfapi/fpdf_page/pageint.h | 10 | ||||
-rw-r--r-- | core/src/fpdfapi/fpdf_parser/fpdf_parser_fdf.cpp | 2 | ||||
-rw-r--r-- | core/src/fpdftext/fpdf_text.cpp | 6 | ||||
-rw-r--r-- | core/src/fxcodec/codec/codec_int.h | 2 | ||||
-rw-r--r-- | core/src/fxcodec/codec/fx_codec_flate.cpp | 8 | ||||
-rw-r--r-- | core/src/fxcodec/codec/fx_codec_jpeg.cpp | 4 | ||||
-rw-r--r-- | core/src/fxcodec/jbig2/JBig2_Context.cpp | 22 | ||||
-rw-r--r-- | core/src/fxcodec/jbig2/JBig2_GeneralDecoder.cpp | 2 | ||||
-rw-r--r-- | core/src/fxcodec/jbig2/JBig2_HuffmanDecoder.cpp | 7 | ||||
-rw-r--r-- | core/src/fxcrt/fx_basic_gcc.cpp | 2 | ||||
-rw-r--r-- | core/src/fxge/ge/fx_ge_fontmap.cpp | 14 | ||||
-rw-r--r-- | core/src/fxge/ge/fx_ge_linux.cpp | 6 | ||||
-rw-r--r-- | core/src/fxge/ge/text_int.h | 2 |
16 files changed, 74 insertions, 73 deletions
diff --git a/core/src/fpdfapi/fpdf_edit/fpdf_edit_image.cpp b/core/src/fpdfapi/fpdf_edit/fpdf_edit_image.cpp index 2fbecad351..dad7326a5b 100644 --- a/core/src/fpdfapi/fpdf_edit/fpdf_edit_image.cpp +++ b/core/src/fpdfapi/fpdf_edit/fpdf_edit_image.cpp @@ -12,7 +12,11 @@ #include "../fpdf_render/render_int.h" CPDF_Dictionary* CPDF_Image::InitJPEG(uint8_t* pData, FX_DWORD size) { - int32_t width, height, color_trans, num_comps, bits; + int32_t width; + int32_t height; + int32_t num_comps; + int32_t bits; + FX_BOOL color_trans; if (!CPDF_ModuleMgr::Get()->GetJpegModule()-> LoadInfo(pData, size, width, height, num_comps, bits, color_trans)) { return NULL; diff --git a/core/src/fpdfapi/fpdf_page/fpdf_page.cpp b/core/src/fpdfapi/fpdf_page/fpdf_page.cpp index c0cdb228f4..f404352318 100644 --- a/core/src/fpdfapi/fpdf_page/fpdf_page.cpp +++ b/core/src/fpdfapi/fpdf_page/fpdf_page.cpp @@ -720,14 +720,19 @@ void CPDF_FormObject::CalcBoundingBox() m_Right = form_rect.right; m_Top = form_rect.top; } -CPDF_PageObjects::CPDF_PageObjects(FX_BOOL bReleaseMembers) : m_ObjectList(128) +CPDF_PageObjects::CPDF_PageObjects(FX_BOOL bReleaseMembers) + : m_pFormDict(nullptr), + m_pFormStream(nullptr), + m_pDocument(nullptr), + m_pPageResources(nullptr), + m_pResources(nullptr), + m_Transparency(0), + m_ObjectList(128), + m_bBackgroundAlphaNeeded(FALSE), + m_bReleaseMembers(bReleaseMembers), + m_pParser(nullptr), + m_ParseState(CONTENT_NOT_PARSED) { - m_bBackgroundAlphaNeeded = FALSE; - m_bReleaseMembers = bReleaseMembers; - m_ParseState = PDF_CONTENT_NOT_PARSED; - m_pParser = NULL; - m_pFormStream = NULL; - m_pResources = NULL; } CPDF_PageObjects::~CPDF_PageObjects() { @@ -747,18 +752,11 @@ void CPDF_PageObjects::ContinueParse(IFX_Pause* pPause) } m_pParser->Continue(pPause); if (m_pParser->GetStatus() == CPDF_ContentParser::Done) { - m_ParseState = PDF_CONTENT_PARSED; + m_ParseState = CONTENT_PARSED; delete m_pParser; m_pParser = NULL; } } -int CPDF_PageObjects::EstimateParseProgress() const -{ - if (!m_pParser) { - return m_ParseState == PDF_CONTENT_PARSED ? 100 : 0; - } - return m_pParser->EstimateProgress(); -} FX_POSITION CPDF_PageObjects::InsertObject(FX_POSITION posInsertAfter, CPDF_PageObject* pNewObject) { if (!posInsertAfter) { @@ -843,7 +841,7 @@ void CPDF_PageObjects::LoadTransInfo() } void CPDF_PageObjects::ClearCacheObjects() { - m_ParseState = PDF_CONTENT_NOT_PARSED; + m_ParseState = CONTENT_NOT_PARSED; delete m_pParser; m_pParser = NULL; if (m_bReleaseMembers) { @@ -930,12 +928,12 @@ void CPDF_Page::StartParse(CPDF_ParseOptions* pOptions, FX_BOOL bReParse) if (bReParse) { ClearCacheObjects(); } - if (m_ParseState == PDF_CONTENT_PARSED || m_ParseState == PDF_CONTENT_PARSING) { + if (m_ParseState == CONTENT_PARSED || m_ParseState == CONTENT_PARSING) { return; } m_pParser = new CPDF_ContentParser; m_pParser->Start(this, pOptions); - m_ParseState = PDF_CONTENT_PARSING; + m_ParseState = CONTENT_PARSING; } void CPDF_Page::ParseContent(CPDF_ParseOptions* pOptions, FX_BOOL bReParse) { @@ -994,12 +992,12 @@ CPDF_Form::~CPDF_Form() void CPDF_Form::StartParse(CPDF_AllStates* pGraphicStates, CFX_AffineMatrix* pParentMatrix, CPDF_Type3Char* pType3Char, CPDF_ParseOptions* pOptions, int level) { - if (m_ParseState == PDF_CONTENT_PARSED || m_ParseState == PDF_CONTENT_PARSING) { + if (m_ParseState == CONTENT_PARSED || m_ParseState == CONTENT_PARSING) { return; } m_pParser = new CPDF_ContentParser; m_pParser->Start(this, pGraphicStates, pParentMatrix, pType3Char, pOptions, level); - m_ParseState = PDF_CONTENT_PARSING; + m_ParseState = CONTENT_PARSING; } void CPDF_Form::ParseContent(CPDF_AllStates* pGraphicStates, CFX_AffineMatrix* pParentMatrix, CPDF_Type3Char* pType3Char, CPDF_ParseOptions* pOptions, int level) diff --git a/core/src/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp b/core/src/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp index 37ffea9742..b2cfce73d9 100644 --- a/core/src/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp +++ b/core/src/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp @@ -1133,19 +1133,3 @@ void CPDF_ContentParser::Continue(IFX_Pause* pPause) } } } -int CPDF_ContentParser::EstimateProgress() -{ - if (m_Status == Ready) { - return 0; - } - if (m_Status == Done) { - return 100; - } - if (m_InternalStage == PAGEPARSE_STAGE_GETCONTENT) { - return 10; - } - if (m_InternalStage == PAGEPARSE_STAGE_CHECKCLIP) { - return 90; - } - return 10 + 80 * m_CurrentOffset / m_Size; -} diff --git a/core/src/fpdfapi/fpdf_page/pageint.h b/core/src/fpdfapi/fpdf_page/pageint.h index 5d8ded062e..5f5d767afd 100644 --- a/core/src/fpdfapi/fpdf_page/pageint.h +++ b/core/src/fpdfapi/fpdf_page/pageint.h @@ -309,9 +309,15 @@ protected: class CPDF_ContentParser { public: + enum ParseStatus { + Ready, + ToBeContinued, + Done + }; + CPDF_ContentParser(); ~CPDF_ContentParser(); - typedef enum { Ready, ToBeContinued, Done } ParseStatus; + ParseStatus GetStatus() { return m_Status; @@ -320,7 +326,7 @@ public: void Start(CPDF_Form* pForm, CPDF_AllStates* pGraphicStates, CFX_AffineMatrix* pParentMatrix, CPDF_Type3Char* pType3Char, CPDF_ParseOptions* pOptions, int level); void Continue(IFX_Pause* pPause); - int EstimateProgress(); + protected: void Clear(); ParseStatus m_Status; diff --git a/core/src/fpdfapi/fpdf_parser/fpdf_parser_fdf.cpp b/core/src/fpdfapi/fpdf_parser/fpdf_parser_fdf.cpp index f630ea52da..1958fab280 100644 --- a/core/src/fpdfapi/fpdf_parser/fpdf_parser_fdf.cpp +++ b/core/src/fpdfapi/fpdf_parser/fpdf_parser_fdf.cpp @@ -62,7 +62,7 @@ void CFDF_Document::ParseStream(IFX_FileRead *pFile, FX_BOOL bOwnFile) if (word != FX_BSTRC("obj")) { break; } - CPDF_Object* pObj = parser.GetObject(this, objnum, 0, FALSE); + CPDF_Object* pObj = parser.GetObject(this, objnum, 0, 0); if (pObj == NULL) { break; } diff --git a/core/src/fpdftext/fpdf_text.cpp b/core/src/fpdftext/fpdf_text.cpp index f5ec28cbbf..003af30a0e 100644 --- a/core/src/fpdftext/fpdf_text.cpp +++ b/core/src/fpdftext/fpdf_text.cpp @@ -26,10 +26,10 @@ CFX_ByteString CharFromUnicodeAlt(FX_WCHAR unicode, int destcp, const FX_CHAR* d } return CFX_ByteString(defchar, -1); } - FX_BOOL bDef = FALSE; char buf[10]; - int ret = FXSYS_WideCharToMultiByte(destcp, 0, (wchar_t*)&unicode, 1, buf, 10, NULL, &bDef); - if (ret && !bDef) { + int iDef = 0; + int ret = FXSYS_WideCharToMultiByte(destcp, 0, (wchar_t*)&unicode, 1, buf, 10, NULL, &iDef); + if (ret && !iDef) { return CFX_ByteString(buf, ret); } const FX_CHAR* altstr = FCS_GetAltStr(unicode); diff --git a/core/src/fxcodec/codec/codec_int.h b/core/src/fxcodec/codec/codec_int.h index 244793b634..a1445a5003 100644 --- a/core/src/fxcodec/codec/codec_int.h +++ b/core/src/fxcodec/codec/codec_int.h @@ -152,7 +152,7 @@ public: virtual void Finish(void* pContext); virtual void Input(void* pContext, const uint8_t* src_buf, FX_DWORD src_size); virtual int ReadHeader(void* pContext, int* width, int* height, int* nComps, CFX_DIBAttribute* pAttribute = NULL); - virtual FX_BOOL StartScanline(void* pContext, int down_scale); + virtual int StartScanline(void* pContext, int down_scale); virtual FX_BOOL ReadScanline(void* pContext, uint8_t* dest_buf); virtual FX_DWORD GetAvailInput(void* pContext, uint8_t** avail_buf_ptr); protected: diff --git a/core/src/fxcodec/codec/fx_codec_flate.cpp b/core/src/fxcodec/codec/fx_codec_flate.cpp index 6223b9c670..d129e36392 100644 --- a/core/src/fxcodec/codec/fx_codec_flate.cpp +++ b/core/src/fxcodec/codec/fx_codec_flate.cpp @@ -84,19 +84,21 @@ extern "C" class CLZWDecoder { public: - FX_BOOL Decode(uint8_t* output, FX_DWORD& outlen, const uint8_t* input, FX_DWORD& size, FX_BOOL bEarlyChange); + int Decode(uint8_t* output, FX_DWORD& outlen, const uint8_t* input, FX_DWORD& size, FX_BOOL bEarlyChange); + private: + void AddCode(FX_DWORD prefix_code, uint8_t append_char); + void DecodeString(FX_DWORD code); + FX_DWORD m_InPos; FX_DWORD m_OutPos; uint8_t* m_pOutput; const uint8_t* m_pInput; FX_BOOL m_Early; - void AddCode(FX_DWORD prefix_code, uint8_t append_char); FX_DWORD m_CodeArray[5021]; FX_DWORD m_nCodes; uint8_t m_DecodeStack[4000]; FX_DWORD m_StackLen; - void DecodeString(FX_DWORD code); int m_CodeLen; }; void CLZWDecoder::AddCode(FX_DWORD prefix_code, uint8_t append_char) diff --git a/core/src/fxcodec/codec/fx_codec_jpeg.cpp b/core/src/fxcodec/codec/fx_codec_jpeg.cpp index e8e075e6b0..62963643cf 100644 --- a/core/src/fxcodec/codec/fx_codec_jpeg.cpp +++ b/core/src/fxcodec/codec/fx_codec_jpeg.cpp @@ -715,14 +715,14 @@ int CCodec_JpegModule::ReadHeader(void* pContext, int* width, int* height, int* _JpegLoadAttribute(&p->m_Info, pAttribute); return 0; } -FX_BOOL CCodec_JpegModule::StartScanline(void* pContext, int down_scale) +int CCodec_JpegModule::StartScanline(void* pContext, int down_scale) { if (m_pExtProvider) { return m_pExtProvider->StartScanline(pContext, down_scale); } FXJPEG_Context* p = (FXJPEG_Context*)pContext; if (setjmp(p->m_JumpMark) == -1) { - return FALSE; + return 0; } p->m_Info.scale_denom = down_scale; return jpeg_start_decompress(&p->m_Info); diff --git a/core/src/fxcodec/jbig2/JBig2_Context.cpp b/core/src/fxcodec/jbig2/JBig2_Context.cpp index ed26ec6833..68c973547c 100644 --- a/core/src/fxcodec/jbig2/JBig2_Context.cpp +++ b/core/src/fxcodec/jbig2/JBig2_Context.cpp @@ -873,7 +873,7 @@ failed: return nRet; } -FX_BOOL CJBig2_Context::parseTextRegion(CJBig2_Segment *pSegment) +int32_t CJBig2_Context::parseTextRegion(CJBig2_Segment *pSegment) { FX_DWORD dwTemp; FX_WORD wFlags; @@ -1239,7 +1239,7 @@ failed: return nRet; } -FX_BOOL CJBig2_Context::parsePatternDict(CJBig2_Segment *pSegment, IFX_Pause* pPause) +int32_t CJBig2_Context::parsePatternDict(CJBig2_Segment *pSegment, IFX_Pause* pPause) { FX_DWORD dwTemp; uint8_t cFlags; @@ -1293,7 +1293,7 @@ failed: delete pPDD; return nRet; } -FX_BOOL CJBig2_Context::parseHalftoneRegion(CJBig2_Segment *pSegment, IFX_Pause* pPause) +int32_t CJBig2_Context::parseHalftoneRegion(CJBig2_Segment *pSegment, IFX_Pause* pPause) { FX_DWORD dwTemp; uint8_t cFlags; @@ -1387,7 +1387,7 @@ failed: return nRet; } -FX_BOOL CJBig2_Context::parseGenericRegion(CJBig2_Segment *pSegment, IFX_Pause* pPause) +int32_t CJBig2_Context::parseGenericRegion(CJBig2_Segment *pSegment, IFX_Pause* pPause) { FX_DWORD dwTemp; uint8_t cFlags; @@ -1504,7 +1504,7 @@ failed: return nRet; } -FX_BOOL CJBig2_Context::parseGenericRefinementRegion(CJBig2_Segment *pSegment) +int32_t CJBig2_Context::parseGenericRefinementRegion(CJBig2_Segment *pSegment) { FX_DWORD dwTemp; JBig2RegionInfo ri; @@ -1591,7 +1591,7 @@ failed: delete pGRRD; return nRet; } -FX_BOOL CJBig2_Context::parseTable(CJBig2_Segment *pSegment) +int32_t CJBig2_Context::parseTable(CJBig2_Segment *pSegment) { pSegment->m_nResultType = JBIG2_HUFFMAN_TABLE_POINTER; JBIG2_ALLOC(pSegment->m_Result.ht, CJBig2_HuffmanTable(m_pStream)); @@ -1618,9 +1618,15 @@ JBig2HuffmanCode *CJBig2_Context::decodeSymbolIDHuffmanTable(CJBig2_BitStream *p FX_DWORD SBNUMSYMS) { JBig2HuffmanCode *SBSYMCODES; - int32_t runcodes[35], runcodes_len[35], runcode; - int32_t i, j, nTemp, nVal, nBits; + int32_t runcodes[35]; + int32_t runcodes_len[35]; + int32_t runcode; + int32_t i; + int32_t j; + int32_t nVal; + int32_t nBits; int32_t run; + FX_DWORD nTemp; SBSYMCODES = (JBig2HuffmanCode*)m_pModule->JBig2_Malloc2(sizeof(JBig2HuffmanCode), SBNUMSYMS); for (i = 0; i < 35; i ++) { if(pStream->readNBits(4, &runcodes_len[i]) != 0) { diff --git a/core/src/fxcodec/jbig2/JBig2_GeneralDecoder.cpp b/core/src/fxcodec/jbig2/JBig2_GeneralDecoder.cpp index 622f04b160..cabcd4c634 100644 --- a/core/src/fxcodec/jbig2/JBig2_GeneralDecoder.cpp +++ b/core/src/fxcodec/jbig2/JBig2_GeneralDecoder.cpp @@ -2101,7 +2101,7 @@ CJBig2_Image *CJBig2_TRDProc::decode_Arith(CJBig2_ArithDecoder *pArithDecoder, J CJBig2_Image *IBI; FX_DWORD WI, HI; int32_t IDS; - FX_BOOL RI; + int RI; int32_t RDWI, RDHI, RDXI, RDYI; CJBig2_Image *IBOI; FX_DWORD WOI, HOI; diff --git a/core/src/fxcodec/jbig2/JBig2_HuffmanDecoder.cpp b/core/src/fxcodec/jbig2/JBig2_HuffmanDecoder.cpp index dd820ae4ca..ef84547992 100644 --- a/core/src/fxcodec/jbig2/JBig2_HuffmanDecoder.cpp +++ b/core/src/fxcodec/jbig2/JBig2_HuffmanDecoder.cpp @@ -14,9 +14,10 @@ CJBig2_HuffmanDecoder::~CJBig2_HuffmanDecoder() } int CJBig2_HuffmanDecoder::decodeAValue(CJBig2_HuffmanTable *pTable, int *nResult) { - int nVal, nTmp, i, nBits; - nVal = 0; - nBits = 0; + int i; + int nVal = 0; + int nBits = 0; + FX_DWORD nTmp; while(1) { if(m_pStream->read1Bit(&nTmp) == -1) { return -1; diff --git a/core/src/fxcrt/fx_basic_gcc.cpp b/core/src/fxcrt/fx_basic_gcc.cpp index e4416e95b5..2497c74a8e 100644 --- a/core/src/fxcrt/fx_basic_gcc.cpp +++ b/core/src/fxcrt/fx_basic_gcc.cpp @@ -208,7 +208,7 @@ char* FXSYS_itoa(int value, char* string, int radix) extern "C" { #endif int FXSYS_WideCharToMultiByte(FX_DWORD codepage, FX_DWORD dwFlags, const FX_WCHAR* wstr, int wlen, - FX_CHAR* buf, int buflen, const FX_CHAR* default_str, FX_BOOL* pUseDefault) + FX_CHAR* buf, int buflen, const FX_CHAR* default_str, int* pUseDefault) { int len = 0; for (int i = 0; i < wlen; i ++) { diff --git a/core/src/fxge/ge/fx_ge_fontmap.cpp b/core/src/fxge/ge/fx_ge_fontmap.cpp index e7281f3470..fd96ff24ab 100644 --- a/core/src/fxge/ge/fx_ge_fontmap.cpp +++ b/core/src/fxge/ge/fx_ge_fontmap.cpp @@ -609,8 +609,8 @@ void CFX_FontMapper::AddInstalledFont(const CFX_ByteString& name, int charset) if (bLocalized) { void* hFont = m_pFontInfo->GetFont(name); if (hFont == NULL) { - FX_BOOL bExact; - hFont = m_pFontInfo->MapFont(0, 0, FXFONT_DEFAULT_CHARSET, 0, name, bExact); + int iExact; + hFont = m_pFontInfo->MapFont(0, 0, FXFONT_DEFAULT_CHARSET, 0, name, iExact); if (hFont == NULL) { return; } @@ -1062,7 +1062,7 @@ FXFT_Face CFX_FontMapper::FindSubstFont(const CFX_ByteString& name, FX_BOOL bTru bItalic = TRUE; } FX_BOOL bCJK = FALSE; - FX_BOOL bExact = FALSE; + int iExact = 0; int Charset = FXFONT_ANSI_CHARSET; if (WindowCP) { Charset = _GetCharsetFromCodePage(WindowCP); @@ -1143,9 +1143,9 @@ FXFT_Face CFX_FontMapper::FindSubstFont(const CFX_ByteString& name, FX_BOOL bTru bItalic = TRUE; } } - bExact = !match.IsEmpty(); - void* hFont = m_pFontInfo->MapFont(weight, bItalic, Charset, PitchFamily, family, bExact); - if (bExact) { + iExact = !match.IsEmpty(); + void* hFont = m_pFontInfo->MapFont(weight, bItalic, Charset, PitchFamily, family, iExact); + if (iExact) { pSubstFont->m_SubstFlags |= FXFONT_SUBST_EXACT; } if (hFont == NULL) { @@ -1551,7 +1551,7 @@ void CFX_FolderFontInfo::ReportFace(CFX_ByteString& path, FXSYS_FILE* pFile, FX_ } m_FontList.SetAt(facename, pInfo); } -void* CFX_FolderFontInfo::MapFont(int weight, FX_BOOL bItalic, int charset, int pitch_family, const FX_CHAR* family, FX_BOOL& bExact) +void* CFX_FolderFontInfo::MapFont(int weight, FX_BOOL bItalic, int charset, int pitch_family, const FX_CHAR* family, int& iExact) { return NULL; } diff --git a/core/src/fxge/ge/fx_ge_linux.cpp b/core/src/fxge/ge/fx_ge_linux.cpp index 51c0e64912..25ad49cbce 100644 --- a/core/src/fxge/ge/fx_ge_linux.cpp +++ b/core/src/fxge/ge/fx_ge_linux.cpp @@ -30,7 +30,7 @@ Base14Substs[] = { class CFX_LinuxFontInfo : public CFX_FolderFontInfo { public: - virtual void* MapFont(int weight, FX_BOOL bItalic, int charset, int pitch_family, const FX_CHAR* family, FX_BOOL& bExact); + void* MapFont(int weight, FX_BOOL bItalic, int charset, int pitch_family, const FX_CHAR* family, int& iExact) override; FX_BOOL ParseFontCfg(); void* FindFont(int weight, FX_BOOL bItalic, int charset, int pitch_family, const FX_CHAR* family, FX_BOOL bMatchName); }; @@ -77,14 +77,14 @@ static int32_t GetJapanesePreference(const FX_CHAR* facearr, int weight, int pic } return 2; } -void* CFX_LinuxFontInfo::MapFont(int weight, FX_BOOL bItalic, int charset, int pitch_family, const FX_CHAR* cstr_face, FX_BOOL& bExact) +void* CFX_LinuxFontInfo::MapFont(int weight, FX_BOOL bItalic, int charset, int pitch_family, const FX_CHAR* cstr_face, int& iExact) { CFX_ByteString face = cstr_face; int iBaseFont; for (iBaseFont = 0; iBaseFont < 12; iBaseFont ++) if (face == CFX_ByteStringC(Base14Substs[iBaseFont].m_pName)) { face = Base14Substs[iBaseFont].m_pSubstName; - bExact = TRUE; + iExact = 1; break; } if (iBaseFont < 12) { diff --git a/core/src/fxge/ge/text_int.h b/core/src/fxge/ge/text_int.h index 6f89868cb1..29d9e1cc4d 100644 --- a/core/src/fxge/ge/text_int.h +++ b/core/src/fxge/ge/text_int.h @@ -32,7 +32,7 @@ public: m_RefCount = 0; } ~CTTFontDesc(); - FX_BOOL ReleaseFace(FXFT_Face face); + int32_t ReleaseFace(FXFT_Face face); int m_Type; union { struct { |