1// Copyright 2014 PDFium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6 7#include <memory> 8 9#include "xfa/src/foxitlib.h" 10 11CFWL_Edit* CFWL_Edit::Create() { 12 return new CFWL_Edit; 13} 14FWL_ERR CFWL_Edit::Initialize(const CFWL_WidgetProperties* pProperties) { 15 if (m_pIface) 16 return FWL_ERR_Indefinite; 17 if (pProperties) { 18 *m_pProperties = *pProperties; 19 } 20 std::unique_ptr<IFWL_Edit> pEdit(IFWL_Edit::Create( 21 m_pProperties->MakeWidgetImpProperties(nullptr), nullptr)); 22 FWL_ERR ret = pEdit->Initialize(); 23 if (ret != FWL_ERR_Succeeded) { 24 return ret; 25 } 26 m_pIface = pEdit.release(); 27 CFWL_Widget::Initialize(); 28 return FWL_ERR_Succeeded; 29} 30FWL_ERR CFWL_Edit::SetText(const CFX_WideString& wsText) { 31 if (!m_pIface) 32 return FWL_ERR_Indefinite; 33 return static_cast<IFWL_Edit*>(m_pIface)->SetText(wsText); 34} 35int32_t CFWL_Edit::GetTextLength() const { 36 if (!m_pIface) 37 return 0; 38 return static_cast<IFWL_Edit*>(m_pIface)->GetTextLength(); 39} 40FWL_ERR CFWL_Edit::GetText(CFX_WideString& wsText, 41 int32_t nStart, 42 int32_t nCount) const { 43 if (!m_pIface) 44 return FWL_ERR_Indefinite; 45 return static_cast<IFWL_Edit*>(m_pIface)->GetText(wsText, nStart, nCount); 46} 47FWL_ERR CFWL_Edit::ClearText() { 48 if (!m_pIface) 49 return FWL_ERR_Indefinite; 50 return static_cast<IFWL_Edit*>(m_pIface)->ClearText(); 51} 52int32_t CFWL_Edit::GetCaretPos() const { 53 if (!m_pIface) 54 return -1; 55 return static_cast<IFWL_Edit*>(m_pIface)->GetCaretPos(); 56} 57int32_t CFWL_Edit::SetCaretPos(int32_t nIndex, FX_BOOL bBefore) { 58 if (!m_pIface) 59 return -1; 60 return static_cast<IFWL_Edit*>(m_pIface)->SetCaretPos(nIndex, bBefore); 61} 62FWL_ERR CFWL_Edit::AddSelRange(int32_t nStart, int32_t nCount) { 63 if (!m_pIface) 64 return FWL_ERR_Indefinite; 65 static_cast<IFWL_Edit*>(m_pIface)->AddSelRange(nStart, nCount); 66 int32_t pos = 0; 67 int32_t sum = static_cast<IFWL_Edit*>(m_pIface)->GetTextLength(); 68 if (nCount == -1) { 69 pos = sum; 70 } else { 71 pos = nStart + nCount; 72 } 73 return static_cast<IFWL_Edit*>(m_pIface)->SetCaretPos(pos); 74} 75int32_t CFWL_Edit::CountSelRanges() { 76 if (!m_pIface) 77 return 0; 78 return static_cast<IFWL_Edit*>(m_pIface)->CountSelRanges(); 79} 80int32_t CFWL_Edit::GetSelRange(int32_t nIndex, int32_t& nStart) { 81 if (!m_pIface) 82 return 0; 83 return static_cast<IFWL_Edit*>(m_pIface)->GetSelRange(nIndex, nStart); 84} 85FWL_ERR CFWL_Edit::ClearSelections() { 86 if (!m_pIface) 87 return FWL_ERR_Indefinite; 88 return static_cast<IFWL_Edit*>(m_pIface)->ClearSelections(); 89} 90int32_t CFWL_Edit::GetLimit() { 91 if (!m_pIface) 92 return -1; 93 return static_cast<IFWL_Edit*>(m_pIface)->GetLimit(); 94} 95FWL_ERR CFWL_Edit::SetLimit(int32_t nLimit) { 96 if (!m_pIface) 97 return FWL_ERR_Indefinite; 98 return static_cast<IFWL_Edit*>(m_pIface)->SetLimit(nLimit); 99} 100FWL_ERR CFWL_Edit::SetAliasChar(FX_WCHAR wAlias) { 101 if (!m_pIface) 102 return FWL_ERR_Indefinite; 103 return static_cast<IFWL_Edit*>(m_pIface)->SetAliasChar(wAlias); 104} 105FWL_ERR CFWL_Edit::SetFormatString(const CFX_WideString& wsFormat) { 106 if (!m_pIface) 107 return FWL_ERR_Indefinite; 108 return static_cast<IFWL_Edit*>(m_pIface)->SetFormatString(wsFormat); 109} 110FWL_ERR CFWL_Edit::Insert(int32_t nStart, 111 const FX_WCHAR* lpText, 112 int32_t nLen) { 113 if (!m_pIface) 114 return FWL_ERR_Indefinite; 115 return static_cast<IFWL_Edit*>(m_pIface)->Insert(nStart, lpText, nLen); 116} 117FWL_ERR CFWL_Edit::DeleteSelections() { 118 if (!m_pIface) 119 return FWL_ERR_Indefinite; 120 return static_cast<IFWL_Edit*>(m_pIface)->DeleteSelections(); 121} 122FWL_ERR CFWL_Edit::DeleteRange(int32_t nStart, int32_t nCount) { 123 if (!m_pIface) 124 return FWL_ERR_Indefinite; 125 return static_cast<IFWL_Edit*>(m_pIface)->DeleteRange(nStart, nCount); 126} 127FWL_ERR CFWL_Edit::ReplaceSelections(const CFX_WideStringC& wsReplace) { 128 if (!m_pIface) 129 return FWL_ERR_Indefinite; 130 return static_cast<IFWL_Edit*>(m_pIface)->ReplaceSelections(wsReplace); 131} 132FWL_ERR CFWL_Edit::Replace(int32_t nStart, 133 int32_t nLen, 134 const CFX_WideStringC& wsReplace) { 135 if (!m_pIface) 136 return FWL_ERR_Indefinite; 137 return static_cast<IFWL_Edit*>(m_pIface)->Replace(nStart, nLen, wsReplace); 138} 139FWL_ERR CFWL_Edit::DoClipboard(int32_t iCmd) { 140 if (!m_pIface) 141 return FWL_ERR_Indefinite; 142 return static_cast<IFWL_Edit*>(m_pIface)->DoClipboard(iCmd); 143} 144FX_BOOL CFWL_Edit::Redo(const CFX_ByteStringC& bsRecord) { 145 if (!m_pIface) 146 return FALSE; 147 return static_cast<IFWL_Edit*>(m_pIface)->Redo(bsRecord); 148} 149FX_BOOL CFWL_Edit::Undo(const CFX_ByteStringC& bsRecord) { 150 if (!m_pIface) 151 return FALSE; 152 return static_cast<IFWL_Edit*>(m_pIface)->Undo(bsRecord); 153} 154FWL_ERR CFWL_Edit::SetTabWidth(FX_FLOAT fTabWidth, FX_BOOL bEquidistant) { 155 if (!m_pIface) 156 return FWL_ERR_Indefinite; 157 return static_cast<IFWL_Edit*>(m_pIface) 158 ->SetTabWidth(fTabWidth, bEquidistant); 159} 160FWL_ERR CFWL_Edit::SetNumberRange(int32_t iMin, int32_t iMax) { 161 if (iMin > iMax) { 162 return FWL_ERR_Parameter_Invalid; 163 } 164 return static_cast<IFWL_Edit*>(m_pIface)->SetNumberRange(iMin, iMax); 165} 166FWL_ERR CFWL_Edit::SetBackColor(FX_DWORD dwColor) { 167 if (!m_pIface) 168 return FWL_ERR_Indefinite; 169 return static_cast<IFWL_Edit*>(m_pIface)->SetBackColor(dwColor); 170} 171FWL_ERR CFWL_Edit::SetFont(const CFX_WideString& wsFont, FX_FLOAT fSize) { 172 if (!m_pIface) 173 return FWL_ERR_Indefinite; 174 return static_cast<IFWL_Edit*>(m_pIface)->SetFont(wsFont, fSize); 175} 176FX_BOOL CFWL_Edit::CanUndo() { 177 return static_cast<IFWL_Edit*>(m_pIface)->CanUndo(); 178} 179FX_BOOL CFWL_Edit::CanRedo() { 180 return static_cast<IFWL_Edit*>(m_pIface)->CanRedo(); 181} 182FX_BOOL CFWL_Edit::Undo() { 183 return static_cast<IFWL_Edit*>(m_pIface)->Undo(); 184} 185FX_BOOL CFWL_Edit::Redo() { 186 return static_cast<IFWL_Edit*>(m_pIface)->Undo(); 187} 188FX_BOOL CFWL_Edit::Copy(CFX_WideString& wsCopy) { 189 return static_cast<IFWL_Edit*>(m_pIface)->Copy(wsCopy); 190} 191FX_BOOL CFWL_Edit::Cut(CFX_WideString& wsCut) { 192 return static_cast<IFWL_Edit*>(m_pIface)->Cut(wsCut); 193} 194FX_BOOL CFWL_Edit::Paste(const CFX_WideString& wsPaste) { 195 return static_cast<IFWL_Edit*>(m_pIface)->Paste(wsPaste); 196} 197FX_BOOL CFWL_Edit::Delete() { 198 return static_cast<IFWL_Edit*>(m_pIface)->Delete(); 199} 200void CFWL_Edit::SetScrollOffset(FX_FLOAT fScrollOffset) { 201 return static_cast<IFWL_Edit*>(m_pIface)->SetScrollOffset(fScrollOffset); 202} 203FX_BOOL CFWL_Edit::GetSuggestWords(CFX_PointF pointf, 204 CFX_ByteStringArray& sSuggest) { 205 return static_cast<IFWL_Edit*>(m_pIface)->GetSuggestWords(pointf, sSuggest); 206} 207FX_BOOL CFWL_Edit::ReplaceSpellCheckWord(CFX_PointF pointf, 208 const CFX_ByteStringC& bsReplace) { 209 return static_cast<IFWL_Edit*>(m_pIface) 210 ->ReplaceSpellCheckWord(pointf, bsReplace); 211} 212CFWL_Edit::CFWL_Edit() {} 213CFWL_Edit::~CFWL_Edit() {} 214