| 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 #ifndef XFA_FXFA_APP_XFA_TEXTLAYOUT_H_ | 7 #ifndef XFA_FXFA_APP_XFA_TEXTLAYOUT_H_ |
| 8 #define XFA_FXFA_APP_XFA_TEXTLAYOUT_H_ | 8 #define XFA_FXFA_APP_XFA_TEXTLAYOUT_H_ |
| 9 | 9 |
| 10 #include "xfa/fde/css/fde_css.h" | 10 #include "xfa/fde/css/fde_css.h" |
| 11 #include "xfa/fde/fde_brush.h" | 11 #include "xfa/fde/fde_brush.h" |
| 12 #include "xfa/fde/fde_renderdevice.h" | 12 #include "xfa/fde/fde_renderdevice.h" |
| 13 #include "xfa/fgas/layout/fgas_rtfbreak.h" | 13 #include "xfa/fgas/layout/fgas_rtfbreak.h" |
| 14 #include "xfa/fxfa/app/xfa_ffdoc.h" | |
| 15 #include "xfa/fxfa/parser/xfa_object.h" | 14 #include "xfa/fxfa/parser/xfa_object.h" |
| 15 #include "xfa/include/fxfa/xfa_ffdoc.h" |
| 16 | 16 |
| 17 #define XFA_LOADERCNTXTFLG_FILTERSPACE 0x001 | 17 #define XFA_LOADERCNTXTFLG_FILTERSPACE 0x001 |
| 18 | 18 |
| 19 class CXFA_Para; | 19 class CXFA_Para; |
| 20 class CXFA_Font; | 20 class CXFA_Font; |
| 21 class CXFA_TextProvider; |
| 21 class CXFA_TextTabstopsContext; | 22 class CXFA_TextTabstopsContext; |
| 22 | 23 |
| 23 class IXFA_TextProvider { | |
| 24 public: | |
| 25 virtual ~IXFA_TextProvider() {} | |
| 26 virtual CXFA_Node* GetTextNode(FX_BOOL& bRichText) = 0; | |
| 27 virtual CXFA_Para GetParaNode() = 0; | |
| 28 virtual CXFA_Font GetFontNode() = 0; | |
| 29 virtual FX_BOOL IsCheckButtonAndAutoWidth() = 0; | |
| 30 virtual CXFA_FFDoc* GetDocNode() = 0; | |
| 31 virtual FX_BOOL GetEmbbedObj(FX_BOOL bURI, | |
| 32 FX_BOOL bRaw, | |
| 33 const CFX_WideString& wsAttr, | |
| 34 CFX_WideString& wsValue) = 0; | |
| 35 }; | |
| 36 | |
| 37 class CXFA_CSSTagProvider : public IFDE_CSSTagProvider { | 24 class CXFA_CSSTagProvider : public IFDE_CSSTagProvider { |
| 38 public: | 25 public: |
| 39 CXFA_CSSTagProvider() : m_bTagAviliable(FALSE), m_bContent(FALSE) {} | 26 CXFA_CSSTagProvider() : m_bTagAviliable(FALSE), m_bContent(FALSE) {} |
| 40 virtual ~CXFA_CSSTagProvider(); | 27 virtual ~CXFA_CSSTagProvider(); |
| 41 virtual CFX_WideStringC GetTagName() { return m_wsTagName; } | 28 virtual CFX_WideStringC GetTagName() { return m_wsTagName; } |
| 42 virtual FX_POSITION GetFirstAttribute() { | 29 virtual FX_POSITION GetFirstAttribute() { |
| 43 return m_Attributes.GetStartPosition(); | 30 return m_Attributes.GetStartPosition(); |
| 44 } | 31 } |
| 45 virtual void GetNextAttribute(FX_POSITION& pos, | 32 virtual void GetNextAttribute(FX_POSITION& pos, |
| 46 CFX_WideStringC& wsAttr, | 33 CFX_WideStringC& wsAttr, |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 81 IFDE_CSSDeclaration** m_ppMatchedDecls; | 68 IFDE_CSSDeclaration** m_ppMatchedDecls; |
| 82 uint32_t m_dwMatchedDecls; | 69 uint32_t m_dwMatchedDecls; |
| 83 FDE_CSSDISPLAY m_eDisplay; | 70 FDE_CSSDISPLAY m_eDisplay; |
| 84 }; | 71 }; |
| 85 | 72 |
| 86 class CXFA_TextParser { | 73 class CXFA_TextParser { |
| 87 public: | 74 public: |
| 88 CXFA_TextParser() : m_pAllocator(NULL), m_pSelector(NULL), m_pUASheet(NULL) {} | 75 CXFA_TextParser() : m_pAllocator(NULL), m_pSelector(NULL), m_pUASheet(NULL) {} |
| 89 virtual ~CXFA_TextParser(); | 76 virtual ~CXFA_TextParser(); |
| 90 void Reset(); | 77 void Reset(); |
| 91 void DoParse(CFDE_XMLNode* pXMLContainer, IXFA_TextProvider* pTextProvider); | 78 void DoParse(CFDE_XMLNode* pXMLContainer, CXFA_TextProvider* pTextProvider); |
| 92 IFDE_CSSComputedStyle* CreateRootStyle(IXFA_TextProvider* pTextProvider); | 79 IFDE_CSSComputedStyle* CreateRootStyle(CXFA_TextProvider* pTextProvider); |
| 93 IFDE_CSSComputedStyle* ComputeStyle(CFDE_XMLNode* pXMLNode, | 80 IFDE_CSSComputedStyle* ComputeStyle(CFDE_XMLNode* pXMLNode, |
| 94 IFDE_CSSComputedStyle* pParentStyle); | 81 IFDE_CSSComputedStyle* pParentStyle); |
| 95 FX_BOOL IsParsed() const { return m_pAllocator != NULL; } | 82 FX_BOOL IsParsed() const { return m_pAllocator != NULL; } |
| 96 | 83 |
| 97 int32_t GetVAlgin(IXFA_TextProvider* pTextProvider) const; | 84 int32_t GetVAlgin(CXFA_TextProvider* pTextProvider) const; |
| 98 FX_FLOAT GetTabInterval(IFDE_CSSComputedStyle* pStyle) const; | 85 FX_FLOAT GetTabInterval(IFDE_CSSComputedStyle* pStyle) const; |
| 99 int32_t CountTabs(IFDE_CSSComputedStyle* pStyle) const; | 86 int32_t CountTabs(IFDE_CSSComputedStyle* pStyle) const; |
| 100 FX_BOOL IsSpaceRun(IFDE_CSSComputedStyle* pStyle) const; | 87 FX_BOOL IsSpaceRun(IFDE_CSSComputedStyle* pStyle) const; |
| 101 FX_BOOL GetTabstops(IFDE_CSSComputedStyle* pStyle, | 88 FX_BOOL GetTabstops(IFDE_CSSComputedStyle* pStyle, |
| 102 CXFA_TextTabstopsContext* pTabstopContext); | 89 CXFA_TextTabstopsContext* pTabstopContext); |
| 103 IFX_Font* GetFont(IXFA_TextProvider* pTextProvider, | 90 IFX_Font* GetFont(CXFA_TextProvider* pTextProvider, |
| 104 IFDE_CSSComputedStyle* pStyle) const; | 91 IFDE_CSSComputedStyle* pStyle) const; |
| 105 FX_FLOAT GetFontSize(IXFA_TextProvider* pTextProvider, | 92 FX_FLOAT GetFontSize(CXFA_TextProvider* pTextProvider, |
| 106 IFDE_CSSComputedStyle* pStyle) const; | 93 IFDE_CSSComputedStyle* pStyle) const; |
| 107 int32_t GetHorScale(IXFA_TextProvider* pTextProvider, | 94 int32_t GetHorScale(CXFA_TextProvider* pTextProvider, |
| 108 IFDE_CSSComputedStyle* pStyle, | 95 IFDE_CSSComputedStyle* pStyle, |
| 109 CFDE_XMLNode* pXMLNode) const; | 96 CFDE_XMLNode* pXMLNode) const; |
| 110 int32_t GetVerScale(IXFA_TextProvider* pTextProvider, | 97 int32_t GetVerScale(CXFA_TextProvider* pTextProvider, |
| 111 IFDE_CSSComputedStyle* pStyle) const; | 98 IFDE_CSSComputedStyle* pStyle) const; |
| 112 void GetUnderline(IXFA_TextProvider* pTextProvider, | 99 void GetUnderline(CXFA_TextProvider* pTextProvider, |
| 113 IFDE_CSSComputedStyle* pStyle, | 100 IFDE_CSSComputedStyle* pStyle, |
| 114 int32_t& iUnderline, | 101 int32_t& iUnderline, |
| 115 int32_t& iPeriod) const; | 102 int32_t& iPeriod) const; |
| 116 void GetLinethrough(IXFA_TextProvider* pTextProvider, | 103 void GetLinethrough(CXFA_TextProvider* pTextProvider, |
| 117 IFDE_CSSComputedStyle* pStyle, | 104 IFDE_CSSComputedStyle* pStyle, |
| 118 int32_t& iLinethrough) const; | 105 int32_t& iLinethrough) const; |
| 119 FX_ARGB GetColor(IXFA_TextProvider* pTextProvider, | 106 FX_ARGB GetColor(CXFA_TextProvider* pTextProvider, |
| 120 IFDE_CSSComputedStyle* pStyle) const; | 107 IFDE_CSSComputedStyle* pStyle) const; |
| 121 FX_FLOAT GetBaseline(IXFA_TextProvider* pTextProvider, | 108 FX_FLOAT GetBaseline(CXFA_TextProvider* pTextProvider, |
| 122 IFDE_CSSComputedStyle* pStyle) const; | 109 IFDE_CSSComputedStyle* pStyle) const; |
| 123 FX_FLOAT GetLineHeight(IXFA_TextProvider* pTextProvider, | 110 FX_FLOAT GetLineHeight(CXFA_TextProvider* pTextProvider, |
| 124 IFDE_CSSComputedStyle* pStyle, | 111 IFDE_CSSComputedStyle* pStyle, |
| 125 FX_BOOL bFirst, | 112 FX_BOOL bFirst, |
| 126 FX_FLOAT fVerScale) const; | 113 FX_FLOAT fVerScale) const; |
| 127 FX_BOOL GetEmbbedObj(IXFA_TextProvider* pTextProvider, | 114 FX_BOOL GetEmbbedObj(CXFA_TextProvider* pTextProvider, |
| 128 CFDE_XMLNode* pXMLNode, | 115 CFDE_XMLNode* pXMLNode, |
| 129 CFX_WideString& wsValue); | 116 CFX_WideString& wsValue); |
| 130 CXFA_TextParseContext* GetParseContextFromMap(CFDE_XMLNode* pXMLNode); | 117 CXFA_TextParseContext* GetParseContextFromMap(CFDE_XMLNode* pXMLNode); |
| 131 | 118 |
| 132 private: | 119 private: |
| 133 void InitCSSData(IXFA_TextProvider* pTextProvider); | 120 void InitCSSData(CXFA_TextProvider* pTextProvider); |
| 134 void ParseRichText(CFDE_XMLNode* pXMLNode, | 121 void ParseRichText(CFDE_XMLNode* pXMLNode, |
| 135 IFDE_CSSComputedStyle* pParentStyle); | 122 IFDE_CSSComputedStyle* pParentStyle); |
| 136 void ParseTagInfo(CFDE_XMLNode* pXMLNode, CXFA_CSSTagProvider& tagProvider); | 123 void ParseTagInfo(CFDE_XMLNode* pXMLNode, CXFA_CSSTagProvider& tagProvider); |
| 137 IFDE_CSSStyleSheet* LoadDefaultSheetStyle(); | 124 IFDE_CSSStyleSheet* LoadDefaultSheetStyle(); |
| 138 IFDE_CSSComputedStyle* CreateStyle(IFDE_CSSComputedStyle* pParentStyle); | 125 IFDE_CSSComputedStyle* CreateStyle(IFDE_CSSComputedStyle* pParentStyle); |
| 139 IFX_MEMAllocator* m_pAllocator; | 126 IFX_MEMAllocator* m_pAllocator; |
| 140 IFDE_CSSStyleSelector* m_pSelector; | 127 IFDE_CSSStyleSelector* m_pSelector; |
| 141 IFDE_CSSStyleSheet* m_pUASheet; | 128 IFDE_CSSStyleSheet* m_pUASheet; |
| 142 CFX_MapPtrTemplate<CFDE_XMLNode*, CXFA_TextParseContext*> | 129 CFX_MapPtrTemplate<CFDE_XMLNode*, CXFA_TextParseContext*> |
| 143 m_mapXMLNodeToParseContext; | 130 m_mapXMLNodeToParseContext; |
| (...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 317 CFX_ArrayTemplate<XFA_TABSTOPS> m_tabstops; | 304 CFX_ArrayTemplate<XFA_TABSTOPS> m_tabstops; |
| 318 int32_t m_iTabCount; | 305 int32_t m_iTabCount; |
| 319 int32_t m_iTabIndex; | 306 int32_t m_iTabIndex; |
| 320 FX_BOOL m_bTabstops; | 307 FX_BOOL m_bTabstops; |
| 321 FX_FLOAT m_fTabWidth; | 308 FX_FLOAT m_fTabWidth; |
| 322 FX_FLOAT m_fLeft; | 309 FX_FLOAT m_fLeft; |
| 323 }; | 310 }; |
| 324 | 311 |
| 325 class CXFA_TextLayout { | 312 class CXFA_TextLayout { |
| 326 public: | 313 public: |
| 327 CXFA_TextLayout(IXFA_TextProvider* pTextProvider); | 314 CXFA_TextLayout(CXFA_TextProvider* pTextProvider); |
| 328 virtual ~CXFA_TextLayout(); | 315 virtual ~CXFA_TextLayout(); |
| 329 int32_t GetText(CFX_WideString& wsText); | 316 int32_t GetText(CFX_WideString& wsText); |
| 330 FX_FLOAT GetLayoutHeight(); | 317 FX_FLOAT GetLayoutHeight(); |
| 331 FX_FLOAT StartLayout(FX_FLOAT fWidth = -1); | 318 FX_FLOAT StartLayout(FX_FLOAT fWidth = -1); |
| 332 FX_BOOL DoLayout(int32_t iBlockIndex, | 319 FX_BOOL DoLayout(int32_t iBlockIndex, |
| 333 FX_FLOAT& fCalcHeight, | 320 FX_FLOAT& fCalcHeight, |
| 334 FX_FLOAT fContentAreaHeight = -1, | 321 FX_FLOAT fContentAreaHeight = -1, |
| 335 FX_FLOAT fTextHeight = -1); | 322 FX_FLOAT fTextHeight = -1); |
| 336 | 323 |
| 337 FX_BOOL CalcSize(const CFX_SizeF& minSize, | 324 FX_BOOL CalcSize(const CFX_SizeF& minSize, |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 401 FXTEXT_CHARPOS* pCharPos, | 388 FXTEXT_CHARPOS* pCharPos, |
| 402 const CFX_Matrix& tmDoc2Device); | 389 const CFX_Matrix& tmDoc2Device); |
| 403 int32_t GetDisplayPos(const XFA_TextPiece* pPiece, | 390 int32_t GetDisplayPos(const XFA_TextPiece* pPiece, |
| 404 FXTEXT_CHARPOS* pCharPos, | 391 FXTEXT_CHARPOS* pCharPos, |
| 405 FX_BOOL bCharCode = FALSE); | 392 FX_BOOL bCharCode = FALSE); |
| 406 FX_BOOL ToRun(const XFA_TextPiece* pPiece, FX_RTFTEXTOBJ& tr); | 393 FX_BOOL ToRun(const XFA_TextPiece* pPiece, FX_RTFTEXTOBJ& tr); |
| 407 void DoTabstops(IFDE_CSSComputedStyle* pStyle, CXFA_PieceLine* pPieceLine); | 394 void DoTabstops(IFDE_CSSComputedStyle* pStyle, CXFA_PieceLine* pPieceLine); |
| 408 FX_BOOL Layout(int32_t iBlock); | 395 FX_BOOL Layout(int32_t iBlock); |
| 409 int32_t CountBlocks() const; | 396 int32_t CountBlocks() const; |
| 410 | 397 |
| 411 IXFA_TextProvider* m_pTextProvider; | 398 CXFA_TextProvider* m_pTextProvider; |
| 412 CXFA_Node* m_pTextDataNode; | 399 CXFA_Node* m_pTextDataNode; |
| 413 FX_BOOL m_bRichText; | 400 FX_BOOL m_bRichText; |
| 414 IFX_MEMAllocator* m_pAllocator; | 401 IFX_MEMAllocator* m_pAllocator; |
| 415 IFX_RTFBreak* m_pBreak; | 402 IFX_RTFBreak* m_pBreak; |
| 416 CXFA_LoaderContext* m_pLoader; | 403 CXFA_LoaderContext* m_pLoader; |
| 417 int32_t m_iLines; | 404 int32_t m_iLines; |
| 418 FX_FLOAT m_fMaxWidth; | 405 FX_FLOAT m_fMaxWidth; |
| 419 CXFA_TextParser m_textParser; | 406 CXFA_TextParser m_textParser; |
| 420 CXFA_PieceLineArray m_pieceLines; | 407 CXFA_PieceLineArray m_pieceLines; |
| 421 CXFA_TextTabstopsContext* m_pTabstopContext; | 408 CXFA_TextTabstopsContext* m_pTabstopContext; |
| 422 FX_BOOL m_bBlockContinue; | 409 FX_BOOL m_bBlockContinue; |
| 423 }; | 410 }; |
| 424 | 411 |
| 425 #endif // XFA_FXFA_APP_XFA_TEXTLAYOUT_H_ | 412 #endif // XFA_FXFA_APP_XFA_TEXTLAYOUT_H_ |
| OLD | NEW |