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#include "../../include/fxedit/fxet_stub.h" 8ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../../include/fxedit/fxet_edit.h" 9ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 10ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FX_EDIT_UNDO_MAXITEM 10000 11ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 12ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* ---------------------------- CFX_Edit_Iterator ---------------------------- */ 13ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 14ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCFX_Edit_Iterator::CFX_Edit_Iterator(CFX_Edit * pEdit,IPDF_VariableText_Iterator * pVTIterator) : 15ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit(pEdit), 16ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pVTIterator(pVTIterator) 17ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 18ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 19ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 20ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCFX_Edit_Iterator::~CFX_Edit_Iterator() 21ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 22ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 23ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 24ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CFX_Edit_Iterator::NextWord() 25ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 26ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_pVTIterator != NULL); 27ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 28ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_pVTIterator->NextWord(); 29ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 30ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 31ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CFX_Edit_Iterator::NextLine() 32ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 33ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_pVTIterator != NULL); 34ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 35ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_pVTIterator->NextLine(); 36ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 37ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 38ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CFX_Edit_Iterator::NextSection() 39ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 40ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_pVTIterator != NULL); 41ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 42ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_pVTIterator->NextSection(); 43ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 44ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 45ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CFX_Edit_Iterator::PrevWord() 46ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 47ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_pVTIterator != NULL); 48ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 49ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_pVTIterator->PrevWord(); 50ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 51ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 52ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CFX_Edit_Iterator::PrevLine() 53ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 54ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_pVTIterator != NULL); 55ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 56ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_pVTIterator->PrevLine(); 57ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 58ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 59ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CFX_Edit_Iterator::PrevSection() 60ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 61ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_pVTIterator != NULL); 62ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 63ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_pVTIterator->PrevSection(); 64ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 65ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 66ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CFX_Edit_Iterator::GetWord(CPVT_Word & word) const 67ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 68ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_pEdit != NULL); 69ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_pVTIterator != NULL); 70ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 71ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pVTIterator->GetWord(word)) 72ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 73ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov word.ptWord = m_pEdit->VTToEdit(word.ptWord); 74ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return TRUE; 75ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 76ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 77ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FALSE; 78ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 79ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 80ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CFX_Edit_Iterator::GetLine(CPVT_Line & line) const 81ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 82ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_pEdit != NULL); 83ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_pVTIterator != NULL); 84ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 85ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pVTIterator->GetLine(line)) 86ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 87ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov line.ptLine = m_pEdit->VTToEdit(line.ptLine); 88ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return TRUE; 89ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 90ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 91ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FALSE; 92ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 93ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 94ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CFX_Edit_Iterator::GetSection(CPVT_Section & section) const 95ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 96ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_pEdit != NULL); 97ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_pVTIterator != NULL); 98ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 99ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pVTIterator->GetSection(section)) 100ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 101ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov section.rcSection = m_pEdit->VTToEdit(section.rcSection); 102ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return TRUE; 103ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 104ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 105ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FALSE; 106ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 107ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 108ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit_Iterator::SetAt(FX_INT32 nWordIndex) 109ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 110ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_pVTIterator != NULL); 111ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 112ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pVTIterator->SetAt(nWordIndex); 113ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 114ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 115ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit_Iterator::SetAt(const CPVT_WordPlace & place) 116ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 117ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_pVTIterator != NULL); 118ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 119ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pVTIterator->SetAt(place); 120ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 121ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 122ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovconst CPVT_WordPlace & CFX_Edit_Iterator::GetAt() const 123ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 124ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_pVTIterator != NULL); 125ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 126ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_pVTIterator->GetAt(); 127ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 128ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 129ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovIFX_Edit* CFX_Edit_Iterator::GetEdit() const 130ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 131ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_pEdit; 132ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 133ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 134ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* --------------------------- CFX_Edit_Provider ------------------------------- */ 135ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 136ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCFX_Edit_Provider::CFX_Edit_Provider(IFX_Edit_FontMap * pFontMap) : m_pFontMap(pFontMap) 137ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 138ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_pFontMap != NULL); 139ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 140ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 141ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCFX_Edit_Provider::~CFX_Edit_Provider() 142ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 143ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 144ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 145ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovIFX_Edit_FontMap* CFX_Edit_Provider::GetFontMap() 146ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 147ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_pFontMap; 148ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 149ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 150ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_INT32 CFX_Edit_Provider::GetCharWidth(FX_INT32 nFontIndex, FX_WORD word, FX_INT32 nWordStyle) 151ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 152ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (CPDF_Font* pPDFFont = m_pFontMap->GetPDFFont(nFontIndex)) 153ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 154ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_DWORD charcode = word; 155ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 156ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pPDFFont->IsUnicodeCompatible()) 157ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov charcode = pPDFFont->CharCodeFromUnicode(word); 158ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 159ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov charcode = m_pFontMap->CharCodeFromUnicode(nFontIndex, word); 160ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 161ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (charcode != -1) 162ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return pPDFFont->GetCharWidthF(charcode); 163ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 164ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 165ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return 0; 166ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 167ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 168ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_INT32 CFX_Edit_Provider::GetTypeAscent(FX_INT32 nFontIndex) 169ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 170ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (CPDF_Font* pPDFFont = m_pFontMap->GetPDFFont(nFontIndex)) 171ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return pPDFFont->GetTypeAscent(); 172ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 173ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return 0; 174ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 175ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 176ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_INT32 CFX_Edit_Provider::GetTypeDescent(FX_INT32 nFontIndex) 177ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 178ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (CPDF_Font* pPDFFont = m_pFontMap->GetPDFFont(nFontIndex)) 179ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return pPDFFont->GetTypeDescent(); 180ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 181ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return 0; 182ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 183ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 184ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_INT32 CFX_Edit_Provider::GetWordFontIndex(FX_WORD word, FX_INT32 charset, FX_INT32 nFontIndex) 185ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 186ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_pFontMap->GetWordFontIndex(word,charset,nFontIndex); 187ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 188ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 189ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_INT32 CFX_Edit_Provider::GetDefaultFontIndex() 190ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 191ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return 0; 192ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 193ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 194ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CFX_Edit_Provider::IsLatinWord(FX_WORD word) 195ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 196ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FX_EDIT_ISLATINWORD(word); 197ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 198ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 199ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* --------------------------------- CFX_Edit_Refresh --------------------------------- */ 200ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 201ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCFX_Edit_Refresh::CFX_Edit_Refresh() 202ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 203ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 204ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 205ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCFX_Edit_Refresh::~CFX_Edit_Refresh() 206ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 207ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 208ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 209ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit_Refresh::BeginRefresh() 210ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 211ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_RefreshRects.Empty(); 212ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_OldLineRects = m_NewLineRects; 213ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 214ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 215ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit_Refresh::Push(const CPVT_WordRange & linerange,const CPDF_Rect & rect) 216ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 217ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_NewLineRects.Add(linerange,rect); 218ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 219ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 220ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit_Refresh::NoAnalyse() 221ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 222ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 223ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov for (FX_INT32 i = 0, sz = m_OldLineRects.GetSize(); i < sz; i++) 224ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (CFX_Edit_LineRect * pOldRect = m_OldLineRects.GetAt(i)) 225ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_RefreshRects.Add(pOldRect->m_rcLine); 226ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 227ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 228ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 229ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov for (FX_INT32 i = 0, sz = m_NewLineRects.GetSize(); i < sz; i++) 230ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (CFX_Edit_LineRect * pNewRect = m_NewLineRects.GetAt(i)) 231ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_RefreshRects.Add(pNewRect->m_rcLine); 232ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 233ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 234ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 235ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit_Refresh::Analyse(FX_INT32 nAlignment) 236ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 237ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL bLineTopChanged = FALSE; 238ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect rcResult; 239ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT fWidthDiff; 240ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 241ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 szMax = FX_EDIT_MAX(m_OldLineRects.GetSize(),m_NewLineRects.GetSize()); 242ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 i = 0; 243ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 244ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov while (i < szMax) 245ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 246ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_Edit_LineRect * pOldRect = m_OldLineRects.GetAt(i); 247ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_Edit_LineRect * pNewRect = m_NewLineRects.GetAt(i); 248ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 249ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pOldRect) 250ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 251ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pNewRect) 252ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 253ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bLineTopChanged) 254ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 255ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov rcResult = pOldRect->m_rcLine; 256ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov rcResult.Union(pNewRect->m_rcLine); 257ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_RefreshRects.Add(rcResult); 258ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 259ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 260ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 261ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (*pNewRect != *pOldRect) 262ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 263ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!pNewRect->IsSameTop(*pOldRect) || !pNewRect->IsSameHeight(*pOldRect)) 264ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 265ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov bLineTopChanged = TRUE; 266ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov continue; 267ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 268ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 269ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (nAlignment == 0) 270ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 271ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pNewRect->m_wrLine.BeginPos != pOldRect->m_wrLine.BeginPos) 272ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 273ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov rcResult = pOldRect->m_rcLine; 274ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov rcResult.Union(pNewRect->m_rcLine); 275ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_RefreshRects.Add(rcResult); 276ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 277ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 278ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 279ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!pNewRect->IsSameLeft(*pOldRect)) 280ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 281ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov rcResult = pOldRect->m_rcLine; 282ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov rcResult.Union(pNewRect->m_rcLine); 283ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 284ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 285ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 286ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov fWidthDiff = pNewRect->m_rcLine.Width() - pOldRect->m_rcLine.Width(); 287ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov rcResult = pNewRect->m_rcLine; 288ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (fWidthDiff > 0.0f) 289ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov rcResult.left = rcResult.right - fWidthDiff; 290ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 291ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 292ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov rcResult.left = rcResult.right; 293ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov rcResult.right += (-fWidthDiff); 294ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 295ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 296ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_RefreshRects.Add(rcResult); 297ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 298ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 299ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 300ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 301ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov rcResult = pOldRect->m_rcLine; 302ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov rcResult.Union(pNewRect->m_rcLine); 303ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_RefreshRects.Add(rcResult); 304ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 305ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 306ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 307ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 308ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov //don't need to do anything 309ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 310ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 311ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 312ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 313ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 314ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_RefreshRects.Add(pOldRect->m_rcLine); 315ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 316ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 317ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 318ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 319ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pNewRect) 320ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 321ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_RefreshRects.Add(pNewRect->m_rcLine); 322ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 323ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 324ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 325ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov //error 326ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 327ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 328ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov i++; 329ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 330ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 331ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 332ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit_Refresh::AddRefresh(const CPDF_Rect & rect) 333ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 334ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_RefreshRects.Add(rect); 335ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 336ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 337ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovconst CFX_Edit_RectArray * CFX_Edit_Refresh::GetRefreshRects() const 338ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 339ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return &m_RefreshRects; 340ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 341ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 342ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit_Refresh::EndRefresh() 343ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 344ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_RefreshRects.Empty(); 345ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 346ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 347ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* ------------------------------------- CFX_Edit_Undo ------------------------------------- */ 348ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 349ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCFX_Edit_Undo::CFX_Edit_Undo(FX_INT32 nBufsize) : m_nCurUndoPos(0), 350ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_nBufSize(nBufsize), 351ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_bModified(FALSE), 352ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_bVirgin(TRUE), 353ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_bWorking(FALSE) 354ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 355ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 356ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 357ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCFX_Edit_Undo::~CFX_Edit_Undo() 358ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 359ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Reset(); 360ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 361ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 362ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CFX_Edit_Undo::CanUndo() const 363ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 364ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_nCurUndoPos > 0; 365ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 366ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 367ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit_Undo::Undo() 368ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 369ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_bWorking = TRUE; 370ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 371ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_nCurUndoPos > 0) 372ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 373ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IFX_Edit_UndoItem * pItem = m_UndoItemStack.GetAt(m_nCurUndoPos-1); 374ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pItem != NULL); 375ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 376ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pItem->Undo(); 377ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 378ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_nCurUndoPos--; 379ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_bModified = (m_nCurUndoPos != 0); 380ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 381ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 382ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_bWorking = FALSE; 383ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 384ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 385ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CFX_Edit_Undo::CanRedo() const 386ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 387ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_nCurUndoPos < m_UndoItemStack.GetSize(); 388ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 389ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 390ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit_Undo::Redo() 391ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 392ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_bWorking = TRUE; 393ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 394ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 nStackSize = m_UndoItemStack.GetSize(); 395ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 396ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_nCurUndoPos < nStackSize) 397ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 398ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IFX_Edit_UndoItem * pItem = m_UndoItemStack.GetAt(m_nCurUndoPos); 399ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pItem != NULL); 400ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 401ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pItem->Redo(); 402ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 403ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_nCurUndoPos++; 404ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_bModified = (m_nCurUndoPos != 0); 405ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 406ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 407ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_bWorking = FALSE; 408ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 409ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 410ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CFX_Edit_Undo::IsWorking() const 411ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 412ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_bWorking; 413ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 414ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 415ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit_Undo::AddItem(IFX_Edit_UndoItem* pItem) 416ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 417ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(!m_bWorking); 418ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pItem != NULL); 419ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_nBufSize > 1); 420ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 421ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_nCurUndoPos < m_UndoItemStack.GetSize()) 422ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov RemoveTails(); 423ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 424ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_UndoItemStack.GetSize() >= m_nBufSize) 425ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 426ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov RemoveHeads(); 427ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_bVirgin = FALSE; 428ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 429ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 430ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_UndoItemStack.Add(pItem); 431ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_nCurUndoPos = m_UndoItemStack.GetSize(); 432ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 433ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_bModified = (m_nCurUndoPos != 0); 434ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 435ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 436ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CFX_Edit_Undo::IsModified() const 437ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 438ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_bVirgin) 439ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_bModified; 440ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 441ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return TRUE; 442ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 443ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 444ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovIFX_Edit_UndoItem* CFX_Edit_Undo::GetItem(FX_INT32 nIndex) 445ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 446ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (nIndex>=0 && nIndex < m_UndoItemStack.GetSize()) 447ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_UndoItemStack.GetAt(nIndex); 448ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 449ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return NULL; 450ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 451ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 452ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit_Undo::RemoveHeads() 453ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 454ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_UndoItemStack.GetSize() > 1); 455ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 456ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IFX_Edit_UndoItem* pItem = m_UndoItemStack.GetAt(0); 457ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pItem != NULL); 458ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 459ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pItem->Release(); 460ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_UndoItemStack.RemoveAt(0); 461ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 462ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 463ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit_Undo::RemoveTails() 464ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 465ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov for (FX_INT32 i = m_UndoItemStack.GetSize()-1; i >= m_nCurUndoPos; i--) 466ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 467ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IFX_Edit_UndoItem* pItem = m_UndoItemStack.GetAt(i); 468ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pItem != NULL); 469ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 470ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pItem->Release(); 471ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_UndoItemStack.RemoveAt(i); 472ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 473ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 474ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 475ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit_Undo::Reset() 476ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 477ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov for (FX_INT32 i=0, sz=m_UndoItemStack.GetSize(); i < sz; i++) 478ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 479ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IFX_Edit_UndoItem * pItem = m_UndoItemStack.GetAt(i); 480ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pItem != NULL); 481ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 482ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pItem->Release(); 483ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 484ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_nCurUndoPos = 0; 485ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_UndoItemStack.RemoveAll(); 486ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 487ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 488ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* -------------------------------- CFX_Edit_GroupUndoItem -------------------------------- */ 489ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 490ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCFX_Edit_GroupUndoItem::CFX_Edit_GroupUndoItem(const CFX_WideString& sTitle) : m_sTitle(sTitle) 491ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 492ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 493ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 494ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCFX_Edit_GroupUndoItem::~CFX_Edit_GroupUndoItem() 495ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 496ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov for (int i=0,sz=m_Items.GetSize(); i<sz; i++) 497ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 498ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_Edit_UndoItem* pUndoItem = m_Items[i]; 499ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pUndoItem != NULL); 500ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 501ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pUndoItem->Release(); 502ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 503ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 504ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_Items.RemoveAll(); 505ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 506ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 507ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit_GroupUndoItem::AddUndoItem(CFX_Edit_UndoItem* pUndoItem) 508ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 509ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pUndoItem != NULL); 510ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 511ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pUndoItem->SetFirst(FALSE); 512ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pUndoItem->SetLast(FALSE); 513ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 514ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_Items.Add(pUndoItem); 515ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 516ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_sTitle.IsEmpty()) 517ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_sTitle = pUndoItem->GetUndoTitle(); 518ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 519ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 520ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit_GroupUndoItem::UpdateItems() 521ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 522ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_Items.GetSize() > 0) 523ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 524ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_Edit_UndoItem* pFirstItem = m_Items[0]; 525ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pFirstItem != NULL); 526ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pFirstItem->SetFirst(TRUE); 527ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 528ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_Edit_UndoItem* pLastItem = m_Items[m_Items.GetSize() - 1]; 529ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pLastItem != NULL); 530ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pLastItem->SetLast(TRUE); 531ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 532ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 533ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 534ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit_GroupUndoItem::Undo() 535ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 536ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov for (int i=m_Items.GetSize()-1; i>=0; i--) 537ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 538ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_Edit_UndoItem* pUndoItem = m_Items[i]; 539ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pUndoItem != NULL); 540ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 541ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pUndoItem->Undo(); 542ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 543ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 544ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 545ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit_GroupUndoItem::Redo() 546ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 547ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov for (int i=0,sz=m_Items.GetSize(); i<sz; i++) 548ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 549ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_Edit_UndoItem* pUndoItem = m_Items[i]; 550ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pUndoItem != NULL); 551ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 552ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pUndoItem->Redo(); 553ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 554ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 555ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 556ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCFX_WideString CFX_Edit_GroupUndoItem::GetUndoTitle() 557ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 558ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_sTitle; 559ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 560ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 561ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit_GroupUndoItem::Release() 562ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 563ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov delete this; 564ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 565ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 566ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* ------------------------------------- CFX_Edit_UndoItem derived classes ------------------------------------- */ 567ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 568ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCFXEU_InsertWord::CFXEU_InsertWord(CFX_Edit * pEdit, const CPVT_WordPlace & wpOldPlace, const CPVT_WordPlace & wpNewPlace, 569ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_WORD word, FX_INT32 charset, const CPVT_WordProps * pWordProps) 570ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov : m_pEdit(pEdit), m_wpOld(wpOldPlace), m_wpNew(wpNewPlace), m_Word(word), m_nCharset(charset), m_WordProps() 571ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 572ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pWordProps) 573ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_WordProps = *pWordProps; 574ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 575ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 576ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCFXEU_InsertWord::~CFXEU_InsertWord() 577ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 578ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 579ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 580ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFXEU_InsertWord::Redo() 581ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 582ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pEdit) 583ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 584ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SelectNone(); 585ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SetCaret(m_wpOld); 586ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->InsertWord(m_Word,m_nCharset,&m_WordProps,FALSE,TRUE); 587ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 588ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 589ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 590ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFXEU_InsertWord::Undo() 591ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 592ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pEdit) 593ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 594ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SelectNone(); 595ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SetCaret(m_wpNew); 596ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->Backspace(FALSE,TRUE); 597ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 598ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 599ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 600ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* -------------------------------------------------------------------------- */ 601ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 602ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCFXEU_InsertReturn::CFXEU_InsertReturn(CFX_Edit * pEdit, const CPVT_WordPlace & wpOldPlace, const CPVT_WordPlace & wpNewPlace, 603ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const CPVT_SecProps * pSecProps, const CPVT_WordProps * pWordProps) : 604ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit(pEdit), 605ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_wpOld(wpOldPlace), 606ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_wpNew(wpNewPlace), 607ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_SecProps(), 608ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_WordProps() 609ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 610ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pSecProps) 611ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_SecProps = *pSecProps; 612ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pWordProps) 613ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_WordProps = *pWordProps; 614ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 615ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 616ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCFXEU_InsertReturn::~CFXEU_InsertReturn() 617ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 618ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 619ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 620ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFXEU_InsertReturn::Redo() 621ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 622ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pEdit) 623ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 624ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SelectNone(); 625ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SetCaret(m_wpOld); 626ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->InsertReturn(&m_SecProps,&m_WordProps,FALSE,TRUE); 627ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 628ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 629ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 630ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFXEU_InsertReturn::Undo() 631ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 632ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pEdit) 633ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 634ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SelectNone(); 635ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SetCaret(m_wpNew); 636ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->Backspace(FALSE,TRUE); 637ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 638ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 639ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 640ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* -------------------------------------------------------------------------- */ 641ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov//CFXEU_Backspace 642ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 643ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCFXEU_Backspace::CFXEU_Backspace(CFX_Edit * pEdit, const CPVT_WordPlace & wpOldPlace, const CPVT_WordPlace & wpNewPlace, 644ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_WORD word, FX_INT32 charset, 645ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const CPVT_SecProps & SecProps, const CPVT_WordProps & WordProps) : 646ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit(pEdit), 647ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_wpOld(wpOldPlace), 648ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_wpNew(wpNewPlace), 649ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_Word(word), 650ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_nCharset(charset), 651ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_SecProps(SecProps), 652ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_WordProps(WordProps) 653ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 654ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 655ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 656ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCFXEU_Backspace::~CFXEU_Backspace() 657ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 658ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 659ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 660ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFXEU_Backspace::Redo() 661ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 662ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pEdit) 663ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 664ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SelectNone(); 665ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SetCaret(m_wpOld); 666ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->Backspace(FALSE,TRUE); 667ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 668ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 669ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 670ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFXEU_Backspace::Undo() 671ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 672ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pEdit) 673ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 674ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SelectNone(); 675ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SetCaret(m_wpNew); 676ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_wpNew.SecCmp(m_wpOld) != 0) 677ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 678ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->InsertReturn(&m_SecProps,&m_WordProps,FALSE,TRUE); 679ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 680ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 681ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 682ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->InsertWord(m_Word,m_nCharset,&m_WordProps,FALSE,TRUE); 683ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 684ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 685ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 686ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 687ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* -------------------------------------------------------------------------- */ 688ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov//CFXEU_Delete 689ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 690ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCFXEU_Delete::CFXEU_Delete(CFX_Edit * pEdit, const CPVT_WordPlace & wpOldPlace, const CPVT_WordPlace & wpNewPlace, 691ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_WORD word, FX_INT32 charset, 692ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const CPVT_SecProps & SecProps, const CPVT_WordProps & WordProps, FX_BOOL bSecEnd) : 693ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit(pEdit), 694ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_wpOld(wpOldPlace), 695ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_wpNew(wpNewPlace), 696ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_Word(word), 697ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_nCharset(charset), 698ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_SecProps(SecProps), 699ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_WordProps(WordProps), 700ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_bSecEnd(bSecEnd) 701ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 702ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 703ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 704ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCFXEU_Delete::~CFXEU_Delete() 705ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 706ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 707ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 708ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFXEU_Delete::Redo() 709ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 710ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pEdit) 711ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 712ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SelectNone(); 713ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SetCaret(m_wpOld); 714ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->Delete(FALSE,TRUE); 715ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 716ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 717ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 718ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFXEU_Delete::Undo() 719ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 720ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pEdit) 721ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 722ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SelectNone(); 723ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SetCaret(m_wpNew); 724ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_bSecEnd) 725ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 726ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->InsertReturn(&m_SecProps,&m_WordProps,FALSE,TRUE); 727ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 728ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 729ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 730ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->InsertWord(m_Word,m_nCharset,&m_WordProps,FALSE,TRUE); 731ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 732ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 733ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 734ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 735ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* -------------------------------------------------------------------------- */ 736ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov//CFXEU_Clear 737ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 738ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCFXEU_Clear::CFXEU_Clear(CFX_Edit * pEdit, const CPVT_WordRange & wrSel, const CFX_WideString & swText) : 739ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit(pEdit), 740ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_wrSel(wrSel), 741ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_swText(swText) 742ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 743ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 744ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 745ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCFXEU_Clear::~CFXEU_Clear() 746ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 747ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 748ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 749ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFXEU_Clear::Redo() 750ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 751ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pEdit) 752ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 753ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SelectNone(); 754ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SetSel(m_wrSel.BeginPos,m_wrSel.EndPos); 755ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->Clear(FALSE,TRUE); 756ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 757ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 758ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 759ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFXEU_Clear::Undo() 760ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 761ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pEdit) 762ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 763ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SelectNone(); 764ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SetCaret(m_wrSel.BeginPos); 765ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->InsertText(m_swText, DEFAULT_CHARSET, NULL,NULL,FALSE,TRUE); 766ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SetSel(m_wrSel.BeginPos,m_wrSel.EndPos); 767ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 768ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 769ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 770ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* -------------------------------------------------------------------------- */ 771ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov//CFXEU_ClearRich 772ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 773ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCFXEU_ClearRich::CFXEU_ClearRich(CFX_Edit * pEdit, const CPVT_WordPlace & wpOldPlace, const CPVT_WordPlace & wpNewPlace, 774ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const CPVT_WordRange & wrSel, FX_WORD word, FX_INT32 charset, 775ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const CPVT_SecProps & SecProps, const CPVT_WordProps & WordProps) : 776ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit(pEdit), 777ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_wpOld(wpOldPlace), 778ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_wpNew(wpNewPlace), 779ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_wrSel(wrSel), 780ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_Word(word), 781ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_nCharset(charset), 782ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_SecProps(SecProps), 783ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_WordProps(WordProps) 784ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 785ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 786ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 787ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCFXEU_ClearRich::~CFXEU_ClearRich() 788ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 789ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 790ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 791ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFXEU_ClearRich::Redo() 792ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 793ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pEdit && IsLast()) 794ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 795ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SelectNone(); 796ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SetSel(m_wrSel.BeginPos,m_wrSel.EndPos); 797ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->Clear(FALSE,TRUE); 798ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 799ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 800ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 801ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFXEU_ClearRich::Undo() 802ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 803ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pEdit) 804ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 805ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SelectNone(); 806ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SetCaret(m_wpOld); 807ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_wpNew.SecCmp(m_wpOld) != 0) 808ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 809ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->InsertReturn(&m_SecProps,&m_WordProps,FALSE,FALSE); 810ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 811ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 812ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 813ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->InsertWord(m_Word,m_nCharset,&m_WordProps,FALSE,FALSE); 814ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 815ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 816ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (IsFirst()) 817ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 818ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->PaintInsertText(m_wrSel.BeginPos,m_wrSel.EndPos); 819ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SetSel(m_wrSel.BeginPos,m_wrSel.EndPos); 820ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 821ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 822ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 823ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* -------------------------------------------------------------------------- */ 824ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov//CFXEU_InsertText 825ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 826ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCFXEU_InsertText::CFXEU_InsertText(CFX_Edit * pEdit, const CPVT_WordPlace & wpOldPlace, const CPVT_WordPlace & wpNewPlace, 827ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const CFX_WideString & swText, FX_INT32 charset, 828ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const CPVT_SecProps * pSecProps, const CPVT_WordProps * pWordProps) : 829ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit(pEdit), 830ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_wpOld(wpOldPlace), 831ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_wpNew(wpNewPlace), 832ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_swText(swText), 833ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_nCharset(charset), 834ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_SecProps(), 835ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_WordProps() 836ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 837ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pSecProps) 838ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_SecProps = *pSecProps; 839ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pWordProps) 840ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_WordProps = *pWordProps; 841ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 842ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 843ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCFXEU_InsertText::~CFXEU_InsertText() 844ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 845ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 846ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 847ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFXEU_InsertText::Redo() 848ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 849ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pEdit && IsLast()) 850ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 851ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SelectNone(); 852ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SetCaret(m_wpOld); 853ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->InsertText(m_swText, m_nCharset,&m_SecProps, &m_WordProps,FALSE,TRUE); 854ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 855ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 856ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 857ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFXEU_InsertText::Undo() 858ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 859ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pEdit) 860ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 861ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SelectNone(); 862ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SetSel(m_wpOld,m_wpNew); 863ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->Clear(FALSE,TRUE); 864ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 865ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 866ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 867ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* -------------------------------------------------------------------------- */ 868ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 869ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCFXEU_SetSecProps::CFXEU_SetSecProps(CFX_Edit * pEdit, const CPVT_WordPlace & place, EDIT_PROPS_E ep, 870ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const CPVT_SecProps & oldsecprops, const CPVT_WordProps & oldwordprops, 871ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const CPVT_SecProps & newsecprops, const CPVT_WordProps & newwordprops, const CPVT_WordRange & range) 872ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov : m_pEdit(pEdit), 873ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_wpPlace(place), 874ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_eProps(ep), 875ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_OldSecProps(oldsecprops), 876ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_NewSecProps(newsecprops), 877ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_OldWordProps(oldwordprops), 878ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_NewWordProps(newwordprops), 879ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_wrPlace(range) 880ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 881ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 882ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 883ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCFXEU_SetSecProps::~CFXEU_SetSecProps() 884ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 885ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 886ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 887ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFXEU_SetSecProps::Redo() 888ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 889ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pEdit) 890ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 891ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SetSecProps(m_eProps,m_wpPlace,&m_NewSecProps,&m_NewWordProps,m_wrPlace,FALSE); 892ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (IsLast()) 893ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 894ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SelectNone(); 895ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->PaintSetProps(m_eProps,m_wrPlace); 896ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SetSel(m_wrPlace.BeginPos,m_wrPlace.EndPos); 897ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 898ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 899ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 900ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 901ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFXEU_SetSecProps::Undo() 902ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 903ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pEdit) 904ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 905ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SetSecProps(m_eProps,m_wpPlace,&m_OldSecProps,&m_OldWordProps,m_wrPlace,FALSE); 906ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (IsFirst()) 907ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 908ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SelectNone(); 909ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->PaintSetProps(m_eProps,m_wrPlace); 910ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SetSel(m_wrPlace.BeginPos,m_wrPlace.EndPos); 911ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 912ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 913ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 914ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 915ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* -------------------------------------------------------------------------- */ 916ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 917ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCFXEU_SetWordProps::CFXEU_SetWordProps(CFX_Edit * pEdit, const CPVT_WordPlace & place, EDIT_PROPS_E ep, 918ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const CPVT_WordProps & oldprops, const CPVT_WordProps & newprops, const CPVT_WordRange & range) 919ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov : m_pEdit(pEdit), 920ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_wpPlace(place), 921ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_eProps(ep), 922ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_OldWordProps(oldprops), 923ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_NewWordProps(newprops), 924ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_wrPlace(range) 925ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 926ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 927ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 928ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCFXEU_SetWordProps::~CFXEU_SetWordProps() 929ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 930ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 931ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 932ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFXEU_SetWordProps::Redo() 933ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 934ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pEdit) 935ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 936ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SetWordProps(m_eProps,m_wpPlace,&m_NewWordProps,m_wrPlace,FALSE); 937ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (IsLast()) 938ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 939ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SelectNone(); 940ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->PaintSetProps(m_eProps,m_wrPlace); 941ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SetSel(m_wrPlace.BeginPos,m_wrPlace.EndPos); 942ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 943ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 944ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 945ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 946ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFXEU_SetWordProps::Undo() 947ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 948ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pEdit) 949ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 950ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SetWordProps(m_eProps,m_wpPlace,&m_OldWordProps,m_wrPlace,FALSE); 951ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (IsFirst()) 952ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 953ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SelectNone(); 954ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->PaintSetProps(m_eProps,m_wrPlace); 955ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SetSel(m_wrPlace.BeginPos,m_wrPlace.EndPos); 956ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 957ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 958ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 959ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 960ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* ------------------------------------- CFX_Edit ------------------------------------- */ 961ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 962ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCFX_Edit::CFX_Edit(IPDF_VariableText * pVT) : 963ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pVT(pVT), 964ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pNotify(NULL), 965ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pOprNotify(NULL), 966ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_wpCaret(-1,-1,-1), 967ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_wpOldCaret(-1,-1,-1), 968ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_ptScrollPos(0,0), 969ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_ptRefreshScrollPos(0,0), 970ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_bEnableScroll(FALSE), 971ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_bEnableOverflow(FALSE), 972ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pVTProvide(NULL), 973ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pIterator(NULL), 974ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_SelState(), 975ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_ptCaret(0.0f,0.0f), 976ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_Undo(FX_EDIT_UNDO_MAXITEM), 977ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_nAlignment(0), 978ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_bNotifyFlag(FALSE), 979ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_bEnableRefresh(TRUE), 980ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_rcOldContent(0.0f,0.0f,0.0f,0.0f), 981ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_bEnableUndo(TRUE), 982ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_bNotify(TRUE), 983ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_bOprNotify(FALSE), 984ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pGroupUndoItem(NULL) 985ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 986ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pVT != NULL); 987ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 988ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 989ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCFX_Edit::~CFX_Edit() 990ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 991ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pVTProvide) 992ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 993ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov delete m_pVTProvide; 994ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pVTProvide = NULL; 995ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 996ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 997ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pIterator) 998ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 999ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov delete m_pIterator; 1000ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pIterator = NULL; 1001ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1002ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1003ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_pGroupUndoItem == NULL); 1004ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1005ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1006ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// public methods 1007ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1008ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::Initialize() 1009ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1010ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pVT->Initialize(); 1011ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaret(m_pVT->GetBeginWordPlace()); 1012ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaretOrigin(); 1013ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1014ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1015ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::SetFontMap(IFX_Edit_FontMap * pFontMap) 1016ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1017ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pVTProvide) 1018ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov delete m_pVTProvide; 1019ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1020ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pVT->SetProvider(m_pVTProvide = new CFX_Edit_Provider(pFontMap)); 1021ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1022ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1023ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::SetVTProvider(IPDF_VariableText_Provider* pProvider) 1024ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1025ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pVT->SetProvider(pProvider); 1026ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1027ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1028ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::SetNotify(IFX_Edit_Notify* pNotify) 1029ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1030ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pNotify = pNotify; 1031ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1032ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1033ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::SetOprNotify(IFX_Edit_OprNotify* pOprNotify) 1034ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1035ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pOprNotify = pOprNotify; 1036ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1037ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1038ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovIFX_Edit_Iterator * CFX_Edit::GetIterator() 1039ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1040ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!m_pIterator) 1041ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pIterator = new CFX_Edit_Iterator(this,m_pVT->GetIterator()); 1042ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1043ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_pIterator; 1044ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1045ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1046ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovIPDF_VariableText * CFX_Edit::GetVariableText() 1047ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1048ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_pVT; 1049ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1050ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1051ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovIFX_Edit_FontMap* CFX_Edit::GetFontMap() 1052ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1053ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pVTProvide) 1054ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_pVTProvide->GetFontMap(); 1055ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1056ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return NULL; 1057ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1058ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1059ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::SetPlateRect(const CPDF_Rect & rect, FX_BOOL bPaint/* = TRUE*/) 1060ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1061ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pVT->SetPlateRect(rect); 1062ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_ptScrollPos = CPDF_Point(rect.left,rect.top); 1063ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bPaint) Paint(); 1064ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1065ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1066ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::SetAlignmentH(FX_INT32 nFormat/* =0 */, FX_BOOL bPaint/* = TRUE*/) 1067ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1068ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pVT->SetAlignment(nFormat); 1069ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bPaint) Paint(); 1070ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1071ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1072ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::SetAlignmentV(FX_INT32 nFormat/* =0 */, FX_BOOL bPaint/* = TRUE*/) 1073ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1074ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_nAlignment = nFormat; 1075ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bPaint) Paint(); 1076ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1077ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1078ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::SetPasswordChar(FX_WORD wSubWord/* ='*' */, FX_BOOL bPaint/* = TRUE*/) 1079ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1080ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pVT->SetPasswordChar(wSubWord); 1081ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bPaint) Paint(); 1082ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1083ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1084ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::SetLimitChar(FX_INT32 nLimitChar/* =0 */, FX_BOOL bPaint/* = TRUE*/) 1085ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1086ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pVT->SetLimitChar(nLimitChar); 1087ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bPaint) Paint(); 1088ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1089ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1090ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::SetCharArray(FX_INT32 nCharArray/* =0 */, FX_BOOL bPaint/* = TRUE*/) 1091ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1092ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pVT->SetCharArray(nCharArray); 1093ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bPaint) Paint(); 1094ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1095ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1096ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::SetCharSpace(FX_FLOAT fCharSpace/* =0.0f */, FX_BOOL bPaint/* = TRUE*/) 1097ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1098ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pVT->SetCharSpace(fCharSpace); 1099ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bPaint) Paint(); 1100ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1101ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1102ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::SetHorzScale(FX_INT32 nHorzScale/* =100 */, FX_BOOL bPaint/* = TRUE*/) 1103ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1104ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pVT->SetHorzScale(nHorzScale); 1105ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bPaint) Paint(); 1106ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1107ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1108ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::SetMultiLine(FX_BOOL bMultiLine/* =TRUE */, FX_BOOL bPaint/* = TRUE*/) 1109ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1110ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pVT->SetMultiLine(bMultiLine); 1111ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bPaint) Paint(); 1112ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1113ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1114ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::SetAutoReturn(FX_BOOL bAuto/* =TRUE */, FX_BOOL bPaint/* = TRUE*/) 1115ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1116ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pVT->SetAutoReturn(bAuto); 1117ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bPaint) Paint(); 1118ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1119ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1120ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::SetLineLeading(FX_FLOAT fLineLeading/* =TRUE */, FX_BOOL bPaint/* = TRUE*/) 1121ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1122ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pVT->SetLineLeading(fLineLeading); 1123ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bPaint) Paint(); 1124ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1125ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1126ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::SetAutoFontSize(FX_BOOL bAuto/* =TRUE */, FX_BOOL bPaint/* = TRUE*/) 1127ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1128ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pVT->SetAutoFontSize(bAuto); 1129ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bPaint) Paint(); 1130ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1131ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1132ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::SetFontSize(FX_FLOAT fFontSize, FX_BOOL bPaint/* = TRUE*/) 1133ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1134ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pVT->SetFontSize(fFontSize); 1135ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bPaint) Paint(); 1136ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1137ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1138ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::SetAutoScroll(FX_BOOL bAuto/* =TRUE */, FX_BOOL bPaint/* = TRUE*/) 1139ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1140ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_bEnableScroll = bAuto; 1141ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bPaint) Paint(); 1142ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1143ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1144ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::SetTextOverflow(FX_BOOL bAllowed /*= FALSE*/, FX_BOOL bPaint/* = TRUE*/) 1145ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1146ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_bEnableOverflow = bAllowed; 1147ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bPaint) Paint(); 1148ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1149ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1150ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::SetSel(FX_INT32 nStartChar,FX_INT32 nEndChar) 1151ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1152ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pVT->IsValid()) 1153ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1154ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (nStartChar == 0 && nEndChar < 0) 1155ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1156ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SelectAll(); 1157ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1158ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else if (nStartChar < 0) 1159ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1160ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov this->SelectNone(); 1161ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1162ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 1163ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1164ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (nStartChar < nEndChar) 1165ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1166ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetSel(m_pVT->WordIndexToWordPlace(nStartChar),m_pVT->WordIndexToWordPlace(nEndChar)); 1167ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1168ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 1169ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1170ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetSel(m_pVT->WordIndexToWordPlace(nEndChar),m_pVT->WordIndexToWordPlace(nStartChar)); 1171ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1172ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1173ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1174ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1175ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1176ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::SetSel(const CPVT_WordPlace & begin,const CPVT_WordPlace & end) 1177ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1178ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pVT->IsValid()) 1179ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1180ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SelectNone(); 1181ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1182ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_SelState.Set(begin,end); 1183ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1184ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaret(m_SelState.EndPos); 1185ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1186ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_SelState.IsExist()) 1187ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1188ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ScrollToCaret(); 1189ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordRange wr(m_SelState.BeginPos,m_SelState.EndPos); 1190ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Refresh(RP_OPTIONAL,&wr); 1191ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaretInfo(); 1192ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1193ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 1194ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1195ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ScrollToCaret(); 1196ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaretInfo(); 1197ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1198ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1199ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1200ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1201ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::GetSel(FX_INT32 & nStartChar, FX_INT32 & nEndChar) const 1202ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1203ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nStartChar = -1; 1204ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nEndChar = -1; 1205ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1206ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pVT->IsValid()) 1207ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1208ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_SelState.IsExist()) 1209ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1210ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_SelState.BeginPos.WordCmp(m_SelState.EndPos)<0) 1211ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1212ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nStartChar = m_pVT->WordPlaceToWordIndex(m_SelState.BeginPos); 1213ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nEndChar = m_pVT->WordPlaceToWordIndex(m_SelState.EndPos); 1214ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1215ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 1216ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1217ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nStartChar = m_pVT->WordPlaceToWordIndex(m_SelState.EndPos); 1218ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nEndChar = m_pVT->WordPlaceToWordIndex(m_SelState.BeginPos); 1219ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1220ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1221ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 1222ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1223ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nStartChar = m_pVT->WordPlaceToWordIndex(m_wpCaret); 1224ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nEndChar = m_pVT->WordPlaceToWordIndex(m_wpCaret); 1225ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1226ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1227ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1228ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1229ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_INT32 CFX_Edit::GetCaret() const 1230ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1231ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pVT->IsValid()) 1232ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_pVT->WordPlaceToWordIndex(m_wpCaret); 1233ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1234ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return -1; 1235ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1236ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1237ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCPVT_WordPlace CFX_Edit::GetCaretWordPlace() const 1238ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1239ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_wpCaret; 1240ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1241ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1242ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCFX_WideString CFX_Edit::GetText() const 1243ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1244ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_WideString swRet; 1245ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1246ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pVT->IsValid()) 1247ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1248ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (IPDF_VariableText_Iterator * pIterator = m_pVT->GetIterator()) 1249ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1250ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL bRich = m_pVT->IsRichText(); 1251ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1252ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pIterator->SetAt(0); 1253ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1254ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_Word wordinfo; 1255ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordPlace oldplace = pIterator->GetAt(); 1256ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov while (pIterator->NextWord()) 1257ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1258ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordPlace place = pIterator->GetAt(); 1259ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1260ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pIterator->GetWord(wordinfo)) 1261ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1262ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bRich) 1263ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1264ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov swRet += wordinfo.Word; 1265ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1266ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 1267ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1268ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov swRet += wordinfo.Word; 1269ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1270ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1271ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1272ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (oldplace.SecCmp(place) != 0) 1273ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1274ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov swRet += 0x0D; 1275ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov swRet += 0x0A; 1276ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1277ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1278ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov oldplace = place; 1279ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1280ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1281ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1282ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1283ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return swRet; 1284ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1285ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1286ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCFX_WideString CFX_Edit::GetRangeText(const CPVT_WordRange & range) const 1287ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1288ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_WideString swRet; 1289ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1290ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pVT->IsValid()) 1291ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1292ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL bRich = m_pVT->IsRichText(); 1293ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1294ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (IPDF_VariableText_Iterator * pIterator = m_pVT->GetIterator()) 1295ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1296ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordRange wrTemp = range; 1297ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pVT->UpdateWordPlace(wrTemp.BeginPos); 1298ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pVT->UpdateWordPlace(wrTemp.EndPos); 1299ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pIterator->SetAt(wrTemp.BeginPos); 1300ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1301ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_Word wordinfo; 1302ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordPlace oldplace = wrTemp.BeginPos; 1303ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov while (pIterator->NextWord()) 1304ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1305ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordPlace place = pIterator->GetAt(); 1306ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (place.WordCmp(wrTemp.EndPos) > 0)break; 1307ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1308ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pIterator->GetWord(wordinfo)) 1309ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1310ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bRich) 1311ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1312ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov swRet += wordinfo.Word; 1313ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1314ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 1315ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1316ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov swRet += wordinfo.Word; 1317ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1318ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1319ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1320ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (oldplace.SecCmp(place) != 0) 1321ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1322ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov swRet += 0x0D; 1323ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov swRet += 0x0A; 1324ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1325ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1326ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov oldplace = place; 1327ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1328ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1329ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1330ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1331ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return swRet; 1332ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1333ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1334ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCFX_WideString CFX_Edit::GetSelText() const 1335ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1336ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return GetRangeText(m_SelState.ConvertToWordRange()); 1337ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1338ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1339ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_INT32 CFX_Edit::GetTotalWords() const 1340ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1341ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_pVT->GetTotalWords(); 1342ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1343ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1344ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_INT32 CFX_Edit::GetTotalLines() const 1345ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1346ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 nLines = 0; 1347ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1348ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (IPDF_VariableText_Iterator * pIterator = m_pVT->GetIterator()) 1349ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1350ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pIterator->SetAt(0); 1351ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov while (pIterator->NextLine()) 1352ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nLines++; 1353ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1354ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1355ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return nLines+1; 1356ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1357ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1358ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCPVT_WordRange CFX_Edit::GetSelectWordRange() const 1359ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1360ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_SelState.ConvertToWordRange(); 1361ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1362ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1363ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCPVT_WordRange CFX_Edit::CombineWordRange(const CPVT_WordRange & wr1, const CPVT_WordRange & wr2) 1364ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1365ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordRange wrRet; 1366ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1367ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (wr1.BeginPos.WordCmp(wr2.BeginPos) < 0) 1368ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1369ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov wrRet.BeginPos = wr1.BeginPos; 1370ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1371ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 1372ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1373ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov wrRet.BeginPos = wr2.BeginPos; 1374ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1375ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1376ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (wr1.EndPos.WordCmp(wr2.EndPos) < 0) 1377ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1378ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov wrRet.EndPos = wr2.EndPos; 1379ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1380ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 1381ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1382ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov wrRet.EndPos = wr1.EndPos; 1383ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1384ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1385ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return wrRet; 1386ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1387ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1388ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CFX_Edit::IsRichText() const 1389ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1390ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_pVT->IsRichText(); 1391ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1392ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1393ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::SetRichText(FX_BOOL bRichText/* =TRUE */, FX_BOOL bPaint/* = TRUE*/) 1394ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1395ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pVT->SetRichText(bRichText); 1396ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bPaint) Paint(); 1397ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1398ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1399ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CFX_Edit::SetRichFontIndex(FX_INT32 nFontIndex) 1400ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1401ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordProps WordProps; 1402ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov WordProps.nFontIndex = nFontIndex; 1403ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetRichTextProps(EP_FONTINDEX,NULL,&WordProps); 1404ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1405ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1406ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CFX_Edit::SetRichFontSize(FX_FLOAT fFontSize) 1407ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1408ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordProps WordProps; 1409ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov WordProps.fFontSize = fFontSize; 1410ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetRichTextProps(EP_FONTSIZE,NULL,&WordProps); 1411ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1412ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1413ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CFX_Edit::SetRichTextColor(FX_COLORREF dwColor) 1414ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1415ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordProps WordProps; 1416ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov WordProps.dwWordColor = dwColor; 1417ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetRichTextProps(EP_WORDCOLOR,NULL,&WordProps); 1418ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1419ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1420ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CFX_Edit::SetRichTextScript(FX_INT32 nScriptType) 1421ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1422ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordProps WordProps; 1423ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov WordProps.nScriptType = nScriptType; 1424ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetRichTextProps(EP_SCRIPTTYPE,NULL,&WordProps); 1425ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1426ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1427ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CFX_Edit::SetRichTextBold(FX_BOOL bBold) 1428ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1429ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordProps WordProps; 1430ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bBold) 1431ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov WordProps.nWordStyle |= PVTWORD_STYLE_BOLD; 1432ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetRichTextProps(EP_BOLD,NULL,&WordProps); 1433ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1434ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1435ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CFX_Edit::SetRichTextItalic(FX_BOOL bItalic) 1436ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1437ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordProps WordProps; 1438ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bItalic) 1439ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov WordProps.nWordStyle |= PVTWORD_STYLE_ITALIC; 1440ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetRichTextProps(EP_ITALIC,NULL,&WordProps); 1441ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1442ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1443ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CFX_Edit::SetRichTextUnderline(FX_BOOL bUnderline) 1444ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1445ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordProps WordProps; 1446ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bUnderline) 1447ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov WordProps.nWordStyle |= PVTWORD_STYLE_UNDERLINE; 1448ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetRichTextProps(EP_UNDERLINE,NULL,&WordProps); 1449ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1450ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1451ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CFX_Edit::SetRichTextCrossout(FX_BOOL bCrossout) 1452ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1453ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordProps WordProps; 1454ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bCrossout) 1455ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov WordProps.nWordStyle |= PVTWORD_STYLE_CROSSOUT; 1456ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetRichTextProps(EP_CROSSOUT,NULL,&WordProps); 1457ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1458ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1459ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CFX_Edit::SetRichTextCharSpace(FX_FLOAT fCharSpace) 1460ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1461ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordProps WordProps; 1462ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov WordProps.fCharSpace = fCharSpace; 1463ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetRichTextProps(EP_CHARSPACE,NULL,&WordProps); 1464ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1465ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1466ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CFX_Edit::SetRichTextHorzScale(FX_INT32 nHorzScale /*= 100*/) 1467ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1468ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordProps WordProps; 1469ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov WordProps.nHorzScale = nHorzScale; 1470ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetRichTextProps(EP_HORZSCALE,NULL,&WordProps); 1471ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1472ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1473ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CFX_Edit::SetRichTextLineLeading(FX_FLOAT fLineLeading) 1474ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1475ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_SecProps SecProps; 1476ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SecProps.fLineLeading = fLineLeading; 1477ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetRichTextProps(EP_LINELEADING,&SecProps,NULL); 1478ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1479ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1480ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CFX_Edit::SetRichTextLineIndent(FX_FLOAT fLineIndent) 1481ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1482ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_SecProps SecProps; 1483ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SecProps.fLineIndent = fLineIndent; 1484ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetRichTextProps(EP_LINEINDENT,&SecProps,NULL); 1485ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1486ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1487ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CFX_Edit::SetRichTextAlignment(FX_INT32 nAlignment) 1488ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1489ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_SecProps SecProps; 1490ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SecProps.nAlignment = nAlignment; 1491ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SetRichTextProps(EP_ALIGNMENT,&SecProps,NULL); 1492ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1493ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1494ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CFX_Edit::SetRichTextProps(EDIT_PROPS_E eProps, const CPVT_SecProps * pSecProps, const CPVT_WordProps * pWordProps) 1495ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1496ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL bSet = FALSE; 1497ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL bSet1,bSet2; 1498ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pVT->IsValid() && m_pVT->IsRichText()) 1499ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1500ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (IPDF_VariableText_Iterator * pIterator = m_pVT->GetIterator()) 1501ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1502ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordRange wrTemp = m_SelState.ConvertToWordRange(); 1503ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1504ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pVT->UpdateWordPlace(wrTemp.BeginPos); 1505ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pVT->UpdateWordPlace(wrTemp.EndPos); 1506ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pIterator->SetAt(wrTemp.BeginPos); 1507ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1508ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov BeginGroupUndo(L"");; 1509ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1510ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov bSet = SetSecProps(eProps,wrTemp.BeginPos,pSecProps,pWordProps,wrTemp,TRUE); 1511ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1512ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov while (pIterator->NextWord()) 1513ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1514ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordPlace place = pIterator->GetAt(); 1515ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (place.WordCmp(wrTemp.EndPos) > 0) break; 1516ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov bSet1 = SetSecProps(eProps,place,pSecProps,pWordProps,wrTemp,TRUE); 1517ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov bSet2 = SetWordProps(eProps,place,pWordProps,wrTemp,TRUE); 1518ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1519ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!bSet) 1520ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov bSet = (bSet1 || bSet2); 1521ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1522ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1523ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov EndGroupUndo(); 1524ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1525ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bSet) 1526ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1527ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov PaintSetProps(eProps,wrTemp); 1528ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1529ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1530ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1531ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1532ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return bSet; 1533ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1534ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1535ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::PaintSetProps(EDIT_PROPS_E eProps, const CPVT_WordRange & wr) 1536ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1537ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov switch(eProps) 1538ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1539ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case EP_LINELEADING: 1540ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case EP_LINEINDENT: 1541ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case EP_ALIGNMENT: 1542ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov RearrangePart(wr); 1543ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ScrollToCaret(); 1544ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Refresh(RP_ANALYSE); 1545ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaretOrigin(); 1546ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaretInfo(); 1547ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 1548ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case EP_WORDCOLOR: 1549ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case EP_UNDERLINE: 1550ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case EP_CROSSOUT: 1551ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Refresh(RP_OPTIONAL,&wr); 1552ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 1553ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case EP_FONTINDEX: 1554ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case EP_FONTSIZE: 1555ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case EP_SCRIPTTYPE: 1556ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case EP_CHARSPACE: 1557ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case EP_HORZSCALE: 1558ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case EP_BOLD: 1559ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case EP_ITALIC: 1560ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov RearrangePart(wr); 1561ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ScrollToCaret(); 1562ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1563ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordRange wrRefresh(m_pVT->GetSectionBeginPlace(wr.BeginPos), 1564ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pVT->GetSectionEndPlace(wr.EndPos)); 1565ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Refresh(RP_ANALYSE,&wrRefresh); 1566ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1567ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaretOrigin(); 1568ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaretInfo(); 1569ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 1570ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1571ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1572ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1573ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CFX_Edit::SetSecProps(EDIT_PROPS_E eProps, const CPVT_WordPlace & place, 1574ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const CPVT_SecProps * pSecProps, const CPVT_WordProps * pWordProps, 1575ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const CPVT_WordRange & wr, FX_BOOL bAddUndo) 1576ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1577ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pVT->IsValid() && m_pVT->IsRichText()) 1578ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1579ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (IPDF_VariableText_Iterator * pIterator = m_pVT->GetIterator()) 1580ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1581ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL bSet = FALSE; 1582ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_Section secinfo; 1583ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_Section OldSecinfo; 1584ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1585ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordPlace oldplace = pIterator->GetAt(); 1586ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1587ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (eProps == EP_LINELEADING || eProps == EP_LINEINDENT || eProps == EP_ALIGNMENT) 1588ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1589ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pSecProps) 1590ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1591ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pIterator->SetAt(place); 1592ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pIterator->GetSection(secinfo)) 1593ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1594ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bAddUndo) OldSecinfo = secinfo; 1595ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1596ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov switch(eProps) 1597ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1598ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case EP_LINELEADING: 1599ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!FX_EDIT_IsFloatEqual(secinfo.SecProps.fLineLeading,pSecProps->fLineLeading)) 1600ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1601ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov secinfo.SecProps.fLineLeading = pSecProps->fLineLeading; 1602ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov bSet = TRUE; 1603ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1604ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 1605ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case EP_LINEINDENT: 1606ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!FX_EDIT_IsFloatEqual(secinfo.SecProps.fLineIndent,pSecProps->fLineIndent)) 1607ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1608ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov secinfo.SecProps.fLineIndent = pSecProps->fLineIndent; 1609ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov bSet = TRUE; 1610ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1611ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 1612ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case EP_ALIGNMENT: 1613ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (secinfo.SecProps.nAlignment != pSecProps->nAlignment) 1614ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1615ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov secinfo.SecProps.nAlignment = pSecProps->nAlignment; 1616ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov bSet = TRUE; 1617ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1618ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 1619ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov default: 1620ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 1621ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1622ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1623ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1624ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1625ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 1626ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1627ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pWordProps && place == m_pVT->GetSectionBeginPlace(place)) 1628ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1629ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pIterator->SetAt(place); 1630ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pIterator->GetSection(secinfo)) 1631ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1632ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bAddUndo) OldSecinfo = secinfo; 1633ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1634ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov switch(eProps) 1635ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1636ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case EP_FONTINDEX: 1637ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (secinfo.WordProps.nFontIndex != pWordProps->nFontIndex) 1638ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1639ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov secinfo.WordProps.nFontIndex = pWordProps->nFontIndex; 1640ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov bSet = TRUE; 1641ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1642ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 1643ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case EP_FONTSIZE: 1644ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!FX_EDIT_IsFloatEqual(secinfo.WordProps.fFontSize,pWordProps->fFontSize)) 1645ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1646ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov secinfo.WordProps.fFontSize = pWordProps->fFontSize; 1647ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov bSet = TRUE; 1648ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1649ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 1650ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case EP_WORDCOLOR: 1651ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (secinfo.WordProps.dwWordColor != pWordProps->dwWordColor) 1652ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1653ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov secinfo.WordProps.dwWordColor = pWordProps->dwWordColor; 1654ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov bSet = TRUE; 1655ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1656ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 1657ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case EP_SCRIPTTYPE: 1658ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (secinfo.WordProps.nScriptType != pWordProps->nScriptType) 1659ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1660ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov secinfo.WordProps.nScriptType = pWordProps->nScriptType; 1661ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov bSet = TRUE; 1662ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1663ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 1664ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case EP_CHARSPACE: 1665ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!FX_EDIT_IsFloatEqual(secinfo.WordProps.fCharSpace,pWordProps->fCharSpace)) 1666ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1667ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov secinfo.WordProps.fCharSpace = pWordProps->fCharSpace; 1668ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov bSet = TRUE; 1669ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1670ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 1671ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case EP_HORZSCALE: 1672ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (secinfo.WordProps.nHorzScale != pWordProps->nHorzScale) 1673ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1674ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov secinfo.WordProps.nHorzScale = pWordProps->nHorzScale; 1675ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov bSet = TRUE; 1676ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1677ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 1678ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case EP_UNDERLINE: 1679ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pWordProps->nWordStyle & PVTWORD_STYLE_UNDERLINE) 1680ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1681ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if ((secinfo.WordProps.nWordStyle & PVTWORD_STYLE_UNDERLINE) == 0) 1682ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1683ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov secinfo.WordProps.nWordStyle |= PVTWORD_STYLE_UNDERLINE; 1684ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov bSet = TRUE; 1685ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1686ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1687ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 1688ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1689ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if ((secinfo.WordProps.nWordStyle & PVTWORD_STYLE_UNDERLINE) != 0) 1690ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1691ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov secinfo.WordProps.nWordStyle &= ~PVTWORD_STYLE_UNDERLINE; 1692ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov bSet = TRUE; 1693ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1694ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1695ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 1696ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case EP_CROSSOUT: 1697ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pWordProps->nWordStyle & PVTWORD_STYLE_CROSSOUT) 1698ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1699ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if ((secinfo.WordProps.nWordStyle & PVTWORD_STYLE_CROSSOUT) == 0) 1700ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1701ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov secinfo.WordProps.nWordStyle |= PVTWORD_STYLE_CROSSOUT; 1702ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov bSet = TRUE; 1703ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1704ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1705ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 1706ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1707ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if ((secinfo.WordProps.nWordStyle & PVTWORD_STYLE_CROSSOUT) != 0) 1708ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1709ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov secinfo.WordProps.nWordStyle &= ~PVTWORD_STYLE_CROSSOUT; 1710ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov bSet = TRUE; 1711ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1712ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1713ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 1714ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case EP_BOLD: 1715ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pWordProps->nWordStyle & PVTWORD_STYLE_BOLD) 1716ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1717ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if ((secinfo.WordProps.nWordStyle & PVTWORD_STYLE_BOLD) == 0) 1718ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1719ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov secinfo.WordProps.nWordStyle |= PVTWORD_STYLE_BOLD; 1720ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov bSet = TRUE; 1721ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1722ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1723ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 1724ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1725ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if ((secinfo.WordProps.nWordStyle & PVTWORD_STYLE_BOLD) != 0) 1726ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1727ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov secinfo.WordProps.nWordStyle &= ~PVTWORD_STYLE_BOLD; 1728ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov bSet = TRUE; 1729ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1730ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1731ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 1732ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case EP_ITALIC: 1733ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pWordProps->nWordStyle & PVTWORD_STYLE_ITALIC) 1734ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1735ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if ((secinfo.WordProps.nWordStyle & PVTWORD_STYLE_ITALIC) == 0) 1736ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1737ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov secinfo.WordProps.nWordStyle |= PVTWORD_STYLE_ITALIC; 1738ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov bSet = TRUE; 1739ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1740ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1741ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 1742ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1743ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if ((secinfo.WordProps.nWordStyle & PVTWORD_STYLE_ITALIC) != 0) 1744ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1745ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov secinfo.WordProps.nWordStyle &= ~PVTWORD_STYLE_ITALIC; 1746ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov bSet = TRUE; 1747ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1748ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1749ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 1750ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov default: 1751ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 1752ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1753ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1754ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1755ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1756ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1757ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bSet) 1758ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1759ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pIterator->SetSection(secinfo); 1760ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1761ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bAddUndo && m_bEnableUndo) 1762ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1763ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov AddEditUndoItem(new CFXEU_SetSecProps 1764ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov (this,place,eProps,OldSecinfo.SecProps,OldSecinfo.WordProps,secinfo.SecProps,secinfo.WordProps,wr)); 1765ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1766ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1767ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1768ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pIterator->SetAt(oldplace); 1769ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1770ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return bSet; 1771ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1772ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1773ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1774ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FALSE; 1775ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1776ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1777ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CFX_Edit::SetWordProps(EDIT_PROPS_E eProps, const CPVT_WordPlace & place, 1778ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const CPVT_WordProps * pWordProps, const CPVT_WordRange & wr, FX_BOOL bAddUndo) 1779ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1780ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pVT->IsValid() && m_pVT->IsRichText()) 1781ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1782ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (IPDF_VariableText_Iterator * pIterator = m_pVT->GetIterator()) 1783ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1784ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL bSet = FALSE; 1785ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_Word wordinfo; 1786ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_Word OldWordinfo; 1787ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1788ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordPlace oldplace = pIterator->GetAt(); 1789ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1790ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pWordProps) 1791ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1792ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pIterator->SetAt(place); 1793ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pIterator->GetWord(wordinfo)) 1794ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1795ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bAddUndo) OldWordinfo = wordinfo; 1796ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1797ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov switch(eProps) 1798ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1799ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case EP_FONTINDEX: 1800ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (wordinfo.WordProps.nFontIndex != pWordProps->nFontIndex) 1801ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1802ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (IFX_Edit_FontMap* pFontMap = this->GetFontMap()) 1803ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1804ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov wordinfo.WordProps.nFontIndex = pFontMap->GetWordFontIndex(wordinfo.Word,wordinfo.nCharset,pWordProps->nFontIndex); 1805ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1806ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov bSet = TRUE; 1807ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1808ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 1809ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case EP_FONTSIZE: 1810ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!FX_EDIT_IsFloatEqual(wordinfo.WordProps.fFontSize,pWordProps->fFontSize)) 1811ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1812ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov wordinfo.WordProps.fFontSize = pWordProps->fFontSize; 1813ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov bSet = TRUE; 1814ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1815ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 1816ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case EP_WORDCOLOR: 1817ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (wordinfo.WordProps.dwWordColor != pWordProps->dwWordColor) 1818ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1819ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov wordinfo.WordProps.dwWordColor = pWordProps->dwWordColor; 1820ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov bSet = TRUE; 1821ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1822ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 1823ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case EP_SCRIPTTYPE: 1824ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (wordinfo.WordProps.nScriptType != pWordProps->nScriptType) 1825ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1826ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov wordinfo.WordProps.nScriptType = pWordProps->nScriptType; 1827ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov bSet = TRUE; 1828ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1829ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 1830ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case EP_CHARSPACE: 1831ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!FX_EDIT_IsFloatEqual(wordinfo.WordProps.fCharSpace,pWordProps->fCharSpace)) 1832ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1833ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov wordinfo.WordProps.fCharSpace = pWordProps->fCharSpace; 1834ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov bSet = TRUE; 1835ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1836ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 1837ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case EP_HORZSCALE: 1838ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (wordinfo.WordProps.nHorzScale != pWordProps->nHorzScale) 1839ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1840ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov wordinfo.WordProps.nHorzScale = pWordProps->nHorzScale; 1841ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov bSet = TRUE; 1842ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1843ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 1844ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case EP_UNDERLINE: 1845ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pWordProps->nWordStyle & PVTWORD_STYLE_UNDERLINE) 1846ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1847ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if ((wordinfo.WordProps.nWordStyle & PVTWORD_STYLE_UNDERLINE) == 0) 1848ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1849ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov wordinfo.WordProps.nWordStyle |= PVTWORD_STYLE_UNDERLINE; 1850ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov bSet = TRUE; 1851ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1852ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1853ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 1854ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1855ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if ((wordinfo.WordProps.nWordStyle & PVTWORD_STYLE_UNDERLINE) != 0) 1856ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1857ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov wordinfo.WordProps.nWordStyle &= ~PVTWORD_STYLE_UNDERLINE; 1858ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov bSet = TRUE; 1859ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1860ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1861ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 1862ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case EP_CROSSOUT: 1863ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pWordProps->nWordStyle & PVTWORD_STYLE_CROSSOUT) 1864ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1865ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if ((wordinfo.WordProps.nWordStyle & PVTWORD_STYLE_CROSSOUT) == 0) 1866ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1867ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov wordinfo.WordProps.nWordStyle |= PVTWORD_STYLE_CROSSOUT; 1868ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov bSet = TRUE; 1869ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1870ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1871ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 1872ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1873ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if ((wordinfo.WordProps.nWordStyle & PVTWORD_STYLE_CROSSOUT) != 0) 1874ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1875ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov wordinfo.WordProps.nWordStyle &= ~PVTWORD_STYLE_CROSSOUT; 1876ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov bSet = TRUE; 1877ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1878ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1879ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 1880ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case EP_BOLD: 1881ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pWordProps->nWordStyle & PVTWORD_STYLE_BOLD) 1882ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1883ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if ((wordinfo.WordProps.nWordStyle & PVTWORD_STYLE_BOLD) == 0) 1884ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1885ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov wordinfo.WordProps.nWordStyle |= PVTWORD_STYLE_BOLD; 1886ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov bSet = TRUE; 1887ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1888ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1889ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 1890ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1891ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if ((wordinfo.WordProps.nWordStyle & PVTWORD_STYLE_BOLD) != 0) 1892ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1893ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov wordinfo.WordProps.nWordStyle &= ~PVTWORD_STYLE_BOLD; 1894ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov bSet = TRUE; 1895ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1896ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1897ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 1898ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case EP_ITALIC: 1899ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pWordProps->nWordStyle & PVTWORD_STYLE_ITALIC) 1900ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1901ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if ((wordinfo.WordProps.nWordStyle & PVTWORD_STYLE_ITALIC) == 0) 1902ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1903ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov wordinfo.WordProps.nWordStyle |= PVTWORD_STYLE_ITALIC; 1904ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov bSet = TRUE; 1905ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1906ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1907ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 1908ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1909ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if ((wordinfo.WordProps.nWordStyle & PVTWORD_STYLE_ITALIC) != 0) 1910ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1911ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov wordinfo.WordProps.nWordStyle &= ~PVTWORD_STYLE_ITALIC; 1912ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov bSet = TRUE; 1913ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1914ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1915ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 1916ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov default: 1917ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 1918ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1919ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1920ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1921ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1922ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bSet) 1923ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1924ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pIterator->SetWord(wordinfo); 1925ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1926ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bAddUndo && m_bEnableUndo) 1927ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1928ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov AddEditUndoItem(new CFXEU_SetWordProps 1929ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov (this,place,eProps,OldWordinfo.WordProps,wordinfo.WordProps,wr)); 1930ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1931ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1932ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1933ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pIterator->SetAt(oldplace); 1934ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return bSet; 1935ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1936ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1937ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1938ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FALSE; 1939ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1940ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1941ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::SetText(FX_LPCWSTR text,FX_INT32 charset /*= DEFAULT_CHARSET*/, 1942ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const CPVT_SecProps * pSecProps /*= NULL*/,const CPVT_WordProps * pWordProps /*= NULL*/) 1943ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1944ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetText(text,charset,pSecProps,pWordProps,TRUE,TRUE); 1945ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1946ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1947ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CFX_Edit::InsertWord(FX_WORD word, FX_INT32 charset /*= DEFAULT_CHARSET*/, const CPVT_WordProps * pWordProps /*= NULL*/) 1948ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1949ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return InsertWord(word,charset,pWordProps,TRUE,TRUE); 1950ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1951ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1952ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CFX_Edit::InsertReturn(const CPVT_SecProps * pSecProps /*= NULL*/,const CPVT_WordProps * pWordProps /*= NULL*/) 1953ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1954ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return InsertReturn(pSecProps,pWordProps,TRUE,TRUE); 1955ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1956ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1957ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CFX_Edit::Backspace() 1958ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1959ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return Backspace(TRUE,TRUE); 1960ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1961ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1962ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CFX_Edit::Delete() 1963ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1964ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return Delete(TRUE,TRUE); 1965ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1966ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1967ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CFX_Edit::Clear() 1968ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1969ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return Clear(TRUE,TRUE); 1970ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1971ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1972ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CFX_Edit::InsertText(FX_LPCWSTR text, FX_INT32 charset /*= DEFAULT_CHARSET*/, 1973ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const CPVT_SecProps * pSecProps /*= NULL*/,const CPVT_WordProps * pWordProps /*= NULL*/) 1974ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1975ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return InsertText(text,charset,pSecProps,pWordProps,TRUE,TRUE); 1976ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1977ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1978ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_FLOAT CFX_Edit::GetFontSize() const 1979ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1980ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_pVT->GetFontSize(); 1981ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1982ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1983ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_WORD CFX_Edit::GetPasswordChar() const 1984ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1985ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_pVT->GetPasswordChar(); 1986ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1987ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1988ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_INT32 CFX_Edit::GetCharArray() const 1989ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1990ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_pVT->GetCharArray(); 1991ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1992ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1993ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCPDF_Rect CFX_Edit::GetPlateRect() const 1994ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1995ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_pVT->GetPlateRect(); 1996ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1997ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1998ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCPDF_Rect CFX_Edit::GetContentRect() const 1999ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2000ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return VTToEdit(m_pVT->GetContentRect()); 2001ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2002ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2003ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_INT32 CFX_Edit::GetHorzScale() const 2004ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2005ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_pVT->GetHorzScale(); 2006ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2007ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2008ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_FLOAT CFX_Edit::GetCharSpace() const 2009ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2010ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_pVT->GetCharSpace(); 2011ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2012ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2013ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// inner methods 2014ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2015ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCPVT_WordRange CFX_Edit::GetWholeWordRange() const 2016ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2017ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pVT->IsValid()) 2018ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return CPVT_WordRange(m_pVT->GetBeginWordPlace(),m_pVT->GetEndWordPlace()); 2019ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2020ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return CPVT_WordRange(); 2021ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2022ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2023ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCPVT_WordRange CFX_Edit::GetVisibleWordRange() const 2024ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2025ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_bEnableOverflow) return GetWholeWordRange(); 2026ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2027ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pVT->IsValid()) 2028ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2029ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect rcPlate = m_pVT->GetPlateRect(); 2030ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2031ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordPlace place1 = m_pVT->SearchWordPlace(EditToVT(CPDF_Point(rcPlate.left,rcPlate.top))); 2032ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordPlace place2 = m_pVT->SearchWordPlace(EditToVT(CPDF_Point(rcPlate.right,rcPlate.bottom))); 2033ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2034ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return CPVT_WordRange(place1,place2); 2035ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2036ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2037ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return CPVT_WordRange(); 2038ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2039ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2040ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCPVT_WordPlace CFX_Edit::SearchWordPlace(const CPDF_Point& point) const 2041ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2042ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pVT->IsValid()) 2043ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2044ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_pVT->SearchWordPlace(EditToVT(point)); 2045ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2046ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2047ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return CPVT_WordPlace(); 2048ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2049ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2050ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::Paint() 2051ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2052ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pVT->IsValid()) 2053ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2054ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov RearrangeAll(); 2055ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ScrollToCaret(); 2056ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Refresh(RP_NOANALYSE); 2057ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaretOrigin(); 2058ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaretInfo(); 2059ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2060ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2061ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2062ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::RearrangeAll() 2063ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2064ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pVT->IsValid()) 2065ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2066ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pVT->UpdateWordPlace(m_wpCaret); 2067ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pVT->RearrangeAll(); 2068ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pVT->UpdateWordPlace(m_wpCaret); 2069ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetScrollInfo(); 2070ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetContentChanged(); 2071ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2072ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2073ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2074ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::RearrangePart(const CPVT_WordRange & range) 2075ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2076ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pVT->IsValid()) 2077ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2078ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pVT->UpdateWordPlace(m_wpCaret); 2079ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pVT->RearrangePart(range); 2080ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pVT->UpdateWordPlace(m_wpCaret); 2081ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetScrollInfo(); 2082ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetContentChanged(); 2083ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2084ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2085ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2086ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::SetContentChanged() 2087ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2088ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_bNotify && m_pNotify) 2089ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2090ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect rcContent = m_pVT->GetContentRect(); 2091ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (rcContent.Width() != m_rcOldContent.Width() || 2092ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov rcContent.Height() != m_rcOldContent.Height()) 2093ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2094ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!m_bNotifyFlag) 2095ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2096ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_bNotifyFlag = TRUE; 2097ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pNotify->IOnContentChange(rcContent); 2098ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_bNotifyFlag = FALSE; 2099ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2100ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_rcOldContent = rcContent; 2101ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2102ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2103ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2104ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2105ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::SelectAll() 2106ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2107ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pVT->IsValid()) 2108ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2109ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_SelState = GetWholeWordRange(); 2110ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaret(m_SelState.EndPos); 2111ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2112ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ScrollToCaret(); 2113ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordRange wrVisible = GetVisibleWordRange(); 2114ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Refresh(RP_OPTIONAL,&wrVisible); 2115ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaretInfo(); 2116ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2117ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2118ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2119ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::SelectNone() 2120ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2121ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pVT->IsValid()) 2122ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2123ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_SelState.IsExist()) 2124ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2125ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordRange wrTemp = m_SelState.ConvertToWordRange(); 2126ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_SelState.Default(); 2127ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Refresh(RP_OPTIONAL,&wrTemp); 2128ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2129ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2130ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2131ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2132ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CFX_Edit::IsSelected() const 2133ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2134ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_SelState.IsExist(); 2135ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2136ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2137ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCPDF_Point CFX_Edit::VTToEdit(const CPDF_Point & point) const 2138ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2139ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect rcContent = m_pVT->GetContentRect(); 2140ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect rcPlate = m_pVT->GetPlateRect(); 2141ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2142ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT fPadding = 0.0f; 2143ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2144ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov switch (m_nAlignment) 2145ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2146ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case 0: 2147ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov fPadding = 0.0f; 2148ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 2149ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case 1: 2150ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov fPadding = (rcPlate.Height() - rcContent.Height()) * 0.5f; 2151ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 2152ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case 2: 2153ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov fPadding = rcPlate.Height() - rcContent.Height(); 2154ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 2155ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2156ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2157ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return CPDF_Point(point.x - (m_ptScrollPos.x - rcPlate.left), 2158ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov point.y - (m_ptScrollPos.y + fPadding - rcPlate.top)); 2159ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2160ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2161ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCPDF_Point CFX_Edit::EditToVT(const CPDF_Point & point) const 2162ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2163ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect rcContent = m_pVT->GetContentRect(); 2164ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect rcPlate = m_pVT->GetPlateRect(); 2165ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2166ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT fPadding = 0.0f; 2167ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2168ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov switch (m_nAlignment) 2169ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2170ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case 0: 2171ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov fPadding = 0.0f; 2172ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 2173ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case 1: 2174ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov fPadding = (rcPlate.Height() - rcContent.Height()) * 0.5f; 2175ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 2176ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case 2: 2177ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov fPadding = rcPlate.Height() - rcContent.Height(); 2178ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 2179ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2180ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2181ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return CPDF_Point(point.x + (m_ptScrollPos.x - rcPlate.left), 2182ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov point.y + (m_ptScrollPos.y + fPadding - rcPlate.top)); 2183ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2184ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2185ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCPDF_Rect CFX_Edit::VTToEdit(const CPDF_Rect & rect) const 2186ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2187ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Point ptLeftBottom = VTToEdit(CPDF_Point(rect.left,rect.bottom)); 2188ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Point ptRightTop = VTToEdit(CPDF_Point(rect.right,rect.top)); 2189ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2190ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return CPDF_Rect(ptLeftBottom.x,ptLeftBottom.y,ptRightTop.x,ptRightTop.y); 2191ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2192ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2193ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCPDF_Rect CFX_Edit::EditToVT(const CPDF_Rect & rect) const 2194ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2195ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Point ptLeftBottom = EditToVT(CPDF_Point(rect.left,rect.bottom)); 2196ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Point ptRightTop = EditToVT(CPDF_Point(rect.right,rect.top)); 2197ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2198ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return CPDF_Rect(ptLeftBottom.x,ptLeftBottom.y,ptRightTop.x,ptRightTop.y); 2199ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2200ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2201ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::SetScrollInfo() 2202ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2203ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_bNotify && m_pNotify) 2204ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2205ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect rcPlate = m_pVT->GetPlateRect(); 2206ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect rcContent = m_pVT->GetContentRect(); 2207ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2208ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!m_bNotifyFlag) 2209ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2210ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_bNotifyFlag = TRUE; 2211ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pNotify->IOnSetScrollInfoX(rcPlate.left, rcPlate.right, 2212ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov rcContent.left, rcContent.right, rcPlate.Width() / 3, rcPlate.Width()); 2213ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2214ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pNotify->IOnSetScrollInfoY(rcPlate.bottom, rcPlate.top, 2215ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov rcContent.bottom, rcContent.top, rcPlate.Height() / 3, rcPlate.Height()); 2216ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_bNotifyFlag = FALSE; 2217ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2218ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2219ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2220ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2221ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::SetScrollPosX(FX_FLOAT fx) 2222ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2223ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!m_bEnableScroll) return; 2224ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2225ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pVT->IsValid()) 2226ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2227ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!FX_EDIT_IsFloatEqual(m_ptScrollPos.x,fx)) 2228ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2229ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_ptScrollPos.x = fx; 2230ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Refresh(RP_NOANALYSE); 2231ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2232ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_bNotify && m_pNotify) 2233ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2234ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!m_bNotifyFlag) 2235ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2236ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_bNotifyFlag = TRUE; 2237ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pNotify->IOnSetScrollPosX(fx); 2238ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_bNotifyFlag = FALSE; 2239ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2240ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2241ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2242ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2243ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2244ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2245ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::SetScrollPosY(FX_FLOAT fy) 2246ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2247ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!m_bEnableScroll) return; 2248ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2249ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pVT->IsValid()) 2250ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2251ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!FX_EDIT_IsFloatEqual(m_ptScrollPos.y,fy)) 2252ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2253ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_ptScrollPos.y = fy; 2254ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Refresh(RP_NOANALYSE); 2255ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2256ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_bNotify && m_pNotify) 2257ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2258ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!m_bNotifyFlag) 2259ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2260ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_bNotifyFlag = TRUE; 2261ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pNotify->IOnSetScrollPosY(fy); 2262ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_bNotifyFlag = FALSE; 2263ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2264ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2265ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2266ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2267ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2268ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2269ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::SetScrollPos(const CPDF_Point & point) 2270ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2271ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetScrollPosX(point.x); 2272ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetScrollPosY(point.y); 2273ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetScrollLimit(); 2274ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaretInfo(); 2275ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2276ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2277ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCPDF_Point CFX_Edit::GetScrollPos() const 2278ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2279ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_ptScrollPos; 2280ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2281ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2282ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::SetScrollLimit() 2283ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2284ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pVT->IsValid()) 2285ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2286ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect rcContent = m_pVT->GetContentRect(); 2287ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect rcPlate = m_pVT->GetPlateRect(); 2288ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2289ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (rcPlate.Width() > rcContent.Width()) 2290ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2291ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetScrollPosX(rcPlate.left); 2292ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2293ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 2294ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2295ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (FX_EDIT_IsFloatSmaller(m_ptScrollPos.x, rcContent.left)) 2296ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2297ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetScrollPosX(rcContent.left); 2298ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2299ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else if (FX_EDIT_IsFloatBigger(m_ptScrollPos.x, rcContent.right - rcPlate.Width())) 2300ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2301ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetScrollPosX(rcContent.right - rcPlate.Width()); 2302ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2303ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2304ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2305ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (rcPlate.Height() > rcContent.Height()) 2306ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2307ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetScrollPosY(rcPlate.top); 2308ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2309ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 2310ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2311ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (FX_EDIT_IsFloatSmaller(m_ptScrollPos.y, rcContent.bottom + rcPlate.Height())) 2312ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2313ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetScrollPosY(rcContent.bottom + rcPlate.Height()); 2314ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2315ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else if (FX_EDIT_IsFloatBigger(m_ptScrollPos.y, rcContent.top)) 2316ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2317ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetScrollPosY(rcContent.top); 2318ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2319ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2320ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2321ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2322ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2323ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::ScrollToCaret() 2324ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2325ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetScrollLimit(); 2326ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2327ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pVT->IsValid()) 2328ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2329ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Point ptHead(0,0); 2330ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Point ptFoot(0,0); 2331ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2332ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (IPDF_VariableText_Iterator * pIterator = m_pVT->GetIterator()) 2333ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2334ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pIterator->SetAt(m_wpCaret); 2335ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2336ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_Word word; 2337ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_Line line; 2338ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pIterator->GetWord(word)) 2339ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2340ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ptHead.x = word.ptWord.x + word.fWidth; 2341ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ptHead.y = word.ptWord.y + word.fAscent; 2342ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ptFoot.x = word.ptWord.x + word.fWidth; 2343ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ptFoot.y = word.ptWord.y + word.fDescent; 2344ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2345ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else if (pIterator->GetLine(line)) 2346ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2347ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ptHead.x = line.ptLine.x; 2348ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ptHead.y = line.ptLine.y + line.fLineAscent; 2349ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ptFoot.x = line.ptLine.x; 2350ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ptFoot.y = line.ptLine.y + line.fLineDescent; 2351ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2352ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2353ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2354ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Point ptHeadEdit = VTToEdit(ptHead); 2355ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Point ptFootEdit = VTToEdit(ptFoot); 2356ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2357ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect rcPlate = m_pVT->GetPlateRect(); 2358ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2359ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!FX_EDIT_IsFloatEqual(rcPlate.left,rcPlate.right)) 2360ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2361ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (FX_EDIT_IsFloatSmaller(ptHeadEdit.x, rcPlate.left) || 2362ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_EDIT_IsFloatEqual(ptHeadEdit.x, rcPlate.left)) 2363ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2364ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetScrollPosX(ptHead.x); 2365ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2366ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else if (FX_EDIT_IsFloatBigger(ptHeadEdit.x, rcPlate.right)) 2367ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2368ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetScrollPosX(ptHead.x - rcPlate.Width()); 2369ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2370ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2371ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2372ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!FX_EDIT_IsFloatEqual(rcPlate.top,rcPlate.bottom)) 2373ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2374ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (FX_EDIT_IsFloatSmaller(ptFootEdit.y, rcPlate.bottom) || 2375ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_EDIT_IsFloatEqual(ptFootEdit.y, rcPlate.bottom)) 2376ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2377ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (FX_EDIT_IsFloatSmaller(ptHeadEdit.y, rcPlate.top)) 2378ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2379ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetScrollPosY(ptFoot.y + rcPlate.Height()); 2380ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2381ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2382ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else if (FX_EDIT_IsFloatBigger(ptHeadEdit.y, rcPlate.top)) 2383ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2384ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (FX_EDIT_IsFloatBigger(ptFootEdit.y, rcPlate.bottom)) 2385ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2386ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetScrollPosY(ptHead.y); 2387ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2388ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2389ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2390ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2391ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2392ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2393ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::Refresh(REFRESH_PLAN_E ePlan,const CPVT_WordRange * pRange1,const CPVT_WordRange * pRange2) 2394ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2395ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_bEnableRefresh && m_pVT->IsValid()) 2396ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2397ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_Refresh.BeginRefresh(); 2398ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov RefreshPushLineRects(GetVisibleWordRange()); 2399ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2400ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// if (!FX_EDIT_IsFloatEqual(m_ptRefreshScrollPos.x,m_ptScrollPos.x) || 2401ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// !FX_EDIT_IsFloatEqual(m_ptRefreshScrollPos.y,m_ptScrollPos.y)) 2402ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// { 2403ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_Refresh.NoAnalyse(); 2404ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_ptRefreshScrollPos = m_ptScrollPos; 2405ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// } 2406ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// else 2407ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// { 2408ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// switch (ePlan) 2409ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// { 2410ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// case RP_ANALYSE: 2411ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// m_Refresh.Analyse(m_pVT->GetAlignment()); 2412ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// 2413ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// if (pRange1) RefreshPushRandomRects(*pRange1); 2414ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// if (pRange2) RefreshPushRandomRects(*pRange2); 2415ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// break; 2416ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// case RP_NOANALYSE: 2417ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// m_Refresh.NoAnalyse(); 2418ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// break; 2419ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// case RP_OPTIONAL: 2420ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// if (pRange1) RefreshPushRandomRects(*pRange1); 2421ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// if (pRange2) RefreshPushRandomRects(*pRange2); 2422ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// break; 2423ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// } 2424ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// } 2425ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2426ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_bNotify && m_pNotify) 2427ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2428ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!m_bNotifyFlag) 2429ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2430ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_bNotifyFlag = TRUE; 2431ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (const CFX_Edit_RectArray * pRects = m_Refresh.GetRefreshRects()) 2432ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2433ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov for (FX_INT32 i = 0, sz = pRects->GetSize(); i < sz; i++) 2434ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pNotify->IOnInvalidateRect(pRects->GetAt(i)); 2435ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2436ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_bNotifyFlag = FALSE; 2437ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2438ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2439ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2440ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_Refresh.EndRefresh(); 2441ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2442ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2443ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2444ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::RefreshPushLineRects(const CPVT_WordRange & wr) 2445ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2446ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pVT->IsValid()) 2447ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2448ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (IPDF_VariableText_Iterator * pIterator = m_pVT->GetIterator()) 2449ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2450ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordPlace wpBegin = wr.BeginPos; 2451ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pVT->UpdateWordPlace(wpBegin); 2452ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordPlace wpEnd = wr.EndPos; 2453ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pVT->UpdateWordPlace(wpEnd); 2454ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pIterator->SetAt(wpBegin); 2455ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2456ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_Line lineinfo; 2457ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov do 2458ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2459ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!pIterator->GetLine(lineinfo))break; 2460ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (lineinfo.lineplace.LineCmp(wpEnd) > 0)break; 2461ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2462ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect rcLine(lineinfo.ptLine.x, 2463ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov lineinfo.ptLine.y + lineinfo.fLineDescent, 2464ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov lineinfo.ptLine.x + lineinfo.fLineWidth, 2465ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov lineinfo.ptLine.y + lineinfo.fLineAscent); 2466ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2467ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_Refresh.Push(CPVT_WordRange(lineinfo.lineplace,lineinfo.lineEnd),VTToEdit(rcLine)); 2468ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2469ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov }while (pIterator->NextLine()); 2470ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2471ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2472ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2473ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2474ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::RefreshPushRandomRects(const CPVT_WordRange & wr) 2475ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2476ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pVT->IsValid()) 2477ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2478ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (IPDF_VariableText_Iterator * pIterator = m_pVT->GetIterator()) 2479ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2480ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordRange wrTemp = wr; 2481ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2482ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pVT->UpdateWordPlace(wrTemp.BeginPos); 2483ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pVT->UpdateWordPlace(wrTemp.EndPos); 2484ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pIterator->SetAt(wrTemp.BeginPos); 2485ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2486ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_Word wordinfo; 2487ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_Line lineinfo; 2488ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordPlace place; 2489ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2490ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov while (pIterator->NextWord()) 2491ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2492ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov place = pIterator->GetAt(); 2493ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (place.WordCmp(wrTemp.EndPos) > 0) break; 2494ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2495ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pIterator->GetWord(wordinfo); 2496ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pIterator->GetLine(lineinfo); 2497ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2498ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (place.LineCmp(wrTemp.BeginPos) == 0 || place.LineCmp(wrTemp.EndPos) == 0) 2499ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2500ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect rcWord(wordinfo.ptWord.x, 2501ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov lineinfo.ptLine.y + lineinfo.fLineDescent, 2502ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov wordinfo.ptWord.x + wordinfo.fWidth, 2503ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov lineinfo.ptLine.y + lineinfo.fLineAscent); 2504ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2505ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_Refresh.AddRefresh(VTToEdit(rcWord)); 2506ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2507ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 2508ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2509ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect rcLine(lineinfo.ptLine.x, 2510ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov lineinfo.ptLine.y + lineinfo.fLineDescent, 2511ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov lineinfo.ptLine.x + lineinfo.fLineWidth, 2512ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov lineinfo.ptLine.y + lineinfo.fLineAscent); 2513ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2514ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_Refresh.AddRefresh(VTToEdit(rcLine)); 2515ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2516ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pIterator->NextLine(); 2517ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2518ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2519ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2520ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2521ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2522ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2523ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::RefreshWordRange(const CPVT_WordRange& wr) 2524ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2525ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (IPDF_VariableText_Iterator * pIterator = m_pVT->GetIterator()) 2526ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2527ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordRange wrTemp = wr; 2528ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2529ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pVT->UpdateWordPlace(wrTemp.BeginPos); 2530ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pVT->UpdateWordPlace(wrTemp.EndPos); 2531ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pIterator->SetAt(wrTemp.BeginPos); 2532ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2533ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_Word wordinfo; 2534ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_Line lineinfo; 2535ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordPlace place; 2536ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2537ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov while (pIterator->NextWord()) 2538ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2539ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov place = pIterator->GetAt(); 2540ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (place.WordCmp(wrTemp.EndPos) > 0) break; 2541ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2542ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pIterator->GetWord(wordinfo); 2543ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pIterator->GetLine(lineinfo); 2544ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2545ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (place.LineCmp(wrTemp.BeginPos) == 0 || place.LineCmp(wrTemp.EndPos) == 0) 2546ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2547ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect rcWord(wordinfo.ptWord.x, 2548ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov lineinfo.ptLine.y + lineinfo.fLineDescent, 2549ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov wordinfo.ptWord.x + wordinfo.fWidth, 2550ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov lineinfo.ptLine.y + lineinfo.fLineAscent); 2551ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2552ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_bNotify && m_pNotify) 2553ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2554ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!m_bNotifyFlag) 2555ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2556ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_bNotifyFlag = TRUE; 2557ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect rcRefresh = VTToEdit(rcWord); 2558ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pNotify->IOnInvalidateRect(&rcRefresh); 2559ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_bNotifyFlag = FALSE; 2560ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2561ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2562ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2563ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 2564ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2565ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect rcLine(lineinfo.ptLine.x, 2566ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov lineinfo.ptLine.y + lineinfo.fLineDescent, 2567ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov lineinfo.ptLine.x + lineinfo.fLineWidth, 2568ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov lineinfo.ptLine.y + lineinfo.fLineAscent); 2569ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2570ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_bNotify && m_pNotify) 2571ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2572ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!m_bNotifyFlag) 2573ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2574ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_bNotifyFlag = TRUE; 2575ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect rcRefresh = VTToEdit(rcLine); 2576ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pNotify->IOnInvalidateRect(&rcRefresh); 2577ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_bNotifyFlag = FALSE; 2578ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2579ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2580ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2581ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pIterator->NextLine(); 2582ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2583ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2584ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2585ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2586ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2587ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::SetCaret(const CPVT_WordPlace & place) 2588ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2589ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_wpOldCaret = m_wpCaret; 2590ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_wpCaret = place; 2591ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2592ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2593ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::SetCaretInfo() 2594ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2595ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_bNotify && m_pNotify) 2596ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2597ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!m_bNotifyFlag) 2598ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2599ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Point ptHead(0.0f,0.0f),ptFoot(0.0f,0.0f); 2600ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2601ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (IPDF_VariableText_Iterator * pIterator = m_pVT->GetIterator()) 2602ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2603ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pIterator->SetAt(m_wpCaret); 2604ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_Word word; 2605ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_Line line; 2606ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pIterator->GetWord(word)) 2607ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2608ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ptHead.x = word.ptWord.x + word.fWidth; 2609ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ptHead.y = word.ptWord.y + word.fAscent; 2610ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ptFoot.x = word.ptWord.x + word.fWidth; 2611ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ptFoot.y = word.ptWord.y + word.fDescent; 2612ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2613ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else if (pIterator->GetLine(line)) 2614ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2615ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ptHead.x = line.ptLine.x; 2616ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ptHead.y = line.ptLine.y + line.fLineAscent; 2617ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ptFoot.x = line.ptLine.x; 2618ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ptFoot.y = line.ptLine.y + line.fLineDescent; 2619ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2620ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2621ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2622ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_bNotifyFlag = TRUE; 2623ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pNotify->IOnSetCaret(!m_SelState.IsExist(),VTToEdit(ptHead),VTToEdit(ptFoot), m_wpCaret); 2624ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_bNotifyFlag = FALSE; 2625ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2626ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2627ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2628ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaretChange(); 2629ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2630ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2631ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::SetCaretChange() 2632ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2633ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (this->m_wpCaret == this->m_wpOldCaret) return; 2634ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2635ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_bNotify && m_pVT->IsRichText() && m_pNotify) 2636ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2637ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_SecProps SecProps; 2638ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordProps WordProps; 2639ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2640ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (IPDF_VariableText_Iterator * pIterator = m_pVT->GetIterator()) 2641ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2642ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pIterator->SetAt(m_wpCaret); 2643ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_Word word; 2644ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_Section section; 2645ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2646ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pIterator->GetSection(section)) 2647ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2648ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SecProps = section.SecProps; 2649ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov WordProps = section.WordProps; 2650ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2651ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2652ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pIterator->GetWord(word)) 2653ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2654ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov WordProps = word.WordProps; 2655ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2656ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2657ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2658ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!m_bNotifyFlag) 2659ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2660ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_bNotifyFlag = TRUE; 2661ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pNotify->IOnCaretChange(SecProps,WordProps); 2662ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_bNotifyFlag = FALSE; 2663ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2664ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2665ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2666ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2667ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::SetCaret(FX_INT32 nPos) 2668ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2669ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pVT->IsValid()) 2670ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2671ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SelectNone(); 2672ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaret(m_pVT->WordIndexToWordPlace(nPos)); 2673ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_SelState.Set(m_wpCaret,m_wpCaret); 2674ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2675ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ScrollToCaret(); 2676ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaretOrigin(); 2677ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaretInfo(); 2678ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2679ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2680ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2681ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::OnMouseDown(const CPDF_Point & point,FX_BOOL bShift,FX_BOOL bCtrl) 2682ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2683ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pVT->IsValid()) 2684ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2685ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SelectNone(); 2686ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaret(m_pVT->SearchWordPlace(EditToVT(point))); 2687ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_SelState.Set(m_wpCaret,m_wpCaret); 2688ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2689ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ScrollToCaret(); 2690ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaretOrigin(); 2691ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaretInfo(); 2692ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2693ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2694ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2695ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::OnMouseMove(const CPDF_Point & point,FX_BOOL bShift,FX_BOOL bCtrl) 2696ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2697ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pVT->IsValid()) 2698ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2699ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaret(m_pVT->SearchWordPlace(EditToVT(point))); 2700ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2701ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_wpCaret != m_wpOldCaret) 2702ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2703ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_SelState.SetEndPos(m_wpCaret); 2704ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2705ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ScrollToCaret(); 2706ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordRange wr(m_wpOldCaret,m_wpCaret); 2707ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Refresh(RP_OPTIONAL,&wr); 2708ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaretOrigin(); 2709ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaretInfo(); 2710ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2711ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2712ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2713ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2714ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::OnVK_UP(FX_BOOL bShift,FX_BOOL bCtrl) 2715ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2716ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pVT->IsValid()) 2717ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2718ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaret(m_pVT->GetUpWordPlace(m_wpCaret,m_ptCaret)); 2719ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2720ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bShift) 2721ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2722ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_SelState.IsExist()) 2723ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_SelState.SetEndPos(m_wpCaret); 2724ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 2725ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_SelState.Set(m_wpOldCaret,m_wpCaret); 2726ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2727ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_wpOldCaret != m_wpCaret) 2728ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2729ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ScrollToCaret(); 2730ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordRange wr(m_wpOldCaret, m_wpCaret); 2731ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Refresh(RP_OPTIONAL, &wr); 2732ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaretInfo(); 2733ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2734ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2735ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 2736ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2737ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SelectNone(); 2738ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2739ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ScrollToCaret(); 2740ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaretInfo(); 2741ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2742ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2743ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2744ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2745ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::OnVK_DOWN(FX_BOOL bShift,FX_BOOL bCtrl) 2746ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2747ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pVT->IsValid()) 2748ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2749ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaret(m_pVT->GetDownWordPlace(m_wpCaret,m_ptCaret)); 2750ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2751ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bShift) 2752ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2753ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_SelState.IsExist()) 2754ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_SelState.SetEndPos(m_wpCaret); 2755ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 2756ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_SelState.Set(m_wpOldCaret,m_wpCaret); 2757ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2758ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_wpOldCaret != m_wpCaret) 2759ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2760ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ScrollToCaret(); 2761ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordRange wr(m_wpOldCaret,m_wpCaret); 2762ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Refresh(RP_OPTIONAL, &wr); 2763ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaretInfo(); 2764ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2765ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2766ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 2767ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2768ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SelectNone(); 2769ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2770ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ScrollToCaret(); 2771ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaretInfo(); 2772ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2773ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2774ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2775ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2776ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::OnVK_LEFT(FX_BOOL bShift,FX_BOOL bCtrl) 2777ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2778ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pVT->IsValid()) 2779ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2780ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bShift) 2781ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2782ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_wpCaret == m_pVT->GetLineBeginPlace(m_wpCaret) && 2783ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_wpCaret != m_pVT->GetSectionBeginPlace(m_wpCaret)) 2784ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaret(m_pVT->GetPrevWordPlace(m_wpCaret)); 2785ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2786ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaret(m_pVT->GetPrevWordPlace(m_wpCaret)); 2787ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2788ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_SelState.IsExist()) 2789ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_SelState.SetEndPos(m_wpCaret); 2790ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 2791ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_SelState.Set(m_wpOldCaret, m_wpCaret); 2792ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2793ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_wpOldCaret != m_wpCaret) 2794ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2795ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ScrollToCaret(); 2796ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordRange wr(m_wpOldCaret,m_wpCaret); 2797ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Refresh(RP_OPTIONAL,&wr); 2798ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaretInfo(); 2799ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2800ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2801ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 2802ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2803ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_SelState.IsExist()) 2804ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2805ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_SelState.BeginPos.WordCmp(m_SelState.EndPos)<0) 2806ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaret(m_SelState.BeginPos); 2807ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 2808ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaret(m_SelState.EndPos); 2809ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2810ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SelectNone(); 2811ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ScrollToCaret(); 2812ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaretInfo(); 2813ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2814ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 2815ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2816ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_wpCaret == m_pVT->GetLineBeginPlace(m_wpCaret) && 2817ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_wpCaret != m_pVT->GetSectionBeginPlace(m_wpCaret)) 2818ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaret(m_pVT->GetPrevWordPlace(m_wpCaret)); 2819ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2820ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaret(m_pVT->GetPrevWordPlace(m_wpCaret)); 2821ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2822ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ScrollToCaret(); 2823ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaretOrigin(); 2824ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaretInfo(); 2825ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2826ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2827ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2828ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2829ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2830ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::OnVK_RIGHT(FX_BOOL bShift,FX_BOOL bCtrl) 2831ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2832ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pVT->IsValid()) 2833ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2834ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bShift) 2835ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2836ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaret(m_pVT->GetNextWordPlace(m_wpCaret)); 2837ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2838ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_wpCaret == m_pVT->GetLineEndPlace(m_wpCaret) && 2839ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_wpCaret != m_pVT->GetSectionEndPlace(m_wpCaret)) 2840ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaret(m_pVT->GetNextWordPlace(m_wpCaret)); 2841ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2842ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_SelState.IsExist()) 2843ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_SelState.SetEndPos(m_wpCaret); 2844ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 2845ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_SelState.Set(m_wpOldCaret,m_wpCaret); 2846ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2847ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_wpOldCaret != m_wpCaret) 2848ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2849ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ScrollToCaret(); 2850ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordRange wr(m_wpOldCaret,m_wpCaret); 2851ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Refresh(RP_OPTIONAL,&wr); 2852ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaretInfo(); 2853ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2854ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2855ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 2856ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2857ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_SelState.IsExist()) 2858ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2859ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_SelState.BeginPos.WordCmp(m_SelState.EndPos)>0) 2860ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaret(m_SelState.BeginPos); 2861ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 2862ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaret(m_SelState.EndPos); 2863ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2864ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SelectNone(); 2865ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ScrollToCaret(); 2866ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaretInfo(); 2867ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2868ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 2869ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2870ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaret(m_pVT->GetNextWordPlace(m_wpCaret)); 2871ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2872ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_wpCaret == m_pVT->GetLineEndPlace(m_wpCaret) && 2873ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_wpCaret != m_pVT->GetSectionEndPlace(m_wpCaret)) 2874ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaret(m_pVT->GetNextWordPlace(m_wpCaret)); 2875ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2876ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ScrollToCaret(); 2877ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaretOrigin(); 2878ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaretInfo(); 2879ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2880ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2881ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2882ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2883ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2884ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::OnVK_HOME(FX_BOOL bShift,FX_BOOL bCtrl) 2885ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2886ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pVT->IsValid()) 2887ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2888ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bShift) 2889ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2890ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bCtrl) 2891ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaret(m_pVT->GetBeginWordPlace()); 2892ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 2893ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaret(m_pVT->GetLineBeginPlace(m_wpCaret)); 2894ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2895ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_SelState.IsExist()) 2896ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_SelState.SetEndPos(m_wpCaret); 2897ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 2898ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_SelState.Set(m_wpOldCaret,m_wpCaret); 2899ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2900ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ScrollToCaret(); 2901ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordRange wr(m_wpOldCaret, m_wpCaret); 2902ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Refresh(RP_OPTIONAL, &wr); 2903ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaretInfo(); 2904ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2905ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 2906ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2907ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_SelState.IsExist()) 2908ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2909ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_SelState.BeginPos.WordCmp(m_SelState.EndPos)<0) 2910ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaret(m_SelState.BeginPos); 2911ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 2912ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaret(m_SelState.EndPos); 2913ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2914ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SelectNone(); 2915ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ScrollToCaret(); 2916ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaretInfo(); 2917ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2918ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 2919ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2920ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bCtrl) 2921ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaret(m_pVT->GetBeginWordPlace()); 2922ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 2923ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaret(m_pVT->GetLineBeginPlace(m_wpCaret)); 2924ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2925ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ScrollToCaret(); 2926ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaretOrigin(); 2927ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaretInfo(); 2928ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2929ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2930ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2931ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2932ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2933ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::OnVK_END(FX_BOOL bShift,FX_BOOL bCtrl) 2934ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2935ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pVT->IsValid()) 2936ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2937ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bShift) 2938ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2939ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bCtrl) 2940ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaret(m_pVT->GetEndWordPlace()); 2941ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 2942ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaret(m_pVT->GetLineEndPlace(m_wpCaret)); 2943ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2944ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_SelState.IsExist()) 2945ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_SelState.SetEndPos(m_wpCaret); 2946ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 2947ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_SelState.Set(m_wpOldCaret, m_wpCaret); 2948ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2949ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ScrollToCaret(); 2950ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordRange wr(m_wpOldCaret, m_wpCaret); 2951ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Refresh(RP_OPTIONAL, &wr); 2952ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaretInfo(); 2953ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2954ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 2955ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2956ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_SelState.IsExist()) 2957ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2958ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_SelState.BeginPos.WordCmp(m_SelState.EndPos)>0) 2959ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaret(m_SelState.BeginPos); 2960ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 2961ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaret(m_SelState.EndPos); 2962ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2963ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SelectNone(); 2964ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ScrollToCaret(); 2965ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaretInfo(); 2966ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2967ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 2968ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2969ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bCtrl) 2970ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaret(m_pVT->GetEndWordPlace()); 2971ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 2972ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaret(m_pVT->GetLineEndPlace(m_wpCaret)); 2973ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2974ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ScrollToCaret(); 2975ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaretOrigin(); 2976ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaretInfo(); 2977ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2978ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2979ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2980ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2981ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2982ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::SetText(FX_LPCWSTR text,FX_INT32 charset, 2983ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const CPVT_SecProps * pSecProps,const CPVT_WordProps * pWordProps, FX_BOOL bAddUndo, FX_BOOL bPaint) 2984ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2985ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Empty(); 2986ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov DoInsertText(CPVT_WordPlace(0,0,-1), text, charset, pSecProps, pWordProps); 2987ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bPaint) Paint(); 2988ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_bOprNotify && m_pOprNotify) 2989ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pOprNotify->OnSetText(m_wpCaret, m_wpOldCaret); 2990ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov //if (bAddUndo) 2991ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2992ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2993ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CFX_Edit::InsertWord(FX_WORD word, FX_INT32 charset, const CPVT_WordProps * pWordProps, FX_BOOL bAddUndo, FX_BOOL bPaint) 2994ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2995ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (IsTextOverflow()) return FALSE; 2996ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2997ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pVT->IsValid()) 2998ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2999ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pVT->UpdateWordPlace(m_wpCaret); 3000ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3001ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaret(m_pVT->InsertWord(m_wpCaret,word,GetCharSetFromUnicode(word, charset),pWordProps)); 3002ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_SelState.Set(m_wpCaret,m_wpCaret); 3003ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3004ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_wpCaret != m_wpOldCaret) 3005ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3006ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bAddUndo && m_bEnableUndo) 3007ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3008ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov AddEditUndoItem(new CFXEU_InsertWord(this,m_wpOldCaret,m_wpCaret,word,charset,pWordProps)); 3009ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3010ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3011ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bPaint) 3012ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov PaintInsertText(m_wpOldCaret, m_wpCaret); 3013ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3014ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_bOprNotify && m_pOprNotify) 3015ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pOprNotify->OnInsertWord(m_wpCaret, m_wpOldCaret); 3016ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3017ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return TRUE; 3018ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3019ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3020ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3021ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FALSE; 3022ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 3023ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3024ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CFX_Edit::InsertReturn(const CPVT_SecProps * pSecProps,const CPVT_WordProps * pWordProps, 3025ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL bAddUndo, FX_BOOL bPaint) 3026ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 3027ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (IsTextOverflow()) return FALSE; 3028ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3029ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pVT->IsValid()) 3030ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3031ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pVT->UpdateWordPlace(m_wpCaret); 3032ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaret(m_pVT->InsertSection(m_wpCaret,pSecProps,pWordProps)); 3033ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_SelState.Set(m_wpCaret,m_wpCaret); 3034ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3035ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_wpCaret != m_wpOldCaret) 3036ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3037ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bAddUndo && m_bEnableUndo) 3038ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3039ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov AddEditUndoItem(new CFXEU_InsertReturn(this,m_wpOldCaret,m_wpCaret,pSecProps,pWordProps)); 3040ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3041ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3042ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bPaint) 3043ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3044ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov RearrangePart(CPVT_WordRange(m_wpOldCaret, m_wpCaret)); 3045ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ScrollToCaret(); 3046ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordRange wr(m_wpOldCaret, GetVisibleWordRange().EndPos); 3047ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Refresh(RP_ANALYSE, &wr); 3048ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaretOrigin(); 3049ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaretInfo(); 3050ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3051ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3052ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_bOprNotify && m_pOprNotify) 3053ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pOprNotify->OnInsertReturn(m_wpCaret, m_wpOldCaret); 3054ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3055ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return TRUE; 3056ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3057ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3058ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3059ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FALSE; 3060ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 3061ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3062ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CFX_Edit::Backspace(FX_BOOL bAddUndo, FX_BOOL bPaint) 3063ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 3064ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pVT->IsValid()) 3065ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3066ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_wpCaret == m_pVT->GetBeginWordPlace()) return FALSE; 3067ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3068ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_Section section; 3069ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_Word word; 3070ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3071ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bAddUndo) 3072ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3073ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (IPDF_VariableText_Iterator * pIterator = m_pVT->GetIterator()) 3074ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3075ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pIterator->SetAt(m_wpCaret); 3076ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pIterator->GetSection(section); 3077ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pIterator->GetWord(word); 3078ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3079ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3080ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3081ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pVT->UpdateWordPlace(m_wpCaret); 3082ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaret(m_pVT->BackSpaceWord(m_wpCaret)); 3083ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_SelState.Set(m_wpCaret,m_wpCaret); 3084ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3085ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_wpCaret != m_wpOldCaret) 3086ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3087ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bAddUndo && m_bEnableUndo) 3088ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3089ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_wpCaret.SecCmp(m_wpOldCaret) != 0) 3090ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov AddEditUndoItem(new CFXEU_Backspace(this,m_wpOldCaret,m_wpCaret,word.Word,word.nCharset, 3091ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov section.SecProps,section.WordProps)); 3092ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 3093ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov AddEditUndoItem(new CFXEU_Backspace(this,m_wpOldCaret,m_wpCaret,word.Word,word.nCharset, 3094ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov section.SecProps,word.WordProps)); 3095ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3096ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3097ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bPaint) 3098ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3099ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov RearrangePart(CPVT_WordRange(m_wpCaret,m_wpOldCaret)); 3100ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ScrollToCaret(); 3101ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3102ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordRange wr; 3103ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_wpCaret.SecCmp(m_wpOldCaret) !=0) 3104ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov wr = CPVT_WordRange(m_pVT->GetPrevWordPlace(m_wpCaret),GetVisibleWordRange().EndPos); 3105ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else if (m_wpCaret.LineCmp(m_wpOldCaret) !=0) 3106ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov wr = CPVT_WordRange(m_pVT->GetLineBeginPlace(m_wpCaret),m_pVT->GetSectionEndPlace(m_wpCaret)); 3107ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 3108ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov wr = CPVT_WordRange(m_pVT->GetPrevWordPlace(m_wpCaret),m_pVT->GetSectionEndPlace(m_wpCaret)); 3109ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3110ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Refresh(RP_ANALYSE, &wr); 3111ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3112ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaretOrigin(); 3113ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaretInfo(); 3114ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3115ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3116ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_bOprNotify && m_pOprNotify) 3117ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pOprNotify->OnBackSpace(m_wpCaret, m_wpOldCaret); 3118ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3119ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return TRUE; 3120ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3121ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3122ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3123ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FALSE; 3124ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 3125ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3126ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CFX_Edit::Delete(FX_BOOL bAddUndo, FX_BOOL bPaint) 3127ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 3128ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pVT->IsValid()) 3129ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3130ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_wpCaret == m_pVT->GetEndWordPlace()) return FALSE; 3131ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3132ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_Section section; 3133ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_Word word; 3134ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3135ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bAddUndo) 3136ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3137ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (IPDF_VariableText_Iterator * pIterator = m_pVT->GetIterator()) 3138ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3139ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pIterator->SetAt(m_pVT->GetNextWordPlace(m_wpCaret)); 3140ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pIterator->GetSection(section); 3141ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pIterator->GetWord(word); 3142ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3143ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3144ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3145ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pVT->UpdateWordPlace(m_wpCaret); 3146ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL bSecEnd = (m_wpCaret == m_pVT->GetSectionEndPlace(m_wpCaret)); 3147ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3148ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaret(m_pVT->DeleteWord(m_wpCaret)); 3149ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_SelState.Set(m_wpCaret,m_wpCaret); 3150ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3151ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bAddUndo && m_bEnableUndo) 3152ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3153ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bSecEnd) 3154ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov AddEditUndoItem(new CFXEU_Delete(this,m_wpOldCaret,m_wpCaret,word.Word,word.nCharset, 3155ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov section.SecProps,section.WordProps,bSecEnd)); 3156ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 3157ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov AddEditUndoItem(new CFXEU_Delete(this,m_wpOldCaret,m_wpCaret,word.Word,word.nCharset, 3158ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov section.SecProps,word.WordProps,bSecEnd)); 3159ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3160ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3161ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bPaint) 3162ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3163ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov RearrangePart(CPVT_WordRange(m_wpOldCaret,m_wpCaret)); 3164ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ScrollToCaret(); 3165ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3166ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordRange wr; 3167ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bSecEnd) 3168ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov wr = CPVT_WordRange(m_pVT->GetPrevWordPlace(m_wpOldCaret),GetVisibleWordRange().EndPos); 3169ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else if (m_wpCaret.LineCmp(m_wpOldCaret) !=0) 3170ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov wr = CPVT_WordRange(m_pVT->GetLineBeginPlace(m_wpCaret),m_pVT->GetSectionEndPlace(m_wpCaret)); 3171ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 3172ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov wr = CPVT_WordRange(m_pVT->GetPrevWordPlace(m_wpOldCaret),m_pVT->GetSectionEndPlace(m_wpCaret)); 3173ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3174ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Refresh(RP_ANALYSE, &wr); 3175ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3176ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaretOrigin(); 3177ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaretInfo(); 3178ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3179ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3180ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_bOprNotify && m_pOprNotify) 3181ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pOprNotify->OnDelete(m_wpCaret, m_wpOldCaret); 3182ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3183ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return TRUE; 3184ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3185ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3186ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FALSE; 3187ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 3188ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3189ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CFX_Edit::Empty() 3190ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 3191ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pVT->IsValid()) 3192ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3193ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pVT->DeleteWords(GetWholeWordRange()); 3194ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaret(m_pVT->GetBeginWordPlace()); 3195ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3196ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return TRUE; 3197ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3198ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3199ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FALSE; 3200ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 3201ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3202ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CFX_Edit::Clear(FX_BOOL bAddUndo, FX_BOOL bPaint) 3203ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 3204ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pVT->IsValid()) 3205ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3206ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_SelState.IsExist()) 3207ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3208ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordRange range = m_SelState.ConvertToWordRange(); 3209ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3210ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bAddUndo && m_bEnableUndo) 3211ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3212ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pVT->IsRichText()) 3213ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3214ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov BeginGroupUndo(L""); 3215ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3216ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (IPDF_VariableText_Iterator * pIterator = m_pVT->GetIterator()) 3217ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3218ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pIterator->SetAt(range.EndPos); 3219ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3220ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_Word wordinfo; 3221ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_Section secinfo; 3222ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov do 3223ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3224ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordPlace place = pIterator->GetAt(); 3225ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (place.WordCmp(range.BeginPos) <= 0)break; 3226ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3227ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordPlace oldplace = m_pVT->GetPrevWordPlace(place); 3228ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3229ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (oldplace.SecCmp(place) != 0) 3230ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3231ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pIterator->GetSection(secinfo)) 3232ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3233ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov AddEditUndoItem(new CFXEU_ClearRich(this,oldplace,place,range,wordinfo.Word, 3234ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov wordinfo.nCharset,secinfo.SecProps,secinfo.WordProps)); 3235ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3236ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3237ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 3238ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3239ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pIterator->GetWord(wordinfo)) 3240ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3241ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov oldplace = m_pVT->AjustLineHeader(oldplace,TRUE); 3242ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov place = m_pVT->AjustLineHeader(place,TRUE); 3243ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3244ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov AddEditUndoItem(new CFXEU_ClearRich(this,oldplace,place,range,wordinfo.Word, 3245ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov wordinfo.nCharset,secinfo.SecProps,wordinfo.WordProps)); 3246ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3247ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3248ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov }while (pIterator->PrevWord()); 3249ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3250ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov EndGroupUndo(); 3251ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3252ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 3253ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3254ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov AddEditUndoItem(new CFXEU_Clear(this,range,GetSelText())); 3255ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3256ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3257ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3258ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SelectNone(); 3259ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaret(m_pVT->DeleteWords(range)); 3260ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_SelState.Set(m_wpCaret,m_wpCaret); 3261ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3262ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bPaint) 3263ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3264ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov RearrangePart(range); 3265ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ScrollToCaret(); 3266ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3267ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordRange wr(m_wpOldCaret, GetVisibleWordRange().EndPos); 3268ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Refresh(RP_ANALYSE, &wr); 3269ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3270ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaretOrigin(); 3271ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaretInfo(); 3272ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3273ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3274ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_bOprNotify && m_pOprNotify) 3275ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pOprNotify->OnClear(m_wpCaret, m_wpOldCaret); 3276ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3277ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return TRUE; 3278ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3279ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3280ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3281ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FALSE; 3282ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 3283ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3284ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CFX_Edit::InsertText(FX_LPCWSTR text, FX_INT32 charset, 3285ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const CPVT_SecProps * pSecProps, const CPVT_WordProps * pWordProps, FX_BOOL bAddUndo, FX_BOOL bPaint) 3286ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 3287ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (IsTextOverflow()) return FALSE; 3288ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3289ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pVT->UpdateWordPlace(m_wpCaret); 3290ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaret(DoInsertText(m_wpCaret, text, charset, pSecProps, pWordProps)); 3291ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_SelState.Set(m_wpCaret,m_wpCaret); 3292ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3293ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_wpCaret != m_wpOldCaret) 3294ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3295ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bAddUndo && m_bEnableUndo) 3296ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3297ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov AddEditUndoItem(new CFXEU_InsertText(this,m_wpOldCaret,m_wpCaret,text,charset,pSecProps,pWordProps)); 3298ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3299ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3300ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bPaint) 3301ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov PaintInsertText(m_wpOldCaret, m_wpCaret); 3302ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3303ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_bOprNotify && m_pOprNotify) 3304ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pOprNotify->OnInsertText(m_wpCaret, m_wpOldCaret); 3305ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3306ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return TRUE; 3307ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3308ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FALSE; 3309ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 3310ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3311ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::PaintInsertText(const CPVT_WordPlace & wpOld, const CPVT_WordPlace & wpNew) 3312ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 3313ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pVT->IsValid()) 3314ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3315ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov RearrangePart(CPVT_WordRange(wpOld,wpNew)); 3316ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ScrollToCaret(); 3317ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3318ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordRange wr; 3319ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_wpCaret.LineCmp(wpOld) !=0) 3320ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov wr = CPVT_WordRange(m_pVT->GetLineBeginPlace(wpOld),m_pVT->GetSectionEndPlace(wpNew)); 3321ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 3322ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov wr = CPVT_WordRange(wpOld,m_pVT->GetSectionEndPlace(wpNew)); 3323ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Refresh(RP_ANALYSE, &wr); 3324ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaretOrigin(); 3325ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaretInfo(); 3326ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3327ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 3328ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3329ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CFX_Edit::Redo() 3330ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 3331ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_bEnableUndo) 3332ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3333ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_Undo.CanRedo()) 3334ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3335ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_Undo.Redo(); 3336ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return TRUE; 3337ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3338ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3339ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3340ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FALSE; 3341ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 3342ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3343ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CFX_Edit::Undo() 3344ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 3345ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_bEnableUndo) 3346ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3347ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_Undo.CanUndo()) 3348ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3349ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_Undo.Undo(); 3350ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return TRUE; 3351ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3352ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3353ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3354ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FALSE; 3355ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 3356ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3357ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::SetCaretOrigin() 3358ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 3359ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pVT->IsValid()) 3360ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3361ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (IPDF_VariableText_Iterator * pIterator = m_pVT->GetIterator()) 3362ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3363ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pIterator->SetAt(m_wpCaret); 3364ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_Word word; 3365ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_Line line; 3366ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pIterator->GetWord(word)) 3367ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3368ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_ptCaret.x = word.ptWord.x + word.fWidth; 3369ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_ptCaret.y = word.ptWord.y; 3370ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3371ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else if (pIterator->GetLine(line)) 3372ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3373ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_ptCaret.x = line.ptLine.x; 3374ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_ptCaret.y = line.ptLine.y; 3375ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3376ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3377ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3378ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 3379ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3380ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_INT32 CFX_Edit::WordPlaceToWordIndex(const CPVT_WordPlace & place) const 3381ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 3382ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pVT->IsValid()) 3383ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_pVT->WordPlaceToWordIndex(place); 3384ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3385ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return -1; 3386ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 3387ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3388ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCPVT_WordPlace CFX_Edit::WordIndexToWordPlace(FX_INT32 index) const 3389ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 3390ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pVT->IsValid()) 3391ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_pVT->WordIndexToWordPlace(index); 3392ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3393ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return CPVT_WordPlace(); 3394ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 3395ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3396ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CFX_Edit::IsTextFull() const 3397ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 3398ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 nTotalWords = m_pVT->GetTotalWords(); 3399ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 nLimitChar = m_pVT->GetLimitChar(); 3400ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 nCharArray = m_pVT->GetCharArray(); 3401ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3402ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return IsTextOverflow() || (nLimitChar>0 && nTotalWords >= nLimitChar) 3403ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov || (nCharArray>0 && nTotalWords >= nCharArray); 3404ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 3405ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3406ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CFX_Edit::IsTextOverflow() const 3407ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 3408ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!m_bEnableScroll && !m_bEnableOverflow) 3409ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3410ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect rcPlate = m_pVT->GetPlateRect(); 3411ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect rcContent = m_pVT->GetContentRect(); 3412ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3413ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pVT->IsMultiLine() && GetTotalLines() > 1) 3414ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3415ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (FX_EDIT_IsFloatBigger(rcContent.Height(),rcPlate.Height())) return TRUE; 3416ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3417ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3418ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (FX_EDIT_IsFloatBigger(rcContent.Width(),rcPlate.Width())) return TRUE; 3419ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3420ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3421ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FALSE; 3422ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 3423ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3424ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCPVT_WordPlace CFX_Edit::GetLineBeginPlace(const CPVT_WordPlace & place) const 3425ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 3426ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_pVT->GetLineBeginPlace(place); 3427ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 3428ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3429ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCPVT_WordPlace CFX_Edit::GetLineEndPlace(const CPVT_WordPlace & place) const 3430ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 3431ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_pVT->GetLineEndPlace(place); 3432ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 3433ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3434ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCPVT_WordPlace CFX_Edit::GetSectionBeginPlace(const CPVT_WordPlace & place) const 3435ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 3436ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_pVT->GetSectionBeginPlace(place); 3437ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 3438ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3439ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCPVT_WordPlace CFX_Edit::GetSectionEndPlace(const CPVT_WordPlace & place) const 3440ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 3441ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_pVT->GetSectionEndPlace(place); 3442ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 3443ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3444ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CFX_Edit::CanUndo() const 3445ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 3446ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_bEnableUndo) 3447ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3448ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_Undo.CanUndo(); 3449ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3450ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3451ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FALSE; 3452ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 3453ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3454ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CFX_Edit::CanRedo() const 3455ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 3456ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_bEnableUndo) 3457ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3458ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_Undo.CanRedo(); 3459ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3460ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3461ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FALSE; 3462ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 3463ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3464ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CFX_Edit::IsModified() const 3465ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 3466ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_bEnableUndo) 3467ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3468ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_Undo.IsModified(); 3469ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3470ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3471ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FALSE; 3472ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 3473ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3474ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::EnableRefresh(FX_BOOL bRefresh) 3475ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 3476ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_bEnableRefresh = bRefresh; 3477ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 3478ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3479ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::EnableUndo(FX_BOOL bUndo) 3480ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 3481ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov this->m_bEnableUndo = bUndo; 3482ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 3483ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3484ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::EnableNotify(FX_BOOL bNotify) 3485ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 3486ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov this->m_bNotify = bNotify; 3487ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 3488ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3489ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::EnableOprNotify(FX_BOOL bNotify) 3490ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 3491ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov this->m_bOprNotify = bNotify; 3492ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 3493ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3494ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_FLOAT CFX_Edit::GetLineTop(const CPVT_WordPlace& place) const 3495ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 3496ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (IPDF_VariableText_Iterator* pIterator = m_pVT->GetIterator()) 3497ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3498ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordPlace wpOld = pIterator->GetAt(); 3499ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3500ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pIterator->SetAt(place); 3501ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_Line line; 3502ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pIterator->GetLine(line); 3503ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3504ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pIterator->SetAt(wpOld); 3505ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3506ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return line.ptLine.y + line.fLineAscent; 3507ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3508ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3509ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return 0.0f; 3510ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 3511ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3512ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_FLOAT CFX_Edit::GetLineBottom(const CPVT_WordPlace& place) const 3513ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 3514ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (IPDF_VariableText_Iterator* pIterator = m_pVT->GetIterator()) 3515ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3516ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordPlace wpOld = pIterator->GetAt(); 3517ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3518ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pIterator->SetAt(place); 3519ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_Line line; 3520ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pIterator->GetLine(line); 3521ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3522ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pIterator->SetAt(wpOld); 3523ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3524ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return line.ptLine.y + line.fLineDescent; 3525ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3526ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3527ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return 0.0f; 3528ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 3529ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3530ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCPVT_WordPlace CFX_Edit::DoInsertText(const CPVT_WordPlace& place, FX_LPCWSTR text, FX_INT32 charset, 3531ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const CPVT_SecProps * pSecProps, const CPVT_WordProps * pWordProps) 3532ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 3533ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordPlace wp = place; 3534ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3535ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pVT->IsValid()) 3536ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3537ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_WideString sText = text; 3538ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3539ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov for (FX_INT32 i = 0, sz = sText.GetLength(); i < sz; i++) 3540ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3541ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_WORD word = sText[i]; 3542ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov switch (word) 3543ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3544ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case 0x0D: 3545ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov wp = m_pVT->InsertSection(wp,pSecProps,pWordProps); 3546ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (sText[i+1] == 0x0A) 3547ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov i++; 3548ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 3549ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case 0x0A: 3550ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov wp = m_pVT->InsertSection(wp,pSecProps,pWordProps); 3551ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (sText[i+1] == 0x0D) 3552ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov i++; 3553ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 3554ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case 0x09: 3555ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov word = 0x20; 3556ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov default: 3557ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov wp = m_pVT->InsertWord(wp,word,GetCharSetFromUnicode(word, charset),pWordProps); 3558ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 3559ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3560ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3561ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3562ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3563ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return wp; 3564ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 3565ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3566ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_INT32 CFX_Edit::GetCharSetFromUnicode(FX_WORD word, FX_INT32 nOldCharset) 3567ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 3568ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (IFX_Edit_FontMap* pFontMap = this->GetFontMap()) 3569ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return pFontMap->CharSetFromUnicode(word, nOldCharset); 3570ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 3571ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return nOldCharset; 3572ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 3573ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3574ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::BeginGroupUndo(const CFX_WideString& sTitle) 3575ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 3576ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_pGroupUndoItem == NULL); 3577ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3578ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pGroupUndoItem = new CFX_Edit_GroupUndoItem(sTitle); 3579ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 3580ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3581ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::EndGroupUndo() 3582ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 3583ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_pGroupUndoItem != NULL); 3584ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3585ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pGroupUndoItem->UpdateItems(); 3586ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_Undo.AddItem(m_pGroupUndoItem); 3587ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_bOprNotify && m_pOprNotify) 3588ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pOprNotify->OnAddUndo(m_pGroupUndoItem); 3589ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pGroupUndoItem = NULL; 3590ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 3591ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3592ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::AddEditUndoItem(CFX_Edit_UndoItem* pEditUndoItem) 3593ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 3594ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pGroupUndoItem) 3595ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pGroupUndoItem->AddUndoItem(pEditUndoItem); 3596ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 3597ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3598ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_Undo.AddItem(pEditUndoItem); 3599ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_bOprNotify && m_pOprNotify) 3600ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pOprNotify->OnAddUndo(pEditUndoItem); 3601ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3602ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 3603ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3604ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_Edit::AddUndoItem(IFX_Edit_UndoItem* pUndoItem) 3605ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 3606ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_Undo.AddItem(pUndoItem); 3607ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_bOprNotify && m_pOprNotify) 3608ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pOprNotify->OnAddUndo(pUndoItem); 3609ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 3610ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3611