1ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Copyright 2014 PDFium Authors. All rights reserved. 2ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Use of this source code is governed by a BSD-style license that can be 3ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// found in the LICENSE file. 4ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 5ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 7ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../../include/pdfwindow/PDFWindow.h" 8ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../../include/pdfwindow/PWL_Wnd.h" 9ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../../include/pdfwindow/PWL_EditCtrl.h" 10ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../../include/pdfwindow/PWL_Edit.h" 11ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../../include/pdfwindow/PWL_ScrollBar.h" 12ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../../include/pdfwindow/PWL_Utils.h" 13ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../../include/pdfwindow/PWL_Caret.h" 14ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../../include/pdfwindow/PWL_FontMap.h" 15ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 16ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* ---------------------------- CPWL_Edit ------------------------------ */ 17ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 18ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCPWL_Edit::CPWL_Edit() : m_pFillerNotify(NULL), 19ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pSpellCheck(NULL), 20ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_bFocus(FALSE) 21ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 22ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pFormFiller = NULL; 23ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 24ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 25ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCPWL_Edit::~CPWL_Edit() 26ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 27ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_bFocus == FALSE); 28ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 29ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 30ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCFX_ByteString CPWL_Edit::GetClassName() const 31ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 32ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return PWL_CLASSNAME_EDIT; 33ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 34ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 35ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPWL_Edit::OnDestroy() 36ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 37ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 38ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 39ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPWL_Edit::SetText(FX_LPCWSTR csText) 40ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 41ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_WideString swText = csText; 42ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 43ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (HasFlag(PES_RICH)) 44ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 45ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteString sValue = CFX_ByteString::FromUnicode(swText); 46ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 47ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (CXML_Element * pXML = CXML_Element::Parse((FX_LPCSTR)sValue,sValue.GetLength())) 48ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 49ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 nCount = pXML->CountChildren(); 50ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL bFirst = TRUE; 51ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 52ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov swText.Empty(); 53ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 54ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov for (FX_INT32 i=0; i<nCount; i++) 55ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 56ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (CXML_Element * pSubElement = pXML->GetElement(i)) 57ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 58ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteString tag=pSubElement->GetTagName(); 59ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (tag.EqualNoCase("p")) 60ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 61ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int nChild = pSubElement->CountChildren(); 62ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_WideString swSection; 63ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov for(FX_INT32 j=0; j<nChild; j++) 64ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 65ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov swSection += pSubElement->GetContent(j); 66ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 67ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 68ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bFirst)bFirst = FALSE; 69ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 70ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov swText += FWL_VKEY_Return; 71ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov swText += swSection; 72ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 73ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 74ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 75ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 76ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov delete pXML; 77ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 78ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 79ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 80ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SetText(swText); 81ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 82ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 83ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPWL_Edit::RePosChildWnd() 84ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 85ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (CPWL_ScrollBar * pVSB = this->GetVScrollBar()) 86ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 87ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov //if (pVSB->IsVisible()) 88ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 89ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect rcWindow = m_rcOldWindow; 90ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect rcVScroll = CPDF_Rect(rcWindow.right, 91ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov rcWindow.bottom, 92ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov rcWindow.right + PWL_SCROLLBAR_WIDTH, 93ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov rcWindow.top); 94ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pVSB->Move(rcVScroll, TRUE, FALSE); 95ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 96ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 97ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 98ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pEditCaret && !HasFlag(PES_TEXTOVERFLOW)) 99ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEditCaret->SetClipRect(CPWL_Utils::InflateRect(GetClientRect(),1.0f)); //+1 for caret beside border 100ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 101ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPWL_EditCtrl::RePosChildWnd(); 102ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 103ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 104ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCPDF_Rect CPWL_Edit::GetClientRect() const 105ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 106ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect rcClient = CPWL_Utils::DeflateRect(GetWindowRect(),(FX_FLOAT)(GetBorderWidth()+GetInnerBorderWidth())); 107ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 108ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (CPWL_ScrollBar * pVSB = this->GetVScrollBar()) 109ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 110ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pVSB->IsVisible()) 111ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 112ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov rcClient.right -= PWL_SCROLLBAR_WIDTH; 113ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 114ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 115ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 116ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return rcClient; 117ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 118ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 119ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPWL_Edit::SetAlignFormatH(PWL_EDIT_ALIGNFORMAT_H nFormat, FX_BOOL bPaint/* = TRUE*/) 120ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 121ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SetAlignmentH((FX_INT32)nFormat, bPaint); 122ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 123ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 124ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPWL_Edit::SetAlignFormatV(PWL_EDIT_ALIGNFORMAT_V nFormat, FX_BOOL bPaint/* = TRUE*/) 125ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 126ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SetAlignmentV((FX_INT32)nFormat, bPaint); 127ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 128ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 129ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CPWL_Edit::CanSelectAll() const 130ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 131ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return GetSelectWordRange() != m_pEdit->GetWholeWordRange(); 132ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 133ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 134ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CPWL_Edit::CanClear() const 135ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 136ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return !IsReadOnly() && m_pEdit->IsSelected(); 137ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 138ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 139ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CPWL_Edit::CanCopy() const 140ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 141ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return !HasFlag(PES_PASSWORD) && !HasFlag(PES_NOREAD) && m_pEdit->IsSelected(); 142ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 143ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 144ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CPWL_Edit::CanCut() const 145ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 146ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return CanCopy() && !IsReadOnly(); 147ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 148ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 149ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CPWL_Edit::CanPaste() const 150ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 151ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (IsReadOnly()) return FALSE; 152ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 153ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_WideString swClipboard; 154ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (IFX_SystemHandler* pSH = GetSystemHandler()) 155ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov swClipboard = pSH->GetClipboardText(GetAttachedHWnd()); 156ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 157ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return !swClipboard.IsEmpty(); 158ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 159ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 160ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPWL_Edit::CopyText() 161ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 162ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!CanCopy()) return; 163ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 164ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_WideString str = m_pEdit->GetSelText(); 165ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 166ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (IFX_SystemHandler* pSH = GetSystemHandler()) 167ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pSH->SetClipboardText(GetAttachedHWnd(), str); 168ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 169ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 170ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPWL_Edit::PasteText() 171ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 172ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!CanPaste()) return; 173ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 174ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_WideString swClipboard; 175ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (IFX_SystemHandler* pSH = GetSystemHandler()) 176ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov swClipboard = pSH->GetClipboardText(GetAttachedHWnd()); 177ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 178ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pFillerNotify) 179ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 180ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL bRC = TRUE; 181ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL bExit = FALSE; 182ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_WideString strChangeEx; 183ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int nSelStart = 0; 184ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int nSelEnd = 0; 185ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov GetSel(nSelStart, nSelEnd); 186ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pFillerNotify->OnBeforeKeyStroke(TRUE, GetAttachedData(), 0 , swClipboard, strChangeEx, nSelStart, nSelEnd, TRUE, bRC, bExit, 0); 187ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!bRC) return; 188ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bExit) return; 189ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 190ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 191ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (swClipboard.GetLength() > 0) 192ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 193ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Clear(); 194ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov InsertText(swClipboard); 195ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 196ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 197ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pFillerNotify) 198ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 199ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL bExit = FALSE; 200ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pFillerNotify->OnAfterKeyStroke(TRUE, GetAttachedData(), bExit,0); 201ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bExit) return; 202ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 203ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 204ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 205ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPWL_Edit::CutText() 206ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 207ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!CanCut()) return; 208ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 209ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_WideString str = m_pEdit->GetSelText(); 210ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 211ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (IFX_SystemHandler* pSH = GetSystemHandler()) 212ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pSH->SetClipboardText(GetAttachedHWnd(), str); 213ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 214ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->Clear(); 215ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 216ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 217ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPWL_Edit::OnCreated() 218ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 219ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPWL_EditCtrl::OnCreated(); 220ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 221ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (CPWL_ScrollBar * pScroll = GetVScrollBar()) 222ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 223ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pScroll->RemoveFlag(PWS_AUTOTRANSPARENT); 224ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pScroll->SetTransparency(255); 225ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 226ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 227ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetParamByFlag(); 228ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 229ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_rcOldWindow = GetWindowRect(); 230ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 231ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SetOprNotify(this); 232ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->EnableOprNotify(TRUE); 233ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 234ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 235ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPWL_Edit::SetParamByFlag() 236ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 237ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (HasFlag(PES_RIGHT)) 238ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 239ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SetAlignmentH(2, FALSE); 240ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 241ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else if (HasFlag(PES_MIDDLE)) 242ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 243ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SetAlignmentH(1, FALSE); 244ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 245ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 246ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 247ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SetAlignmentH(0, FALSE); 248ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 249ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 250ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (HasFlag(PES_BOTTOM)) 251ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 252ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SetAlignmentV(2, FALSE); 253ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 254ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else if (HasFlag(PES_CENTER)) 255ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 256ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SetAlignmentV(1, FALSE); 257ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 258ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 259ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 260ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SetAlignmentV(0, FALSE); 261ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 262ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 263ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (HasFlag(PES_PASSWORD)) 264ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 265ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SetPasswordChar('*', FALSE); 266ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 267ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 268ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SetMultiLine(HasFlag(PES_MULTILINE), FALSE); 269ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SetAutoReturn(HasFlag(PES_AUTORETURN), FALSE); 270ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SetAutoFontSize(HasFlag(PWS_AUTOFONTSIZE), FALSE); 271ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SetAutoScroll(HasFlag(PES_AUTOSCROLL), FALSE); 272ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->EnableUndo(HasFlag(PES_UNDO)); 273ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 274ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (HasFlag(PES_TEXTOVERFLOW)) 275ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 276ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetClipRect(CPDF_Rect(0.0f,0.0f,0.0f,0.0f)); 277ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SetTextOverflow(TRUE, FALSE); 278ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 279ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 280ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 281ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pEditCaret) 282ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 283ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEditCaret->SetClipRect(CPWL_Utils::InflateRect(GetClientRect(),1.0f)); //+1 for caret beside border 284ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 285ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 286ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 287ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (HasFlag(PES_SPELLCHECK)) 288ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 289ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pSpellCheck = GetCreationParam().pSpellCheck; 290ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 291ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 292ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 293ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPWL_Edit::GetThisAppearanceStream(CFX_ByteTextBuf & sAppStream) 294ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 295ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPWL_Wnd::GetThisAppearanceStream(sAppStream); 296ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 297ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect rcClient = GetClientRect(); 298ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteTextBuf sLine; 299ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 300ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 nCharArray = m_pEdit->GetCharArray(); 301ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 302ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (nCharArray > 0) 303ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 304ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov switch (GetBorderStyle()) 305ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 306ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case PBS_SOLID: 307ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 308ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov sLine << "q\n" << GetBorderWidth() << " w\n" 309ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov << CPWL_Utils::GetColorAppStream(GetBorderColor(),FALSE) << " 2 J 0 j\n"; 310ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 311ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov for (FX_INT32 i=1;i<nCharArray;i++) 312ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 313ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov sLine << rcClient.left + ((rcClient.right - rcClient.left)/nCharArray)*i << " " 314ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov << rcClient.bottom << " m\n" 315ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov << rcClient.left + ((rcClient.right - rcClient.left)/nCharArray)*i << " " 316ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov << rcClient.top << " l S\n"; 317ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 318ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 319ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov sLine << "Q\n"; 320ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 321ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 322ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case PBS_DASH: 323ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 324ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov sLine << "q\n" << GetBorderWidth() << " w\n" 325ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov << CPWL_Utils::GetColorAppStream(GetBorderColor(),FALSE) << " 2 J 0 j\n" 326ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov << "[" << GetBorderDash().nDash << " " 327ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov << GetBorderDash().nGap << "] " 328ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov << GetBorderDash().nPhase << " d\n"; 329ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 330ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov for (FX_INT32 i=1;i<nCharArray;i++) 331ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 332ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov sLine << rcClient.left + ((rcClient.right - rcClient.left)/nCharArray)*i << " " 333ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov << rcClient.bottom << " m\n" 334ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov << rcClient.left + ((rcClient.right - rcClient.left)/nCharArray)*i << " " 335ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov << rcClient.top << " l S\n"; 336ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 337ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 338ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov sLine << "Q\n"; 339ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 340ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 341ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 342ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 343ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 344ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov sAppStream << sLine; 345ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 346ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteTextBuf sText; 347ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 348ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Point ptOffset = CPDF_Point(0.0f,0.0f); 349ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 350ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordRange wrWhole = m_pEdit->GetWholeWordRange(); 351ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordRange wrSelect = GetSelectWordRange(); 352ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordRange wrVisible = (HasFlag(PES_TEXTOVERFLOW) ? wrWhole : m_pEdit->GetVisibleWordRange()); 353ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordRange wrSelBefore(wrWhole.BeginPos,wrSelect.BeginPos); 354ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordRange wrSelAfter(wrSelect.EndPos,wrWhole.EndPos); 355ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 356ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordRange wrTemp = CPWL_Utils::OverlapWordRange(GetSelectWordRange(),wrVisible); 357ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteString sEditSel = CPWL_Utils::GetEditSelAppStream(m_pEdit, ptOffset, 358ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov &wrTemp); 359ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 360ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (sEditSel.GetLength() > 0) 361ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov sText << CPWL_Utils::GetColorAppStream(PWL_DEFAULT_SELBACKCOLOR) << sEditSel ; 362ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 363ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov wrTemp = CPWL_Utils::OverlapWordRange(wrVisible,wrSelBefore); 364ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteString sEditBefore = CPWL_Utils::GetEditAppStream(m_pEdit, ptOffset, 365ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov &wrTemp, !HasFlag(PES_CHARARRAY), m_pEdit->GetPasswordChar()); 366ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 367ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (sEditBefore.GetLength() > 0) 368ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov sText << "BT\n" << CPWL_Utils::GetColorAppStream(GetTextColor()) << sEditBefore << "ET\n"; 369ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 370ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov wrTemp = CPWL_Utils::OverlapWordRange(wrVisible,wrSelect); 371ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteString sEditMid = CPWL_Utils::GetEditAppStream(m_pEdit, ptOffset, 372ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov &wrTemp, !HasFlag(PES_CHARARRAY), m_pEdit->GetPasswordChar()); 373ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 374ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (sEditMid.GetLength() > 0) 375ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov sText << "BT\n" << CPWL_Utils::GetColorAppStream(CPWL_Color(COLORTYPE_GRAY,1)) << sEditMid << "ET\n"; 376ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 377ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov wrTemp = CPWL_Utils::OverlapWordRange(wrVisible,wrSelAfter); 378ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteString sEditAfter = CPWL_Utils::GetEditAppStream(m_pEdit, ptOffset, 379ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov &wrTemp, !HasFlag(PES_CHARARRAY), m_pEdit->GetPasswordChar()); 380ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 381ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (sEditAfter.GetLength() > 0) 382ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov sText << "BT\n" << CPWL_Utils::GetColorAppStream(GetTextColor()) << sEditAfter<< "ET\n"; 383ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 384ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (HasFlag(PES_SPELLCHECK)) 385ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 386ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteString sSpellCheck = CPWL_Utils::GetSpellCheckAppStream(m_pEdit, m_pSpellCheck, ptOffset, &wrVisible); 387ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (sSpellCheck.GetLength() > 0) 388ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov sText << CPWL_Utils::GetColorAppStream(CPWL_Color(COLORTYPE_RGB,1,0,0),FALSE) << sSpellCheck; 389ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 390ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 391ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (sText.GetLength() > 0) 392ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 393ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect rcClient = this->GetClientRect(); 394ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov sAppStream << "q\n/Tx BMC\n"; 395ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 396ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!HasFlag(PES_TEXTOVERFLOW)) 397ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov sAppStream << rcClient.left << " " << rcClient.bottom << " " 398ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov << rcClient.right - rcClient.left << " " << rcClient.top - rcClient.bottom << " re W n\n"; 399ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 400ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov sAppStream << sText; 401ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 402ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov sAppStream << "EMC\nQ\n"; 403ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 404ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 405ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 406ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPWL_Edit::DrawThisAppearance(CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device) 407ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 408ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPWL_Wnd::DrawThisAppearance(pDevice,pUser2Device); 409ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 410ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect rcClient = GetClientRect(); 411ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteTextBuf sLine; 412ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 413ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 nCharArray = m_pEdit->GetCharArray(); 414ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 415ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (nCharArray > 0) 416ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 417ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov switch (GetBorderStyle()) 418ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 419ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case PBS_SOLID: 420ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 421ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_GraphStateData gsd; 422ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov gsd.m_LineWidth = (FX_FLOAT)GetBorderWidth(); 423ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 424ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_PathData path; 425ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov path.SetPointCount((nCharArray-1)*2); 426ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 427ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov for (FX_INT32 i=0; i<nCharArray-1; i++) 428ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 429ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov path.SetPoint(i*2, rcClient.left + ((rcClient.right - rcClient.left)/nCharArray)*(i+1), 430ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov rcClient.bottom, FXPT_MOVETO); 431ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov path.SetPoint(i*2+1, rcClient.left + ((rcClient.right - rcClient.left)/nCharArray)*(i+1), 432ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov rcClient.top, FXPT_LINETO); 433ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 434ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (path.GetPointCount() > 0) 435ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pDevice->DrawPath(&path, pUser2Device, &gsd,0, 436ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPWL_Utils::PWLColorToFXColor(GetBorderColor(),255), FXFILL_ALTERNATE); 437ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 438ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 439ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case PBS_DASH: 440ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 441ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_GraphStateData gsd; 442ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov gsd.m_LineWidth = (FX_FLOAT)GetBorderWidth(); 443ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 444ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov gsd.SetDashCount(2); 445ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov gsd.m_DashArray[0] = (FX_FLOAT)GetBorderDash().nDash; 446ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov gsd.m_DashArray[1] = (FX_FLOAT)GetBorderDash().nGap; 447ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov gsd.m_DashPhase = (FX_FLOAT)GetBorderDash().nPhase; 448ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 449ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_PathData path; 450ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov path.SetPointCount((nCharArray-1)*2); 451ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 452ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov for (FX_INT32 i=0; i<nCharArray-1; i++) 453ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 454ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov path.SetPoint(i*2, rcClient.left + ((rcClient.right - rcClient.left)/nCharArray)*(i+1), 455ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov rcClient.bottom, FXPT_MOVETO); 456ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov path.SetPoint(i*2+1, rcClient.left + ((rcClient.right - rcClient.left)/nCharArray)*(i+1), 457ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov rcClient.top, FXPT_LINETO); 458ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 459ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (path.GetPointCount() > 0) 460ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pDevice->DrawPath(&path, pUser2Device, &gsd,0, 461ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPWL_Utils::PWLColorToFXColor(GetBorderColor(),255), FXFILL_ALTERNATE); 462ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 463ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 464ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 465ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 466ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 467ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect rcClip; 468ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordRange wrRange = m_pEdit->GetVisibleWordRange(); 469ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordRange* pRange = NULL; 470ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 471ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!HasFlag(PES_TEXTOVERFLOW)) 472ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 473ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov rcClip = GetClientRect(); 474ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pRange = &wrRange; 475ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 476ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovIFX_SystemHandler* pSysHandler = GetSystemHandler(); 477ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IFX_Edit::DrawEdit(pDevice,pUser2Device,m_pEdit, 478ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPWL_Utils::PWLColorToFXColor(GetTextColor(),this->GetTransparency()), 479ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPWL_Utils::PWLColorToFXColor(GetTextStrokeColor(),this->GetTransparency()), 480ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov rcClip,CPDF_Point(0.0f,0.0f),pRange, pSysHandler, m_pFormFiller); 481ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 482ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (HasFlag(PES_SPELLCHECK)) 483ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 484ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPWL_Utils::DrawEditSpellCheck(pDevice,pUser2Device,m_pEdit,rcClip, 485ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Point(0.0f,0.0f),pRange, this->GetCreationParam().pSpellCheck); 486ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 487ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 488ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 489ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CPWL_Edit::OnLButtonDown(const CPDF_Point & point, FX_DWORD nFlag) 490ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 491ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPWL_Wnd::OnLButtonDown(point,nFlag); 492ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 493ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (HasFlag(PES_TEXTOVERFLOW) || ClientHitTest(point)) 494ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 495ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_bMouseDown) 496ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov this->InvalidateRect(); 497ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 498ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_bMouseDown = TRUE; 499ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCapture(); 500ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 501ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->OnMouseDown(point,IsSHIFTpressed(nFlag),IsCTRLpressed(nFlag)); 502ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 503ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 504ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return TRUE; 505ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 506ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 507ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CPWL_Edit::OnLButtonDblClk(const CPDF_Point & point, FX_DWORD nFlag) 508ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 509ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPWL_Wnd::OnLButtonDblClk(point, nFlag); 510ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 511ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (HasFlag(PES_TEXTOVERFLOW) || ClientHitTest(point)) 512ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 513ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SelectAll(); 514ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 515ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 516ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return TRUE; 517ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 518ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 519ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define WM_PWLEDIT_UNDO 0x01 520ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define WM_PWLEDIT_REDO 0x02 521ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define WM_PWLEDIT_CUT 0x03 522ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define WM_PWLEDIT_COPY 0x04 523ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define WM_PWLEDIT_PASTE 0x05 524ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define WM_PWLEDIT_DELETE 0x06 525ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define WM_PWLEDIT_SELECTALL 0x07 526ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define WM_PWLEDIT_SUGGEST 0x08 527ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 528ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CPWL_Edit::OnRButtonUp(const CPDF_Point & point, FX_DWORD nFlag) 529ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 530ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_bMouseDown) return FALSE; 531ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 532ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPWL_Wnd::OnRButtonUp(point, nFlag); 533ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 534ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!HasFlag(PES_TEXTOVERFLOW) && !ClientHitTest(point)) return TRUE; 535ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 536ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IFX_SystemHandler* pSH = GetSystemHandler(); 537ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!pSH) return FALSE; 538ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 539ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov this->SetFocus(); 540ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 541ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordRange wrLatin = GetLatinWordsRange(point); 542ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_WideString swLatin = m_pEdit->GetRangeText(wrLatin); 543ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 544ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_HMENU hPopup = pSH->CreatePopupMenu(); 545ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!hPopup) return FALSE; 546ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 547ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteStringArray sSuggestWords; 548ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Point ptPopup = point; 549ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 550ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!IsReadOnly()) 551ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 552ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (HasFlag(PES_SPELLCHECK) && !swLatin.IsEmpty()) 553ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 554ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pSpellCheck) 555ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 556ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteString sLatin = CFX_ByteString::FromUnicode(swLatin); 557ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 558ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!m_pSpellCheck->CheckWord(sLatin)) 559ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 560ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pSpellCheck->SuggestWords(sLatin,sSuggestWords); 561ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 562ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 nSuggest = sSuggestWords.GetSize(); 563ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 564ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov for (FX_INT32 nWord=0; nWord<nSuggest; nWord++) 565ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 566ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pSH->AppendMenuItem(hPopup, WM_PWLEDIT_SUGGEST+nWord, sSuggestWords[nWord].UTF8Decode()); 567ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 568ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 569ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (nSuggest > 0) 570ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pSH->AppendMenuItem(hPopup, 0, L""); 571ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 572ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ptPopup = GetWordRightBottomPoint(wrLatin.EndPos); 573ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 574ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 575ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 576ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 577ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 578ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IPWL_Provider* pProvider = this->GetProvider(); 579ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 580ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (HasFlag(PES_UNDO)) 581ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 582ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pSH->AppendMenuItem(hPopup, WM_PWLEDIT_UNDO, 583ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pProvider ? pProvider->LoadPopupMenuString(0) : L"&Undo"); 584ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pSH->AppendMenuItem(hPopup, WM_PWLEDIT_REDO, 585ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pProvider ? pProvider->LoadPopupMenuString(1) : L"&Redo"); 586ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pSH->AppendMenuItem(hPopup, 0, L""); 587ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 588ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!m_pEdit->CanUndo()) 589ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pSH->EnableMenuItem(hPopup, WM_PWLEDIT_UNDO, FALSE); 590ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!m_pEdit->CanRedo()) 591ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pSH->EnableMenuItem(hPopup, WM_PWLEDIT_REDO, FALSE); 592ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 593ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 594ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pSH->AppendMenuItem(hPopup, WM_PWLEDIT_CUT, 595ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pProvider ? pProvider->LoadPopupMenuString(2) : L"Cu&t"); 596ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pSH->AppendMenuItem(hPopup, WM_PWLEDIT_COPY, 597ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pProvider ? pProvider->LoadPopupMenuString(3) : L"&Copy"); 598ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pSH->AppendMenuItem(hPopup, WM_PWLEDIT_PASTE, 599ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pProvider ? pProvider->LoadPopupMenuString(4) : L"&Paste"); 600ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pSH->AppendMenuItem(hPopup, WM_PWLEDIT_DELETE, 601ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pProvider ? pProvider->LoadPopupMenuString(5) : L"&Delete"); 602ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 603ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_WideString swText = pSH->GetClipboardText(this->GetAttachedHWnd()); 604ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (swText.IsEmpty()) 605ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pSH->EnableMenuItem(hPopup, WM_PWLEDIT_PASTE, FALSE); 606ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 607ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!m_pEdit->IsSelected()) 608ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 609ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pSH->EnableMenuItem(hPopup, WM_PWLEDIT_CUT, FALSE); 610ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pSH->EnableMenuItem(hPopup, WM_PWLEDIT_COPY, FALSE); 611ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pSH->EnableMenuItem(hPopup, WM_PWLEDIT_DELETE, FALSE); 612ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 613ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 614ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (IsReadOnly()) 615ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 616ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pSH->EnableMenuItem(hPopup, WM_PWLEDIT_CUT, FALSE); 617ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pSH->EnableMenuItem(hPopup, WM_PWLEDIT_DELETE, FALSE); 618ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pSH->EnableMenuItem(hPopup, WM_PWLEDIT_PASTE, FALSE); 619ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 620ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 621ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (HasFlag(PES_PASSWORD)) 622ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 623ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pSH->EnableMenuItem(hPopup, WM_PWLEDIT_CUT, FALSE); 624ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pSH->EnableMenuItem(hPopup, WM_PWLEDIT_COPY, FALSE); 625ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 626ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 627ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (HasFlag(PES_NOREAD)) 628ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 629ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pSH->EnableMenuItem(hPopup, WM_PWLEDIT_CUT, FALSE); 630ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pSH->EnableMenuItem(hPopup, WM_PWLEDIT_COPY, FALSE); 631ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 632ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 633ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pSH->AppendMenuItem(hPopup, 0, L""); 634ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pSH->AppendMenuItem(hPopup, WM_PWLEDIT_SELECTALL, 635ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pProvider ? pProvider->LoadPopupMenuString(6) : L"&Select All"); 636ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 637ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pEdit->GetTotalWords() == 0) 638ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 639ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pSH->EnableMenuItem(hPopup, WM_PWLEDIT_SELECTALL, FALSE); 640ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 641ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 642ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 x, y; 643ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov PWLtoWnd(ptPopup, x, y); 644ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pSH->ClientToScreen(GetAttachedHWnd(), x, y); 645ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pSH->SetCursor(FXCT_ARROW); 646ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 nCmd = pSH->TrackPopupMenu(hPopup, 647ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov x, 648ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov y, 649ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov GetAttachedHWnd()); 650ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 651ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 652ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov switch (nCmd) 653ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 654ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case WM_PWLEDIT_UNDO: 655ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Undo(); 656ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 657ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case WM_PWLEDIT_REDO: 658ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Redo(); 659ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 660ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case WM_PWLEDIT_CUT: 661ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov this->CutText(); 662ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 663ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case WM_PWLEDIT_COPY: 664ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov this->CopyText(); 665ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 666ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case WM_PWLEDIT_PASTE: 667ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov this->PasteText(); 668ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 669ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case WM_PWLEDIT_DELETE: 670ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov this->Clear(); 671ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 672ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case WM_PWLEDIT_SELECTALL: 673ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov this->SelectAll(); 674ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 675ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case WM_PWLEDIT_SUGGEST + 0: 676ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetSel(m_pEdit->WordPlaceToWordIndex(wrLatin.BeginPos),m_pEdit->WordPlaceToWordIndex(wrLatin.EndPos)); 677ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ReplaceSel(sSuggestWords[0].UTF8Decode()); 678ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 679ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case WM_PWLEDIT_SUGGEST + 1: 680ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetSel(m_pEdit->WordPlaceToWordIndex(wrLatin.BeginPos),m_pEdit->WordPlaceToWordIndex(wrLatin.EndPos)); 681ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ReplaceSel(sSuggestWords[1].UTF8Decode()); 682ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 683ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case WM_PWLEDIT_SUGGEST + 2: 684ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetSel(m_pEdit->WordPlaceToWordIndex(wrLatin.BeginPos),m_pEdit->WordPlaceToWordIndex(wrLatin.EndPos)); 685ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ReplaceSel(sSuggestWords[2].UTF8Decode()); 686ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 687ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case WM_PWLEDIT_SUGGEST + 3: 688ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetSel(m_pEdit->WordPlaceToWordIndex(wrLatin.BeginPos),m_pEdit->WordPlaceToWordIndex(wrLatin.EndPos)); 689ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ReplaceSel(sSuggestWords[3].UTF8Decode()); 690ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 691ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case WM_PWLEDIT_SUGGEST + 4: 692ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetSel(m_pEdit->WordPlaceToWordIndex(wrLatin.BeginPos),m_pEdit->WordPlaceToWordIndex(wrLatin.EndPos)); 693ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ReplaceSel(sSuggestWords[4].UTF8Decode()); 694ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 695ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov default: 696ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 697ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 698ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 699ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pSH->DestroyMenu(hPopup); 700ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 701ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return TRUE; 702ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 703ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 704ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPWL_Edit::OnSetFocus() 705ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 706ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetEditCaret(TRUE); 707ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 708ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!IsReadOnly()) 709ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 710ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (IPWL_FocusHandler* pFocusHandler = GetFocusHandler()) 711ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pFocusHandler->OnSetFocus(this); 712ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 713ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 714ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_bFocus = TRUE; 715ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 716ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 717ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPWL_Edit::OnKillFocus() 718ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 719ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ShowVScrollBar(FALSE); 720ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 721ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SelectNone(); 722ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCaret(FALSE, CPDF_Point(0.0f,0.0f), CPDF_Point(0.0f,0.0f)); 723ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 724ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCharSet(0); 725ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 726ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!IsReadOnly()) 727ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 728ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (IPWL_FocusHandler* pFocusHandler = GetFocusHandler()) 729ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pFocusHandler->OnKillFocus(this); 730ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 731ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 732ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_bFocus = FALSE; 733ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 734ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 735ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPWL_Edit::SetHorzScale(FX_INT32 nHorzScale, FX_BOOL bPaint/* = TRUE*/) 736ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 737ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SetHorzScale(nHorzScale, bPaint); 738ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 739ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 740ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPWL_Edit::SetCharSpace(FX_FLOAT fCharSpace, FX_BOOL bPaint/* = TRUE*/) 741ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 742ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SetCharSpace(fCharSpace, bPaint); 743ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 744ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 745ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPWL_Edit::SetLineLeading(FX_FLOAT fLineLeading, FX_BOOL bPaint/* = TRUE*/) 746ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 747ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SetLineLeading(fLineLeading, bPaint); 748ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 749ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 750ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCFX_ByteString CPWL_Edit::GetSelectAppearanceStream(const CPDF_Point & ptOffset) const 751ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 752ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordRange wr = GetSelectWordRange(); 753ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return CPWL_Utils::GetEditSelAppStream(m_pEdit,ptOffset,&wr); 754ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 755ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 756ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCPVT_WordRange CPWL_Edit::GetSelectWordRange() const 757ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 758ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pEdit->IsSelected()) 759ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 760ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 nStart = -1; 761ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 nEnd = -1; 762ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 763ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->GetSel(nStart, nEnd); 764ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 765ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordPlace wpStart = m_pEdit->WordIndexToWordPlace(nStart); 766ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordPlace wpEnd = m_pEdit->WordIndexToWordPlace(nEnd); 767ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 768ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return CPVT_WordRange(wpStart,wpEnd); 769ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 770ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 771ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return CPVT_WordRange(); 772ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 773ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 774ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCFX_ByteString CPWL_Edit::GetTextAppearanceStream(const CPDF_Point & ptOffset) const 775ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 776ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteTextBuf sRet; 777ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteString sEdit = CPWL_Utils::GetEditAppStream(m_pEdit,ptOffset); 778ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 779ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (sEdit.GetLength() > 0) 780ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 781ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov sRet << "BT\n" << CPWL_Utils::GetColorAppStream(GetTextColor()) << sEdit << "ET\n"; 782ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 783ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 784ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return sRet.GetByteString(); 785ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 786ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 787ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCFX_ByteString CPWL_Edit::GetCaretAppearanceStream(const CPDF_Point & ptOffset) const 788ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 789ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pEditCaret) 790ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_pEditCaret->GetCaretAppearanceStream(ptOffset); 791ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 792ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return CFX_ByteString(); 793ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 794ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 795ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCPDF_Point CPWL_Edit::GetWordRightBottomPoint(const CPVT_WordPlace& wpWord) 796ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 797ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Point pt(0.0f, 0.0f); 798ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 799ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (IFX_Edit_Iterator * pIterator = m_pEdit->GetIterator()) 800ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 801ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordPlace wpOld = pIterator->GetAt(); 802ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pIterator->SetAt(wpWord); 803ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_Word word; 804ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pIterator->GetWord(word)) 805ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 806ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pt = CPDF_Point(word.ptWord.x + word.fWidth, word.ptWord.y + word.fDescent); 807ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 808ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 809ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pIterator->SetAt(wpOld); 810ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 811ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 812ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return pt; 813ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 814ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 815ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CPWL_Edit::IsTextFull() const 816ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 817ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_pEdit->IsTextFull(); 818ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 819ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 820ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_FLOAT CPWL_Edit::GetCharArrayAutoFontSize(CPDF_Font* pFont, const CPDF_Rect& rcPlate, FX_INT32 nCharArray) 821ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 822ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pFont && !pFont->IsStandardFont()) 823ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 824ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_RECT rcBBox; 825ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pFont->GetFontBBox(rcBBox); 826ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 827ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect rcCell = rcPlate; 828ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT xdiv = rcCell.Width() / nCharArray * 1000.0f / rcBBox.Width(); 829ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT ydiv = - rcCell.Height() * 1000.0f / rcBBox.Height(); 830ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 831ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return xdiv < ydiv ? xdiv : ydiv; 832ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 833ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 834ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return 0.0f; 835ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 836ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 837ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPWL_Edit::SetCharArray(FX_INT32 nCharArray) 838ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 839ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (HasFlag(PES_CHARARRAY) && nCharArray > 0) 840ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 841ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SetCharArray(nCharArray); 842ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SetTextOverflow(TRUE); 843ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 844ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (HasFlag(PWS_AUTOFONTSIZE)) 845ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 846ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (IFX_Edit_FontMap* pFontMap = this->GetFontMap()) 847ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 848ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT fFontSize = GetCharArrayAutoFontSize(pFontMap->GetPDFFont(0), GetClientRect(), nCharArray); 849ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (fFontSize > 0.0f) 850ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 851ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SetAutoFontSize(FALSE); 852ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SetFontSize(fFontSize); 853ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 854ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 855ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 856ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 857ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 858ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 859ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPWL_Edit::SetLimitChar(FX_INT32 nLimitChar) 860ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 861ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->SetLimitChar(nLimitChar); 862ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 863ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 864ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPWL_Edit::ReplaceSel(FX_LPCWSTR csText) 865ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 866ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->Clear(); 867ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->InsertText(csText); 868ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 869ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 870ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCPDF_Rect CPWL_Edit::GetFocusRect() const 871ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 872ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return CPDF_Rect(); 873ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 874ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 875ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPWL_Edit::ShowVScrollBar(FX_BOOL bShow) 876ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 877ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (CPWL_ScrollBar * pScroll = GetVScrollBar()) 878ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 879ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bShow) 880ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 881ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!pScroll->IsVisible()) 882ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 883ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pScroll->SetVisible(TRUE); 884ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect rcWindow = GetWindowRect(); 885ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_rcOldWindow = rcWindow; 886ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov rcWindow.right += PWL_SCROLLBAR_WIDTH; 887ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Move(rcWindow, TRUE, TRUE); 888ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 889ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 890ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 891ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 892ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pScroll->IsVisible()) 893ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 894ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pScroll->SetVisible(FALSE); 895ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Move(m_rcOldWindow, TRUE, TRUE); 896ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 897ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 898ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 899ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 900ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 901ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CPWL_Edit::IsVScrollBarVisible() const 902ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 903ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (CPWL_ScrollBar * pScroll = GetVScrollBar()) 904ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 905ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return pScroll->IsVisible(); 906ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 907ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 908ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FALSE; 909ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 910ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 911ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPWL_Edit::EnableSpellCheck(FX_BOOL bEnabled) 912ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 913ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bEnabled) 914ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov AddFlag(PES_SPELLCHECK); 915ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 916ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov RemoveFlag(PES_SPELLCHECK); 917ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 918ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 919ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CPWL_Edit::OnKeyDown(FX_WORD nChar, FX_DWORD nFlag) 920ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 921ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_bMouseDown) return TRUE; 922ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 923ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (nChar == FWL_VKEY_Delete) 924ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 925ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pFillerNotify) 926ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 927ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL bRC = TRUE; 928ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL bExit = FALSE; 929ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_WideString strChange; 930ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_WideString strChangeEx; 931ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 932ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int nSelStart = 0; 933ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int nSelEnd = 0; 934ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov GetSel(nSelStart, nSelEnd); 935ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 936ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (nSelStart == nSelEnd) 937ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nSelEnd = nSelStart + 1; 938ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pFillerNotify->OnBeforeKeyStroke(TRUE, GetAttachedData(), FWL_VKEY_Delete, strChange, strChangeEx, nSelStart, nSelEnd, TRUE, bRC, bExit, nFlag); 939ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!bRC) return FALSE; 940ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bExit) return FALSE; 941ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 942ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 943ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 944ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL bRet = CPWL_EditCtrl::OnKeyDown(nChar, nFlag); 945ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 946ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (nChar == FWL_VKEY_Delete) 947ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 948ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pFillerNotify) 949ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 950ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL bExit = FALSE; 951ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pFillerNotify->OnAfterKeyStroke(TRUE, GetAttachedData(), bExit,nFlag); 952ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bExit) return FALSE; 953ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 954ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 955ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 956ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov //In case of implementation swallow the OnKeyDown event. 957ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(IsProceedtoOnChar(nChar, nFlag)) 958ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return TRUE; 959ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 960ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return bRet; 961ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 962ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 963ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/** 964ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*In case of implementation swallow the OnKeyDown event. 965ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*If the event is swallowed, implementation may do other unexpected things, which is not the control means to do. 966ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*/ 967ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CPWL_Edit::IsProceedtoOnChar(FX_WORD nKeyCode, FX_DWORD nFlag) 968ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 969ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 970ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL bCtrl = IsCTRLpressed(nFlag); 971ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL bAlt = IsALTpressed(nFlag); 972ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(bCtrl && !bAlt) 973ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 974ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov //hot keys for edit control. 975ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov switch(nKeyCode) 976ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 977ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case 'C': 978ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case 'V': 979ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case 'X': 980ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case 'A': 981ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case 'Z': 982ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return TRUE; 983ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov default: 984ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 985ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 986ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 987ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov //control characters. 988ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov switch(nKeyCode) 989ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 990ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case FWL_VKEY_Escape: 991ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case FWL_VKEY_Back: 992ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case FWL_VKEY_Return: 993ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case FWL_VKEY_Space: 994ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return TRUE; 995ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov default: 996ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 997ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 998ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FALSE; 999ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1000ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1001ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1002ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CPWL_Edit::OnChar(FX_WORD nChar, FX_DWORD nFlag) 1003ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1004ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_bMouseDown) return TRUE; 1005ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1006ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL bRC = TRUE; 1007ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL bExit = FALSE; 1008ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1009ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL bCtrl = IsCTRLpressed(nFlag); 1010ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!bCtrl) 1011ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1012ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pFillerNotify) 1013ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1014ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_WideString swChange; 1015ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 nKeyCode; 1016ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1017ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int nSelStart = 0; 1018ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int nSelEnd = 0; 1019ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov GetSel(nSelStart, nSelEnd); 1020ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1021ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov switch (nChar) 1022ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1023ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case FWL_VKEY_Back: 1024ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nKeyCode = nChar; 1025ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (nSelStart == nSelEnd) 1026ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nSelStart = nSelEnd - 1; 1027ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 1028ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case FWL_VKEY_Return: 1029ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nKeyCode = nChar; 1030ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 1031ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov default: 1032ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nKeyCode = 0; 1033ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov swChange += nChar; 1034ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 1035ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1036ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1037ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_WideString strChangeEx; 1038ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pFillerNotify->OnBeforeKeyStroke(TRUE, GetAttachedData(), nKeyCode, swChange, strChangeEx, nSelStart, nSelEnd, TRUE, bRC, bExit, nFlag); 1039ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1040ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1041ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1042ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!bRC) return TRUE; 1043ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bExit) return FALSE; 1044ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1045ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (IFX_Edit_FontMap * pFontMap = GetFontMap()) 1046ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1047ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 nOldCharSet = GetCharSet(); 1048ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 nNewCharSet = pFontMap->CharSetFromUnicode(nChar, DEFAULT_CHARSET); 1049ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(nOldCharSet != nNewCharSet) 1050ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1051ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetCharSet(nNewCharSet); 1052ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1053ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1054ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL bRet = CPWL_EditCtrl::OnChar(nChar,nFlag); 1055ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1056ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!bCtrl) 1057ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1058ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pFillerNotify) 1059ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1060ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pFillerNotify->OnAfterKeyStroke(TRUE, GetAttachedData(), bExit,nFlag); 1061ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bExit) return FALSE; 1062ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1063ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1064ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1065ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return bRet; 1066ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1067ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1068ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CPWL_Edit::OnMouseWheel(short zDelta, const CPDF_Point & point, FX_DWORD nFlag) 1069ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1070ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (HasFlag(PES_MULTILINE)) 1071ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1072ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Point ptScroll = GetScrollPos(); 1073ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1074ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (zDelta > 0) 1075ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1076ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ptScroll.y += this->GetFontSize(); 1077ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1078ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 1079ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1080ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ptScroll.y -= this->GetFontSize(); 1081ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1082ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov this->SetScrollPos(ptScroll); 1083ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1084ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return TRUE; 1085ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1086ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1087ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FALSE; 1088ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1089ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1090ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPWL_Edit::OnInsertReturn(const CPVT_WordPlace& place, const CPVT_WordPlace& oldplace) 1091ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1092ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (HasFlag(PES_SPELLCHECK)) 1093ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1094ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->RefreshWordRange(CombineWordRange(GetLatinWordsRange(oldplace),GetLatinWordsRange(place))); 1095ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1096ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1097ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pEditNotify) 1098ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1099ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEditNotify->OnInsertReturn(place, oldplace); 1100ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1101ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1102ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1103ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPWL_Edit::OnBackSpace(const CPVT_WordPlace& place, const CPVT_WordPlace& oldplace) 1104ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1105ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (HasFlag(PES_SPELLCHECK)) 1106ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1107ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->RefreshWordRange(CombineWordRange(GetLatinWordsRange(oldplace),GetLatinWordsRange(place))); 1108ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1109ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1110ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pEditNotify) 1111ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1112ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEditNotify->OnBackSpace(place, oldplace); 1113ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1114ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1115ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1116ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPWL_Edit::OnDelete(const CPVT_WordPlace& place, const CPVT_WordPlace& oldplace) 1117ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1118ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (HasFlag(PES_SPELLCHECK)) 1119ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1120ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->RefreshWordRange(CombineWordRange(GetLatinWordsRange(oldplace),GetLatinWordsRange(place))); 1121ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1122ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1123ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pEditNotify) 1124ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1125ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEditNotify->OnDelete(place, oldplace); 1126ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1127ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1128ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1129ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPWL_Edit::OnClear(const CPVT_WordPlace& place, const CPVT_WordPlace& oldplace) 1130ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1131ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (HasFlag(PES_SPELLCHECK)) 1132ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1133ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->RefreshWordRange(CombineWordRange(GetLatinWordsRange(oldplace),GetLatinWordsRange(place))); 1134ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1135ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1136ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pEditNotify) 1137ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1138ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEditNotify->OnClear(place, oldplace); 1139ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1140ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1141ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1142ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPWL_Edit::OnInsertWord(const CPVT_WordPlace& place, const CPVT_WordPlace& oldplace) 1143ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1144ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (HasFlag(PES_SPELLCHECK)) 1145ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1146ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->RefreshWordRange(CombineWordRange(GetLatinWordsRange(oldplace),GetLatinWordsRange(place))); 1147ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1148ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1149ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pEditNotify) 1150ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1151ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEditNotify->OnInsertWord(place, oldplace); 1152ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1153ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1154ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1155ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPWL_Edit::OnSetText(const CPVT_WordPlace& place, const CPVT_WordPlace& oldplace) 1156ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1157ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1158ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1159ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPWL_Edit::OnInsertText(const CPVT_WordPlace& place, const CPVT_WordPlace& oldplace) 1160ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1161ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (HasFlag(PES_SPELLCHECK)) 1162ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1163ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEdit->RefreshWordRange(CombineWordRange(GetLatinWordsRange(oldplace),GetLatinWordsRange(place))); 1164ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1165ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1166ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pEditNotify) 1167ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1168ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEditNotify->OnInsertText(place, oldplace); 1169ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1170ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1171ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1172ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPWL_Edit::OnAddUndo(IFX_Edit_UndoItem* pUndoItem) 1173ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1174ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pEditNotify) 1175ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1176ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pEditNotify->OnAddUndo(this); 1177ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1178ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1179ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1180ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCPVT_WordRange CPWL_Edit::CombineWordRange(const CPVT_WordRange& wr1, const CPVT_WordRange& wr2) 1181ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1182ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordRange wrRet; 1183ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1184ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (wr1.BeginPos.WordCmp(wr2.BeginPos) < 0) 1185ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1186ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov wrRet.BeginPos = wr1.BeginPos; 1187ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1188ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 1189ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1190ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov wrRet.BeginPos = wr2.BeginPos; 1191ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1192ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1193ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (wr1.EndPos.WordCmp(wr2.EndPos) < 0) 1194ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1195ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov wrRet.EndPos = wr2.EndPos; 1196ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1197ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 1198ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1199ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov wrRet.EndPos = wr1.EndPos; 1200ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1201ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1202ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return wrRet; 1203ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1204ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1205ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCPVT_WordRange CPWL_Edit::GetLatinWordsRange(const CPDF_Point& point) const 1206ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1207ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return GetSameWordsRange(m_pEdit->SearchWordPlace(point), TRUE, FALSE); 1208ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1209ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1210ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCPVT_WordRange CPWL_Edit::GetLatinWordsRange(const CPVT_WordPlace & place) const 1211ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1212ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return GetSameWordsRange(place, TRUE, FALSE); 1213ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1214ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1215ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCPVT_WordRange CPWL_Edit::GetArabicWordsRange(const CPVT_WordPlace & place) const 1216ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1217ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return GetSameWordsRange(place, FALSE, TRUE); 1218ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1219ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1220ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PWL_ISARABICWORD(word) ((word >= 0x0600 && word <= 0x06FF) || (word >= 0xFB50 && word <= 0xFEFC)) 1221ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1222ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCPVT_WordRange CPWL_Edit::GetSameWordsRange(const CPVT_WordPlace & place, FX_BOOL bLatin, FX_BOOL bArabic) const 1223ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1224ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordRange range; 1225ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1226ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (IFX_Edit_Iterator* pIterator = m_pEdit->GetIterator()) 1227ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1228ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_Word wordinfo; 1229ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_WordPlace wpStart(place),wpEnd(place); 1230ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pIterator->SetAt(place); 1231ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1232ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bLatin) 1233ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1234ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov while (pIterator->NextWord()) 1235ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1236ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pIterator->GetWord(wordinfo) && FX_EDIT_ISLATINWORD(wordinfo.Word)) 1237ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1238ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov wpEnd = pIterator->GetAt(); 1239ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov continue; 1240ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1241ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 1242ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 1243ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov }; 1244ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1245ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else if (bArabic) 1246ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1247ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov while (pIterator->NextWord()) 1248ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1249ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pIterator->GetWord(wordinfo) && PWL_ISARABICWORD(wordinfo.Word)) 1250ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1251ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov wpEnd = pIterator->GetAt(); 1252ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov continue; 1253ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1254ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 1255ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 1256ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov }; 1257ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1258ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1259ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pIterator->SetAt(place); 1260ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1261ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bLatin) 1262ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1263ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov do 1264ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1265ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pIterator->GetWord(wordinfo) && FX_EDIT_ISLATINWORD(wordinfo.Word)) 1266ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1267ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov continue; 1268ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1269ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 1270ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1271ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov wpStart = pIterator->GetAt(); 1272ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 1273ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1274ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1275ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov while (pIterator->PrevWord()); 1276ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1277ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else if (bArabic) 1278ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1279ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov do 1280ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1281ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pIterator->GetWord(wordinfo) && PWL_ISARABICWORD(wordinfo.Word)) 1282ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1283ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov continue; 1284ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1285ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 1286ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1287ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov wpStart = pIterator->GetAt(); 1288ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 1289ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1290ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1291ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov while (pIterator->PrevWord()); 1292ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1293ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1294ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov range.Set(wpStart,wpEnd); 1295ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1296ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1297ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return range; 1298ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1299ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1300ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPWL_Edit::AjustArabicWords(const CPVT_WordRange& wr) 1301ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1302ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1303ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1304ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPWL_Edit::GeneratePageObjects(CPDF_PageObjects* pPageObjects, 1305ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const CPDF_Point& ptOffset, CFX_ArrayTemplate<CPDF_TextObject*>& ObjArray) 1306ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1307ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IFX_Edit::GeneratePageObjects(pPageObjects, m_pEdit, ptOffset, NULL, CPWL_Utils::PWLColorToFXColor(GetTextColor(),GetTransparency()), ObjArray); 1308ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1309ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1310ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPWL_Edit::GeneratePageObjects(CPDF_PageObjects* pPageObjects, 1311ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const CPDF_Point& ptOffset) 1312ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1313ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ArrayTemplate<CPDF_TextObject*> ObjArray; 1314ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IFX_Edit::GeneratePageObjects(pPageObjects, m_pEdit, ptOffset, NULL, CPWL_Utils::PWLColorToFXColor(GetTextColor(),GetTransparency()), ObjArray); 1315ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1316ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1317