Index: xfa/fxfa/app/xfa_textlayout.h |
diff --git a/xfa/fxfa/app/xfa_textlayout.h b/xfa/fxfa/app/xfa_textlayout.h |
index 842c6ec7313f44f1e6ceaf09d369cc88ab53083b..00e7209e9772429dbbd5f55425c2b7e31e55a28e 100644 |
--- a/xfa/fxfa/app/xfa_textlayout.h |
+++ b/xfa/fxfa/app/xfa_textlayout.h |
@@ -12,8 +12,8 @@ |
#include "xfa/fde/css/fde_css.h" |
#include "xfa/fde/fde_gedevice.h" |
-#include "xfa/fgas/layout/fgas_rtfbreak.h" |
#include "xfa/fxfa/include/xfa_ffdoc.h" |
+#include "xfa/fgas/layout/fgas_rtfbreak.h" |
#include "xfa/fxfa/parser/xfa_object.h" |
#define XFA_LOADERCNTXTFLG_FILTERSPACE 0x001 |
@@ -26,12 +26,13 @@ class CXFA_TextTabstopsContext; |
class CXFA_CSSTagProvider { |
public: |
- CXFA_CSSTagProvider() : m_bTagAvailable(FALSE), m_bContent(FALSE) {} |
- ~CXFA_CSSTagProvider() {} |
+ using AttributeMap = std::map<CFX_WideString, CFX_WideString>; |
+ |
+ CXFA_CSSTagProvider(); |
+ ~CXFA_CSSTagProvider(); |
CFX_WideString GetTagName() { return m_wsTagName; } |
- using AttributeMap = std::map<CFX_WideString, CFX_WideString>; |
AttributeMap::iterator begin() { return m_Attributes.begin(); } |
AttributeMap::iterator end() { return m_Attributes.end(); } |
@@ -53,16 +54,9 @@ class CXFA_CSSTagProvider { |
class CXFA_TextParseContext : public CFX_Target { |
public: |
- CXFA_TextParseContext() |
- : m_pParentStyle(nullptr), |
- m_ppMatchedDecls(nullptr), |
- m_dwMatchedDecls(0), |
- m_eDisplay(FDE_CSSDISPLAY_None) {} |
- ~CXFA_TextParseContext() { |
- if (m_pParentStyle) |
- m_pParentStyle->Release(); |
- FX_Free(m_ppMatchedDecls); |
- } |
+ CXFA_TextParseContext(); |
+ ~CXFA_TextParseContext() override; |
+ |
void SetDisplay(FDE_CSSDISPLAY eDisplay) { m_eDisplay = eDisplay; } |
FDE_CSSDISPLAY GetDisplay() const { return m_eDisplay; } |
void SetDecls(const CFDE_CSSDeclaration** ppDeclArray, int32_t iDeclCount); |
@@ -70,6 +64,7 @@ class CXFA_TextParseContext : public CFX_Target { |
return const_cast<const CFDE_CSSDeclaration**>(m_ppMatchedDecls); |
} |
uint32_t CountDecls() const { return m_dwMatchedDecls; } |
+ |
IFDE_CSSComputedStyle* m_pParentStyle; |
protected: |
@@ -82,6 +77,7 @@ class CXFA_TextParser { |
public: |
CXFA_TextParser(); |
virtual ~CXFA_TextParser(); |
+ |
void Reset(); |
void DoParse(CFDE_XMLNode* pXMLContainer, CXFA_TextProvider* pTextProvider); |
IFDE_CSSComputedStyle* CreateRootStyle(CXFA_TextProvider* pTextProvider); |
@@ -143,18 +139,9 @@ class CXFA_TextParser { |
class CXFA_LoaderContext { |
public: |
- CXFA_LoaderContext() |
- : m_bSaveLineHeight(FALSE), |
- m_fWidth(0), |
- m_fHeight(0), |
- m_fLastPos(0), |
- m_fStartLineOffset(0), |
- m_iChar(0), |
- m_iTotalLines(-1), |
- m_pXMLNode(NULL), |
- m_pNode(NULL), |
- m_pParentStyle(NULL), |
- m_dwFlags(0) {} |
+ CXFA_LoaderContext(); |
+ ~CXFA_LoaderContext(); |
+ |
FX_BOOL m_bSaveLineHeight; |
FX_FLOAT m_fWidth; |
FX_FLOAT m_fHeight; |
@@ -173,21 +160,14 @@ class CXFA_LoaderContext { |
class CXFA_LinkUserData : public IFX_Retainable, public CFX_Target { |
public: |
- CXFA_LinkUserData(IFX_MemoryAllocator* pAllocator, FX_WCHAR* pszText) |
- : m_pAllocator(pAllocator), m_dwRefCount(1), m_wsURLContent(pszText) {} |
- |
- ~CXFA_LinkUserData() override {} |
+ CXFA_LinkUserData(IFX_MemoryAllocator* pAllocator, FX_WCHAR* pszText); |
+ ~CXFA_LinkUserData() override; |
// IFX_Retainable: |
- uint32_t Retain() override { return ++m_dwRefCount; } |
- uint32_t Release() override { |
- uint32_t dwRefCount = --m_dwRefCount; |
- if (dwRefCount <= 0) |
- FXTARGET_DeleteWith(CXFA_LinkUserData, m_pAllocator, this); |
- return dwRefCount; |
- } |
+ uint32_t Retain() override; |
+ uint32_t Release() override; |
- const FX_WCHAR* GetLinkURL() { return m_wsURLContent.c_str(); } |
+ const FX_WCHAR* GetLinkURL(); |
protected: |
IFX_MemoryAllocator* m_pAllocator; |
@@ -198,41 +178,15 @@ class CXFA_LinkUserData : public IFX_Retainable, public CFX_Target { |
class CXFA_TextUserData : public IFX_Retainable, public CFX_Target { |
public: |
CXFA_TextUserData(IFX_MemoryAllocator* pAllocator, |
- IFDE_CSSComputedStyle* pStyle) |
- : m_pStyle(pStyle), |
- m_pLinkData(nullptr), |
- m_pAllocator(pAllocator), |
- m_dwRefCount(0) { |
- ASSERT(m_pAllocator); |
- if (m_pStyle) |
- m_pStyle->Retain(); |
- } |
+ IFDE_CSSComputedStyle* pStyle); |
CXFA_TextUserData(IFX_MemoryAllocator* pAllocator, |
IFDE_CSSComputedStyle* pStyle, |
- CXFA_LinkUserData* pLinkData) |
- : m_pStyle(pStyle), |
- m_pLinkData(pLinkData), |
- m_pAllocator(pAllocator), |
- m_dwRefCount(0) { |
- ASSERT(m_pAllocator); |
- if (m_pStyle) |
- m_pStyle->Retain(); |
- } |
- ~CXFA_TextUserData() override { |
- if (m_pStyle) |
- m_pStyle->Release(); |
- if (m_pLinkData) |
- m_pLinkData->Release(); |
- } |
+ CXFA_LinkUserData* pLinkData); |
+ ~CXFA_TextUserData() override; |
// IFX_Retainable: |
- uint32_t Retain() override { return ++m_dwRefCount; } |
- uint32_t Release() override { |
- uint32_t dwRefCount = --m_dwRefCount; |
- if (dwRefCount == 0) |
- FXTARGET_DeleteWith(CXFA_TextUserData, m_pAllocator, this); |
- return dwRefCount; |
- } |
+ uint32_t Retain() override; |
+ uint32_t Release() override; |
IFDE_CSSComputedStyle* m_pStyle; |
CXFA_LinkUserData* m_pLinkData; |
@@ -244,11 +198,8 @@ class CXFA_TextUserData : public IFX_Retainable, public CFX_Target { |
class XFA_TextPiece : public CFX_Target { |
public: |
- XFA_TextPiece() : pszText(nullptr), pFont(nullptr), pLinkData(nullptr) {} |
- ~XFA_TextPiece() override { |
- if (pLinkData) |
- pLinkData->Release(); |
- } |
+ XFA_TextPiece(); |
+ ~XFA_TextPiece() override; |
FX_WCHAR* pszText; |
int32_t iChars; |
@@ -269,7 +220,9 @@ typedef CFX_ArrayTemplate<XFA_TextPiece*> CXFA_PieceArray; |
class CXFA_PieceLine : public CFX_Target { |
public: |
- CXFA_PieceLine() {} |
+ CXFA_PieceLine(); |
+ ~CXFA_PieceLine() override; |
+ |
CXFA_PieceArray m_textPieces; |
CFX_Int32Array m_charCounts; |
}; |
@@ -282,37 +235,13 @@ struct XFA_TABSTOPS { |
class CXFA_TextTabstopsContext { |
public: |
- CXFA_TextTabstopsContext() |
- : m_iTabCount(0), |
- m_iTabIndex(-1), |
- m_bTabstops(FALSE), |
- m_fTabWidth(0), |
- m_fLeft(0) {} |
- void Append(uint32_t dwAlign, FX_FLOAT fTabstops) { |
- int32_t i = 0; |
- for (i = 0; i < m_iTabCount; i++) { |
- XFA_TABSTOPS* pTabstop = m_tabstops.GetDataPtr(i); |
- if (fTabstops < pTabstop->fTabstops) { |
- break; |
- } |
- } |
- m_tabstops.InsertSpaceAt(i, 1); |
- XFA_TABSTOPS tabstop; |
- tabstop.dwAlign = dwAlign; |
- tabstop.fTabstops = fTabstops; |
- m_tabstops.SetAt(i, tabstop); |
- m_iTabCount++; |
- } |
- void RemoveAll() { |
- m_tabstops.RemoveAll(); |
- m_iTabCount = 0; |
- } |
- void Reset() { |
- m_iTabIndex = -1; |
- m_bTabstops = FALSE; |
- m_fTabWidth = 0; |
- m_fLeft = 0; |
- } |
+ CXFA_TextTabstopsContext(); |
+ ~CXFA_TextTabstopsContext(); |
+ |
+ void Append(uint32_t dwAlign, FX_FLOAT fTabstops); |
+ void RemoveAll(); |
+ void Reset(); |
+ |
CFX_ArrayTemplate<XFA_TABSTOPS> m_tabstops; |
int32_t m_iTabCount; |
int32_t m_iTabIndex; |