Index: xfa/fxfa/app/xfa_textlayout.cpp |
diff --git a/xfa/fxfa/app/xfa_textlayout.cpp b/xfa/fxfa/app/xfa_textlayout.cpp |
index 4e23fc39f9843577b04566abd1b66e0374624978..8b2871e03c5fd1b777dfc827edef8a62211c2aec 100644 |
--- a/xfa/fxfa/app/xfa_textlayout.cpp |
+++ b/xfa/fxfa/app/xfa_textlayout.cpp |
@@ -21,6 +21,31 @@ |
#include "xfa/fxfa/include/xfa_ffdoc.h" |
#include "xfa/fxfa/include/xfa_fontmgr.h" |
+CXFA_CSSTagProvider::CXFA_CSSTagProvider() |
+ : m_bTagAvailable(FALSE), m_bContent(FALSE) {} |
+ |
+CXFA_CSSTagProvider::~CXFA_CSSTagProvider() {} |
+ |
+XFA_TextPiece::XFA_TextPiece() |
+ : pszText(nullptr), pFont(nullptr), pLinkData(nullptr) {} |
+ |
+XFA_TextPiece::~XFA_TextPiece() { |
+ if (pLinkData) |
+ pLinkData->Release(); |
+} |
+ |
+CXFA_TextParseContext::CXFA_TextParseContext() |
+ : m_pParentStyle(nullptr), |
+ m_ppMatchedDecls(nullptr), |
+ m_dwMatchedDecls(0), |
+ m_eDisplay(FDE_CSSDISPLAY_None) {} |
+ |
+CXFA_TextParseContext::~CXFA_TextParseContext() { |
+ if (m_pParentStyle) |
+ m_pParentStyle->Release(); |
+ FX_Free(m_ppMatchedDecls); |
+} |
+ |
void CXFA_TextParseContext::SetDecls(const CFDE_CSSDeclaration** ppDeclArray, |
int32_t iDeclCount) { |
if (iDeclCount <= 0 || !ppDeclArray) |
@@ -85,6 +110,22 @@ void CXFA_TextParser::InitCSSData(CXFA_TextProvider* pTextProvider) { |
m_pSelector->UpdateStyleIndex(FDE_CSSMEDIATYPE_ALL); |
} |
} |
+ |
+CXFA_LoaderContext::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() {} |
+ |
IFDE_CSSStyleSheet* CXFA_TextParser::LoadDefaultSheetStyle() { |
static const FX_WCHAR s_pStyle[] = |
L"html,body,ol,p,ul{display:block}" |
@@ -1945,3 +1986,106 @@ FX_BOOL CXFA_TextLayout::ToRun(const XFA_TextPiece* pPiece, FX_RTFTEXTOBJ& tr) { |
tr.iHorizontalScale = pPiece->iHorScale; |
return TRUE; |
} |
+ |
+CXFA_LinkUserData::CXFA_LinkUserData(IFX_MemoryAllocator* pAllocator, |
+ FX_WCHAR* pszText) |
+ : m_pAllocator(pAllocator), m_dwRefCount(1), m_wsURLContent(pszText) {} |
+ |
+CXFA_LinkUserData::~CXFA_LinkUserData() {} |
+ |
+uint32_t CXFA_LinkUserData::Retain() { |
+ return ++m_dwRefCount; |
+} |
+ |
+uint32_t CXFA_LinkUserData::Release() { |
+ uint32_t dwRefCount = --m_dwRefCount; |
+ if (dwRefCount <= 0) |
+ FXTARGET_DeleteWith(CXFA_LinkUserData, m_pAllocator, this); |
+ return dwRefCount; |
+} |
+ |
+const FX_WCHAR* CXFA_LinkUserData::GetLinkURL() { |
+ return m_wsURLContent.c_str(); |
+} |
+ |
+CXFA_TextUserData::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(); |
+} |
+ |
+CXFA_TextUserData::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::~CXFA_TextUserData() { |
+ if (m_pStyle) |
+ m_pStyle->Release(); |
+ if (m_pLinkData) |
+ m_pLinkData->Release(); |
+} |
+ |
+uint32_t CXFA_TextUserData::Retain() { |
+ return ++m_dwRefCount; |
+} |
+ |
+uint32_t CXFA_TextUserData::Release() { |
+ uint32_t dwRefCount = --m_dwRefCount; |
+ if (dwRefCount == 0) |
+ FXTARGET_DeleteWith(CXFA_TextUserData, m_pAllocator, this); |
+ return dwRefCount; |
+} |
+ |
+CXFA_PieceLine::CXFA_PieceLine() {} |
+ |
+CXFA_PieceLine::~CXFA_PieceLine() {} |
+ |
+CXFA_TextTabstopsContext::CXFA_TextTabstopsContext() |
+ : m_iTabCount(0), |
+ m_iTabIndex(-1), |
+ m_bTabstops(FALSE), |
+ m_fTabWidth(0), |
+ m_fLeft(0) {} |
+ |
+CXFA_TextTabstopsContext::~CXFA_TextTabstopsContext() {} |
+ |
+void CXFA_TextTabstopsContext::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 CXFA_TextTabstopsContext::RemoveAll() { |
+ m_tabstops.RemoveAll(); |
+ m_iTabCount = 0; |
+} |
+ |
+void CXFA_TextTabstopsContext::Reset() { |
+ m_iTabIndex = -1; |
+ m_bTabstops = FALSE; |
+ m_fTabWidth = 0; |
+ m_fLeft = 0; |
+} |