1ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Copyright 2014 PDFium Authors. All rights reserved. 2ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Use of this source code is governed by a BSD-style license that can be 3ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// found in the LICENSE file. 4ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 5ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 7ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef _FXET_EDIT_H_ 8ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define _FXET_EDIT_H_ 9ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 10ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "fx_edit.h" 11ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 12ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CFX_Edit_Page; 13ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovstruct CFX_Edit_LineRect; 14ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CFX_Edit_LineRectArray; 15ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CFX_Edit_RectArray; 16ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CFX_Edit_Refresh; 17ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CFX_Edit_Select; 18ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CFX_Edit; 19ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CFX_Edit_Iterator; 20ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CFX_Edit_Refresh; 21ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CFX_Edit_UndoItem; 22ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CFX_Edit_Undo; 23ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CFX_Edit_Provider; 24ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 25ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FX_EDIT_IsFloatZero(f) (f < 0.0001 && f > -0.0001) 26ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FX_EDIT_IsFloatEqual(fa,fb) FX_EDIT_IsFloatZero(fa - fb) 27ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FX_EDIT_IsFloatBigger(fa,fb) (fa > fb && !FX_EDIT_IsFloatEqual(fa,fb)) 28ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FX_EDIT_IsFloatSmaller(fa,fb) (fa < fb && !FX_EDIT_IsFloatEqual(fa,fb)) 29ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 30ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovtemplate<class T> T FX_EDIT_MIN (const T & i, const T & j) { return ((i < j) ? i : j); } 31ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovtemplate<class T> T FX_EDIT_MAX (const T & i, const T & j) { return ((i > j) ? i : j); } 32ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 33ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FX_EDIT_PI 3.14159265358979f 34ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FX_EDIT_ITALIC_ANGEL 10 * FX_EDIT_PI / 180.0f 35ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 36ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 37ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* ------------------------- CFX_Edit_Refresh ---------------------------- */ 38ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 39ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovenum REFRESH_PLAN_E 40ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 41ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov RP_ANALYSE, 42ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov RP_NOANALYSE, 43ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov RP_OPTIONAL 44ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 45ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 46ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovenum EDIT_PROPS_E 47ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 48ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov EP_LINELEADING, 49ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov EP_LINEINDENT, 50ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov EP_ALIGNMENT, 51ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov EP_FONTINDEX, 52ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov EP_FONTSIZE, 53ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov EP_WORDCOLOR, 54ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov EP_SCRIPTTYPE, 55ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov EP_UNDERLINE, 56ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov EP_CROSSOUT, 57ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov EP_CHARSPACE, 58ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov EP_HORZSCALE, 59ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov EP_BOLD, 60ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov EP_ITALIC 61ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 62ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 63ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovstruct CFX_Edit_LineRect 64ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 65ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_Edit_LineRect(const CPVT_WordRange & wrLine,const CPDF_Rect & rcLine) : 66ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_wrLine(wrLine), m_rcLine(rcLine) 67ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 68ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 69ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 70ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL operator != (const CFX_Edit_LineRect & linerect) const 71ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 72ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FXSYS_memcmp(this, &linerect, sizeof(CFX_Edit_LineRect)) != 0; 73ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 74ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 75ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL IsSameHeight(const CFX_Edit_LineRect & linerect) const 76ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 77ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FX_EDIT_IsFloatZero((m_rcLine.top - m_rcLine.bottom) - (linerect.m_rcLine.top -linerect.m_rcLine.bottom)); 78ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 79ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 80ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL IsSameTop(const CFX_Edit_LineRect & linerect) const 81ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 82ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FX_EDIT_IsFloatZero(m_rcLine.top - linerect.m_rcLine.top); 83ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 84ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 85ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL IsSameLeft(const CFX_Edit_LineRect & linerect) const 86ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 87ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FX_EDIT_IsFloatZero(m_rcLine.left - linerect.m_rcLine.left); 88ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 89ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 90ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL IsSameRight(const CFX_Edit_LineRect & linerect) const 91ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 92ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FX_EDIT_IsFloatZero(m_rcLine.right - linerect.m_rcLine.right); 93ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 94ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 95ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordRange m_wrLine; 96ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect m_rcLine; 97ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 98ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 99ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CFX_Edit_LineRectArray 100ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 101ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 102ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_Edit_LineRectArray() 103ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 104ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 105ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 106ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual ~CFX_Edit_LineRectArray() 107ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 108ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Empty(); 109ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 110ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 111ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void Empty() 112ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 113ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov for (FX_INT32 i = 0, sz = m_LineRects.GetSize(); i < sz; i++) 114ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov delete m_LineRects.GetAt(i); 115ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 116ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_LineRects.RemoveAll(); 117ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 118ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 119ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void RemoveAll() 120ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 121ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_LineRects.RemoveAll(); 122ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 123ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 124ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void operator = (CFX_Edit_LineRectArray & rects) 125ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 126ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Empty(); 127ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov for (FX_INT32 i = 0, sz = rects.GetSize(); i < sz; i++) 128ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_LineRects.Add(rects.GetAt(i)); 129ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 130ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov rects.RemoveAll(); 131ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 132ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 133ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void Add(const CPVT_WordRange & wrLine,const CPDF_Rect & rcLine) 134ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 135ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (CFX_Edit_LineRect * pRect = new CFX_Edit_LineRect(wrLine,rcLine)) 136ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_LineRects.Add(pRect); 137ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 138ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 139ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 GetSize() const 140ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 141ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_LineRects.GetSize(); 142ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 143ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 144ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_Edit_LineRect * GetAt(FX_INT32 nIndex) const 145ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 146ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (nIndex < 0 || nIndex >= m_LineRects.GetSize()) 147ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return NULL; 148ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 149ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_LineRects.GetAt(nIndex); 150ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 151ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 152ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ArrayTemplate<CFX_Edit_LineRect*> m_LineRects; 153ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 154ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 155ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CFX_Edit_RectArray 156ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 157ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 158ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_Edit_RectArray() 159ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 160ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 161ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 162ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual ~CFX_Edit_RectArray() 163ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 164ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov this->Empty(); 165ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 166ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 167ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void Empty() 168ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 169ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov for (FX_INT32 i = 0, sz = m_Rects.GetSize(); i < sz; i++) 170ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov delete m_Rects.GetAt(i); 171ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 172ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov this->m_Rects.RemoveAll(); 173ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 174ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 175ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void Add(const CPDF_Rect & rect) 176ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 177ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov //check for overlaped area 178ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov for (FX_INT32 i = 0, sz = m_Rects.GetSize(); i < sz; i++) 179ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (CPDF_Rect * pRect = m_Rects.GetAt(i)) 180ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pRect->Contains(rect))return; 181ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 182ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (CPDF_Rect * pNewRect = new CPDF_Rect(rect)) 183ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_Rects.Add(pNewRect); 184ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 185ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 186ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 GetSize() const 187ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 188ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_Rects.GetSize(); 189ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 190ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 191ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect * GetAt(FX_INT32 nIndex) const 192ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 193ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (nIndex < 0 || nIndex >= m_Rects.GetSize()) 194ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return NULL; 195ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 196ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_Rects.GetAt(nIndex); 197ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 198ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 199ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ArrayTemplate<CPDF_Rect*> m_Rects; 200ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 201ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 202ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CFX_Edit_Refresh 203ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 204ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 205ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_Edit_Refresh(); 206ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual ~CFX_Edit_Refresh(); 207ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 208ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void BeginRefresh(); 209ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void Push(const CPVT_WordRange & linerange,const CPDF_Rect & rect); 210ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void NoAnalyse(); 211ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void Analyse(FX_INT32 nAlignment); 212ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void AddRefresh(const CPDF_Rect & rect); 213ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const CFX_Edit_RectArray * GetRefreshRects() const; 214ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void EndRefresh(); 215ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 216ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprivate: 217ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_Edit_LineRectArray m_NewLineRects; 218ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_Edit_LineRectArray m_OldLineRects; 219ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_Edit_RectArray m_RefreshRects; 220ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 221ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 222ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 223ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* ------------------------- CFX_Edit_Select ---------------------------- */ 224ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 225ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CFX_Edit_Select 226ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 227ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 228ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_Edit_Select() 229ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 230ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 231ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 232ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_Edit_Select(const CPVT_WordPlace & begin,const CPVT_WordPlace & end) 233ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 234ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Set(begin,end); 235ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 236ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 237ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_Edit_Select(const CPVT_WordRange & range) 238ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 239ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Set(range.BeginPos,range.EndPos); 240ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 241ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 242ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordRange ConvertToWordRange() const 243ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 244ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return CPVT_WordRange(this->BeginPos,this->EndPos); 245ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 246ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 247ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void Default() 248ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 249ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov BeginPos.Default(); 250ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov EndPos.Default(); 251ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 252ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 253ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void Set(const CPVT_WordPlace & begin,const CPVT_WordPlace & end) 254ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 255ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov this->BeginPos = begin; 256ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov this->EndPos = end; 257ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 258ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 259ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetBeginPos(const CPVT_WordPlace & begin) 260ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 261ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov this->BeginPos = begin; 262ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 263ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 264ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetEndPos(const CPVT_WordPlace & end) 265ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 266ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov this->EndPos = end; 267ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 268ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 269ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL IsExist() const 270ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 271ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return this->BeginPos != this->EndPos; 272ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 273ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 274ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL operator != (const CPVT_WordRange & wr) const 275ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 276ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return wr.BeginPos != this->BeginPos || wr.EndPos != this->EndPos; 277ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 278ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 279ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordPlace BeginPos,EndPos; 280ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 281ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 282ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* ------------------------- CFX_Edit_Undo ---------------------------- */ 283ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 284ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CFX_Edit_Undo 285ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 286ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 287ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_Edit_Undo(FX_INT32 nBufsize = 10000); 288ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual ~CFX_Edit_Undo(); 289ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 290ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void Undo(); 291ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void Redo(); 292ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 293ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void AddItem(IFX_Edit_UndoItem* pItem); 294ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 295ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL CanUndo() const; 296ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL CanRedo() const; 297ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL IsModified() const; 298ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL IsWorking() const; 299ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 300ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void Reset(); 301ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 302ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IFX_Edit_UndoItem* GetItem(FX_INT32 nIndex); 303ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 GetItemCount(){return m_UndoItemStack.GetSize();} 304ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 GetCurUndoPos(){return m_nCurUndoPos;} 305ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 306ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprivate: 307ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetBufSize(FX_INT32 nSize){m_nBufSize = nSize;} 308ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 GetBufSize(){return m_nBufSize;} 309ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 310ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void RemoveHeads(); 311ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void RemoveTails(); 312ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 313ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprivate: 314ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ArrayTemplate<IFX_Edit_UndoItem*> m_UndoItemStack; 315ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 316ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 m_nCurUndoPos; 317ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 m_nBufSize; 318ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL m_bModified; 319ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL m_bVirgin; 320ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL m_bWorking; 321ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 322ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 323ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CFX_Edit_UndoItem : public IFX_Edit_UndoItem 324ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 325ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 326ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_Edit_UndoItem() : m_bFirst(TRUE), m_bLast(TRUE) {} 327ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual ~CFX_Edit_UndoItem(){} 328ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 329ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual CFX_WideString GetUndoTitle() {return L"";} 330ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual void Release(){delete this;} 331ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 332ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 333ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetFirst(FX_BOOL bFirst){m_bFirst = bFirst;} 334ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL IsFirst(){return m_bFirst;} 335ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetLast(FX_BOOL bLast){m_bLast = bLast;} 336ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL IsLast(){return m_bLast;} 337ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 338ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprivate: 339ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL m_bFirst; 340ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL m_bLast; 341ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 342ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 343ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CFX_Edit_GroupUndoItem : public IFX_Edit_UndoItem 344ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 345ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 346ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_Edit_GroupUndoItem(const CFX_WideString& sTitle); 347ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual ~CFX_Edit_GroupUndoItem(); 348ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 349ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void AddUndoItem(CFX_Edit_UndoItem* pUndoItem); 350ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void UpdateItems(); 351ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 352ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 353ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual void Undo(); 354ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual void Redo(); 355ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual CFX_WideString GetUndoTitle(); 356ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual void Release(); 357ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 358ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprivate: 359ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_WideString m_sTitle; 360ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ArrayTemplate<CFX_Edit_UndoItem*> m_Items; 361ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 362ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 363ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* ------------------------- CFX_Edit_UndoItem derived classes ---------------------------- */ 364ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 365ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CFXEU_InsertWord : public CFX_Edit_UndoItem 366ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 367ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 368ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFXEU_InsertWord(CFX_Edit * pEdit, const CPVT_WordPlace & wpOldPlace, const CPVT_WordPlace & wpNewPlace, 369ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_WORD word, FX_INT32 charset, const CPVT_WordProps * pWordProps); 370ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual ~CFXEU_InsertWord(); 371ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 372ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void Redo(); 373ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void Undo(); 374ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 375ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprivate: 376ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_Edit* m_pEdit; 377ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 378ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordPlace m_wpOld; 379ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordPlace m_wpNew; 380ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_WORD m_Word; 381ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 m_nCharset; 382ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordProps m_WordProps; 383ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 384ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 385ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CFXEU_InsertReturn : public CFX_Edit_UndoItem 386ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 387ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 388ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFXEU_InsertReturn(CFX_Edit * pEdit, const CPVT_WordPlace & wpOldPlace, const CPVT_WordPlace & wpNewPlace, 389ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const CPVT_SecProps * pSecProps, const CPVT_WordProps * pWordProps); 390ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual ~CFXEU_InsertReturn(); 391ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 392ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void Redo(); 393ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void Undo(); 394ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 395ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprivate: 396ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_Edit * m_pEdit; 397ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 398ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordPlace m_wpOld; 399ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordPlace m_wpNew; 400ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_SecProps m_SecProps; 401ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordProps m_WordProps; 402ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 403ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 404ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CFXEU_Backspace : public CFX_Edit_UndoItem 405ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 406ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 407ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFXEU_Backspace(CFX_Edit * pEdit, const CPVT_WordPlace & wpOldPlace, const CPVT_WordPlace & wpNewPlace, 408ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_WORD word, FX_INT32 charset, 409ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const CPVT_SecProps & SecProps, const CPVT_WordProps & WordProps); 410ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual ~CFXEU_Backspace(); 411ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 412ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void Redo(); 413ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void Undo(); 414ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 415ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprivate: 416ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_Edit * m_pEdit; 417ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 418ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordPlace m_wpOld; 419ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordPlace m_wpNew; 420ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_WORD m_Word; 421ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 m_nCharset; 422ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_SecProps m_SecProps; 423ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordProps m_WordProps; 424ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 425ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 426ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CFXEU_Delete : public CFX_Edit_UndoItem 427ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 428ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 429ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFXEU_Delete(CFX_Edit * pEdit, const CPVT_WordPlace & wpOldPlace, const CPVT_WordPlace & wpNewPlace, 430ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_WORD word, FX_INT32 charset, 431ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const CPVT_SecProps & SecProps, const CPVT_WordProps & WordProps, FX_BOOL bSecEnd); 432ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual ~CFXEU_Delete(); 433ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 434ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void Redo(); 435ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void Undo(); 436ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 437ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprivate: 438ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_Edit * m_pEdit; 439ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 440ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordPlace m_wpOld; 441ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordPlace m_wpNew; 442ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_WORD m_Word; 443ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 m_nCharset; 444ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_SecProps m_SecProps; 445ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordProps m_WordProps; 446ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL m_bSecEnd; 447ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 448ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 449ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CFXEU_Clear : public CFX_Edit_UndoItem 450ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 451ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 452ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFXEU_Clear(CFX_Edit * pEdit, const CPVT_WordRange & wrSel, const CFX_WideString & swText); 453ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual ~CFXEU_Clear(); 454ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 455ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void Redo(); 456ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void Undo(); 457ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 458ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprivate: 459ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_Edit* m_pEdit; 460ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 461ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordRange m_wrSel; 462ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_WideString m_swText; 463ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 464ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 465ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CFXEU_ClearRich : public CFX_Edit_UndoItem 466ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 467ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 468ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFXEU_ClearRich(CFX_Edit * pEdit, const CPVT_WordPlace & wpOldPlace, const CPVT_WordPlace & wpNewPlace, 469ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const CPVT_WordRange & wrSel, 470ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_WORD word, FX_INT32 charset, 471ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const CPVT_SecProps & SecProps, const CPVT_WordProps & WordProps); 472ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual ~CFXEU_ClearRich(); 473ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 474ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void Redo(); 475ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void Undo(); 476ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 477ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprivate: 478ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_Edit * m_pEdit; 479ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 480ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordPlace m_wpOld; 481ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordPlace m_wpNew; 482ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordRange m_wrSel; 483ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_WORD m_Word; 484ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 m_nCharset; 485ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_SecProps m_SecProps; 486ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordProps m_WordProps; 487ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 488ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 489ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CFXEU_InsertText : public CFX_Edit_UndoItem 490ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 491ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 492ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFXEU_InsertText(CFX_Edit * pEdit, const CPVT_WordPlace & wpOldPlace, const CPVT_WordPlace & wpNewPlace, 493ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const CFX_WideString & swText, FX_INT32 charset, 494ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const CPVT_SecProps * pSecProps, const CPVT_WordProps * pWordProps); 495ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual ~CFXEU_InsertText(); 496ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 497ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void Redo(); 498ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void Undo(); 499ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 500ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprivate: 501ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_Edit * m_pEdit; 502ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 503ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordPlace m_wpOld; 504ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordPlace m_wpNew; 505ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_WideString m_swText; 506ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 m_nCharset; 507ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_SecProps m_SecProps; 508ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordProps m_WordProps; 509ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 510ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 511ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CFXEU_SetSecProps : public CFX_Edit_UndoItem 512ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 513ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 514ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFXEU_SetSecProps(CFX_Edit * pEdit, const CPVT_WordPlace & place, EDIT_PROPS_E ep, 515ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const CPVT_SecProps & oldsecprops, const CPVT_WordProps & oldwordprops, 516ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const CPVT_SecProps & newsecprops, const CPVT_WordProps & newwordprops, const CPVT_WordRange & range); 517ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual ~CFXEU_SetSecProps(); 518ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 519ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void Redo(); 520ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void Undo(); 521ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 522ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprivate: 523ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_Edit * m_pEdit; 524ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordPlace m_wpPlace; 525ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordRange m_wrPlace; 526ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov EDIT_PROPS_E m_eProps; 527ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 528ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_SecProps m_OldSecProps; 529ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_SecProps m_NewSecProps; 530ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordProps m_OldWordProps; 531ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordProps m_NewWordProps; 532ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 533ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 534ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CFXEU_SetWordProps : public CFX_Edit_UndoItem 535ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 536ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 537ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFXEU_SetWordProps(CFX_Edit * pEdit, const CPVT_WordPlace & place, EDIT_PROPS_E ep, 538ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const CPVT_WordProps & oldprops, const CPVT_WordProps & newprops, const CPVT_WordRange & range); 539ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual ~CFXEU_SetWordProps(); 540ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 541ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void Redo(); 542ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void Undo(); 543ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 544ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprivate: 545ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_Edit * m_pEdit; 546ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordPlace m_wpPlace; 547ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordRange m_wrPlace; 548ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov EDIT_PROPS_E m_eProps; 549ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 550ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordProps m_OldWordProps; 551ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordProps m_NewWordProps; 552ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 553ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 554ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* ------------------------- CFX_Edit ---------------------------- */ 555ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 556ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CFX_Edit : public IFX_Edit 557ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 558ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov friend class CFX_Edit_Iterator; 559ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov friend class CFXEU_InsertWord; 560ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov friend class CFXEU_InsertReturn; 561ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov friend class CFXEU_Backspace; 562ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov friend class CFXEU_Delete; 563ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov friend class CFXEU_Clear; 564ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov friend class CFXEU_ClearRich; 565ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov friend class CFXEU_SetSecProps; 566ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov friend class CFXEU_SetWordProps; 567ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov friend class CFXEU_InsertText; 568ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 569ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 570ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_Edit(IPDF_VariableText * pVT); 571ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual ~CFX_Edit(); 572ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 573ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetFontMap(IFX_Edit_FontMap * pFontMap); 574ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetVTProvider(IPDF_VariableText_Provider* pProvider); 575ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetNotify(IFX_Edit_Notify * pNotify); 576ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetOprNotify(IFX_Edit_OprNotify* pOprNotify); 577ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IFX_Edit_Iterator* GetIterator(); 578ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IPDF_VariableText * GetVariableText(); 579ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IFX_Edit_FontMap* GetFontMap(); 580ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 581ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void Initialize(); 582ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetPlateRect(const CPDF_Rect & rect, FX_BOOL bPaint = TRUE); 583ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetScrollPos(const CPDF_Point & point); 584ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 585ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetAlignmentH(FX_INT32 nFormat = 0, FX_BOOL bPaint = TRUE); 586ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetAlignmentV(FX_INT32 nFormat = 0, FX_BOOL bPaint = TRUE); 587ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetPasswordChar(FX_WORD wSubWord = '*', FX_BOOL bPaint = TRUE); 588ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetLimitChar(FX_INT32 nLimitChar = 0, FX_BOOL bPaint = TRUE); 589ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetCharArray(FX_INT32 nCharArray = 0, FX_BOOL bPaint = TRUE); 590ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetCharSpace(FX_FLOAT fCharSpace = 0.0f, FX_BOOL bPaint = TRUE); 591ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetHorzScale(FX_INT32 nHorzScale = 100, FX_BOOL bPaint = TRUE); 592ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetLineLeading(FX_FLOAT fLineLeading, FX_BOOL bPaint = TRUE); 593ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetMultiLine(FX_BOOL bMultiLine = TRUE, FX_BOOL bPaint = TRUE); 594ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetAutoReturn(FX_BOOL bAuto = TRUE, FX_BOOL bPaint = TRUE); 595ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetAutoFontSize(FX_BOOL bAuto = TRUE, FX_BOOL bPaint = TRUE); 596ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetAutoScroll(FX_BOOL bAuto = TRUE, FX_BOOL bPaint = TRUE); 597ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetFontSize(FX_FLOAT fFontSize, FX_BOOL bPaint = TRUE); 598ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetTextOverflow(FX_BOOL bAllowed = FALSE, FX_BOOL bPaint = TRUE); 599ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 600ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL IsRichText() const; 601ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetRichText(FX_BOOL bRichText = TRUE, FX_BOOL bPaint = TRUE); 602ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL SetRichFontSize(FX_FLOAT fFontSize); 603ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL SetRichFontIndex(FX_INT32 nFontIndex); 604ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL SetRichTextColor(FX_COLORREF dwColor); 605ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL SetRichTextScript(FX_INT32 nScriptType); 606ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL SetRichTextBold(FX_BOOL bBold = TRUE); 607ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL SetRichTextItalic(FX_BOOL bItalic = TRUE); 608ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL SetRichTextUnderline(FX_BOOL bUnderline = TRUE); 609ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL SetRichTextCrossout(FX_BOOL bCrossout = TRUE); 610ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL SetRichTextCharSpace(FX_FLOAT fCharSpace); 611ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL SetRichTextHorzScale(FX_INT32 nHorzScale = 100); 612ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL SetRichTextLineLeading(FX_FLOAT fLineLeading); 613ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL SetRichTextLineIndent(FX_FLOAT fLineIndent); 614ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL SetRichTextAlignment(FX_INT32 nAlignment); 615ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 616ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void OnMouseDown(const CPDF_Point & point,FX_BOOL bShift,FX_BOOL bCtrl); 617ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void OnMouseMove(const CPDF_Point & point,FX_BOOL bShift,FX_BOOL bCtrl); 618ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void OnVK_UP(FX_BOOL bShift,FX_BOOL bCtrl); 619ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void OnVK_DOWN(FX_BOOL bShift,FX_BOOL bCtrl); 620ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void OnVK_LEFT(FX_BOOL bShift,FX_BOOL bCtrl); 621ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void OnVK_RIGHT(FX_BOOL bShift,FX_BOOL bCtrl); 622ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void OnVK_HOME(FX_BOOL bShift,FX_BOOL bCtrl); 623ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void OnVK_END(FX_BOOL bShift,FX_BOOL bCtrl); 624ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 625ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetText(FX_LPCWSTR text,FX_INT32 charset = DEFAULT_CHARSET, 626ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const CPVT_SecProps * pSecProps = NULL,const CPVT_WordProps * pWordProps = NULL); 627ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL InsertWord(FX_WORD word, FX_INT32 charset = DEFAULT_CHARSET, const CPVT_WordProps * pWordProps = NULL); 628ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL InsertReturn(const CPVT_SecProps * pSecProps = NULL,const CPVT_WordProps * pWordProps = NULL); 629ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL Backspace(); 630ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL Delete(); 631ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL Clear(); 632ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL Empty(); 633ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL InsertText(FX_LPCWSTR text, FX_INT32 charset = DEFAULT_CHARSET, 634ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const CPVT_SecProps * pSecProps = NULL,const CPVT_WordProps * pWordProps = NULL); 635ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL Redo(); 636ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL Undo(); 637ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordPlace DoInsertText(const CPVT_WordPlace& place, FX_LPCWSTR text, FX_INT32 charset, 638ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const CPVT_SecProps * pSecProps, const CPVT_WordProps * pWordProps); 639ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 GetCharSetFromUnicode(FX_WORD word, FX_INT32 nOldCharset); 640ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 641ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 WordPlaceToWordIndex(const CPVT_WordPlace & place) const; 642ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordPlace WordIndexToWordPlace(FX_INT32 index) const; 643ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 644ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordPlace GetLineBeginPlace(const CPVT_WordPlace & place) const; 645ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordPlace GetLineEndPlace(const CPVT_WordPlace & place) const; 646ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordPlace GetSectionBeginPlace(const CPVT_WordPlace & place) const; 647ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordPlace GetSectionEndPlace(const CPVT_WordPlace & place) const; 648ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordPlace SearchWordPlace(const CPDF_Point& point) const; 649ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 650ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 GetCaret() const; 651ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordPlace GetCaretWordPlace() const; 652ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_WideString GetSelText() const; 653ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_WideString GetText() const; 654ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT GetFontSize() const; 655ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_WORD GetPasswordChar() const; 656ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Point GetScrollPos() const; 657ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 GetCharArray() const; 658ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect GetPlateRect() const; 659ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect GetContentRect() const; 660ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_WideString GetRangeText(const CPVT_WordRange & range) const; 661ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 GetHorzScale() const; 662ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT GetCharSpace() const; 663ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 GetTotalWords() const; 664ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 GetTotalLines() const; 665ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 666ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetSel(FX_INT32 nStartChar,FX_INT32 nEndChar); 667ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void GetSel(FX_INT32 & nStartChar, FX_INT32 & nEndChar) const; 668ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 669ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprivate: 670ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SelectAll(); 671ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SelectNone(); 672ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetSel(const CPVT_WordPlace & begin,const CPVT_WordPlace & end); 673ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL IsSelected() const; 674ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 675ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void RearrangeAll(); 676ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void RearrangePart(const CPVT_WordRange & range); 677ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void Paint(); 678ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void ScrollToCaret(); 679ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetScrollInfo(); 680ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetScrollPosX(FX_FLOAT fx); 681ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetScrollPosY(FX_FLOAT fy); 682ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetScrollLimit(); 683ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetContentChanged(); 684ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void EnableNotify(FX_BOOL bNotify); 685ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 686ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetText(FX_LPCWSTR text,FX_INT32 charset, 687ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const CPVT_SecProps * pSecProps,const CPVT_WordProps * pWordProps,FX_BOOL bAddUndo, FX_BOOL bPaint); 688ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL InsertWord(FX_WORD word, FX_INT32 charset, const CPVT_WordProps * pWordProps,FX_BOOL bAddUndo, FX_BOOL bPaint); 689ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL InsertReturn(const CPVT_SecProps * pSecProps,const CPVT_WordProps * pWordProps,FX_BOOL bAddUndo, FX_BOOL bPaint); 690ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL Backspace(FX_BOOL bAddUndo, FX_BOOL bPaint); 691ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL Delete(FX_BOOL bAddUndo, FX_BOOL bPaint); 692ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL Clear(FX_BOOL bAddUndo, FX_BOOL bPaint); 693ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL InsertText(FX_LPCWSTR text, FX_INT32 charset, 694ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const CPVT_SecProps * pSecProps,const CPVT_WordProps * pWordProps,FX_BOOL bAddUndo, FX_BOOL bPaint); 695ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL SetRichTextProps(EDIT_PROPS_E eProps, 696ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const CPVT_SecProps * pSecProps, const CPVT_WordProps * pWordProps); 697ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL SetSecProps(EDIT_PROPS_E eProps, const CPVT_WordPlace & place, 698ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const CPVT_SecProps * pSecProps, const CPVT_WordProps * pWordProps, const CPVT_WordRange & wr, FX_BOOL bAddUndo); 699ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL SetWordProps(EDIT_PROPS_E eProps, const CPVT_WordPlace & place, 700ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const CPVT_WordProps * pWordProps, const CPVT_WordRange & wr, FX_BOOL bAddUndo); 701ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void PaintSetProps(EDIT_PROPS_E eProps, const CPVT_WordRange & wr); 702ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void PaintInsertText(const CPVT_WordPlace & wpOld, const CPVT_WordPlace & wpNew); 703ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 704ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov inline CPDF_Point VTToEdit(const CPDF_Point & point) const; 705ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov inline CPDF_Point EditToVT(const CPDF_Point & point) const; 706ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov inline CPDF_Rect VTToEdit(const CPDF_Rect & rect) const; 707ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov inline CPDF_Rect EditToVT(const CPDF_Rect & rect) const; 708ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 709ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void EnableRefresh(FX_BOOL bRefresh); 710ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void Refresh(REFRESH_PLAN_E ePlan,const CPVT_WordRange * pRange1 = NULL,const CPVT_WordRange * pRange2 = NULL); 711ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void RefreshPushLineRects(const CPVT_WordRange & wr); 712ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void RefreshPushRandomRects(const CPVT_WordRange & wr); 713ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void RefreshWordRange(const CPVT_WordRange& wr); 714ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 715ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetCaret(FX_INT32 nPos); 716ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetCaret(const CPVT_WordPlace & place); 717ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetCaretInfo(); 718ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetCaretOrigin(); 719ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetCaretChange(); 720ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 721ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordRange GetWholeWordRange() const; 722ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordRange GetVisibleWordRange() const; 723ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordRange GetLatinWordsRange(const CPVT_WordPlace & place) const; 724ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordRange CombineWordRange(const CPVT_WordRange & wr1, const CPVT_WordRange & wr2); 725ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordRange GetSelectWordRange() const; 726ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 727ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void EnableUndo(FX_BOOL bUndo); 728ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void EnableOprNotify(FX_BOOL bNotify); 729ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 730ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL IsTextFull() const; 731ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL IsTextOverflow() const; 732ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL CanUndo() const; 733ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL CanRedo() const; 734ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL IsModified() const; 735ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 736ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void BeginGroupUndo(const CFX_WideString& sTitle); 737ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void EndGroupUndo(); 738ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void AddEditUndoItem(CFX_Edit_UndoItem* pEditUndoItem); 739ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void AddUndoItem(IFX_Edit_UndoItem* pUndoItem); 740ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 741ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetPageInfo(const CPVT_WordPlace& place); 742ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordPlace SearchPageEndPlace(const CPVT_WordPlace& wpPageBegin, const CPDF_Point& point) const; 743ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT GetLineTop(const CPVT_WordPlace& place) const; 744ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT GetLineBottom(const CPVT_WordPlace& place) const; 745ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 746ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprivate: 747ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IPDF_VariableText* m_pVT; 748ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IFX_Edit_Notify* m_pNotify; 749ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IFX_Edit_OprNotify* m_pOprNotify; 750ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_Edit_Provider* m_pVTProvide; 751ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 752ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordPlace m_wpCaret; 753ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordPlace m_wpOldCaret; 754ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_Edit_Select m_SelState; 755ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 756ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Point m_ptScrollPos; 757ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Point m_ptRefreshScrollPos; 758ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL m_bEnableScroll; 759ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IFX_Edit_Iterator * m_pIterator; 760ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_Edit_Refresh m_Refresh; 761ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Point m_ptCaret; 762ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_Edit_Undo m_Undo; 763ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 m_nAlignment; 764ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL m_bNotifyFlag; 765ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL m_bTextFullFlag; 766ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL m_bEnableOverflow; 767ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL m_bEnableRefresh; 768ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect m_rcOldContent; 769ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL m_bEnableUndo; 770ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL m_bNotify; 771ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL m_bOprNotify; 772ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_Edit_GroupUndoItem* m_pGroupUndoItem; 773ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 774ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 775ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* ------------------------- CFX_Edit_Iterator ---------------------------- */ 776ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 777ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CFX_Edit_Iterator : public IFX_Edit_Iterator 778ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 779ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 780ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_Edit_Iterator(CFX_Edit * pEdit,IPDF_VariableText_Iterator * pVTIterator); 781ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual ~CFX_Edit_Iterator(); 782ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 783ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL NextWord(); 784ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL NextLine(); 785ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL NextSection(); 786ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL PrevWord(); 787ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL PrevLine(); 788ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL PrevSection(); 789ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 790ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL GetWord(CPVT_Word & word) const; 791ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL GetLine(CPVT_Line & line) const; 792ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL GetSection(CPVT_Section & section) const; 793ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetAt(FX_INT32 nWordIndex); 794ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void SetAt(const CPVT_WordPlace & place); 795ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const CPVT_WordPlace & GetAt() const; 796ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IFX_Edit* GetEdit() const; 797ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 798ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprivate: 799ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_Edit * m_pEdit; 800ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IPDF_VariableText_Iterator* m_pVTIterator; 801ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 802ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 803ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CFX_Edit_Provider : public IPDF_VariableText_Provider 804ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 805ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 806ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_Edit_Provider(IFX_Edit_FontMap* pFontMap); 807ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual ~CFX_Edit_Provider(); 808ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 809ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IFX_Edit_FontMap* GetFontMap(); 810ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 811ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 GetCharWidth(FX_INT32 nFontIndex, FX_WORD word, FX_INT32 nWordStyle); 812ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 GetTypeAscent(FX_INT32 nFontIndex); 813ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 GetTypeDescent(FX_INT32 nFontIndex); 814ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 GetWordFontIndex(FX_WORD word, FX_INT32 charset, FX_INT32 nFontIndex); 815ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 GetDefaultFontIndex(); 816ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL IsLatinWord(FX_WORD word); 817ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 818ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprivate: 819ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IFX_Edit_FontMap* m_pFontMap; 820ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 821ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 822ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif //_FXET_EDIT_H_ 823ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 824