OLD | NEW |
1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
6 | 6 |
7 #include "xfa/fxfa/app/xfa_textlayout.h" | 7 #include "xfa/fxfa/app/xfa_textlayout.h" |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 | 10 |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
89 m_pAllocator.reset(); | 89 m_pAllocator.reset(); |
90 } | 90 } |
91 void CXFA_TextParser::InitCSSData(CXFA_TextProvider* pTextProvider) { | 91 void CXFA_TextParser::InitCSSData(CXFA_TextProvider* pTextProvider) { |
92 if (!pTextProvider) | 92 if (!pTextProvider) |
93 return; | 93 return; |
94 | 94 |
95 if (!m_pSelector) { | 95 if (!m_pSelector) { |
96 CXFA_FFDoc* pDoc = pTextProvider->GetDocNode(); | 96 CXFA_FFDoc* pDoc = pTextProvider->GetDocNode(); |
97 IFGAS_FontMgr* pFontMgr = pDoc->GetApp()->GetFDEFontMgr(); | 97 IFGAS_FontMgr* pFontMgr = pDoc->GetApp()->GetFDEFontMgr(); |
98 ASSERT(pFontMgr); | 98 ASSERT(pFontMgr); |
99 m_pSelector.reset(new CFDE_CSSStyleSelector); | 99 m_pSelector.reset(new CFDE_CSSStyleSelector(pFontMgr)); |
100 m_pSelector->SetFontMgr(pFontMgr); | |
101 FX_FLOAT fFontSize = 10; | 100 FX_FLOAT fFontSize = 10; |
102 CXFA_Font font = pTextProvider->GetFontNode(); | 101 CXFA_Font font = pTextProvider->GetFontNode(); |
103 if (font) { | 102 if (font) { |
104 fFontSize = font.GetFontSize(); | 103 fFontSize = font.GetFontSize(); |
105 } | 104 } |
106 m_pSelector->SetDefFontSize(fFontSize); | 105 m_pSelector->SetDefFontSize(fFontSize); |
107 } | 106 } |
108 if (!m_pUASheet) { | 107 if (!m_pUASheet) { |
109 m_pUASheet = LoadDefaultSheetStyle(); | 108 m_pUASheet = LoadDefaultSheetStyle(); |
110 m_pSelector->SetStyleSheet(FDE_CSSSTYLESHEETGROUP_UserAgent, m_pUASheet); | 109 m_pSelector->SetStyleSheet(FDE_CSSSTYLESHEETGROUP_UserAgent, m_pUASheet); |
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
245 m_pSelector->ComputeStyle(&tagProvider, pContext->GetDecls(), | 244 m_pSelector->ComputeStyle(&tagProvider, pContext->GetDecls(), |
246 pContext->CountDecls(), pStyle); | 245 pContext->CountDecls(), pStyle); |
247 pCSSAccel->OnLeaveTag(&tagProvider); | 246 pCSSAccel->OnLeaveTag(&tagProvider); |
248 return pStyle; | 247 return pStyle; |
249 } | 248 } |
250 void CXFA_TextParser::DoParse(CFDE_XMLNode* pXMLContainer, | 249 void CXFA_TextParser::DoParse(CFDE_XMLNode* pXMLContainer, |
251 CXFA_TextProvider* pTextProvider) { | 250 CXFA_TextProvider* pTextProvider) { |
252 if (!pXMLContainer || !pTextProvider || m_pAllocator) { | 251 if (!pXMLContainer || !pTextProvider || m_pAllocator) { |
253 return; | 252 return; |
254 } | 253 } |
255 m_pAllocator.reset(IFX_MemoryAllocator::Create(FX_ALLOCTYPE_Fixed, 32, | 254 m_pAllocator = IFX_MemoryAllocator::Create(FX_ALLOCTYPE_Fixed, 32, |
256 sizeof(CXFA_CSSTagProvider))); | 255 sizeof(CXFA_CSSTagProvider)); |
257 InitCSSData(pTextProvider); | 256 InitCSSData(pTextProvider); |
258 IFDE_CSSComputedStyle* pRootStyle = CreateRootStyle(pTextProvider); | 257 IFDE_CSSComputedStyle* pRootStyle = CreateRootStyle(pTextProvider); |
259 ParseRichText(pXMLContainer, pRootStyle); | 258 ParseRichText(pXMLContainer, pRootStyle); |
260 pRootStyle->Release(); | 259 pRootStyle->Release(); |
261 } | 260 } |
262 void CXFA_TextParser::ParseRichText(CFDE_XMLNode* pXMLNode, | 261 void CXFA_TextParser::ParseRichText(CFDE_XMLNode* pXMLNode, |
263 IFDE_CSSComputedStyle* pParentStyle) { | 262 IFDE_CSSComputedStyle* pParentStyle) { |
264 if (!pXMLNode) | 263 if (!pXMLNode) |
265 return; | 264 return; |
266 | 265 |
(...skipping 1020 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1287 XFA_TextPiece* pPiece = pPieceLine->m_textPieces.GetAt(j); | 1286 XFA_TextPiece* pPiece = pPieceLine->m_textPieces.GetAt(j); |
1288 CFX_RectF& rect = pPiece->rtPiece; | 1287 CFX_RectF& rect = pPiece->rtPiece; |
1289 rect.top += fHeight; | 1288 rect.top += fHeight; |
1290 } | 1289 } |
1291 } | 1290 } |
1292 } | 1291 } |
1293 FX_BOOL CXFA_TextLayout::Loader(const CFX_SizeF& szText, | 1292 FX_BOOL CXFA_TextLayout::Loader(const CFX_SizeF& szText, |
1294 FX_FLOAT& fLinePos, | 1293 FX_FLOAT& fLinePos, |
1295 FX_BOOL bSavePieces) { | 1294 FX_BOOL bSavePieces) { |
1296 if (!m_pAllocator) { | 1295 if (!m_pAllocator) { |
1297 m_pAllocator.reset( | 1296 m_pAllocator = IFX_MemoryAllocator::Create(FX_ALLOCTYPE_Static, 256, 0); |
1298 IFX_MemoryAllocator::Create(FX_ALLOCTYPE_Static, 256, 0)); | |
1299 } | 1297 } |
1300 GetTextDataNode(); | 1298 GetTextDataNode(); |
1301 if (!m_pTextDataNode) | 1299 if (!m_pTextDataNode) |
1302 return TRUE; | 1300 return TRUE; |
1303 | 1301 |
1304 if (m_bRichText) { | 1302 if (m_bRichText) { |
1305 CFDE_XMLNode* pXMLContainer = GetXMLContainerNode(); | 1303 CFDE_XMLNode* pXMLContainer = GetXMLContainerNode(); |
1306 if (pXMLContainer) { | 1304 if (pXMLContainer) { |
1307 if (!m_textParser.IsParsed()) { | 1305 if (!m_textParser.IsParsed()) { |
1308 m_textParser.DoParse(pXMLContainer, m_pTextProvider); | 1306 m_textParser.DoParse(pXMLContainer, m_pTextProvider); |
(...skipping 774 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2083 m_tabstops.RemoveAll(); | 2081 m_tabstops.RemoveAll(); |
2084 m_iTabCount = 0; | 2082 m_iTabCount = 0; |
2085 } | 2083 } |
2086 | 2084 |
2087 void CXFA_TextTabstopsContext::Reset() { | 2085 void CXFA_TextTabstopsContext::Reset() { |
2088 m_iTabIndex = -1; | 2086 m_iTabIndex = -1; |
2089 m_bTabstops = FALSE; | 2087 m_bTabstops = FALSE; |
2090 m_fTabWidth = 0; | 2088 m_fTabWidth = 0; |
2091 m_fLeft = 0; | 2089 m_fLeft = 0; |
2092 } | 2090 } |
OLD | NEW |