1ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// Copyright 2014 PDFium Authors. All rights reserved. 2ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// Use of this source code is governed by a BSD-style license that can be 3ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// found in the LICENSE file. 4ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 5ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 7ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#ifndef _FX_TEXTBREAK 8ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define _FX_TEXTBREAK 9ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 10ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#include "core/include/fxcrt/fx_ucd.h" 11ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 12ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannclass IFX_Font; 13ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannclass CFX_Char; 14ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannclass IFX_TxtAccess; 15ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannclass CFX_TxtChar; 16ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannclass CFX_TxtPiece; 17ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannclass IFX_TxtBreak; 18ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FX_TXTBREAKPOLICY_None 0x00 19ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FX_TXTBREAKPOLICY_Pagination 0x01 20ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FX_TXTBREAKPOLICY_SpaceBreak 0x02 21ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FX_TXTBREAKPOLICY_NumberBreak 0x04 22ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FX_TXTBREAK_None 0x00 23ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FX_TXTBREAK_PieceBreak 0x01 24ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FX_TXTBREAK_LineBreak 0x02 25ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FX_TXTBREAK_ParagraphBreak 0x03 26ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FX_TXTBREAK_PageBreak 0x04 27ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FX_TXTBREAK_ControlChar 0x10 28ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FX_TXTBREAK_BreakChar 0x20 29ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FX_TXTBREAK_UnknownChar 0x40 30ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FX_TXTBREAK_RemoveChar 0x80 31ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FX_TXTLAYOUTSTYLE_MutipleFormat 0x0001 32ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FX_TXTLAYOUTSTYLE_VerticalLayout 0x0002 33ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FX_TXTLAYOUTSTYLE_VerticalChars 0x0004 34ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FX_TXTLAYOUTSTYLE_ReverseLine 0x0008 35ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FX_TXTLAYOUTSTYLE_ArabicContext 0x0010 36ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FX_TXTLAYOUTSTYLE_ArabicShapes 0x0020 37ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FX_TXTLAYOUTSTYLE_RTLReadingOrder 0x0040 38ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FX_TXTLAYOUTSTYLE_ExpandTab 0x0100 39ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FX_TXTLAYOUTSTYLE_SingleLine 0x0200 40ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FX_TXTLAYOUTSTYLE_CombText 0x0400 41ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FX_TXTCHARSTYLE_Alignment 0x000F 42ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FX_TXTCHARSTYLE_ArabicNumber 0x0010 43ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FX_TXTCHARSTYLE_ArabicShadda 0x0020 44ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FX_TXTCHARSTYLE_OddBidiLevel 0x0040 45ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FX_TXTCHARSTYLE_RTLReadingOrder 0x0080 46ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FX_TXTCHARSTYLE_ArabicContext 0x0300 47ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FX_TXTCHARSTYLE_ArabicIndic 0x0400 48ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FX_TXTCHARSTYLE_ArabicComma 0x0800 49ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FX_TXTLINEALIGNMENT_Left 0 50ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FX_TXTLINEALIGNMENT_Center 1 51ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FX_TXTLINEALIGNMENT_Right 2 52ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FX_TXTLINEALIGNMENT_Justified (1 << 2) 53ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FX_TXTLINEALIGNMENT_Distributed (2 << 2) 54ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FX_TXTLINEALIGNMENT_JustifiedLeft \ 55ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (FX_TXTLINEALIGNMENT_Left | FX_TXTLINEALIGNMENT_Justified) 56ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FX_TXTLINEALIGNMENT_JustifiedCenter \ 57ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (FX_TXTLINEALIGNMENT_Center | FX_TXTLINEALIGNMENT_Justified) 58ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FX_TXTLINEALIGNMENT_JustifiedRight \ 59ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (FX_TXTLINEALIGNMENT_Right | FX_TXTLINEALIGNMENT_Justified) 60ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FX_TXTLINEALIGNMENT_DistributedLeft \ 61ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (FX_TXTLINEALIGNMENT_Left | FX_TXTLINEALIGNMENT_Distributed) 62ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FX_TXTLINEALIGNMENT_DistributedCenter \ 63ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (FX_TXTLINEALIGNMENT_Center | FX_TXTLINEALIGNMENT_Distributed) 64ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FX_TXTLINEALIGNMENT_DistributedRight \ 65ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (FX_TXTLINEALIGNMENT_Right | FX_TXTLINEALIGNMENT_Distributed) 66ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FX_TXTLINEALIGNMENT_LowerMask 0x03 67ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FX_TXTLINEALIGNMENT_HigherMask 0x0C 68ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define FX_TXTBREAK_MinimumTabWidth 160000 69ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 70ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannclass IFX_TxtAccess { 71ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann public: 72ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual ~IFX_TxtAccess() {} 73ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual FX_WCHAR GetChar(void* pIdentity, int32_t index) const = 0; 74ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual int32_t GetWidth(void* pIdentity, int32_t index) const = 0; 75ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann}; 76ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmanntypedef struct _FX_TXTRUN { 77ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann _FX_TXTRUN() { 78ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pAccess = NULL; 79ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pIdentity = NULL; 80ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pStr = NULL; 81ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pWidths = NULL; 82ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann iLength = 0; 83ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pFont = NULL; 84ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann fFontSize = 12; 85ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann dwStyles = 0; 86ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann iHorizontalScale = 100; 87ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann iVerticalScale = 100; 88ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann iCharRotation = 0; 89ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann dwCharStyles = 0; 90ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pRect = NULL; 91ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann wLineBreakChar = L'\n'; 92ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann bSkipSpace = TRUE; 93ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 94ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann IFX_TxtAccess* pAccess; 95ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann void* pIdentity; 96ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const FX_WCHAR* pStr; 97ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t* pWidths; 98ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iLength; 99ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann IFX_Font* pFont; 100ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT fFontSize; 101ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_DWORD dwStyles; 102ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iHorizontalScale; 103ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iVerticalScale; 104ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iCharRotation; 105ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_DWORD dwCharStyles; 106ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_LPCRECTF pRect; 107ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_WCHAR wLineBreakChar; 108ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bSkipSpace; 109ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} FX_TXTRUN, *FX_LPTXTRUN; 110ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmanntypedef FX_TXTRUN const* FX_LPCTXTRUN; 111ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannclass CFX_TxtPiece : public CFX_Target { 112ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann public: 113ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_TxtPiece() 114ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann : m_dwStatus(FX_TXTBREAK_PieceBreak), 115ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_iStartPos(0), 116ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_iWidth(-1), 117ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_iStartChar(0), 118ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_iChars(0), 119ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_iBidiLevel(0), 120ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_iBidiPos(0), 121ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_iHorizontalScale(100), 122ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_iVerticalScale(100), 123ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_dwCharStyles(0), 124ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pChars(NULL), 125ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pUserData(NULL) {} 126ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t GetEndPos() const { 127ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return m_iWidth < 0 ? m_iStartPos : m_iStartPos + m_iWidth; 128ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 129ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t GetLength() const { return m_iChars; } 130ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t GetEndChar() const { return m_iStartChar + m_iChars; } 131ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_TxtChar* GetCharPtr(int32_t index) const { 132ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FXSYS_assert(index > -1 && index < m_iChars && m_pChars != NULL); 133ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return m_pChars->GetDataPtr(m_iStartChar + index); 134ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 135ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann void GetString(FX_WCHAR* pText) const { 136ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FXSYS_assert(pText != NULL); 137ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iEndChar = m_iStartChar + m_iChars; 138ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_Char* pChar; 139ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (int32_t i = m_iStartChar; i < iEndChar; i++) { 140ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pChar = m_pChars->GetDataPtr(i); 141ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann *pText++ = (FX_WCHAR)pChar->m_wCharCode; 142ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 143ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 144ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 145ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann void GetString(CFX_WideString& wsText) const { 146ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_WCHAR* pText = wsText.GetBuffer(m_iChars); 147ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann GetString(pText); 148ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann wsText.ReleaseBuffer(m_iChars); 149ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 150ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann void GetWidths(int32_t* pWidths) const { 151ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FXSYS_assert(pWidths != NULL); 152ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iEndChar = m_iStartChar + m_iChars; 153ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_Char* pChar; 154ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (int32_t i = m_iStartChar; i < iEndChar; i++) { 155ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pChar = m_pChars->GetDataPtr(i); 156ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann *pWidths++ = pChar->m_iCharWidth; 157ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 158ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 159ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_DWORD m_dwStatus; 160ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t m_iStartPos; 161ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t m_iWidth; 162ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t m_iStartChar; 163ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t m_iChars; 164ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t m_iBidiLevel; 165ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t m_iBidiPos; 166ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t m_iHorizontalScale; 167ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t m_iVerticalScale; 168ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_DWORD m_dwCharStyles; 169ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_TxtCharArray* m_pChars; 170ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann void* m_pUserData; 171ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann}; 172ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmanntypedef CFX_BaseArrayTemplate<CFX_TxtPiece> CFX_TxtPieceArray; 173ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannclass IFX_TxtBreak { 174ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann public: 175ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann static IFX_TxtBreak* Create(FX_DWORD dwPolicies); 176ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual ~IFX_TxtBreak() {} 177ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual void Release() = 0; 178ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual void SetLineWidth(FX_FLOAT fLineWidth) = 0; 179ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual void SetLinePos(FX_FLOAT fLinePos) = 0; 180ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual FX_DWORD GetLayoutStyles() const = 0; 181ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual void SetLayoutStyles(FX_DWORD dwLayoutStyles) = 0; 182ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual void SetFont(IFX_Font* pFont) = 0; 183ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual void SetFontSize(FX_FLOAT fFontSize) = 0; 184ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual void SetTabWidth(FX_FLOAT fTabWidth, FX_BOOL bEquidistant) = 0; 185ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual void SetDefaultChar(FX_WCHAR wch) = 0; 186ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual void SetParagraphBreakChar(FX_WCHAR wch) = 0; 187ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual void SetLineBreakTolerance(FX_FLOAT fTolerance) = 0; 188ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual void SetHorizontalScale(int32_t iScale) = 0; 189ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual void SetVerticalScale(int32_t iScale) = 0; 190ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual void SetCharRotation(int32_t iCharRotation) = 0; 191ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual void SetCharSpace(FX_FLOAT fCharSpace) = 0; 192ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual void SetAlignment(int32_t iAlignment) = 0; 193ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual FX_DWORD GetContextCharStyles() const = 0; 194ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual void SetContextCharStyles(FX_DWORD dwCharStyles) = 0; 195ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual void SetCombWidth(FX_FLOAT fCombWidth) = 0; 196ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual void SetUserData(void* pUserData) = 0; 197ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual FX_DWORD AppendChar(FX_WCHAR wch) = 0; 198ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual FX_DWORD EndBreak(FX_DWORD dwStatus = FX_TXTBREAK_PieceBreak) = 0; 199ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual int32_t CountBreakChars() const = 0; 200ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual int32_t CountBreakPieces() const = 0; 201ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual const CFX_TxtPiece* GetBreakPiece(int32_t index) const = 0; 202ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual void ClearBreakPieces() = 0; 203ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual void Reset() = 0; 204ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual int32_t GetDisplayPos( 205ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_LPCTXTRUN pTxtRun, 206ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FXTEXT_CHARPOS* pCharPos, 207ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bCharCode = FALSE, 208ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_WideString* pWSForms = NULL, 209ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_AdjustCharDisplayPos pAdjustPos = NULL) const = 0; 210ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann virtual int32_t GetCharRects(FX_LPCTXTRUN pTxtRun, 211ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_RectFArray& rtArray, 212ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bCharBBox = FALSE) const = 0; 213ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann}; 214ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#endif 215