diff options
author | weili <weili@chromium.org> | 2016-06-18 06:25:37 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-06-18 06:25:37 -0700 |
commit | eec3a366adbfada36b98f1de651546ee09df8fc0 (patch) | |
tree | 794aa8c69392b60d8737a8a5b424732b98bdd4b4 /xfa/fgas/layout | |
parent | 4ce94e118d66064715de5baebeb4b2b580dcac66 (diff) | |
download | pdfium-eec3a366adbfada36b98f1de651546ee09df8fc0.tar.xz |
Make code compile with clang_use_chrome_plugin (final)
This change mainly contains files in xfa/ and fxjse/ directories
which were not covered by previous changes.
This is part of the efforts to make PDFium code compilable
by Clang chromium style plugins. After this change, PDFium can be
compiled with "clang_use_chrome_plugin=true" for GN build. Since
clang_use_chrome_plugin is true by default, we no longer need to
set this parameter explicitly.
The changes are mainly the following:
-- move inline constructor/destructor of complex class/struct out-of-line;
-- add constructor/destructor of complex class/struct if not
explicitly defined;
-- add explicit out-of-line copy constructor when needed;
-- move inline virtual functions out-of-line;
-- Properly mark virtual functions with 'override';
-- some minor cleanups;
BUG=pdfium:469
Review-Url: https://codereview.chromium.org/2072803002
Diffstat (limited to 'xfa/fgas/layout')
-rw-r--r-- | xfa/fgas/layout/fgas_rtfbreak.cpp | 46 | ||||
-rw-r--r-- | xfa/fgas/layout/fgas_rtfbreak.h | 94 | ||||
-rw-r--r-- | xfa/fgas/layout/fgas_textbreak.cpp | 46 | ||||
-rw-r--r-- | xfa/fgas/layout/fgas_textbreak.h | 50 |
4 files changed, 137 insertions, 99 deletions
diff --git a/xfa/fgas/layout/fgas_rtfbreak.cpp b/xfa/fgas/layout/fgas_rtfbreak.cpp index eed37df35d..848f7f4e93 100644 --- a/xfa/fgas/layout/fgas_rtfbreak.cpp +++ b/xfa/fgas/layout/fgas_rtfbreak.cpp @@ -1516,3 +1516,49 @@ int32_t CFX_RTFBreak::GetCharRects(const FX_RTFTEXTOBJ* pText, } return iLength; } + +CFX_RTFPiece::CFX_RTFPiece() + : m_dwStatus(FX_RTFBREAK_PieceBreak), + m_iStartPos(0), + m_iWidth(-1), + m_iStartChar(0), + m_iChars(0), + m_iBidiLevel(0), + m_iBidiPos(0), + m_iFontSize(0), + m_iFontHeight(0), + m_iHorizontalScale(100), + m_iVerticalScale(100), + m_dwLayoutStyles(0), + m_dwIdentity(0), + m_pChars(NULL), + m_pUserData(NULL) {} + +CFX_RTFPiece::~CFX_RTFPiece() { + Reset(); +} + +CFX_RTFLine::CFX_RTFLine() + : m_LinePieces(16), + m_iStart(0), + m_iWidth(0), + m_iArabicChars(0), + m_iMBCSChars(0) {} + +CFX_RTFLine::~CFX_RTFLine() { + RemoveAll(); +} + +FX_RTFTEXTOBJ::FX_RTFTEXTOBJ() + : pStr(nullptr), + pWidths(nullptr), + iLength(0), + pFont(nullptr), + fFontSize(12.0f), + dwLayoutStyles(0), + iCharRotation(0), + iBidiLevel(0), + pRect(nullptr), + wLineBreakChar(L'\n'), + iHorizontalScale(100), + iVerticalScale(100) {} diff --git a/xfa/fgas/layout/fgas_rtfbreak.h b/xfa/fgas/layout/fgas_rtfbreak.h index 83d83a6c45..993dc50f97 100644 --- a/xfa/fgas/layout/fgas_rtfbreak.h +++ b/xfa/fgas/layout/fgas_rtfbreak.h @@ -64,20 +64,7 @@ class CFGAS_GEFont; #define FX_RTFLINEALIGNMENT_HigherMask 0x0C struct FX_RTFTEXTOBJ { - FX_RTFTEXTOBJ() { - pStr = NULL; - pWidths = NULL; - iLength = 0; - pFont = NULL; - fFontSize = 12.0f; - dwLayoutStyles = 0; - iCharRotation = 0; - iBidiLevel = 0; - pRect = NULL; - wLineBreakChar = L'\n'; - iHorizontalScale = 100; - iVerticalScale = 100; - } + FX_RTFTEXTOBJ(); const FX_WCHAR* pStr; int32_t* pWidths; @@ -95,23 +82,9 @@ struct FX_RTFTEXTOBJ { class CFX_RTFPiece : public CFX_Target { public: - CFX_RTFPiece() - : m_dwStatus(FX_RTFBREAK_PieceBreak), - m_iStartPos(0), - m_iWidth(-1), - m_iStartChar(0), - m_iChars(0), - m_iBidiLevel(0), - m_iBidiPos(0), - m_iFontSize(0), - m_iFontHeight(0), - m_iHorizontalScale(100), - m_iVerticalScale(100), - m_dwLayoutStyles(0), - m_dwIdentity(0), - m_pChars(NULL), - m_pUserData(NULL) {} - ~CFX_RTFPiece() { Reset(); } + CFX_RTFPiece(); + ~CFX_RTFPiece() override; + void AppendChar(const CFX_RTFChar& tc) { ASSERT(m_pChars != NULL); m_pChars->Add(tc); @@ -171,6 +144,7 @@ class CFX_RTFPiece : public CFX_Target { m_iHorizontalScale = 100; m_iVerticalScale = 100; } + uint32_t m_dwStatus; int32_t m_iStartPos; int32_t m_iWidth; @@ -187,17 +161,14 @@ class CFX_RTFPiece : public CFX_Target { CFX_RTFCharArray* m_pChars; IFX_Retainable* m_pUserData; }; + typedef CFX_BaseArrayTemplate<CFX_RTFPiece> CFX_RTFPieceArray; class CFX_RTFLine { public: - CFX_RTFLine() - : m_LinePieces(16), - m_iStart(0), - m_iWidth(0), - m_iArabicChars(0), - m_iMBCSChars(0) {} - ~CFX_RTFLine() { RemoveAll(); } + CFX_RTFLine(); + ~CFX_RTFLine(); + int32_t CountChars() const { return m_LineChars.GetSize(); } CFX_RTFChar& GetChar(int32_t index) { ASSERT(index > -1 && index < m_LineChars.GetSize()); @@ -233,6 +204,7 @@ class CFX_RTFLine { m_iArabicChars = 0; m_iMBCSChars = 0; } + CFX_RTFCharArray m_LineChars; CFX_RTFPieceArray m_LinePieces; int32_t m_iStart; @@ -290,6 +262,30 @@ class CFX_RTFBreak { uint32_t AppendChar_Others(CFX_RTFChar* pCurChar, int32_t iRotation); protected: + int32_t GetLineRotation(uint32_t dwStyles) const; + void SetBreakStatus(); + CFX_RTFChar* GetLastChar(int32_t index) const; + CFX_RTFLine* GetRTFLine(FX_BOOL bReady) const; + CFX_RTFPieceArray* GetRTFPieces(FX_BOOL bReady) const; + FX_CHARTYPE GetUnifiedCharType(FX_CHARTYPE chartype) const; + int32_t GetLastPositionedTab() const; + FX_BOOL GetPositionedTab(int32_t& iTabPos) const; + + int32_t GetBreakPos(CFX_RTFCharArray& tca, + int32_t& iEndPos, + FX_BOOL bAllChars = FALSE, + FX_BOOL bOnlyBrk = FALSE); + void SplitTextLine(CFX_RTFLine* pCurLine, + CFX_RTFLine* pNextLine, + FX_BOOL bAllChars = FALSE); + FX_BOOL EndBreak_SplitLine(CFX_RTFLine* pNextLine, + FX_BOOL bAllChars, + uint32_t dwStatus); + void EndBreak_BidiLine(CFX_TPOArray& tpos, uint32_t dwStatus); + void EndBreak_Alignment(CFX_TPOArray& tpos, + FX_BOOL bAllChars, + uint32_t dwStatus); + uint32_t m_dwPolicies; int32_t m_iBoundaryStart; int32_t m_iBoundaryEnd; @@ -325,28 +321,6 @@ class CFX_RTFBreak { CFX_RTFLine* m_pCurLine; int32_t m_iReady; int32_t m_iTolerance; - int32_t GetLineRotation(uint32_t dwStyles) const; - void SetBreakStatus(); - CFX_RTFChar* GetLastChar(int32_t index) const; - CFX_RTFLine* GetRTFLine(FX_BOOL bReady) const; - CFX_RTFPieceArray* GetRTFPieces(FX_BOOL bReady) const; - FX_CHARTYPE GetUnifiedCharType(FX_CHARTYPE chartype) const; - int32_t GetLastPositionedTab() const; - FX_BOOL GetPositionedTab(int32_t& iTabPos) const; - int32_t GetBreakPos(CFX_RTFCharArray& tca, - int32_t& iEndPos, - FX_BOOL bAllChars = FALSE, - FX_BOOL bOnlyBrk = FALSE); - void SplitTextLine(CFX_RTFLine* pCurLine, - CFX_RTFLine* pNextLine, - FX_BOOL bAllChars = FALSE); - FX_BOOL EndBreak_SplitLine(CFX_RTFLine* pNextLine, - FX_BOOL bAllChars, - uint32_t dwStatus); - void EndBreak_BidiLine(CFX_TPOArray& tpos, uint32_t dwStatus); - void EndBreak_Alignment(CFX_TPOArray& tpos, - FX_BOOL bAllChars, - uint32_t dwStatus); }; #endif // XFA_FGAS_LAYOUT_FGAS_RTFBREAK_H_ diff --git a/xfa/fgas/layout/fgas_textbreak.cpp b/xfa/fgas/layout/fgas_textbreak.cpp index c8d33baa80..8eebbed76a 100644 --- a/xfa/fgas/layout/fgas_textbreak.cpp +++ b/xfa/fgas/layout/fgas_textbreak.cpp @@ -1662,3 +1662,49 @@ int32_t CFX_TxtBreak::GetCharRects(const FX_TXTRUN* pTxtRun, } return iLength; } + +FX_TXTRUN::FX_TXTRUN() + : pAccess(nullptr), + pIdentity(nullptr), + pWidths(nullptr), + iLength(0), + pFont(nullptr), + fFontSize(12), + dwStyles(0), + iHorizontalScale(100), + iVerticalScale(100), + iCharRotation(0), + dwCharStyles(0), + pRect(nullptr), + wLineBreakChar(L'\n'), + bSkipSpace(TRUE) {} + +FX_TXTRUN::~FX_TXTRUN() {} + +FX_TXTRUN::FX_TXTRUN(const FX_TXTRUN& other) = default; + +CFX_TxtPiece::CFX_TxtPiece() + : m_dwStatus(FX_TXTBREAK_PieceBreak), + m_iStartPos(0), + m_iWidth(-1), + m_iStartChar(0), + m_iChars(0), + m_iBidiLevel(0), + m_iBidiPos(0), + m_iHorizontalScale(100), + m_iVerticalScale(100), + m_dwCharStyles(0), + m_pChars(NULL), + m_pUserData(NULL) {} + +CFX_TxtLine::CFX_TxtLine(int32_t iBlockSize) + : m_iStart(0), m_iWidth(0), m_iArabicChars(0) { + m_pLineChars = new CFX_TxtCharArray; + m_pLinePieces = new CFX_TxtPieceArray(16); +} + +CFX_TxtLine::~CFX_TxtLine() { + RemoveAll(); + delete m_pLineChars; + delete m_pLinePieces; +} diff --git a/xfa/fgas/layout/fgas_textbreak.h b/xfa/fgas/layout/fgas_textbreak.h index 94fa79f5a6..020fa1a3d3 100644 --- a/xfa/fgas/layout/fgas_textbreak.h +++ b/xfa/fgas/layout/fgas_textbreak.h @@ -82,21 +82,9 @@ class IFX_TxtAccess { }; struct FX_TXTRUN { - FX_TXTRUN() - : pAccess(nullptr), - pIdentity(nullptr), - pWidths(nullptr), - iLength(0), - pFont(nullptr), - fFontSize(12), - dwStyles(0), - iHorizontalScale(100), - iVerticalScale(100), - iCharRotation(0), - dwCharStyles(0), - pRect(nullptr), - wLineBreakChar(L'\n'), - bSkipSpace(TRUE) {} + FX_TXTRUN(); + FX_TXTRUN(const FX_TXTRUN& other); + ~FX_TXTRUN(); IFX_TxtAccess* pAccess; const FDE_TEXTEDITPIECE* pIdentity; @@ -117,19 +105,8 @@ struct FX_TXTRUN { class CFX_TxtPiece : public CFX_Target { public: - CFX_TxtPiece() - : m_dwStatus(FX_TXTBREAK_PieceBreak), - m_iStartPos(0), - m_iWidth(-1), - m_iStartChar(0), - m_iChars(0), - m_iBidiLevel(0), - m_iBidiPos(0), - m_iHorizontalScale(100), - m_iVerticalScale(100), - m_dwCharStyles(0), - m_pChars(NULL), - m_pUserData(NULL) {} + CFX_TxtPiece(); + int32_t GetEndPos() const { return m_iWidth < 0 ? m_iStartPos : m_iStartPos + m_iWidth; } @@ -148,7 +125,6 @@ class CFX_TxtPiece : public CFX_Target { *pText++ = (FX_WCHAR)pChar->m_wCharCode; } } - void GetString(CFX_WideString& wsText) const { FX_WCHAR* pText = wsText.GetBuffer(m_iChars); GetString(pText); @@ -163,6 +139,7 @@ class CFX_TxtPiece : public CFX_Target { *pWidths++ = pChar->m_iCharWidth; } } + uint32_t m_dwStatus; int32_t m_iStartPos; int32_t m_iWidth; @@ -176,20 +153,14 @@ class CFX_TxtPiece : public CFX_Target { CFX_TxtCharArray* m_pChars; void* m_pUserData; }; + typedef CFX_BaseArrayTemplate<CFX_TxtPiece> CFX_TxtPieceArray; class CFX_TxtLine { public: - CFX_TxtLine(int32_t iBlockSize) - : m_iStart(0), m_iWidth(0), m_iArabicChars(0) { - m_pLineChars = new CFX_TxtCharArray; - m_pLinePieces = new CFX_TxtPieceArray(16); - } - ~CFX_TxtLine() { - RemoveAll(); - delete m_pLineChars; - delete m_pLinePieces; - } + CFX_TxtLine(int32_t iBlockSize); + ~CFX_TxtLine(); + int32_t CountChars() const { return m_pLineChars->GetSize(); } CFX_TxtChar* GetCharPtr(int32_t index) const { ASSERT(index > -1 && index < m_pLineChars->GetSize()); @@ -216,6 +187,7 @@ class CFX_TxtLine { m_iWidth = 0; m_iArabicChars = 0; } + CFX_TxtCharArray* m_pLineChars; CFX_TxtPieceArray* m_pLinePieces; int32_t m_iStart; |