1*3ac0a46fSAndroid Build Coastguard Worker // Copyright 2017 The PDFium Authors 2*3ac0a46fSAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*3ac0a46fSAndroid Build Coastguard Worker // found in the LICENSE file. 4*3ac0a46fSAndroid Build Coastguard Worker 5*3ac0a46fSAndroid Build Coastguard Worker // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6*3ac0a46fSAndroid Build Coastguard Worker 7*3ac0a46fSAndroid Build Coastguard Worker #ifndef XFA_FGAS_LAYOUT_CFGAS_CHAR_H_ 8*3ac0a46fSAndroid Build Coastguard Worker #define XFA_FGAS_LAYOUT_CFGAS_CHAR_H_ 9*3ac0a46fSAndroid Build Coastguard Worker 10*3ac0a46fSAndroid Build Coastguard Worker #include <stdint.h> 11*3ac0a46fSAndroid Build Coastguard Worker 12*3ac0a46fSAndroid Build Coastguard Worker #include <vector> 13*3ac0a46fSAndroid Build Coastguard Worker 14*3ac0a46fSAndroid Build Coastguard Worker #include "core/fxcrt/fx_unicode.h" 15*3ac0a46fSAndroid Build Coastguard Worker #include "core/fxcrt/retain_ptr.h" 16*3ac0a46fSAndroid Build Coastguard Worker #include "xfa/fgas/layout/cfgas_textuserdata.h" 17*3ac0a46fSAndroid Build Coastguard Worker #include "xfa/fgas/layout/fgas_linebreak.h" 18*3ac0a46fSAndroid Build Coastguard Worker 19*3ac0a46fSAndroid Build Coastguard Worker class CFGAS_Char { 20*3ac0a46fSAndroid Build Coastguard Worker public: 21*3ac0a46fSAndroid Build Coastguard Worker enum class BreakType : uint8_t { 22*3ac0a46fSAndroid Build Coastguard Worker kNone = 0, 23*3ac0a46fSAndroid Build Coastguard Worker kPiece, 24*3ac0a46fSAndroid Build Coastguard Worker kLine, 25*3ac0a46fSAndroid Build Coastguard Worker kParagraph, 26*3ac0a46fSAndroid Build Coastguard Worker kPage 27*3ac0a46fSAndroid Build Coastguard Worker }; 28*3ac0a46fSAndroid Build Coastguard Worker 29*3ac0a46fSAndroid Build Coastguard Worker static void BidiLine(std::vector<CFGAS_Char>* chars, size_t iCount); 30*3ac0a46fSAndroid Build Coastguard Worker 31*3ac0a46fSAndroid Build Coastguard Worker explicit CFGAS_Char(uint16_t wCharCode); 32*3ac0a46fSAndroid Build Coastguard Worker CFGAS_Char(uint16_t wCharCode, 33*3ac0a46fSAndroid Build Coastguard Worker int32_t iHorizontalScale, 34*3ac0a46fSAndroid Build Coastguard Worker int32_t iVerticalScale); 35*3ac0a46fSAndroid Build Coastguard Worker CFGAS_Char(const CFGAS_Char& other); 36*3ac0a46fSAndroid Build Coastguard Worker ~CFGAS_Char(); 37*3ac0a46fSAndroid Build Coastguard Worker 38*3ac0a46fSAndroid Build Coastguard Worker FX_CHARTYPE GetCharType() const; char_code()39*3ac0a46fSAndroid Build Coastguard Worker uint16_t char_code() const { return m_wCharCode; } horizonal_scale()40*3ac0a46fSAndroid Build Coastguard Worker int16_t horizonal_scale() const { return m_iHorizontalScale; } vertical_scale()41*3ac0a46fSAndroid Build Coastguard Worker int16_t vertical_scale() const { return m_iVerticalScale; } 42*3ac0a46fSAndroid Build Coastguard Worker 43*3ac0a46fSAndroid Build Coastguard Worker BreakType m_dwStatus = BreakType::kNone; 44*3ac0a46fSAndroid Build Coastguard Worker FX_BIDICLASS m_iBidiClass = FX_BIDICLASS::kON; 45*3ac0a46fSAndroid Build Coastguard Worker FX_LINEBREAKTYPE m_eLineBreakType = FX_LINEBREAKTYPE::kUNKNOWN; 46*3ac0a46fSAndroid Build Coastguard Worker uint32_t m_dwCharStyles = 0; 47*3ac0a46fSAndroid Build Coastguard Worker int32_t m_iCharWidth = 0; 48*3ac0a46fSAndroid Build Coastguard Worker uint16_t m_iBidiLevel = 0; 49*3ac0a46fSAndroid Build Coastguard Worker uint16_t m_iBidiPos = 0; 50*3ac0a46fSAndroid Build Coastguard Worker uint16_t m_iBidiOrder = 0; 51*3ac0a46fSAndroid Build Coastguard Worker int32_t m_iFontSize = 0; 52*3ac0a46fSAndroid Build Coastguard Worker uint32_t m_dwIdentity = 0; 53*3ac0a46fSAndroid Build Coastguard Worker RetainPtr<CFGAS_TextUserData> m_pUserData; 54*3ac0a46fSAndroid Build Coastguard Worker 55*3ac0a46fSAndroid Build Coastguard Worker private: 56*3ac0a46fSAndroid Build Coastguard Worker uint16_t m_wCharCode; 57*3ac0a46fSAndroid Build Coastguard Worker int32_t m_iHorizontalScale; 58*3ac0a46fSAndroid Build Coastguard Worker int32_t m_iVerticalScale; 59*3ac0a46fSAndroid Build Coastguard Worker }; 60*3ac0a46fSAndroid Build Coastguard Worker 61*3ac0a46fSAndroid Build Coastguard Worker #endif // XFA_FGAS_LAYOUT_CFGAS_CHAR_H_ 62