summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordsinclair <dsinclair@chromium.org>2016-04-27 12:47:01 -0700
committerCommit bot <commit-bot@chromium.org>2016-04-27 12:47:01 -0700
commit303e525325904cd9b6a847f48951510e7dd8a45e (patch)
treedab3ff0e3bda317dc51ef0caf8d15daf88e7e6b8
parent43854a5073602a4613131aa6dbac5f7b9a095bcd (diff)
downloadpdfium-303e525325904cd9b6a847f48951510e7dd8a45e.tar.xz
More IFX_ interface cleanup.
Remove IFX_FontProvider, IFX_FontSourceEnum, IFX_SAXReader and IFX_SAXReaderHandler. Review-Url: https://codereview.chromium.org/1930533002
-rw-r--r--BUILD.gn3
-rw-r--r--core/fxcrt/include/fx_stream.h2
-rw-r--r--xfa.gyp3
-rw-r--r--xfa/fgas/font/fgas_font.h23
-rw-r--r--xfa/fgas/font/fgas_gefont.cpp1
-rw-r--r--xfa/fgas/font/fgas_gefont.h6
-rw-r--r--xfa/fgas/font/fgas_stdfontmgr.cpp20
-rw-r--r--xfa/fgas/font/fgas_stdfontmgr.h16
-rw-r--r--xfa/fgas/xml/fgas_sax.cpp (renamed from xfa/fgas/xml/fgas_sax_imp.cpp)42
-rw-r--r--xfa/fgas/xml/fgas_sax.h159
-rw-r--r--xfa/fgas/xml/fgas_sax_imp.h141
-rw-r--r--xfa/fwl/theme/cfwl_widgettp.cpp3
-rw-r--r--xfa/fwl/theme/cfwl_widgettp.h4
-rw-r--r--xfa/fxfa/app/xfa_checksum.cpp21
-rw-r--r--xfa/fxfa/app/xfa_ffapp.cpp3
-rw-r--r--xfa/fxfa/app/xfa_fontmgr.cpp8
-rw-r--r--xfa/fxfa/include/xfa_checksum.h50
-rw-r--r--xfa/fxfa/include/xfa_ffapp.h2
-rw-r--r--xfa/fxfa/include/xfa_fontmgr.h3
19 files changed, 232 insertions, 278 deletions
diff --git a/BUILD.gn b/BUILD.gn
index 747c6305bd..b4a6771344 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -969,9 +969,8 @@ if (pdf_enable_xfa) {
"xfa/fgas/localization/fgas_localeimp.h",
"xfa/fgas/localization/fgas_localemgr.cpp",
"xfa/fgas/localization/fgas_localemgr.h",
+ "xfa/fgas/xml/fgas_sax.cpp",
"xfa/fgas/xml/fgas_sax.h",
- "xfa/fgas/xml/fgas_sax_imp.cpp",
- "xfa/fgas/xml/fgas_sax_imp.h",
"xfa/fwl/basewidget/fwl_barcodeimp.cpp",
"xfa/fwl/basewidget/fwl_barcodeimp.h",
"xfa/fwl/basewidget/fwl_caretimp.cpp",
diff --git a/core/fxcrt/include/fx_stream.h b/core/fxcrt/include/fx_stream.h
index ba72994f36..a91b59f285 100644
--- a/core/fxcrt/include/fx_stream.h
+++ b/core/fxcrt/include/fx_stream.h
@@ -79,7 +79,7 @@ class IFX_StreamRead {
virtual size_t ReadBlock(void* buffer, size_t size) = 0;
};
-class IFX_FileRead : IFX_StreamRead {
+class IFX_FileRead : public IFX_StreamRead {
public:
// IFX_StreamRead:
void Release() override = 0;
diff --git a/xfa.gyp b/xfa.gyp
index f3781a044a..72d2c8f5b4 100644
--- a/xfa.gyp
+++ b/xfa.gyp
@@ -126,9 +126,8 @@
"xfa/fgas/localization/fgas_localeimp.h",
"xfa/fgas/localization/fgas_localemgr.cpp",
"xfa/fgas/localization/fgas_localemgr.h",
+ "xfa/fgas/xml/fgas_sax.cpp",
"xfa/fgas/xml/fgas_sax.h",
- "xfa/fgas/xml/fgas_sax_imp.cpp",
- "xfa/fgas/xml/fgas_sax_imp.h",
"xfa/fwl/basewidget/fwl_barcodeimp.cpp",
"xfa/fwl/basewidget/fwl_barcodeimp.h",
"xfa/fwl/basewidget/fwl_caretimp.cpp",
diff --git a/xfa/fgas/font/fgas_font.h b/xfa/fgas/font/fgas_font.h
index db964b06ca..406c6f96a8 100644
--- a/xfa/fgas/font/fgas_font.h
+++ b/xfa/fgas/font/fgas_font.h
@@ -15,6 +15,8 @@
#include "xfa/fgas/crt/fgas_utils.h"
#endif // _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_
+class CFX_FontSourceEnum_File;
+class CXFA_PDFFontMgr;
class IFX_Font;
class IFX_FontMgr;
@@ -48,15 +50,6 @@ class IFX_FontMgr;
#define FX_BOUNDINGSHAPE_Triangle 3
#define FX_BOUNDINGSHAPE_Diamond 4
-class IFX_FontProvider {
- public:
- virtual ~IFX_FontProvider() {}
- virtual FX_BOOL GetCharWidth(IFX_Font* pFont,
- FX_WCHAR wUnicode,
- int32_t& iWidth,
- FX_BOOL bCharCode = FALSE) = 0;
-};
-
class IFX_Font {
public:
static IFX_Font* LoadFont(const FX_WCHAR* pszFontFamily,
@@ -96,7 +89,7 @@ class IFX_Font {
virtual void Reset() = 0;
virtual IFX_Font* GetSubstFont(int32_t iGlyphIndex) const = 0;
virtual void* GetDevFont() const = 0;
- virtual void SetFontProvider(IFX_FontProvider* pProvider) = 0;
+ virtual void SetFontProvider(CXFA_PDFFontMgr* pProvider) = 0;
#if _FXM_PLATFORM_ != _FXM_PLATFORM_WINDOWS_
virtual void SetLogicalFontStyle(uint32_t dwLogFontStyle) = 0;
#endif
@@ -192,17 +185,9 @@ class IFX_FontMgr {
#else // _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_
-class IFX_FontSourceEnum {
- public:
- virtual ~IFX_FontSourceEnum() {}
- virtual void Release() = 0;
- virtual FX_POSITION GetStartPosition() = 0;
- virtual IFX_FileAccess* GetNext(FX_POSITION& pos) = 0;
-};
-IFX_FontSourceEnum* FX_CreateDefaultFontSourceEnum();
class IFX_FontMgr {
public:
- static IFX_FontMgr* Create(IFX_FontSourceEnum* pFontEnum);
+ static IFX_FontMgr* Create(CFX_FontSourceEnum_File* pFontEnum);
virtual ~IFX_FontMgr() {}
virtual void Release() = 0;
virtual IFX_Font* GetDefFontByCodePage(
diff --git a/xfa/fgas/font/fgas_gefont.cpp b/xfa/fgas/font/fgas_gefont.cpp
index 7bf877f8c2..495ac7d69d 100644
--- a/xfa/fgas/font/fgas_gefont.cpp
+++ b/xfa/fgas/font/fgas_gefont.cpp
@@ -8,6 +8,7 @@
#include "xfa/fgas/crt/fgas_codepage.h"
#include "xfa/fgas/font/fgas_fontutils.h"
+#include "xfa/fxfa/include/xfa_fontmgr.h"
IFX_Font* IFX_Font::LoadFont(const FX_WCHAR* pszFontFamily,
uint32_t dwFontStyles,
diff --git a/xfa/fgas/font/fgas_gefont.h b/xfa/fgas/font/fgas_gefont.h
index 044acdeb7f..43b5c5876e 100644
--- a/xfa/fgas/font/fgas_gefont.h
+++ b/xfa/fgas/font/fgas_gefont.h
@@ -12,6 +12,8 @@
#define FXFONT_SUBST_ITALIC 0x02
+class CXFA_PDFFontMgr;
+
class CFX_GEFont : public IFX_Font {
public:
CFX_GEFont(const CFX_GEFont& src, uint32_t dwFontStyles);
@@ -45,7 +47,7 @@ class CFX_GEFont : public IFX_Font {
virtual void Reset();
virtual IFX_Font* GetSubstFont(int32_t iGlyphIndex) const;
virtual void* GetDevFont() const { return (void*)m_pFont; }
- virtual void SetFontProvider(IFX_FontProvider* pProvider) {
+ virtual void SetFontProvider(CXFA_PDFFontMgr* pProvider) {
m_pProvider = pProvider;
}
#if _FXM_PLATFORM_ != _FXM_PLATFORM_WINDOWS_
@@ -70,7 +72,7 @@ class CFX_GEFont : public IFX_Font {
CFX_WordDiscreteArray* m_pCharWidthMap;
CFX_RectMassArray* m_pRectArray;
CFX_MapPtrToPtr* m_pBBoxMap;
- IFX_FontProvider* m_pProvider;
+ CXFA_PDFFontMgr* m_pProvider;
uint16_t m_wCharSet;
CFX_PtrArray m_SubstFonts;
CFX_MapPtrToPtr m_FontMapper;
diff --git a/xfa/fgas/font/fgas_stdfontmgr.cpp b/xfa/fgas/font/fgas_stdfontmgr.cpp
index dedc8b0ad2..a3964d2bb8 100644
--- a/xfa/fgas/font/fgas_stdfontmgr.cpp
+++ b/xfa/fgas/font/fgas_stdfontmgr.cpp
@@ -555,21 +555,19 @@ IFX_FileAccess* CFX_FontSourceEnum_File::GetNext(FX_POSITION& pos) {
pos = 0 != m_wsNext.GetLength() ? pAccess : NULL;
return (IFX_FileAccess*)pAccess;
}
-IFX_FontSourceEnum* FX_CreateDefaultFontSourceEnum() {
- return (IFX_FontSourceEnum*)new CFX_FontSourceEnum_File;
-}
-IFX_FontMgr* IFX_FontMgr::Create(IFX_FontSourceEnum* pFontEnum) {
- if (NULL == pFontEnum) {
- return NULL;
- }
+
+IFX_FontMgr* IFX_FontMgr::Create(CFX_FontSourceEnum_File* pFontEnum) {
+ if (!pFontEnum)
+ return nullptr;
+
CFX_FontMgrImp* pFontMgr = new CFX_FontMgrImp(pFontEnum);
- if (pFontMgr->EnumFonts()) {
+ if (pFontMgr->EnumFonts())
return pFontMgr;
- }
+
delete pFontMgr;
- return NULL;
+ return nullptr;
}
-CFX_FontMgrImp::CFX_FontMgrImp(IFX_FontSourceEnum* pFontEnum)
+CFX_FontMgrImp::CFX_FontMgrImp(CFX_FontSourceEnum_File* pFontEnum)
: m_pFontSource(pFontEnum) {}
FX_BOOL CFX_FontMgrImp::EnumFontsFromFontMapper() {
diff --git a/xfa/fgas/font/fgas_stdfontmgr.h b/xfa/fgas/font/fgas_stdfontmgr.h
index 6b1f9c8a8f..cc11517e34 100644
--- a/xfa/fgas/font/fgas_stdfontmgr.h
+++ b/xfa/fgas/font/fgas_stdfontmgr.h
@@ -126,19 +126,22 @@ struct FX_HandleParentPath {
CFX_ByteString bsParentPath;
};
-class CFX_FontSourceEnum_File : public IFX_FontSourceEnum {
+class CFX_FontSourceEnum_File {
public:
CFX_FontSourceEnum_File();
- virtual void Release() { delete this; }
- virtual FX_POSITION GetStartPosition();
- virtual IFX_FileAccess* GetNext(FX_POSITION& pos);
+
+ void Release() { delete this; }
+ FX_POSITION GetStartPosition();
+ IFX_FileAccess* GetNext(FX_POSITION& pos);
private:
CFX_ByteString GetNextFile();
+
CFX_WideString m_wsNext;
CFX_ObjectArray<FX_HandleParentPath> m_FolderQueue;
CFX_ByteStringArray m_FolderPaths;
};
+
typedef CFX_MapPtrTemplate<uint32_t, IFX_FileAccess*> CFX_HashFileMap;
typedef CFX_MapPtrTemplate<uint32_t, IFX_Font*> CFX_HashFontMap;
typedef CFX_MapPtrTemplate<uint32_t, CFX_FontDescriptorInfos*>
@@ -152,7 +155,8 @@ typedef CFX_MapPtrTemplate<IFX_Font*, IFX_FileRead*> CFX_FonStreamtMap;
class CFX_FontMgrImp : public IFX_FontMgr {
public:
- CFX_FontMgrImp(IFX_FontSourceEnum* pFontEnum);
+ CFX_FontMgrImp(CFX_FontSourceEnum_File* pFontEnum);
+
virtual void Release();
virtual IFX_Font* GetDefFontByCodePage(uint16_t wCodePage,
uint32_t dwFontStyles,
@@ -239,7 +243,7 @@ class CFX_FontMgrImp : public IFX_FontMgr {
CFX_HashFontMap m_FileAccess2IFXFont;
CFX_FonStreamtMap m_IFXFont2FileRead;
CFX_UnicodeFontMap m_FailedUnicodes2NULL;
- IFX_FontSourceEnum* m_pFontSource;
+ CFX_FontSourceEnum_File* m_pFontSource;
};
#endif
diff --git a/xfa/fgas/xml/fgas_sax_imp.cpp b/xfa/fgas/xml/fgas_sax.cpp
index d47bc44000..b97aeb0a7c 100644
--- a/xfa/fgas/xml/fgas_sax_imp.cpp
+++ b/xfa/fgas/xml/fgas_sax.cpp
@@ -4,19 +4,18 @@
// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-#include "xfa/fgas/xml/fgas_sax_imp.h"
+#include "xfa/fgas/xml/fgas_sax.h"
#include <algorithm>
+#include "xfa/fxfa/include/xfa_checksum.h"
+
namespace {
const uint32_t kSaxFileBufSize = 32768;
} // namespace
-IFX_SAXReader* FX_SAXReader_Create() {
- return new CFX_SAXReader;
-}
CFX_SAXFile::CFX_SAXFile()
: m_pFile(NULL),
m_dwStart(0),
@@ -618,16 +617,16 @@ void CFX_SAXReader::SkipNode() {
ParseChar(m_CurByte);
}
}
+
void CFX_SAXReader::NotifyData() {
- ASSERT(m_pHandler != NULL);
if (m_pCurItem->m_eNode == FX_SAXNODE_Tag)
m_pHandler->OnTagData(m_pCurItem->m_pNode,
m_bCharData ? FX_SAXNODE_CharData : FX_SAXNODE_Text,
CFX_ByteStringC(m_pszData, m_iDataLength),
m_File.m_dwCur + m_dwDataOffset);
}
+
void CFX_SAXReader::NotifyEnter() {
- ASSERT(m_pHandler != NULL);
if (m_pCurItem->m_eNode == FX_SAXNODE_Tag ||
m_pCurItem->m_eNode == FX_SAXNODE_Instruction) {
m_pCurItem->m_pNode =
@@ -635,8 +634,8 @@ void CFX_SAXReader::NotifyEnter() {
m_pCurItem->m_eNode, m_dwNodePos);
}
}
+
void CFX_SAXReader::NotifyAttribute() {
- ASSERT(m_pHandler != NULL);
if (m_pCurItem->m_eNode == FX_SAXNODE_Tag ||
m_pCurItem->m_eNode == FX_SAXNODE_Instruction) {
m_pHandler->OnTagAttribute(m_pCurItem->m_pNode,
@@ -644,29 +643,28 @@ void CFX_SAXReader::NotifyAttribute() {
CFX_ByteStringC(m_pszData, m_iDataLength));
}
}
+
void CFX_SAXReader::NotifyBreak() {
- ASSERT(m_pHandler != NULL);
- if (m_pCurItem->m_eNode == FX_SAXNODE_Tag) {
+ if (m_pCurItem->m_eNode == FX_SAXNODE_Tag)
m_pHandler->OnTagBreak(m_pCurItem->m_pNode);
- }
}
+
void CFX_SAXReader::NotifyClose() {
- ASSERT(m_pHandler != NULL);
if (m_pCurItem->m_eNode == FX_SAXNODE_Tag ||
m_pCurItem->m_eNode == FX_SAXNODE_Instruction) {
m_pHandler->OnTagClose(m_pCurItem->m_pNode, m_dwNodePos);
}
}
+
void CFX_SAXReader::NotifyEnd() {
- ASSERT(m_pHandler != NULL);
- if (m_pCurItem->m_eNode == FX_SAXNODE_Tag) {
- m_pHandler->OnTagEnd(m_pCurItem->m_pNode,
- CFX_ByteStringC(m_pszData, m_iDataLength),
- m_dwNodePos);
- }
+ if (m_pCurItem->m_eNode != FX_SAXNODE_Tag)
+ return;
+
+ m_pHandler->OnTagEnd(m_pCurItem->m_pNode,
+ CFX_ByteStringC(m_pszData, m_iDataLength), m_dwNodePos);
}
+
void CFX_SAXReader::NotifyTargetData() {
- ASSERT(m_pHandler != NULL);
if (m_pCurItem->m_eNode == FX_SAXNODE_Instruction) {
m_pHandler->OnTargetData(m_pCurItem->m_pNode, m_pCurItem->m_eNode,
CFX_ByteStringC(m_pszName, m_iNameLength),
@@ -677,12 +675,14 @@ void CFX_SAXReader::NotifyTargetData() {
m_dwNodePos);
}
}
+
void CFX_SAXReader::SkipCurrentNode() {
- if (!m_pCurItem) {
+ if (!m_pCurItem)
return;
- }
+
m_pCurItem->m_bSkip = TRUE;
}
-void CFX_SAXReader::SetHandler(IFX_SAXReaderHandler* pHandler) {
+
+void CFX_SAXReader::SetHandler(CXFA_SAXReaderHandler* pHandler) {
m_pHandler = pHandler;
}
diff --git a/xfa/fgas/xml/fgas_sax.h b/xfa/fgas/xml/fgas_sax.h
index 501c358e0f..57ff6b2470 100644
--- a/xfa/fgas/xml/fgas_sax.h
+++ b/xfa/fgas/xml/fgas_sax.h
@@ -27,42 +27,137 @@ enum FX_SAXNODE {
FX_SAXNODE_CharData,
};
-class IFX_SAXReaderHandler {
+enum FX_SAXMODE {
+ FX_SAXMODE_Text = 0,
+ FX_SAXMODE_NodeStart,
+ FX_SAXMODE_DeclOrComment,
+ FX_SAXMODE_DeclNode,
+ FX_SAXMODE_Comment,
+ FX_SAXMODE_CommentContent,
+ FX_SAXMODE_TagName,
+ FX_SAXMODE_TagAttributeName,
+ FX_SAXMODE_TagAttributeEqual,
+ FX_SAXMODE_TagAttributeValue,
+ FX_SAXMODE_TagMaybeClose,
+ FX_SAXMODE_TagClose,
+ FX_SAXMODE_TagEnd,
+ FX_SAXMODE_TargetData,
+ FX_SAXMODE_MAX,
+};
+
+class CXFA_SAXReaderHandler;
+
+class CFX_SAXFile {
+ public:
+ CFX_SAXFile();
+ FX_BOOL StartFile(IFX_FileRead* pFile, uint32_t dwStart, uint32_t dwLen);
+ FX_BOOL ReadNextBlock();
+ void Reset();
+ IFX_FileRead* m_pFile;
+ uint32_t m_dwStart;
+ uint32_t m_dwEnd;
+ uint32_t m_dwCur;
+ uint8_t* m_pBuf;
+ uint32_t m_dwBufSize;
+ uint32_t m_dwBufIndex;
+};
+
+class CFX_SAXItem {
public:
- virtual ~IFX_SAXReaderHandler() {}
- virtual void* OnTagEnter(const CFX_ByteStringC& bsTagName,
- FX_SAXNODE eType,
- uint32_t dwStartPos) = 0;
- virtual void OnTagAttribute(void* pTag,
- const CFX_ByteStringC& bsAttri,
- const CFX_ByteStringC& bsValue) = 0;
- virtual void OnTagBreak(void* pTag) = 0;
- virtual void OnTagData(void* pTag,
- FX_SAXNODE eType,
- const CFX_ByteStringC& bsData,
- uint32_t dwStartPos) = 0;
- virtual void OnTagClose(void* pTag, uint32_t dwEndPos) = 0;
- virtual void OnTagEnd(void* pTag,
- const CFX_ByteStringC& bsTagName,
- uint32_t dwEndPos) = 0;
- virtual void OnTargetData(void* pTag,
- FX_SAXNODE eType,
- const CFX_ByteStringC& bsData,
- uint32_t dwStartPos) = 0;
+ CFX_SAXItem()
+ : m_pNode(NULL),
+ m_eNode(FX_SAXNODE_Unknown),
+ m_dwID(0),
+ m_bSkip(FALSE),
+ m_pPrev(NULL),
+ m_pNext(NULL) {}
+ void* m_pNode;
+ FX_SAXNODE m_eNode;
+ uint32_t m_dwID;
+ FX_BOOL m_bSkip;
+ CFX_SAXItem* m_pPrev;
+ CFX_SAXItem* m_pNext;
};
-class IFX_SAXReader {
+class CFX_SAXCommentContext {
public:
- virtual ~IFX_SAXReader() {}
- virtual void Release() = 0;
- virtual int32_t StartParse(IFX_FileRead* pFile,
- uint32_t dwStart = 0,
- uint32_t dwLen = -1,
- uint32_t dwParseMode = 0) = 0;
- virtual int32_t ContinueParse(IFX_Pause* pPause = NULL) = 0;
- virtual void SkipCurrentNode() = 0;
- virtual void SetHandler(IFX_SAXReaderHandler* pHandler) = 0;
+ CFX_SAXCommentContext() : m_iHeaderCount(0), m_iTailCount(0) {}
+ int32_t m_iHeaderCount;
+ int32_t m_iTailCount;
+};
+
+class CFX_SAXReader {
+ public:
+ CFX_SAXReader();
+ ~CFX_SAXReader();
+
+ void Release() { delete this; }
+ int32_t StartParse(IFX_FileRead* pFile,
+ uint32_t dwStart = 0,
+ uint32_t dwLen = -1,
+ uint32_t dwParseMode = 0);
+ int32_t ContinueParse(IFX_Pause* pPause = NULL);
+ void SkipCurrentNode();
+ void SetHandler(CXFA_SAXReaderHandler* pHandler);
+ void AppendData(uint8_t ch);
+ void AppendName(uint8_t ch);
+ void ParseText();
+ void ParseNodeStart();
+ void ParseInstruction();
+ void ParseDeclOrComment();
+ void ParseDeclNode();
+ void ParseComment();
+ void ParseCommentContent();
+ void ParseTagName();
+ void ParseTagAttributeName();
+ void ParseTagAttributeEqual();
+ void ParseTagAttributeValue();
+ void ParseMaybeClose();
+ void ParseTagClose();
+ void ParseTagEnd();
+ void ParseTargetData();
+
+ protected:
+ void Reset();
+ void Push();
+ void Pop();
+ FX_BOOL SkipSpace(uint8_t ch);
+ void SkipNode();
+ void NotifyData();
+ void NotifyEnter();
+ void NotifyAttribute();
+ void NotifyBreak();
+ void NotifyClose();
+ void NotifyEnd();
+ void NotifyTargetData();
+ void ReallocDataBuffer();
+ void ReallocNameBuffer();
+ void ParseChar(uint8_t ch);
+
+ CFX_SAXFile m_File;
+ CXFA_SAXReaderHandler* m_pHandler;
+ int32_t m_iState;
+ CFX_SAXItem* m_pRoot;
+ CFX_SAXItem* m_pCurItem;
+ uint32_t m_dwItemID;
+ FX_SAXMODE m_eMode;
+ FX_SAXMODE m_ePrevMode;
+ FX_BOOL m_bCharData;
+ uint8_t m_CurByte;
+ uint32_t m_dwDataOffset;
+ CFX_ByteArray m_SkipStack;
+ uint8_t m_SkipChar;
+ uint32_t m_dwNodePos;
+ uint8_t* m_pszData;
+ int32_t m_iDataSize;
+ int32_t m_iDataLength;
+ int32_t m_iEntityStart;
+ int32_t m_iDataPos;
+ uint8_t* m_pszName;
+ int32_t m_iNameSize;
+ int32_t m_iNameLength;
+ uint32_t m_dwParseMode;
+ CFX_SAXCommentContext* m_pCommentContext;
};
-IFX_SAXReader* FX_SAXReader_Create();
#endif // XFA_FGAS_XML_FGAS_SAX_H_
diff --git a/xfa/fgas/xml/fgas_sax_imp.h b/xfa/fgas/xml/fgas_sax_imp.h
deleted file mode 100644
index a52d8356ee..0000000000
--- a/xfa/fgas/xml/fgas_sax_imp.h
+++ /dev/null
@@ -1,141 +0,0 @@
-// Copyright 2014 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 XFA_FGAS_XML_FGAS_SAX_IMP_H_
-#define XFA_FGAS_XML_FGAS_SAX_IMP_H_
-
-#include "xfa/fgas/xml/fgas_sax.h"
-
-class CFX_SAXFile {
- public:
- CFX_SAXFile();
- FX_BOOL StartFile(IFX_FileRead* pFile, uint32_t dwStart, uint32_t dwLen);
- FX_BOOL ReadNextBlock();
- void Reset();
- IFX_FileRead* m_pFile;
- uint32_t m_dwStart;
- uint32_t m_dwEnd;
- uint32_t m_dwCur;
- uint8_t* m_pBuf;
- uint32_t m_dwBufSize;
- uint32_t m_dwBufIndex;
-};
-
-enum FX_SAXMODE {
- FX_SAXMODE_Text = 0,
- FX_SAXMODE_NodeStart,
- FX_SAXMODE_DeclOrComment,
- FX_SAXMODE_DeclNode,
- FX_SAXMODE_Comment,
- FX_SAXMODE_CommentContent,
- FX_SAXMODE_TagName,
- FX_SAXMODE_TagAttributeName,
- FX_SAXMODE_TagAttributeEqual,
- FX_SAXMODE_TagAttributeValue,
- FX_SAXMODE_TagMaybeClose,
- FX_SAXMODE_TagClose,
- FX_SAXMODE_TagEnd,
- FX_SAXMODE_TargetData,
- FX_SAXMODE_MAX,
-};
-
-class CFX_SAXItem {
- public:
- CFX_SAXItem()
- : m_pNode(NULL),
- m_eNode(FX_SAXNODE_Unknown),
- m_dwID(0),
- m_bSkip(FALSE),
- m_pPrev(NULL),
- m_pNext(NULL) {}
- void* m_pNode;
- FX_SAXNODE m_eNode;
- uint32_t m_dwID;
- FX_BOOL m_bSkip;
- CFX_SAXItem* m_pPrev;
- CFX_SAXItem* m_pNext;
-};
-
-class CFX_SAXCommentContext {
- public:
- CFX_SAXCommentContext() : m_iHeaderCount(0), m_iTailCount(0) {}
- int32_t m_iHeaderCount;
- int32_t m_iTailCount;
-};
-
-class CFX_SAXReader : public IFX_SAXReader {
- public:
- CFX_SAXReader();
- ~CFX_SAXReader();
- virtual void Release() { delete this; }
- virtual int32_t StartParse(IFX_FileRead* pFile,
- uint32_t dwStart = 0,
- uint32_t dwLen = -1,
- uint32_t dwParseMode = 0);
- virtual int32_t ContinueParse(IFX_Pause* pPause = NULL);
- virtual void SkipCurrentNode();
- virtual void SetHandler(IFX_SAXReaderHandler* pHandler);
- void AppendData(uint8_t ch);
- void AppendName(uint8_t ch);
- void ParseText();
- void ParseNodeStart();
- void ParseInstruction();
- void ParseDeclOrComment();
- void ParseDeclNode();
- void ParseComment();
- void ParseCommentContent();
- void ParseTagName();
- void ParseTagAttributeName();
- void ParseTagAttributeEqual();
- void ParseTagAttributeValue();
- void ParseMaybeClose();
- void ParseTagClose();
- void ParseTagEnd();
- void ParseTargetData();
-
- protected:
- CFX_SAXFile m_File;
- IFX_SAXReaderHandler* m_pHandler;
- int32_t m_iState;
- CFX_SAXItem* m_pRoot;
- CFX_SAXItem* m_pCurItem;
- uint32_t m_dwItemID;
- FX_SAXMODE m_eMode;
- FX_SAXMODE m_ePrevMode;
- FX_BOOL m_bCharData;
- uint8_t m_CurByte;
- uint32_t m_dwDataOffset;
- CFX_ByteArray m_SkipStack;
- uint8_t m_SkipChar;
- uint32_t m_dwNodePos;
- uint8_t* m_pszData;
- int32_t m_iDataSize;
- int32_t m_iDataLength;
- int32_t m_iEntityStart;
- int32_t m_iDataPos;
- uint8_t* m_pszName;
- int32_t m_iNameSize;
- int32_t m_iNameLength;
- uint32_t m_dwParseMode;
- CFX_SAXCommentContext* m_pCommentContext;
- void Reset();
- void Push();
- void Pop();
- FX_BOOL SkipSpace(uint8_t ch);
- void SkipNode();
- void NotifyData();
- void NotifyEnter();
- void NotifyAttribute();
- void NotifyBreak();
- void NotifyClose();
- void NotifyEnd();
- void NotifyTargetData();
- void ReallocDataBuffer();
- void ReallocNameBuffer();
- void ParseChar(uint8_t ch);
-};
-
-#endif // XFA_FGAS_XML_FGAS_SAX_IMP_H_
diff --git a/xfa/fwl/theme/cfwl_widgettp.cpp b/xfa/fwl/theme/cfwl_widgettp.cpp
index 2fc8036763..5332b3bebd 100644
--- a/xfa/fwl/theme/cfwl_widgettp.cpp
+++ b/xfa/fwl/theme/cfwl_widgettp.cpp
@@ -9,6 +9,7 @@
#include <algorithm>
#include "xfa/fde/tto/fde_textout.h"
+#include "xfa/fgas/font/fgas_stdfontmgr.h"
#include "xfa/fwl/core/cfwl_themebackground.h"
#include "xfa/fwl/core/cfwl_themepart.h"
#include "xfa/fwl/core/cfwl_themetext.h"
@@ -690,7 +691,7 @@ FX_BOOL CFWL_FontData::LoadFont(const CFX_WideStringC& wsFontFamily,
#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_
m_pFontMgr = IFX_FontMgr::Create(FX_GetDefFontEnumerator());
#else
- m_pFontSource = FX_CreateDefaultFontSourceEnum();
+ m_pFontSource = new CFX_FontSourceEnum_File;
m_pFontMgr = IFX_FontMgr::Create(m_pFontSource);
#endif
}
diff --git a/xfa/fwl/theme/cfwl_widgettp.h b/xfa/fwl/theme/cfwl_widgettp.h
index 4e640370b8..8e5c8ba283 100644
--- a/xfa/fwl/theme/cfwl_widgettp.h
+++ b/xfa/fwl/theme/cfwl_widgettp.h
@@ -101,7 +101,7 @@ class CFWL_ThemePart;
class CFWL_ThemeText;
#if _FXM_PLATFORM_ != _FXM_PLATFORM_WINDOWS_
-class IFX_FontSourceEnum;
+class CFX_FontSourceEnum_File;
#endif
class CFWL_WidgetTP {
@@ -270,7 +270,7 @@ class CFWL_FontData {
IFX_Font* m_pFont;
IFX_FontMgr* m_pFontMgr;
#if _FXM_PLATFORM_ != _FXM_PLATFORM_WINDOWS_
- IFX_FontSourceEnum* m_pFontSource;
+ CFX_FontSourceEnum_File* m_pFontSource;
#endif
};
diff --git a/xfa/fxfa/app/xfa_checksum.cpp b/xfa/fxfa/app/xfa_checksum.cpp
index 59bf37b6a5..195033bfab 100644
--- a/xfa/fxfa/app/xfa_checksum.cpp
+++ b/xfa/fxfa/app/xfa_checksum.cpp
@@ -126,30 +126,28 @@ void CXFA_SAXReaderHandler::UpdateChecksum(FX_BOOL bCheckSpace) {
}
CXFA_ChecksumContext::CXFA_ChecksumContext()
- : m_pSAXReader(NULL), m_pByteContext(NULL) {}
+ : m_pSAXReader(nullptr), m_pByteContext(nullptr) {}
+
CXFA_ChecksumContext::~CXFA_ChecksumContext() {
FinishChecksum();
}
-FX_BOOL CXFA_ChecksumContext::StartChecksum() {
+
+void CXFA_ChecksumContext::StartChecksum() {
FinishChecksum();
m_pByteContext = FX_Alloc(uint8_t, 128);
CRYPT_SHA1Start(m_pByteContext);
m_bsChecksum.clear();
- m_pSAXReader = FX_SAXReader_Create();
- return m_pSAXReader != NULL;
+ m_pSAXReader = new CFX_SAXReader;
}
+
FX_BOOL CXFA_ChecksumContext::UpdateChecksum(IFX_FileRead* pSrcFile,
FX_FILESIZE offset,
size_t size) {
- if (m_pSAXReader == NULL) {
- return FALSE;
- }
- if (pSrcFile == NULL) {
+ if (!m_pSAXReader || !pSrcFile)
return FALSE;
- }
- if (size < 1) {
+ if (size < 1)
size = pSrcFile->GetSize();
- }
+
CXFA_SAXReaderHandler handler(this);
m_pSAXReader->SetHandler(&handler);
if (m_pSAXReader->StartParse(
@@ -161,6 +159,7 @@ FX_BOOL CXFA_ChecksumContext::UpdateChecksum(IFX_FileRead* pSrcFile,
}
return m_pSAXReader->ContinueParse(NULL) > 99;
}
+
void CXFA_ChecksumContext::FinishChecksum() {
if (m_pSAXReader) {
m_pSAXReader->Release();
diff --git a/xfa/fxfa/app/xfa_ffapp.cpp b/xfa/fxfa/app/xfa_ffapp.cpp
index 71b8fc44b1..987b3e8efd 100644
--- a/xfa/fxfa/app/xfa_ffapp.cpp
+++ b/xfa/fxfa/app/xfa_ffapp.cpp
@@ -8,6 +8,7 @@
#include <algorithm>
+#include "xfa/fgas/font/fgas_stdfontmgr.h"
#include "xfa/fwl/core/ifwl_widgetmgrdelegate.h"
#include "xfa/fxfa/app/xfa_fwladapter.h"
#include "xfa/fxfa/app/xfa_fwltheme.h"
@@ -146,7 +147,7 @@ IFX_FontMgr* CXFA_FFApp::GetFDEFontMgr() {
#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_
m_pFDEFontMgr = IFX_FontMgr::Create(FX_GetDefFontEnumerator());
#else
- m_pFontSource = FX_CreateDefaultFontSourceEnum();
+ m_pFontSource = new CFX_FontSourceEnum_File;
m_pFDEFontMgr = IFX_FontMgr::Create(m_pFontSource);
#endif
}
diff --git a/xfa/fxfa/app/xfa_fontmgr.cpp b/xfa/fxfa/app/xfa_fontmgr.cpp
index 7c6d5cddec..69883674e5 100644
--- a/xfa/fxfa/app/xfa_fontmgr.cpp
+++ b/xfa/fxfa/app/xfa_fontmgr.cpp
@@ -1874,6 +1874,7 @@ IFX_Font* CXFA_PDFFontMgr::FindFont(CFX_ByteString strPsName,
}
return NULL;
}
+
IFX_Font* CXFA_PDFFontMgr::GetFont(const CFX_WideStringC& wsFontFamily,
uint32_t dwFontStyles,
CPDF_Font** pPDFFont,
@@ -1894,6 +1895,7 @@ IFX_Font* CXFA_PDFFontMgr::GetFont(const CFX_WideStringC& wsFontFamily,
m_FontMap[strKey] = pFont;
return pFont;
}
+
CFX_ByteString CXFA_PDFFontMgr::PsNameToFontName(
const CFX_ByteString& strPsName,
FX_BOOL bBold,
@@ -1907,6 +1909,7 @@ CFX_ByteString CXFA_PDFFontMgr::PsNameToFontName(
}
return strPsName;
}
+
FX_BOOL CXFA_PDFFontMgr::PsNameMatchDRFontName(
const CFX_ByteStringC& bsPsName,
FX_BOOL bBold,
@@ -1996,10 +1999,13 @@ FX_BOOL CXFA_PDFFontMgr::GetCharWidth(IFX_Font* pFont,
iWidth = pPDFFont->GetCharWidthF(wUnicode);
return TRUE;
}
-CXFA_FontMgr::CXFA_FontMgr() : m_pDefFontMgr(NULL) {}
+
+CXFA_FontMgr::CXFA_FontMgr() : m_pDefFontMgr(nullptr) {}
+
CXFA_FontMgr::~CXFA_FontMgr() {
DelAllMgrMap();
}
+
IFX_Font* CXFA_FontMgr::GetFont(CXFA_FFDoc* hDoc,
const CFX_WideStringC& wsFontFamily,
uint32_t dwFontStyles,
diff --git a/xfa/fxfa/include/xfa_checksum.h b/xfa/fxfa/include/xfa_checksum.h
index 6c24b2a5af..6c7ea7a04c 100644
--- a/xfa/fxfa/include/xfa_checksum.h
+++ b/xfa/fxfa/include/xfa_checksum.h
@@ -16,37 +16,41 @@ class CXFA_ChecksumContext;
class CXFA_SAXContext {
public:
CXFA_SAXContext() : m_eNode(FX_SAXNODE_Unknown) {}
+
CFX_ByteTextBuf m_TextBuf;
CFX_ByteString m_bsTagName;
FX_SAXNODE m_eNode;
};
-class CXFA_SAXReaderHandler : public IFX_SAXReaderHandler {
+
+class CXFA_SAXReaderHandler {
public:
CXFA_SAXReaderHandler(CXFA_ChecksumContext* pContext);
- virtual ~CXFA_SAXReaderHandler();
- virtual void* OnTagEnter(const CFX_ByteStringC& bsTagName,
- FX_SAXNODE eType,
- uint32_t dwStartPos);
- virtual void OnTagAttribute(void* pTag,
- const CFX_ByteStringC& bsAttri,
- const CFX_ByteStringC& bsValue);
- virtual void OnTagBreak(void* pTag);
- virtual void OnTagData(void* pTag,
- FX_SAXNODE eType,
- const CFX_ByteStringC& bsData,
- uint32_t dwStartPos);
- virtual void OnTagClose(void* pTag, uint32_t dwEndPos);
- virtual void OnTagEnd(void* pTag,
- const CFX_ByteStringC& bsTagName,
- uint32_t dwEndPos);
+ ~CXFA_SAXReaderHandler();
- virtual void OnTargetData(void* pTag,
- FX_SAXNODE eType,
- const CFX_ByteStringC& bsData,
- uint32_t dwStartPos);
+ void* OnTagEnter(const CFX_ByteStringC& bsTagName,
+ FX_SAXNODE eType,
+ uint32_t dwStartPos);
+ void OnTagAttribute(void* pTag,
+ const CFX_ByteStringC& bsAttri,
+ const CFX_ByteStringC& bsValue);
+ void OnTagBreak(void* pTag);
+ void OnTagData(void* pTag,
+ FX_SAXNODE eType,
+ const CFX_ByteStringC& bsData,
+ uint32_t dwStartPos);
+ void OnTagClose(void* pTag, uint32_t dwEndPos);
+ void OnTagEnd(void* pTag,
+ const CFX_ByteStringC& bsTagName,
+ uint32_t dwEndPos);
+
+ void OnTargetData(void* pTag,
+ FX_SAXNODE eType,
+ const CFX_ByteStringC& bsData,
+ uint32_t dwStartPos);
protected:
void UpdateChecksum(FX_BOOL bCheckSpace);
+
CXFA_ChecksumContext* m_pContext;
CXFA_SAXContext m_SAXContext;
};
@@ -57,7 +61,7 @@ class CXFA_ChecksumContext {
~CXFA_ChecksumContext();
void Release() { delete this; }
- FX_BOOL StartChecksum();
+ void StartChecksum();
FX_BOOL UpdateChecksum(IFX_FileRead* pSrcFile,
FX_FILESIZE offset = 0,
size_t size = 0);
@@ -66,7 +70,7 @@ class CXFA_ChecksumContext {
void Update(const CFX_ByteStringC& bsText);
protected:
- IFX_SAXReader* m_pSAXReader;
+ CFX_SAXReader* m_pSAXReader;
uint8_t* m_pByteContext;
CFX_ByteString m_bsChecksum;
};
diff --git a/xfa/fxfa/include/xfa_ffapp.h b/xfa/fxfa/include/xfa_ffapp.h
index cad4e88e58..8ecc89df13 100644
--- a/xfa/fxfa/include/xfa_ffapp.h
+++ b/xfa/fxfa/include/xfa_ffapp.h
@@ -67,7 +67,7 @@ class CXFA_FFApp : public IFWL_AdapterNative {
IXFA_AppProvider* m_pProvider;
CXFA_FontMgr* m_pFontMgr;
#if _FXM_PLATFORM_ != _FXM_PLATFORM_WINDOWS_
- IFX_FontSourceEnum* m_pFontSource;
+ CFX_FontSourceEnum_File* m_pFontSource;
#endif
CXFA_FWLAdapterWidgetMgr* m_pAdapterWidgetMgr;
IFWL_WidgetMgrDelegate* m_pWidgetMgrDelegate;
diff --git a/xfa/fxfa/include/xfa_fontmgr.h b/xfa/fxfa/include/xfa_fontmgr.h
index cab3cfb219..8b3e20f5e3 100644
--- a/xfa/fxfa/include/xfa_fontmgr.h
+++ b/xfa/fxfa/include/xfa_fontmgr.h
@@ -42,10 +42,11 @@ class CXFA_DefFontMgr {
CFX_PtrArray m_CacheFonts;
};
-class CXFA_PDFFontMgr : public IFX_FontProvider {
+class CXFA_PDFFontMgr {
public:
CXFA_PDFFontMgr(CXFA_FFDoc* pDoc);
~CXFA_PDFFontMgr();
+
IFX_Font* GetFont(const CFX_WideStringC& wsFontFamily,
uint32_t dwFontStyles,
CPDF_Font** pPDFFont,