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