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/fsdk_define.h" 8ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../include/fsdk_mgr.h" 9ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../include/fsdk_baseannot.h" 10ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../include/fsdk_baseform.h" 11ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../include/formfiller/FFL_FormFiller.h" 12ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../include/fsdk_actionhandler.h" 13ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 14ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../include/javascript/IJavaScript.h" 15ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 16ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov//------------------------------------------------------------------------------------ 17ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov//* CPDFSDK_Widget 18ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov//------------------------------------------------------------------------------------ 19ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 20ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define IsFloatZero(f) ((f) < 0.01 && (f) > -0.01) 21ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define IsFloatBigger(fa,fb) ((fa) > (fb) && !IsFloatZero((fa) - (fb))) 22ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define IsFloatSmaller(fa,fb) ((fa) < (fb) && !IsFloatZero((fa) - (fb))) 23ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define IsFloatEqual(fa,fb) IsFloatZero((fa)-(fb)) 24ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 25ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCPDFSDK_Widget::CPDFSDK_Widget(CPDF_Annot* pAnnot, CPDFSDK_PageView* pPageView, CPDFSDK_InterForm* pInterForm) : 26ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_Annot(pAnnot, pPageView), 27ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pInterForm(pInterForm), 28ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_nAppAge(0), 29ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_nValueAge(0) 30ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 31ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_pInterForm != NULL); 32ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 33ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 34ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCPDFSDK_Widget::~CPDFSDK_Widget() 35ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 36ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 37ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 38ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 39ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CPDFSDK_Widget::IsWidgetAppearanceValid(CPDF_Annot::AppearanceMode mode) 40ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 41ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_pAnnot != NULL); 42ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_pAnnot->m_pAnnotDict != NULL); 43ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 44ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Dictionary* pAP = m_pAnnot->m_pAnnotDict->GetDict("AP"); 45ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pAP == NULL) return FALSE; 46ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 47ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // Choose the right sub-ap 48ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const FX_CHAR* ap_entry = "N"; 49ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (mode == CPDF_Annot::Down) 50ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ap_entry = "D"; 51ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else if (mode == CPDF_Annot::Rollover) 52ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ap_entry = "R"; 53ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!pAP->KeyExist(ap_entry)) 54ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ap_entry = "N"; 55ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 56ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // Get the AP stream or subdirectory 57ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Object* psub = pAP->GetElementValue(ap_entry); 58ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (psub == NULL) return FALSE; 59ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 60ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int nFieldType = GetFieldType(); 61ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov switch (nFieldType) 62ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 63ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case FIELDTYPE_PUSHBUTTON: 64ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case FIELDTYPE_COMBOBOX: 65ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case FIELDTYPE_LISTBOX: 66ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case FIELDTYPE_TEXTFIELD: 67ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case FIELDTYPE_SIGNATURE: 68ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return psub->GetType() == PDFOBJ_STREAM; 69ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case FIELDTYPE_CHECKBOX: 70ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case FIELDTYPE_RADIOBUTTON: 71ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (psub->GetType() == PDFOBJ_DICTIONARY) 72ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 73ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Dictionary* pSubDict = (CPDF_Dictionary*)psub; 74ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 75ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return pSubDict->GetStream(this->GetAppState()) != NULL; 76ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 77ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 78ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FALSE; 79ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 80ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 81ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 82ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return TRUE; 83ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 84ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 85ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovint CPDFSDK_Widget::GetFieldType() const 86ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 87ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FormField* pField = GetFormField(); 88ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pField != NULL); 89ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 90ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return pField->GetFieldType(); 91ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 92ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 93ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovint CPDFSDK_Widget::GetFieldFlags() const 94ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 95ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_InterForm* pPDFInterForm = m_pInterForm->GetInterForm(); 96ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pPDFInterForm != NULL); 97ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 98ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FormControl* pFormControl = pPDFInterForm->GetControlByDict(m_pAnnot->m_pAnnotDict); 99ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FormField* pFormField = pFormControl->GetField(); 100ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return pFormField->GetFieldFlags(); 101ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 102ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 103ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCFX_ByteString CPDFSDK_Widget::GetSubType() const 104ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 105ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int nType = GetFieldType(); 106ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 107ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (nType == FIELDTYPE_SIGNATURE) 108ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return BFFT_SIGNATURE; 109ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return CPDFSDK_Annot::GetSubType(); 110ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 111ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 112ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCPDF_FormField* CPDFSDK_Widget::GetFormField() const 113ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 114ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_pInterForm != NULL); 115ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 116ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FormControl* pCtrl = GetFormControl(); 117ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pCtrl != NULL); 118ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 119ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return pCtrl->GetField(); 120ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 121ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 122ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCPDF_FormControl* CPDFSDK_Widget::GetFormControl() const 123ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 124ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_pInterForm != NULL); 125ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 126ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_InterForm* pPDFInterForm = m_pInterForm->GetInterForm(); 127ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pPDFInterForm != NULL); 128ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 129ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return pPDFInterForm->GetControlByDict(GetAnnotDict()); 130ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 131ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovstatic CPDF_Dictionary* BF_GetField(CPDF_Dictionary* pFieldDict, const FX_CHAR* name) 132ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 133ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pFieldDict == NULL) return NULL; 134ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // First check the dictionary itself 135ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Object* pAttr = pFieldDict->GetElementValue(name); 136ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pAttr) return pFieldDict; 137ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 138ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // Now we need to search from parents 139ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Dictionary* pParent = pFieldDict->GetDict("Parent"); 140ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pParent == NULL) return NULL; 141ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 142ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return BF_GetField(pParent, name); 143ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 144ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 145ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCPDF_FormControl* CPDFSDK_Widget::GetFormControl(CPDF_InterForm* pInterForm, CPDF_Dictionary* pAnnotDict) 146ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 147ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pInterForm != NULL); 148ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pAnnotDict != NULL); 149ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 150ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FormControl* pControl = pInterForm->GetControlByDict(pAnnotDict); 151ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 152ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return pControl; 153ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 154ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 155ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovint CPDFSDK_Widget::GetRotate() const 156ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 157ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FormControl* pCtrl = this->GetFormControl(); 158ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pCtrl != NULL); 159ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 160ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return pCtrl->GetRotation() % 360; 161ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 162ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 163ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CPDFSDK_Widget::GetFillColor(FX_COLORREF& color) const 164ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 165ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FormControl* pFormCtrl = GetFormControl(); 166ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pFormCtrl != NULL); 167ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 168ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int iColorType = 0; 169ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov color = FX_ARGBTOCOLORREF(pFormCtrl->GetBackgroundColor(iColorType)); 170ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 171ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return iColorType != COLORTYPE_TRANSPARENT; 172ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 173ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 174ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CPDFSDK_Widget::GetBorderColor(FX_COLORREF& color) const 175ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 176ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FormControl* pFormCtrl = GetFormControl(); 177ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pFormCtrl != NULL); 178ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 179ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int iColorType = 0; 180ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov color = FX_ARGBTOCOLORREF(pFormCtrl->GetBorderColor(iColorType)); 181ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 182ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return iColorType != COLORTYPE_TRANSPARENT; 183ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 184ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 185ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CPDFSDK_Widget::GetTextColor(FX_COLORREF& color) const 186ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 187ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FormControl* pFormCtrl = GetFormControl(); 188ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pFormCtrl != NULL); 189ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 190ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_DefaultAppearance da = pFormCtrl->GetDefaultAppearance(); 191ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (da.HasColor()) 192ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 193ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_ARGB argb; 194ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int iColorType = COLORTYPE_TRANSPARENT; 195ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov da.GetColor(argb, iColorType); 196ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov color = FX_ARGBTOCOLORREF(argb); 197ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 198ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return iColorType != COLORTYPE_TRANSPARENT; 199ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 200ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 201ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FALSE; 202ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 203ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 204ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_FLOAT CPDFSDK_Widget::GetFontSize() const 205ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 206ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FormControl* pFormCtrl = GetFormControl(); 207ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pFormCtrl != NULL); 208ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 209ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_DefaultAppearance pDa = pFormCtrl->GetDefaultAppearance(); 210ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteString csFont = ""; 211ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT fFontSize = 0.0f; 212ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pDa.GetFont(csFont, fFontSize); 213ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 214ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return fFontSize; 215ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 216ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 217ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovint CPDFSDK_Widget::GetSelectedIndex(int nIndex) const 218ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 219ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FormField* pFormField = GetFormField(); 220ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pFormField != NULL); 221ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 222ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return pFormField->GetSelectedIndex(nIndex); 223ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 224ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 225ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCFX_WideString CPDFSDK_Widget::GetValue() const 226ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 227ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FormField* pFormField = GetFormField(); 228ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pFormField != NULL); 229ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 230ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return pFormField->GetValue(); 231ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 232ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 233ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCFX_WideString CPDFSDK_Widget::GetDefaultValue() const 234ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 235ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FormField* pFormField = GetFormField(); 236ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pFormField != NULL); 237ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 238ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return pFormField->GetDefaultValue(); 239ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 240ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 241ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCFX_WideString CPDFSDK_Widget::GetOptionLabel(int nIndex) const 242ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 243ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FormField* pFormField = GetFormField(); 244ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pFormField != NULL); 245ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 246ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return pFormField->GetOptionLabel(nIndex); 247ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 248ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 249ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovint CPDFSDK_Widget::CountOptions() const 250ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 251ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FormField* pFormField = GetFormField(); 252ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pFormField != NULL); 253ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 254ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return pFormField->CountOptions(); 255ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 256ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 257ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CPDFSDK_Widget::IsOptionSelected(int nIndex) const 258ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 259ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FormField* pFormField = GetFormField(); 260ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pFormField != NULL); 261ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 262ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return pFormField->IsItemSelected(nIndex); 263ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 264ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 265ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovint CPDFSDK_Widget::GetTopVisibleIndex() const 266ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 267ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FormField* pFormField = GetFormField(); 268ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pFormField != NULL); 269ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 270ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return pFormField->GetTopVisibleIndex(); 271ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 272ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 273ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CPDFSDK_Widget::IsChecked() const 274ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 275ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FormControl* pFormCtrl = GetFormControl(); 276ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pFormCtrl != NULL); 277ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 278ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return pFormCtrl->IsChecked(); 279ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 280ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 281ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovint CPDFSDK_Widget::GetAlignment() const 282ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 283ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FormControl* pFormCtrl = GetFormControl(); 284ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pFormCtrl != NULL); 285ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 286ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return pFormCtrl->GetControlAlignment(); 287ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 288ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 289ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovint CPDFSDK_Widget::GetMaxLen() const 290ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 291ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FormField* pFormField = GetFormField(); 292ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pFormField != NULL); 293ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 294ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return pFormField->GetMaxLen(); 295ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 296ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 297ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPDFSDK_Widget::SetCheck(FX_BOOL bChecked, FX_BOOL bNotify) 298ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 299ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FormControl* pFormCtrl = GetFormControl(); 300ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pFormCtrl != NULL); 301ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 302ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FormField* pFormField = pFormCtrl->GetField(); 303ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pFormField != NULL); 304ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 305ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pFormField->CheckControl(pFormField->GetControlIndex(pFormCtrl), bChecked, bNotify); 306ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 307ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 308ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPDFSDK_Widget::SetValue(const CFX_WideString& sValue, FX_BOOL bNotify) 309ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 310ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FormField* pFormField = GetFormField(); 311ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pFormField != NULL); 312ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 313ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pFormField->SetValue(sValue, bNotify); 314ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 315ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 316ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPDFSDK_Widget::SetDefaultValue(const CFX_WideString& sValue) 317ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 318ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 319ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPDFSDK_Widget::SetOptionSelection(int index, FX_BOOL bSelected, FX_BOOL bNotify) 320ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 321ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FormField* pFormField = GetFormField(); 322ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pFormField != NULL); 323ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 324ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pFormField->SetItemSelection(index, bSelected, bNotify); 325ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 326ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 327ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPDFSDK_Widget::ClearSelection(FX_BOOL bNotify) 328ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 329ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FormField* pFormField = GetFormField(); 330ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pFormField != NULL); 331ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 332ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pFormField->ClearSelection(bNotify); 333ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 334ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 335ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPDFSDK_Widget::SetTopVisibleIndex(int index) 336ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 337ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 338ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 339ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPDFSDK_Widget::SetAppModified() 340ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 341ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_bAppModified = TRUE; 342ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 343ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 344ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPDFSDK_Widget::ClearAppModified() 345ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 346ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_bAppModified = FALSE; 347ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 348ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 349ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CPDFSDK_Widget::IsAppModified() const 350ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 351ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_bAppModified; 352ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 353ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 354ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPDFSDK_Widget::ResetAppearance(FX_LPCWSTR sValue, FX_BOOL bValueChanged) 355ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 356ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetAppModified(); 357ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 358ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_nAppAge++; 359ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_nAppAge > 999999) 360ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_nAppAge = 0; 361ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bValueChanged) 362ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_nValueAge++; 363ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 364ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int nFieldType = GetFieldType(); 365ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 366ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov switch (nFieldType) 367ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 368ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case FIELDTYPE_PUSHBUTTON: 369ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ResetAppearance_PushButton(); 370ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 371ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case FIELDTYPE_CHECKBOX: 372ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ResetAppearance_CheckBox(); 373ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 374ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case FIELDTYPE_RADIOBUTTON: 375ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ResetAppearance_RadioButton(); 376ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 377ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case FIELDTYPE_COMBOBOX: 378ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ResetAppearance_ComboBox(sValue); 379ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 380ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case FIELDTYPE_LISTBOX: 381ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ResetAppearance_ListBox(); 382ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 383ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case FIELDTYPE_TEXTFIELD: 384ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ResetAppearance_TextField(sValue); 385ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 386ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 387ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 388ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_pAnnot != NULL); 389ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pAnnot->ClearCachedAP(); 390ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 391ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 392ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCFX_WideString CPDFSDK_Widget::OnFormat(int nCommitKey, FX_BOOL& bFormated) 393ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 394ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FormField* pFormField = GetFormField(); 395ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pFormField != NULL); 396ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 397ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_pInterForm != NULL); 398ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 399ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_pInterForm->OnFormat(pFormField, nCommitKey, bFormated); 400ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 401ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 402ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 403ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPDFSDK_Widget::ResetFieldAppearance(FX_BOOL bValueChanged) 404ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 405ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FormField* pFormField = GetFormField(); 406ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pFormField != NULL); 407ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 408ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_pInterForm != NULL); 409ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 410ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pInterForm->ResetFieldAppearance(pFormField, NULL, bValueChanged); 411ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 412ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 413ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPDFSDK_Widget::DrawAppearance(CFX_RenderDevice* pDevice, const CPDF_Matrix* pUser2Device, 414ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Annot::AppearanceMode mode, const CPDF_RenderOptions* pOptions) 415ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 416ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int nFieldType = GetFieldType(); 417ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 418ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if ((nFieldType == FIELDTYPE_CHECKBOX || nFieldType == FIELDTYPE_RADIOBUTTON) && 419ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov mode == CPDF_Annot::Normal && 420ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov !this->IsWidgetAppearanceValid(CPDF_Annot::Normal)) 421ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 422ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_PathData pathData; 423ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 424ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect rcAnnot = this->GetRect(); 425ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 426ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pathData.AppendRect(rcAnnot.left, rcAnnot.bottom, 427ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov rcAnnot.right, rcAnnot.top); 428ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 429ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_GraphStateData gsd; 430ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov gsd.m_LineWidth = 0.0f; 431ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 432ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pDevice->DrawPath(&pathData, pUser2Device, &gsd, 0, 0xFFAAAAAA, FXFILL_ALTERNATE); 433ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 434ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 435ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 436ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_Annot::DrawAppearance(pDevice, pUser2Device, mode, pOptions); 437ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 438ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 439ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 440ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPDFSDK_Widget::UpdateField() 441ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 442ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FormField* pFormField = GetFormField(); 443ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pFormField != NULL); 444ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 445ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_pInterForm != NULL); 446ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pInterForm->UpdateField(pFormField); 447ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 448ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 449ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPDFSDK_Widget::DrawShadow(CFX_RenderDevice* pDevice, CPDFSDK_PageView* pPageView) 450ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 451ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_pInterForm != NULL); 452ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 453ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int nFieldType = GetFieldType(); 454ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pInterForm->IsNeedHighLight(nFieldType)) 455ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 456ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 457ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// if (nFieldType != FIELDTYPE_PUSHBUTTON) 458ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// { 459ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect rc = GetRect(); 460ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_COLORREF color = m_pInterForm->GetHighlightColor(nFieldType); 461ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BYTE alpha = m_pInterForm->GetHighlightAlpha(); 462ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 463ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_FloatRect rcDevice; 464ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_pInterForm->GetDocument()); 465ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFDoc_Environment* pEnv = m_pInterForm->GetDocument()->GetEnv(); 466ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(!pEnv) 467ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return; 468ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_AffineMatrix page2device; 469ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pPageView->GetCurrentMatrix(page2device); 470ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov page2device.Transform(((FX_FLOAT)rc.left), ((FX_FLOAT)rc.bottom), rcDevice.left, rcDevice.bottom); 471ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// pEnv->FFI_PageToDevice(m_pPageView->GetPDFPage(), rc.left, rc.bottom, &rcDevice.left, &rcDevice.bottom); 472ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// pEnv->FFI_PageToDevice(m_pPageView->GetPDFPage(), rc.right, rc.top, &rcDevice.right, &rcDevice.top); 473ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov page2device.Transform(((FX_FLOAT)rc.right), ((FX_FLOAT)rc.top), rcDevice.right, rcDevice.top); 474ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 475ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov rcDevice.Normalize(); 476ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 477ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_ARGB argb = ArgbEncode((int)alpha, color); 478ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_RECT rcDev((int)rcDevice.left,(int)rcDevice.top,(int)rcDevice.right,(int)rcDevice.bottom); 479ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pDevice->FillRect(&rcDev, argb); 480ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* }*/ 481ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 482ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 483ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 484ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPDFSDK_Widget::ResetAppearance_PushButton() 485ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 486ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FormControl* pControl = GetFormControl(); 487ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pControl != NULL); 488ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 489ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 490ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 491ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect rcWindow = GetRotatedRect(); 492ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 493ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 nLayout = 0; 494ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 495ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov switch (pControl->GetTextPosition()) 496ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 497ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case TEXTPOS_ICON: 498ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nLayout = PPBL_ICON; 499ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 500ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case TEXTPOS_BELOW: 501ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nLayout = PPBL_ICONTOPLABELBOTTOM; 502ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 503ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case TEXTPOS_ABOVE: 504ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nLayout = PPBL_LABELTOPICONBOTTOM; 505ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 506ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case TEXTPOS_RIGHT: 507ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nLayout = PPBL_ICONLEFTLABELRIGHT; 508ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 509ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case TEXTPOS_LEFT: 510ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nLayout = PPBL_LABELLEFTICONRIGHT; 511ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 512ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case TEXTPOS_OVERLAID: 513ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nLayout = PPBL_LABELOVERICON; 514ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 515ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov default: 516ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nLayout = PPBL_LABEL; 517ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 518ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 519ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 520ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPWL_Color crBackground, crBorder; 521ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 522ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int iColorType; 523ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT fc[4]; 524ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 525ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pControl->GetOriginalBackgroundColor(iColorType, fc); 526ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (iColorType > 0) 527ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov crBackground = CPWL_Color(iColorType, fc[0], fc[1], fc[2], fc[3]); 528ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 529ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pControl->GetOriginalBorderColor(iColorType, fc); 530ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (iColorType > 0) 531ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov crBorder = CPWL_Color(iColorType, fc[0], fc[1], fc[2], fc[3]); 532ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 533ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT fBorderWidth = (FX_FLOAT)GetBorderWidth(); 534ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 nBorderStyle = 0; 535ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPWL_Dash dsBorder(3,0,0); 536ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPWL_Color crLeftTop,crRightBottom; 537ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 538ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov switch (GetBorderStyle()) 539ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 540ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case BBS_DASH: 541ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nBorderStyle = PBS_DASH; 542ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov dsBorder = CPWL_Dash(3, 3, 0); 543ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 544ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case BBS_BEVELED: 545ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nBorderStyle = PBS_BEVELED; 546ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov fBorderWidth *= 2; 547ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov crLeftTop = CPWL_Color(COLORTYPE_GRAY,1); 548ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov crRightBottom = CPWL_Utils::DevideColor(crBackground,2); 549ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 550ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case BBS_INSET: 551ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nBorderStyle = PBS_INSET; 552ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov fBorderWidth *= 2; 553ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov crLeftTop = CPWL_Color(COLORTYPE_GRAY,0.5); 554ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov crRightBottom = CPWL_Color(COLORTYPE_GRAY,0.75); 555ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 556ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case BBS_UNDERLINE: 557ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nBorderStyle = PBS_UNDERLINED; 558ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 559ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov default: 560ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nBorderStyle = PBS_SOLID; 561ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 562ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 563ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 564ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect rcClient = CPWL_Utils::DeflateRect(rcWindow,fBorderWidth); 565ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 566ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPWL_Color crText(COLORTYPE_GRAY,0); 567ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 568ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT fFontSize = 12.0f; 569ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteString csNameTag; 570ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 571ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_DefaultAppearance da = pControl->GetDefaultAppearance(); 572ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (da.HasColor()) 573ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 574ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov da.GetColor(iColorType, fc); 575ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov crText = CPWL_Color(iColorType, fc[0], fc[1], fc[2], fc[3]); 576ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 577ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 578ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (da.HasFont()) 579ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov da.GetFont(csNameTag, fFontSize); 580ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 581ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_WideString csWCaption; 582ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_WideString csNormalCaption, csRolloverCaption, csDownCaption; 583ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 584ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pControl->HasMKEntry("CA")) 585ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 586ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov csNormalCaption = pControl->GetNormalCaption(); 587ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 588ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pControl->HasMKEntry("RC")) 589ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 590ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov csRolloverCaption = pControl->GetRolloverCaption(); 591ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 592ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pControl->HasMKEntry("AC")) 593ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 594ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov csDownCaption = pControl->GetDownCaption(); 595ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 596ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 597ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Stream* pNormalIcon = NULL; 598ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Stream* pRolloverIcon = NULL; 599ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Stream* pDownIcon = NULL; 600ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 601ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pControl->HasMKEntry("I")) 602ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 603ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pNormalIcon = pControl->GetNormalIcon(); 604ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 605ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pControl->HasMKEntry("RI")) 606ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 607ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pRolloverIcon = pControl->GetRolloverIcon(); 608ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 609ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pControl->HasMKEntry("IX")) 610ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 611ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pDownIcon = pControl->GetDownIcon(); 612ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 613ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 614ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pNormalIcon) 615ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 616ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (CPDF_Dictionary* pImageDict = pNormalIcon->GetDict()) 617ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 618ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pImageDict->GetString("Name").IsEmpty()) 619ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pImageDict->SetAtString("Name", "ImgA"); 620ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 621ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 622ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 623ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pRolloverIcon) 624ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 625ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (CPDF_Dictionary* pImageDict = pRolloverIcon->GetDict()) 626ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 627ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pImageDict->GetString("Name").IsEmpty()) 628ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pImageDict->SetAtString("Name", "ImgB"); 629ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 630ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 631ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 632ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pDownIcon) 633ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 634ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (CPDF_Dictionary* pImageDict = pDownIcon->GetDict()) 635ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 636ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pImageDict->GetString("Name").IsEmpty()) 637ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pImageDict->SetAtString("Name", "ImgC"); 638ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 639ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 640ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 641ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_IconFit iconFit = pControl->GetIconFit(); 642ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 643ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// ASSERT(this->m_pBaseForm != NULL); 644ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(this->m_pInterForm != NULL); 645ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_Document* pDoc = m_pInterForm->GetDocument(); 646ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pDoc != NULL); 647ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFDoc_Environment* pEnv = pDoc->GetEnv(); 648ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 649ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CBA_FontMap FontMap(this,pEnv->GetSysHandler());//, ISystemHandle::GetSystemHandler(m_pBaseForm->GetEnv())); 650ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FontMap.Initial(); 651ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 652ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FontMap.SetAPType("N"); 653ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 654ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteString csAP = CPWL_Utils::GetRectFillAppStream(rcWindow, crBackground) + 655ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPWL_Utils::GetBorderAppStream(rcWindow, fBorderWidth, crBorder, crLeftTop, crRightBottom, nBorderStyle, dsBorder) + 656ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPWL_Utils::GetPushButtonAppStream(iconFit.GetFittingBounds() ? rcWindow : rcClient, &FontMap, pNormalIcon, iconFit, csNormalCaption, crText, fFontSize, nLayout); 657ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 658ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov WriteAppearance("N", GetRotatedRect(), GetMatrix(), csAP); 659ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pNormalIcon) 660ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov AddImageToAppearance("N", pNormalIcon); 661ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 662ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FormControl::HighlightingMode eHLM = pControl->GetHighlightingMode(); 663ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (eHLM == CPDF_FormControl::Push || eHLM == CPDF_FormControl::Toggle) 664ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 665ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (csRolloverCaption.IsEmpty() && !pRolloverIcon) 666ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 667ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov csRolloverCaption = csNormalCaption; 668ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pRolloverIcon = pNormalIcon; 669ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 670ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 671ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FontMap.SetAPType("R"); 672ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 673ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov csAP = CPWL_Utils::GetRectFillAppStream(rcWindow, crBackground) + 674ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPWL_Utils::GetBorderAppStream(rcWindow, fBorderWidth, crBorder, crLeftTop, crRightBottom, nBorderStyle, dsBorder) + 675ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPWL_Utils::GetPushButtonAppStream(iconFit.GetFittingBounds() ? rcWindow : rcClient, &FontMap, pRolloverIcon, iconFit, csRolloverCaption, crText, fFontSize, nLayout); 676ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 677ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov WriteAppearance("R", GetRotatedRect(), GetMatrix(), csAP); 678ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pRolloverIcon) 679ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov AddImageToAppearance("R", pRolloverIcon); 680ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 681ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (csDownCaption.IsEmpty() && !pDownIcon) 682ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 683ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov csDownCaption = csNormalCaption; 684ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pDownIcon = pNormalIcon; 685ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 686ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 687ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov switch (nBorderStyle) 688ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 689ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case PBS_BEVELED: 690ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 691ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPWL_Color crTemp = crLeftTop; 692ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov crLeftTop = crRightBottom; 693ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov crRightBottom = crTemp; 694ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 695ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 696ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case PBS_INSET: 697ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov crLeftTop = CPWL_Color(COLORTYPE_GRAY,0); 698ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov crRightBottom = CPWL_Color(COLORTYPE_GRAY,1); 699ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 700ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 701ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 702ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FontMap.SetAPType("D"); 703ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 704ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov csAP = CPWL_Utils::GetRectFillAppStream(rcWindow, CPWL_Utils::SubstractColor(crBackground,0.25f)) + 705ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPWL_Utils::GetBorderAppStream(rcWindow, fBorderWidth, crBorder, crLeftTop, crRightBottom, nBorderStyle, dsBorder) + 706ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPWL_Utils::GetPushButtonAppStream(iconFit.GetFittingBounds() ? rcWindow : rcClient, &FontMap, pDownIcon, iconFit, csDownCaption, crText, fFontSize, nLayout); 707ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 708ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov WriteAppearance("D", GetRotatedRect(), GetMatrix(), csAP); 709ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pDownIcon) 710ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov AddImageToAppearance("D", pDownIcon); 711ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 712ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 713ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 714ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov RemoveAppearance("D"); 715ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov RemoveAppearance("R"); 716ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 717ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 718ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 719ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPDFSDK_Widget::ResetAppearance_CheckBox() 720ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 721ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FormControl* pControl = GetFormControl(); 722ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pControl != NULL); 723ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 724ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 725ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 726ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPWL_Color crBackground, crBorder, crText; 727ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 728ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int iColorType; 729ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT fc[4]; 730ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 731ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pControl->GetOriginalBackgroundColor(iColorType, fc); 732ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (iColorType > 0) 733ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov crBackground = CPWL_Color(iColorType, fc[0], fc[1], fc[2], fc[3]); 734ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 735ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pControl->GetOriginalBorderColor(iColorType, fc); 736ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (iColorType > 0) 737ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov crBorder = CPWL_Color(iColorType, fc[0], fc[1], fc[2], fc[3]); 738ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 739ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT fBorderWidth = (FX_FLOAT)GetBorderWidth(); 740ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 nBorderStyle = 0; 741ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPWL_Dash dsBorder(3,0,0); 742ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPWL_Color crLeftTop,crRightBottom; 743ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 744ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov switch (GetBorderStyle()) 745ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 746ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case BBS_DASH: 747ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nBorderStyle = PBS_DASH; 748ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov dsBorder = CPWL_Dash(3, 3, 0); 749ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 750ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case BBS_BEVELED: 751ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nBorderStyle = PBS_BEVELED; 752ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov fBorderWidth *= 2; 753ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov crLeftTop = CPWL_Color(COLORTYPE_GRAY,1); 754ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov crRightBottom = CPWL_Utils::DevideColor(crBackground,2); 755ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 756ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case BBS_INSET: 757ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nBorderStyle = PBS_INSET; 758ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov fBorderWidth *= 2; 759ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov crLeftTop = CPWL_Color(COLORTYPE_GRAY,0.5); 760ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov crRightBottom = CPWL_Color(COLORTYPE_GRAY,0.75); 761ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 762ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case BBS_UNDERLINE: 763ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nBorderStyle = PBS_UNDERLINED; 764ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 765ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov default: 766ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nBorderStyle = PBS_SOLID; 767ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 768ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 769ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 770ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect rcWindow = GetRotatedRect(); 771ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect rcClient = CPWL_Utils::DeflateRect(rcWindow,fBorderWidth); 772ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 773ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_DefaultAppearance da = pControl->GetDefaultAppearance(); 774ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (da.HasColor()) 775ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 776ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov da.GetColor(iColorType, fc); 777ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov crText = CPWL_Color(iColorType, fc[0], fc[1], fc[2], fc[3]); 778ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 779ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 780ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 nStyle = 0; 781ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 782ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_WideString csWCaption = pControl->GetNormalCaption(); 783ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (csWCaption.GetLength() > 0) 784ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 785ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov switch (csWCaption[0]) 786ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 787ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case L'l': 788ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nStyle = PCS_CIRCLE; 789ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 790ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case L'8': 791ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nStyle = PCS_CROSS; 792ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 793ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case L'u': 794ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nStyle = PCS_DIAMOND; 795ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 796ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case L'n': 797ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nStyle = PCS_SQUARE; 798ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 799ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case L'H': 800ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nStyle = PCS_STAR; 801ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 802ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov default: //L'4' 803ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nStyle = PCS_CHECK; 804ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 805ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 806ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 807ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 808ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 809ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nStyle = PCS_CHECK; 810ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 811ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 812ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteString csAP_N_ON = CPWL_Utils::GetRectFillAppStream(rcWindow,crBackground) + 813ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPWL_Utils::GetBorderAppStream(rcWindow,fBorderWidth,crBorder,crLeftTop,crRightBottom,nBorderStyle,dsBorder); 814ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 815ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteString csAP_N_OFF = csAP_N_ON; 816ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 817ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov switch (nBorderStyle) 818ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 819ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case PBS_BEVELED: 820ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 821ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPWL_Color crTemp = crLeftTop; 822ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov crLeftTop = crRightBottom; 823ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov crRightBottom = crTemp; 824ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 825ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 826ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case PBS_INSET: 827ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov crLeftTop = CPWL_Color(COLORTYPE_GRAY,0); 828ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov crRightBottom = CPWL_Color(COLORTYPE_GRAY,1); 829ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 830ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 831ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 832ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteString csAP_D_ON = CPWL_Utils::GetRectFillAppStream(rcWindow,CPWL_Utils::SubstractColor(crBackground,0.25f)) + 833ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPWL_Utils::GetBorderAppStream(rcWindow,fBorderWidth,crBorder,crLeftTop,crRightBottom,nBorderStyle,dsBorder); 834ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 835ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteString csAP_D_OFF = csAP_D_ON; 836ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 837ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov csAP_N_ON += CPWL_Utils::GetCheckBoxAppStream(rcClient,nStyle,crText); 838ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov csAP_D_ON += CPWL_Utils::GetCheckBoxAppStream(rcClient,nStyle,crText); 839ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 840ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov WriteAppearance("N", GetRotatedRect(), GetMatrix(), csAP_N_ON, pControl->GetCheckedAPState()); 841ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov WriteAppearance("N", GetRotatedRect(), GetMatrix(), csAP_N_OFF, "Off"); 842ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 843ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov WriteAppearance("D", GetRotatedRect(), GetMatrix(), csAP_D_ON, pControl->GetCheckedAPState()); 844ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov WriteAppearance("D", GetRotatedRect(), GetMatrix(), csAP_D_OFF, "Off"); 845ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 846ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteString csAS = GetAppState(); 847ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (csAS.IsEmpty()) 848ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetAppState("Off"); 849ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 850ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 851ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPDFSDK_Widget::ResetAppearance_RadioButton() 852ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 853ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FormControl* pControl = GetFormControl(); 854ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pControl != NULL); 855ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 856ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 857ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 858ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPWL_Color crBackground, crBorder, crText; 859ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 860ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int iColorType; 861ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT fc[4]; 862ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 863ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pControl->GetOriginalBackgroundColor(iColorType, fc); 864ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (iColorType > 0) 865ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov crBackground = CPWL_Color(iColorType, fc[0], fc[1], fc[2], fc[3]); 866ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 867ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pControl->GetOriginalBorderColor(iColorType, fc); 868ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (iColorType > 0) 869ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov crBorder = CPWL_Color(iColorType, fc[0], fc[1], fc[2], fc[3]); 870ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 871ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT fBorderWidth = (FX_FLOAT)GetBorderWidth(); 872ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 nBorderStyle = 0; 873ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPWL_Dash dsBorder(3,0,0); 874ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPWL_Color crLeftTop,crRightBottom; 875ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 876ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov switch (GetBorderStyle()) 877ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 878ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case BBS_DASH: 879ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nBorderStyle = PBS_DASH; 880ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov dsBorder = CPWL_Dash(3, 3, 0); 881ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 882ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case BBS_BEVELED: 883ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nBorderStyle = PBS_BEVELED; 884ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov fBorderWidth *= 2; 885ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov crLeftTop = CPWL_Color(COLORTYPE_GRAY,1); 886ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov crRightBottom = CPWL_Utils::DevideColor(crBackground,2); 887ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 888ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case BBS_INSET: 889ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nBorderStyle = PBS_INSET; 890ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov fBorderWidth *= 2; 891ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov crLeftTop = CPWL_Color(COLORTYPE_GRAY,0.5); 892ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov crRightBottom = CPWL_Color(COLORTYPE_GRAY,0.75); 893ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 894ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case BBS_UNDERLINE: 895ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nBorderStyle = PBS_UNDERLINED; 896ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 897ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov default: 898ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nBorderStyle = PBS_SOLID; 899ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 900ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 901ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 902ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect rcWindow = GetRotatedRect(); 903ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect rcClient = CPWL_Utils::DeflateRect(rcWindow, fBorderWidth); 904ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 905ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_DefaultAppearance da = pControl->GetDefaultAppearance(); 906ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (da.HasColor()) 907ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 908ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov da.GetColor(iColorType, fc); 909ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov crText = CPWL_Color(iColorType, fc[0], fc[1], fc[2], fc[3]); 910ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 911ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 912ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 nStyle = 0; 913ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 914ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_WideString csWCaption = pControl->GetNormalCaption(); 915ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (csWCaption.GetLength() > 0) 916ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 917ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov switch (csWCaption[0]) 918ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 919ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov default: //L'l': 920ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nStyle = PCS_CIRCLE; 921ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 922ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case L'8': 923ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nStyle = PCS_CROSS; 924ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 925ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case L'u': 926ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nStyle = PCS_DIAMOND; 927ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 928ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case L'n': 929ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nStyle = PCS_SQUARE; 930ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 931ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case L'H': 932ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nStyle = PCS_STAR; 933ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 934ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case L'4': 935ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nStyle = PCS_CHECK; 936ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 937ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 938ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 939ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 940ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 941ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nStyle = PCS_CIRCLE; 942ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 943ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 944ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteString csAP_N_ON; 945ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 946ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect rcCenter = CPWL_Utils::DeflateRect(CPWL_Utils::GetCenterSquare(rcWindow), 1.0f); 947ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 948ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (nStyle == PCS_CIRCLE) 949ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 950ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (nBorderStyle == PBS_BEVELED) 951ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 952ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov crLeftTop = CPWL_Color(COLORTYPE_GRAY, 1); 953ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov crRightBottom = CPWL_Utils::SubstractColor(crBackground,0.25f); 954ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 955ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else if (nBorderStyle == PBS_INSET) 956ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 957ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov crLeftTop = CPWL_Color(COLORTYPE_GRAY,0.5f); 958ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov crRightBottom = CPWL_Color(COLORTYPE_GRAY,0.75f); 959ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 960ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 961ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov csAP_N_ON = CPWL_Utils::GetCircleFillAppStream(rcCenter,crBackground) + 962ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPWL_Utils::GetCircleBorderAppStream(rcCenter,fBorderWidth,crBorder,crLeftTop,crRightBottom,nBorderStyle,dsBorder); 963ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 964ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 965ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 966ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov csAP_N_ON = CPWL_Utils::GetRectFillAppStream(rcWindow,crBackground) + 967ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPWL_Utils::GetBorderAppStream(rcWindow,fBorderWidth,crBorder,crLeftTop,crRightBottom,nBorderStyle,dsBorder); 968ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 969ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 970ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteString csAP_N_OFF = csAP_N_ON; 971ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 972ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov switch (nBorderStyle) 973ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 974ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case PBS_BEVELED: 975ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 976ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPWL_Color crTemp = crLeftTop; 977ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov crLeftTop = crRightBottom; 978ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov crRightBottom = crTemp; 979ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 980ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 981ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case PBS_INSET: 982ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov crLeftTop = CPWL_Color(COLORTYPE_GRAY,0); 983ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov crRightBottom = CPWL_Color(COLORTYPE_GRAY,1); 984ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 985ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 986ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 987ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteString csAP_D_ON; 988ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 989ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (nStyle == PCS_CIRCLE) 990ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 991ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPWL_Color crBK = CPWL_Utils::SubstractColor(crBackground,0.25f); 992ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (nBorderStyle == PBS_BEVELED) 993ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 994ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov crLeftTop = CPWL_Utils::SubstractColor(crBackground,0.25f); 995ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov crRightBottom = CPWL_Color(COLORTYPE_GRAY, 1); 996ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov crBK = crBackground; 997ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 998ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else if (nBorderStyle == PBS_INSET) 999ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1000ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov crLeftTop = CPWL_Color(COLORTYPE_GRAY,0); 1001ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov crRightBottom = CPWL_Color(COLORTYPE_GRAY,1); 1002ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1003ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1004ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov csAP_D_ON = CPWL_Utils::GetCircleFillAppStream(rcCenter,crBK) 1005ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov + CPWL_Utils::GetCircleBorderAppStream(rcCenter,fBorderWidth,crBorder,crLeftTop,crRightBottom,nBorderStyle,dsBorder); 1006ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1007ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 1008ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1009ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov csAP_D_ON = CPWL_Utils::GetRectFillAppStream(rcWindow,CPWL_Utils::SubstractColor(crBackground,0.25f)) + 1010ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPWL_Utils::GetBorderAppStream(rcWindow,fBorderWidth,crBorder,crLeftTop,crRightBottom,nBorderStyle,dsBorder); 1011ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1012ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1013ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteString csAP_D_OFF = csAP_D_ON; 1014ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1015ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov csAP_N_ON += CPWL_Utils::GetRadioButtonAppStream(rcClient,nStyle,crText); 1016ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov csAP_D_ON += CPWL_Utils::GetRadioButtonAppStream(rcClient,nStyle,crText); 1017ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1018ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov WriteAppearance("N", GetRotatedRect(), GetMatrix(), csAP_N_ON, pControl->GetCheckedAPState()); 1019ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov WriteAppearance("N", GetRotatedRect(), GetMatrix(), csAP_N_OFF, "Off"); 1020ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1021ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov WriteAppearance("D", GetRotatedRect(), GetMatrix(), csAP_D_ON, pControl->GetCheckedAPState()); 1022ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov WriteAppearance("D", GetRotatedRect(), GetMatrix(), csAP_D_OFF, "Off"); 1023ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1024ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteString csAS = GetAppState(); 1025ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (csAS.IsEmpty()) 1026ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov SetAppState("Off"); 1027ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1028ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1029ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPDFSDK_Widget::ResetAppearance_ComboBox(FX_LPCWSTR sValue) 1030ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1031ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FormControl* pControl = GetFormControl(); 1032ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pControl != NULL); 1033ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FormField* pField = pControl->GetField(); 1034ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pField != NULL); 1035ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1036ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteTextBuf sBody, sLines; 1037ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1038ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect rcClient = GetClientRect(); 1039ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect rcButton = rcClient; 1040ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov rcButton.left = rcButton.right - 13; 1041ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov rcButton.Normalize(); 1042ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1043ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (IFX_Edit * pEdit = IFX_Edit::NewEdit()) 1044ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1045ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pEdit->EnableRefresh(FALSE); 1046ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1047ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(this->m_pInterForm != NULL); 1048ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_Document* pDoc = m_pInterForm->GetDocument(); 1049ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pDoc != NULL); 1050ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFDoc_Environment* pEnv = pDoc->GetEnv(); 1051ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CBA_FontMap FontMap(this,pEnv->GetSysHandler()); 1052ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FontMap.Initial(); 1053ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pEdit->SetFontMap(&FontMap); 1054ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1055ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect rcEdit = rcClient; 1056ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov rcEdit.right = rcButton.left; 1057ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov rcEdit.Normalize(); 1058ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1059ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pEdit->SetPlateRect(rcEdit); 1060ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pEdit->SetAlignmentV(1); 1061ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1062ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT fFontSize = this->GetFontSize(); 1063ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (IsFloatZero(fFontSize)) 1064ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pEdit->SetAutoFontSize(TRUE); 1065ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 1066ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pEdit->SetFontSize(fFontSize); 1067ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1068ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pEdit->Initialize(); 1069ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1070ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (sValue) 1071ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pEdit->SetText(sValue); 1072ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 1073ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1074ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 nCurSel = pField->GetSelectedIndex(0); 1075ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1076ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (nCurSel < 0) 1077ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pEdit->SetText((FX_LPCWSTR)pField->GetValue()); 1078ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 1079ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pEdit->SetText((FX_LPCWSTR)pField->GetOptionLabel(nCurSel)); 1080ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1081ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1082ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect rcContent = pEdit->GetContentRect(); 1083ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1084ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteString sEdit = CPWL_Utils::GetEditAppStream(pEdit,CPDF_Point(0.0f,0.0f)); 1085ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (sEdit.GetLength() > 0) 1086ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1087ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov sBody << "/Tx BMC\n" << "q\n"; 1088ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (rcContent.Width() > rcEdit.Width() || 1089ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov rcContent.Height() > rcEdit.Height()) 1090ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1091ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov sBody << rcEdit.left << " " << rcEdit.bottom << " " 1092ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov << rcEdit.Width() << " " << rcEdit.Height() << " re\nW\nn\n"; 1093ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1094ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1095ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPWL_Color crText = GetTextPWLColor(); 1096ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov sBody << "BT\n" << CPWL_Utils::GetColorAppStream(crText) << sEdit << "ET\n" << "Q\nEMC\n"; 1097ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1098ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1099ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IFX_Edit::DelEdit(pEdit); 1100ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1101ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1102ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov sBody << CPWL_Utils::GetDropButtonAppStream(rcButton); 1103ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1104ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteString sAP = GetBackgroundAppStream() + GetBorderAppStream() + sLines.GetByteString() + sBody.GetByteString(); 1105ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1106ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov WriteAppearance("N", GetRotatedRect(), GetMatrix(), sAP); 1107ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1108ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1109ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPDFSDK_Widget::ResetAppearance_ListBox() 1110ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1111ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FormControl* pControl = GetFormControl(); 1112ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pControl != NULL); 1113ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FormField* pField = pControl->GetField(); 1114ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pField != NULL); 1115ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1116ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect rcClient = GetClientRect(); 1117ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1118ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteTextBuf sBody, sLines; 1119ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1120ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (IFX_Edit * pEdit = IFX_Edit::NewEdit()) 1121ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1122ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pEdit->EnableRefresh(FALSE); 1123ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1124ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// ASSERT(this->m_pBaseForm != NULL); 1125ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(this->m_pInterForm != NULL); 1126ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_Document* pDoc = m_pInterForm->GetDocument(); 1127ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pDoc != NULL); 1128ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFDoc_Environment* pEnv = pDoc->GetEnv(); 1129ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1130ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CBA_FontMap FontMap(this,pEnv->GetSysHandler()); 1131ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FontMap.Initial(); 1132ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pEdit->SetFontMap(&FontMap); 1133ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1134ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pEdit->SetPlateRect(CPDF_Rect(rcClient.left,0.0f,rcClient.right,0.0f)); 1135ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1136ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT fFontSize = GetFontSize(); 1137ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1138ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (IsFloatZero(fFontSize)) 1139ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pEdit->SetFontSize(12.0f); 1140ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 1141ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pEdit->SetFontSize(fFontSize); 1142ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1143ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pEdit->Initialize(); 1144ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1145ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteTextBuf sList; 1146ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT fy = rcClient.top; 1147ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1148ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 nTop = pField->GetTopVisibleIndex(); 1149ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 nCount = pField->CountOptions(); 1150ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 nSelCount = pField->CountSelectedItems(); 1151ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1152ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov for (FX_INT32 i=nTop; i<nCount; i++) 1153ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1154ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL bSelected = FALSE; 1155ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov for (FX_INT32 j=0; j<nSelCount; j++) 1156ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1157ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pField->GetSelectedIndex(j) == i) 1158ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1159ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov bSelected = TRUE; 1160ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 1161ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1162ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1163ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1164ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pEdit->SetText((FX_LPCWSTR)pField->GetOptionLabel(i)); 1165ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1166ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect rcContent = pEdit->GetContentRect(); 1167ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT fItemHeight = rcContent.Height(); 1168ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1169ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bSelected) 1170ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1171ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect rcItem = CPDF_Rect(rcClient.left,fy-fItemHeight,rcClient.right,fy); 1172ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov sList << "q\n" << CPWL_Utils::GetColorAppStream(CPWL_Color(COLORTYPE_RGB,0,51.0f/255.0f,113.0f/255.0f),TRUE) 1173ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov << rcItem.left << " " << rcItem.bottom << " " << rcItem.Width() << " " << rcItem.Height() << " re f\n" << "Q\n"; 1174ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1175ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov sList << "BT\n" << CPWL_Utils::GetColorAppStream(CPWL_Color(COLORTYPE_GRAY,1),TRUE) << 1176ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPWL_Utils::GetEditAppStream(pEdit,CPDF_Point(0.0f,fy)) << "ET\n"; 1177ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1178ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 1179ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1180ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPWL_Color crText = GetTextPWLColor(); 1181ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov sList << "BT\n" << CPWL_Utils::GetColorAppStream(crText,TRUE) << 1182ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPWL_Utils::GetEditAppStream(pEdit,CPDF_Point(0.0f,fy)) << "ET\n"; 1183ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1184ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1185ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov fy -= fItemHeight; 1186ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1187ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1188ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (sList.GetSize() > 0) 1189ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1190ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov sBody << "/Tx BMC\n" << "q\n" << rcClient.left << " " << rcClient.bottom << " " 1191ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov << rcClient.Width() << " " << rcClient.Height() << " re\nW\nn\n"; 1192ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov sBody << sList << "Q\nEMC\n"; 1193ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1194ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1195ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IFX_Edit::DelEdit(pEdit); 1196ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1197ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1198ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteString sAP = GetBackgroundAppStream() + GetBorderAppStream() + sLines.GetByteString() + sBody.GetByteString(); 1199ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1200ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov WriteAppearance("N", GetRotatedRect(), GetMatrix(), sAP); 1201ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1202ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1203ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPDFSDK_Widget::ResetAppearance_TextField(FX_LPCWSTR sValue) 1204ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1205ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FormControl* pControl = GetFormControl(); 1206ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pControl != NULL); 1207ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FormField* pField = pControl->GetField(); 1208ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pField != NULL); 1209ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1210ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteTextBuf sBody, sLines; 1211ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1212ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (IFX_Edit * pEdit = IFX_Edit::NewEdit()) 1213ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1214ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pEdit->EnableRefresh(FALSE); 1215ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1216ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// ASSERT(this->m_pBaseForm != NULL); 1217ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(this->m_pInterForm != NULL); 1218ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_Document* pDoc = m_pInterForm->GetDocument(); 1219ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pDoc != NULL); 1220ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFDoc_Environment* pEnv = pDoc->GetEnv(); 1221ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1222ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CBA_FontMap FontMap(this,pEnv->GetSysHandler());//, ISystemHandle::GetSystemHandler(m_pBaseForm->GetEnv())); 1223ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FontMap.Initial(); 1224ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pEdit->SetFontMap(&FontMap); 1225ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1226ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect rcClient = GetClientRect(); 1227ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pEdit->SetPlateRect(rcClient); 1228ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pEdit->SetAlignmentH(pControl->GetControlAlignment()); 1229ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1230ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_DWORD dwFieldFlags = pField->GetFieldFlags(); 1231ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL bMultiLine = (dwFieldFlags >> 12) & 1; 1232ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1233ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bMultiLine) 1234ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1235ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pEdit->SetMultiLine(TRUE); 1236ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pEdit->SetAutoReturn(TRUE); 1237ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1238ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 1239ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1240ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pEdit->SetAlignmentV(1); 1241ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1242ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1243ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_WORD subWord = 0; 1244ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if ((dwFieldFlags >> 13) & 1) 1245ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1246ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov subWord = '*'; 1247ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pEdit->SetPasswordChar(subWord); 1248ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1249ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1250ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int nMaxLen = pField->GetMaxLen(); 1251ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL bCharArray = (dwFieldFlags >> 24) & 1; 1252ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT fFontSize = GetFontSize(); 1253ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1254ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (nMaxLen > 0) 1255ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1256ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bCharArray) 1257ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1258ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pEdit->SetCharArray(nMaxLen); 1259ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1260ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (IsFloatZero(fFontSize)) 1261ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1262ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov fFontSize = CPWL_Edit::GetCharArrayAutoFontSize(FontMap.GetPDFFont(0),rcClient,nMaxLen); 1263ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1264ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1265ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 1266ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1267ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (sValue) 1268ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nMaxLen = wcslen((const wchar_t*)sValue); 1269ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pEdit->SetLimitChar(nMaxLen); 1270ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1271ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1272ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1273ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (IsFloatZero(fFontSize)) 1274ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pEdit->SetAutoFontSize(TRUE); 1275ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 1276ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pEdit->SetFontSize(fFontSize); 1277ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1278ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pEdit->Initialize(); 1279ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1280ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (sValue) 1281ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pEdit->SetText(sValue); 1282ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 1283ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pEdit->SetText((FX_LPCWSTR)pField->GetValue()); 1284ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1285ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect rcContent = pEdit->GetContentRect(); 1286ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1287ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteString sEdit = CPWL_Utils::GetEditAppStream(pEdit,CPDF_Point(0.0f,0.0f), 1288ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov NULL,!bCharArray,subWord); 1289ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1290ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (sEdit.GetLength() > 0) 1291ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1292ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov sBody << "/Tx BMC\n" << "q\n"; 1293ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (rcContent.Width() > rcClient.Width() || 1294ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov rcContent.Height() > rcClient.Height()) 1295ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1296ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov sBody << rcClient.left << " " << rcClient.bottom << " " 1297ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov << rcClient.Width() << " " << rcClient.Height() << " re\nW\nn\n"; 1298ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1299ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPWL_Color crText = GetTextPWLColor(); 1300ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov sBody << "BT\n" << CPWL_Utils::GetColorAppStream(crText) << sEdit << "ET\n" << "Q\nEMC\n"; 1301ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1302ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1303ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bCharArray) 1304ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1305ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov switch (GetBorderStyle()) 1306ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1307ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case BBS_SOLID: 1308ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1309ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteString sColor = CPWL_Utils::GetColorAppStream(GetBorderPWLColor(),FALSE); 1310ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (sColor.GetLength() > 0) 1311ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1312ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov sLines << "q\n" << GetBorderWidth() << " w\n" 1313ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov << CPWL_Utils::GetColorAppStream(GetBorderPWLColor(),FALSE) << " 2 J 0 j\n"; 1314ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1315ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov for (FX_INT32 i=1;i<nMaxLen;i++) 1316ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1317ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov sLines << rcClient.left + ((rcClient.right - rcClient.left)/nMaxLen)*i << " " 1318ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov << rcClient.bottom << " m\n" 1319ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov << rcClient.left + ((rcClient.right - rcClient.left)/nMaxLen)*i << " " 1320ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov << rcClient.top << " l S\n"; 1321ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1322ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1323ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov sLines << "Q\n"; 1324ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1325ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1326ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 1327ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case BBS_DASH: 1328ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1329ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteString sColor = CPWL_Utils::GetColorAppStream(GetBorderPWLColor(),FALSE); 1330ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (sColor.GetLength() > 0) 1331ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1332ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPWL_Dash dsBorder = CPWL_Dash(3, 3, 0); 1333ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1334ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov sLines << "q\n" << GetBorderWidth() << " w\n" 1335ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov << CPWL_Utils::GetColorAppStream(GetBorderPWLColor(),FALSE) 1336ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov << "[" << dsBorder.nDash << " " 1337ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov << dsBorder.nGap << "] " 1338ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov << dsBorder.nPhase << " d\n"; 1339ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1340ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov for (FX_INT32 i=1;i<nMaxLen;i++) 1341ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1342ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov sLines << rcClient.left + ((rcClient.right - rcClient.left)/nMaxLen)*i << " " 1343ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov << rcClient.bottom << " m\n" 1344ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov << rcClient.left + ((rcClient.right - rcClient.left)/nMaxLen)*i << " " 1345ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov << rcClient.top << " l S\n"; 1346ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1347ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1348ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov sLines << "Q\n"; 1349ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1350ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1351ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 1352ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1353ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1354ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1355ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IFX_Edit::DelEdit(pEdit); 1356ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1357ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1358ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteString sAP = GetBackgroundAppStream() + GetBorderAppStream() + sLines.GetByteString() + sBody.GetByteString(); 1359ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov WriteAppearance("N", GetRotatedRect(), GetMatrix(), sAP); 1360ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1361ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1362ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCPDF_Rect CPDFSDK_Widget::GetClientRect() const 1363ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1364ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect rcWindow = GetRotatedRect(); 1365ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT fBorderWidth = (FX_FLOAT)GetBorderWidth(); 1366ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov switch (GetBorderStyle()) 1367ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1368ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case BBS_BEVELED: 1369ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case BBS_INSET: 1370ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov fBorderWidth *= 2.0f; 1371ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 1372ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1373ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1374ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return CPWL_Utils::DeflateRect(rcWindow, fBorderWidth); 1375ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1376ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1377ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCPDF_Rect CPDFSDK_Widget::GetRotatedRect() const 1378ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1379ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect rectAnnot = GetRect(); 1380ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT fWidth = rectAnnot.right - rectAnnot.left; 1381ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT fHeight = rectAnnot.top - rectAnnot.bottom; 1382ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1383ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FormControl* pControl = GetFormControl(); 1384ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pControl != NULL); 1385ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1386ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect rcPDFWindow; 1387ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov switch(abs(pControl->GetRotation() % 360)) 1388ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1389ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case 0: 1390ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case 180: 1391ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov default: 1392ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov rcPDFWindow = CPDF_Rect(0, 0, fWidth, fHeight); 1393ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 1394ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case 90: 1395ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case 270: 1396ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov rcPDFWindow = CPDF_Rect(0, 0, fHeight, fWidth); 1397ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 1398ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1399ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1400ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return rcPDFWindow; 1401ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1402ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1403ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCFX_ByteString CPDFSDK_Widget::GetBackgroundAppStream() const 1404ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1405ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPWL_Color crBackground = GetFillPWLColor(); 1406ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (crBackground.nColorType != COLORTYPE_TRANSPARENT) 1407ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return CPWL_Utils::GetRectFillAppStream(GetRotatedRect(), crBackground); 1408ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 1409ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return ""; 1410ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1411ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1412ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCFX_ByteString CPDFSDK_Widget::GetBorderAppStream() const 1413ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1414ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect rcWindow = GetRotatedRect(); 1415ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPWL_Color crBorder = GetBorderPWLColor(); 1416ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPWL_Color crBackground = GetFillPWLColor(); 1417ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPWL_Color crLeftTop, crRightBottom; 1418ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1419ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT fBorderWidth = (FX_FLOAT)GetBorderWidth(); 1420ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 nBorderStyle = 0; 1421ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPWL_Dash dsBorder(3,0,0); 1422ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1423ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov switch (GetBorderStyle()) 1424ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1425ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case BBS_DASH: 1426ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nBorderStyle = PBS_DASH; 1427ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov dsBorder = CPWL_Dash(3, 3, 0); 1428ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 1429ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case BBS_BEVELED: 1430ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nBorderStyle = PBS_BEVELED; 1431ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov fBorderWidth *= 2; 1432ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov crLeftTop = CPWL_Color(COLORTYPE_GRAY, 1); 1433ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov crRightBottom = CPWL_Utils::DevideColor(crBackground, 2); 1434ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 1435ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case BBS_INSET: 1436ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nBorderStyle = PBS_INSET; 1437ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov fBorderWidth *= 2; 1438ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov crLeftTop = CPWL_Color(COLORTYPE_GRAY, 0.5); 1439ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov crRightBottom = CPWL_Color(COLORTYPE_GRAY, 0.75); 1440ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 1441ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case BBS_UNDERLINE: 1442ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nBorderStyle = PBS_UNDERLINED; 1443ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 1444ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov default: 1445ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nBorderStyle = PBS_SOLID; 1446ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 1447ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1448ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1449ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return CPWL_Utils::GetBorderAppStream(rcWindow, fBorderWidth, crBorder, crLeftTop, 1450ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov crRightBottom, nBorderStyle, dsBorder); 1451ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1452ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1453ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCPDF_Matrix CPDFSDK_Widget::GetMatrix() const 1454ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1455ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Matrix mt; 1456ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FormControl* pControl = GetFormControl(); 1457ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pControl != NULL); 1458ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1459ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect rcAnnot = GetRect(); 1460ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT fWidth = rcAnnot.right - rcAnnot.left; 1461ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT fHeight = rcAnnot.top - rcAnnot.bottom; 1462ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1463ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1464ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1465ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov switch (abs(pControl->GetRotation() % 360)) 1466ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1467ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case 0: 1468ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov default: 1469ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov mt = CPDF_Matrix(1, 0, 0, 1, 0, 0); 1470ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 1471ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case 90: 1472ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov mt = CPDF_Matrix(0, 1, -1, 0, fWidth, 0); 1473ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 1474ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case 180: 1475ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov mt = CPDF_Matrix(-1, 0, 0, -1, fWidth, fHeight); 1476ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 1477ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case 270: 1478ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov mt = CPDF_Matrix(0, -1, 1, 0, 0, fHeight); 1479ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 1480ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1481ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1482ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return mt; 1483ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1484ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1485ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCPWL_Color CPDFSDK_Widget::GetTextPWLColor() const 1486ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1487ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPWL_Color crText = CPWL_Color(COLORTYPE_GRAY, 0); 1488ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1489ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FormControl* pFormCtrl = GetFormControl(); 1490ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pFormCtrl != NULL); 1491ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1492ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_DefaultAppearance da = pFormCtrl->GetDefaultAppearance(); 1493ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (da.HasColor()) 1494ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1495ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 iColorType; 1496ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT fc[4]; 1497ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov da.GetColor(iColorType, fc); 1498ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov crText = CPWL_Color(iColorType, fc[0], fc[1], fc[2], fc[3]); 1499ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1500ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1501ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return crText; 1502ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1503ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1504ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCPWL_Color CPDFSDK_Widget::GetBorderPWLColor() const 1505ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1506ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPWL_Color crBorder; 1507ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1508ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FormControl* pFormCtrl = GetFormControl(); 1509ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pFormCtrl != NULL); 1510ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1511ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 iColorType; 1512ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT fc[4]; 1513ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pFormCtrl->GetOriginalBorderColor(iColorType, fc); 1514ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (iColorType > 0) 1515ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov crBorder = CPWL_Color(iColorType, fc[0], fc[1], fc[2], fc[3]); 1516ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1517ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return crBorder; 1518ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1519ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1520ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCPWL_Color CPDFSDK_Widget::GetFillPWLColor() const 1521ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1522ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPWL_Color crFill; 1523ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1524ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FormControl* pFormCtrl = GetFormControl(); 1525ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pFormCtrl != NULL); 1526ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1527ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 iColorType; 1528ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT fc[4]; 1529ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pFormCtrl->GetOriginalBackgroundColor(iColorType, fc); 1530ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (iColorType > 0) 1531ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov crFill = CPWL_Color(iColorType, fc[0], fc[1], fc[2], fc[3]); 1532ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1533ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return crFill; 1534ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1535ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1536ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPDFSDK_Widget::AddImageToAppearance(const CFX_ByteString& sAPType, CPDF_Stream* pImage) 1537ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1538ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pImage != NULL); 1539ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1540ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_pAnnot != NULL); 1541ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_pAnnot->m_pAnnotDict != NULL); 1542ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1543ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Document* pDoc = m_pPageView->GetPDFDocument();//pDocument->GetDocument(); 1544ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pDoc != NULL); 1545ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1546ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Dictionary* pAPDict = m_pAnnot->m_pAnnotDict->GetDict("AP"); 1547ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pAPDict != NULL); 1548ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1549ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Stream* pStream = pAPDict->GetStream(sAPType); 1550ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pStream != NULL); 1551ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1552ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Dictionary* pStreamDict = pStream->GetDict(); 1553ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pStreamDict != NULL); 1554ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1555ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteString sImageAlias = "IMG"; 1556ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1557ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (CPDF_Dictionary* pImageDict = pImage->GetDict()) 1558ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1559ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov sImageAlias = pImageDict->GetString("Name"); 1560ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (sImageAlias.IsEmpty()) 1561ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov sImageAlias = "IMG"; 1562ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1563ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1564ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Dictionary* pStreamResList = pStreamDict->GetDict("Resources"); 1565ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!pStreamResList) 1566ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1567ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pStreamResList = FX_NEW CPDF_Dictionary(); 1568ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pStreamDict->SetAt("Resources", pStreamResList); 1569ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1570ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1571ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pStreamResList) 1572ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1573ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Dictionary* pXObject = FX_NEW CPDF_Dictionary; 1574ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pXObject->SetAtReference(sImageAlias, pDoc, pImage); 1575ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pStreamResList->SetAt("XObject", pXObject); 1576ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1577ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1578ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1579ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPDFSDK_Widget::RemoveAppearance(const CFX_ByteString& sAPType) 1580ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1581ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_pAnnot != NULL); 1582ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_pAnnot->m_pAnnotDict != NULL); 1583ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1584ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (CPDF_Dictionary* pAPDict = m_pAnnot->m_pAnnotDict->GetDict("AP")) 1585ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1586ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pAPDict->RemoveAt(sAPType); 1587ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1588ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1589ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1590ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CPDFSDK_Widget::OnAAction(CPDF_AAction::AActionType type, PDFSDK_FieldAction& data, CPDFSDK_PageView* pPageView) 1591ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1592ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Action action = GetAAction(type); 1593ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1594ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (action && action.GetType() != CPDF_Action::Unknown) 1595ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1596ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_Document* pDocument = pPageView->GetSDKDocument(); 1597ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pDocument != NULL); 1598ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1599ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFDoc_Environment* pEnv = pDocument->GetEnv(); 1600ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pEnv != NULL); 1601ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1602ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_ActionHandler* pActionHandler = pEnv->GetActionHander();/*(CPDFSDK_ActionHandler*)pApp->GetActionHandler();*/ 1603ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pActionHandler != NULL); 1604ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1605ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return pActionHandler->DoAction_Field(action, type, pDocument, GetFormField(), data); 1606ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1607ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1608ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FALSE; 1609ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1610ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1611ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCPDF_Action CPDFSDK_Widget::GetAAction(CPDF_AAction::AActionType eAAT) 1612ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1613ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov switch (eAAT) 1614ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1615ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case CPDF_AAction::CursorEnter: 1616ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case CPDF_AAction::CursorExit: 1617ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case CPDF_AAction::ButtonDown: 1618ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case CPDF_AAction::ButtonUp: 1619ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case CPDF_AAction::GetFocus: 1620ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case CPDF_AAction::LoseFocus: 1621ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case CPDF_AAction::PageOpen: 1622ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case CPDF_AAction::PageClose: 1623ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case CPDF_AAction::PageVisible: 1624ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case CPDF_AAction::PageInvisible: 1625ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return CPDFSDK_Annot::GetAAction(eAAT); 1626ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case CPDF_AAction::KeyStroke: 1627ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case CPDF_AAction::Format: 1628ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case CPDF_AAction::Validate: 1629ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case CPDF_AAction::Calculate: 1630ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1631ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FormField* pField = this->GetFormField(); 1632ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pField != NULL); 1633ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1634ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (CPDF_AAction aa = pField->GetAdditionalAction()) 1635ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return aa.GetAction(eAAT); 1636ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 1637ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return CPDFSDK_Annot::GetAAction(eAAT); 1638ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1639ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov default: 1640ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return NULL; 1641ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1642ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1643ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return NULL; 1644ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1645ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1646ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1647ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCFX_WideString CPDFSDK_Widget::GetAlternateName() const 1648ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1649ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FormField* pFormField = GetFormField(); 1650ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pFormField != NULL); 1651ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1652ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return pFormField->GetAlternateName(); 1653ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1654ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1655ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_INT32 CPDFSDK_Widget::GetAppearanceAge() const 1656ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1657ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_nAppAge; 1658ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1659ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1660ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_INT32 CPDFSDK_Widget::GetValueAge() const 1661ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1662ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_nValueAge; 1663ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1664ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1665ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1666ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CPDFSDK_Widget::HitTest(FX_FLOAT pageX, FX_FLOAT pageY) 1667ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1668ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Annot* pAnnot = GetPDFAnnot(); 1669ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_FloatRect annotRect; 1670ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pAnnot->GetRect(annotRect); 1671ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(annotRect.Contains(pageX, pageY)) 1672ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1673ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!IsVisible()) return FALSE; 1674ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1675ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int nFieldFlags = GetFieldFlags(); 1676ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if ((nFieldFlags & FIELDFLAG_READONLY) == FIELDFLAG_READONLY) 1677ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FALSE; 1678ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1679ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return TRUE; 1680ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1681ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FALSE; 1682ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1683ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1684ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCPDFSDK_InterForm::CPDFSDK_InterForm(CPDFSDK_Document* pDocument) 1685ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov :m_pDocument(pDocument), 1686ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pInterForm(NULL), 1687ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_bCalculate(TRUE), 1688ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_bBusy(FALSE) 1689ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1690ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_pDocument != NULL); 1691ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pInterForm = new CPDF_InterForm(m_pDocument->GetDocument(), FALSE); 1692ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_pInterForm != NULL); 1693ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pInterForm->SetFormNotify(this); 1694ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1695ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov for(int i=0; i<6; i++) 1696ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_bNeedHightlight[i] = FALSE; 1697ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_iHighlightAlpha = 0; 1698ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1699ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1700ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCPDFSDK_InterForm::~CPDFSDK_InterForm() 1701ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1702ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_pInterForm != NULL); 1703ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov delete m_pInterForm; 1704ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pInterForm = NULL; 1705ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1706ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_Map.RemoveAll(); 1707ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1708ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1709ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPDFSDK_InterForm::Destroy() 1710ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1711ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov delete this; 1712ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1713ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1714ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCPDF_InterForm* CPDFSDK_InterForm::GetInterForm() 1715ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1716ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_pInterForm; 1717ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1718ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1719ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCPDFSDK_Document* CPDFSDK_InterForm::GetDocument() 1720ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1721ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_pDocument; 1722ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1723ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1724ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CPDFSDK_InterForm::HighlightWidgets() 1725ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1726ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FALSE; 1727ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1728ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1729ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCPDFSDK_Widget* CPDFSDK_InterForm::GetSibling(CPDFSDK_Widget* pWidget, FX_BOOL bNext) const 1730ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1731ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pWidget != NULL); 1732ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1733ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CBA_AnnotIterator* pIterator = new CBA_AnnotIterator(pWidget->GetPageView(), "Widget", ""); 1734ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pIterator != NULL); 1735ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1736ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_Widget* pRet = NULL; 1737ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1738ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bNext) 1739ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pRet = (CPDFSDK_Widget*)pIterator->GetNextAnnot(pWidget); 1740ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 1741ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pRet = (CPDFSDK_Widget*)pIterator->GetPrevAnnot(pWidget); 1742ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1743ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pIterator->Release(); 1744ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1745ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return pRet; 1746ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1747ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1748ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1749ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCPDFSDK_Widget* CPDFSDK_InterForm::GetWidget(CPDF_FormControl* pControl) const 1750ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1751ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(!pControl || !m_pInterForm) return NULL; 1752ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1753ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_Widget* pWidget = NULL; 1754ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_Map.Lookup(pControl, pWidget); 1755ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1756ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pWidget) return pWidget; 1757ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1758ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Dictionary* pControlDict = pControl->GetWidget(); 1759ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pControlDict != NULL); 1760ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1761ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_pDocument != NULL); 1762ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Document* pDocument = m_pDocument->GetDocument(); 1763ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1764ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_PageView* pPage = NULL; 1765ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1766ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (CPDF_Dictionary* pPageDict = pControlDict->GetDict("P")) 1767ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1768ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int nPageIndex = pDocument->GetPageIndex(pPageDict->GetObjNum()); 1769ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (nPageIndex >= 0) 1770ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1771ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pPage = m_pDocument->GetPageView(nPageIndex); 1772ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1773ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1774ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1775ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!pPage) 1776ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1777ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int nPageIndex = GetPageIndexByAnnotDict(pDocument, pControlDict); 1778ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (nPageIndex >= 0) 1779ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1780ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pPage = m_pDocument->GetPageView(nPageIndex); 1781ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1782ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1783ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1784ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pPage) 1785ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return (CPDFSDK_Widget*)pPage->GetAnnotByDict(pControlDict); 1786ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1787ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return NULL; 1788ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1789ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1790ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPDFSDK_InterForm::GetWidgets(const CFX_WideString& sFieldName, CFX_PtrArray& widgets) 1791ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1792ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_pInterForm != NULL); 1793ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1794ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov for (int i=0,sz=m_pInterForm->CountFields(sFieldName); i<sz; i++) 1795ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1796ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FormField* pFormField = m_pInterForm->GetField(i, sFieldName); 1797ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pFormField != NULL); 1798ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1799ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov GetWidgets(pFormField, widgets); 1800ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1801ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1802ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1803ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPDFSDK_InterForm::GetWidgets(CPDF_FormField* pField, CFX_PtrArray& widgets) 1804ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1805ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pField != NULL); 1806ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1807ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov for (int i=0,isz=pField->CountControls(); i<isz; i++) 1808ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1809ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FormControl* pFormCtrl = pField->GetControl(i); 1810ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pFormCtrl != NULL); 1811ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1812ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_Widget* pWidget = GetWidget(pFormCtrl); 1813ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1814ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pWidget) 1815ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov widgets.Add(pWidget); 1816ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1817ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1818ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1819ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovint CPDFSDK_InterForm::GetPageIndexByAnnotDict(CPDF_Document* pDocument, CPDF_Dictionary* pAnnotDict) const 1820ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1821ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pDocument != NULL); 1822ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pAnnotDict != NULL); 1823ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1824ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov for (int i=0,sz=pDocument->GetPageCount(); i<sz; i++) 1825ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1826ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (CPDF_Dictionary* pPageDict = pDocument->GetPage(i)) 1827ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1828ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (CPDF_Array* pAnnots = pPageDict->GetArray("Annots")) 1829ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1830ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov for (int j=0,jsz=pAnnots->GetCount(); j<jsz; j++) 1831ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1832ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Object* pDict = pAnnots->GetElementValue(j); 1833ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pAnnotDict == pDict) 1834ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1835ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return i; 1836ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1837ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1838ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1839ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1840ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1841ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1842ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return -1; 1843ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1844ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1845ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPDFSDK_InterForm::AddMap(CPDF_FormControl* pControl, CPDFSDK_Widget* pWidget) 1846ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1847ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_Map.SetAt(pControl, pWidget); 1848ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1849ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1850ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPDFSDK_InterForm::RemoveMap(CPDF_FormControl* pControl) 1851ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1852ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_Map.RemoveKey(pControl); 1853ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1854ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1855ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPDFSDK_InterForm::EnableCalculate(FX_BOOL bEnabled) 1856ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1857ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_bCalculate = bEnabled; 1858ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1859ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1860ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CPDFSDK_InterForm::IsCalculateEnabled() const 1861ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1862ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_bCalculate; 1863ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1864ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1865ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifdef _WIN32 1866ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCPDF_Stream* CPDFSDK_InterForm::LoadImageFromFile(const CFX_WideString& sFile) 1867ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1868ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_pDocument != NULL); 1869ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Document* pDocument = m_pDocument->GetDocument(); 1870ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pDocument != NULL); 1871ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1872ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Stream* pRetStream = NULL; 1873ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1874ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (CFX_DIBitmap* pBmp = CFX_WindowsDIB::LoadFromFile(sFile)) 1875ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1876ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int nWidth = pBmp->GetWidth(); 1877ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int nHeight = pBmp->GetHeight(); 1878ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1879ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Image Image(pDocument); 1880ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov Image.SetImage(pBmp, FALSE); 1881ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Stream* pImageStream = Image.GetStream(); 1882ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pImageStream) 1883ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1884ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pImageStream->GetObjNum() == 0) 1885ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pDocument->AddIndirectObject(pImageStream); 1886ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1887ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Dictionary* pStreamDict = new CPDF_Dictionary(); 1888ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pStreamDict->SetAtName("Subtype", "Form"); 1889ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pStreamDict->SetAtName("Name", "IMG"); 1890ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Array* pMatrix = new CPDF_Array(); 1891ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pStreamDict->SetAt("Matrix", pMatrix); 1892ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pMatrix->AddInteger(1); 1893ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pMatrix->AddInteger(0); 1894ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pMatrix->AddInteger(0); 1895ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pMatrix->AddInteger(1); 1896ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pMatrix->AddInteger(-nWidth / 2); 1897ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pMatrix->AddInteger(-nHeight / 2); 1898ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Dictionary* pResource = new CPDF_Dictionary(); 1899ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pStreamDict->SetAt("Resources", pResource); 1900ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Dictionary* pXObject = new CPDF_Dictionary(); 1901ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pResource->SetAt("XObject", pXObject); 1902ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pXObject->SetAtReference("Img", pDocument, pImageStream); 1903ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Array* pProcSet = new CPDF_Array(); 1904ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pResource->SetAt("ProcSet", pProcSet); 1905ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pProcSet->AddName("PDF"); 1906ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pProcSet->AddName("ImageC"); 1907ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pStreamDict->SetAtName("Type", "XObject"); 1908ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Array* pBBox = new CPDF_Array(); 1909ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pStreamDict->SetAt("BBox", pBBox); 1910ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pBBox->AddInteger(0); 1911ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pBBox->AddInteger(0); 1912ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pBBox->AddInteger(nWidth); 1913ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pBBox->AddInteger(nHeight); 1914ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pStreamDict->SetAtInteger("FormType", 1); 1915ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1916ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pRetStream = new CPDF_Stream(NULL, 0, NULL); 1917ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteString csStream; 1918ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov csStream.Format("q\n%d 0 0 %d 0 0 cm\n/Img Do\nQ", nWidth, nHeight); 1919ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pRetStream->InitStream((FX_BYTE*)(FX_LPCSTR)csStream, csStream.GetLength(), pStreamDict); 1920ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pDocument->AddIndirectObject(pRetStream); 1921ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1922ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1923ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov delete pBmp; 1924ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1925ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1926ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return pRetStream; 1927ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1928ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif 1929ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1930ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPDFSDK_InterForm::OnCalculate(CPDF_FormField* pFormField) 1931ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 1932ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_pDocument != NULL); 1933ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFDoc_Environment* pEnv = m_pDocument->GetEnv(); 1934ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pEnv); 1935ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(!pEnv->IsJSInitiated()) 1936ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return; 1937ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1938ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_bBusy) return; 1939ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1940ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_bBusy = TRUE; 1941ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1942ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (this->IsCalculateEnabled()) 1943ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1944ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IFXJS_Runtime* pRuntime = m_pDocument->GetJsRuntime(); 1945ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pRuntime != NULL); 1946ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1947ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pRuntime->SetReaderDocument(m_pDocument); 1948ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1949ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int nSize = m_pInterForm->CountFieldsInCalculationOrder(); 1950ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov for (int i=0; i<nSize; i++) 1951ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1952ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(CPDF_FormField* pField = m_pInterForm->GetFieldInCalculationOrder(i)) 1953ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1954ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// ASSERT(pField != NULL); 1955ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int nType = pField->GetFieldType(); 1956ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (nType == FIELDTYPE_COMBOBOX || nType == FIELDTYPE_TEXTFIELD) 1957ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1958ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_AAction aAction = pField->GetAdditionalAction(); 1959ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (aAction && aAction.ActionExist(CPDF_AAction::Calculate)) 1960ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1961ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Action action = aAction.GetAction(CPDF_AAction::Calculate); 1962ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (action) 1963ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1964ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_WideString csJS = action.GetJavaScript(); 1965ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!csJS.IsEmpty()) 1966ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1967ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IFXJS_Context* pContext = pRuntime->NewContext(); 1968ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pContext != NULL); 1969ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1970ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_WideString sOldValue = pField->GetValue(); 1971ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_WideString sValue = sOldValue; 1972ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL bRC = TRUE; 1973ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pContext->OnField_Calculate(pFormField, pField, sValue, bRC); 1974ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1975ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_WideString sInfo; 1976ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL bRet = pContext->RunScript(csJS, sInfo); 1977ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pRuntime->ReleaseContext(pContext); 1978ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1979ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bRet) 1980ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1981ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bRC) 1982ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 1983ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (sValue.Compare(sOldValue) != 0) 1984ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pField->SetValue(sValue, TRUE); 1985ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1986ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1987ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1988ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1989ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1990ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1991ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1992ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1993ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1994ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1995ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 1996ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 1997ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_bBusy = FALSE; 1998ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 1999ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2000ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCFX_WideString CPDFSDK_InterForm::OnFormat(CPDF_FormField* pFormField, int nCommitKey, FX_BOOL& bFormated) 2001ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2002ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_pDocument != NULL); 2003ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pFormField != NULL); 2004ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2005ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_WideString sValue = pFormField->GetValue(); 2006ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFDoc_Environment* pEnv = m_pDocument->GetEnv(); 2007ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pEnv); 2008ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(!pEnv->IsJSInitiated()) 2009ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2010ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov bFormated = FALSE; 2011ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return sValue; 2012ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2013ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2014ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IFXJS_Runtime* pRuntime = m_pDocument->GetJsRuntime(); 2015ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pRuntime != NULL); 2016ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2017ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pRuntime->SetReaderDocument(m_pDocument); 2018ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2019ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pFormField->GetFieldType() == FIELDTYPE_COMBOBOX) 2020ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2021ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pFormField->CountSelectedItems() > 0) 2022ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2023ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int index = pFormField->GetSelectedIndex(0); 2024ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (index >= 0) 2025ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov sValue = pFormField->GetOptionLabel(index); 2026ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2027ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2028ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2029ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov bFormated = FALSE; 2030ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2031ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_AAction aAction = pFormField->GetAdditionalAction(); 2032ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (aAction != NULL && aAction.ActionExist(CPDF_AAction::Format)) 2033ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2034ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Action action = aAction.GetAction(CPDF_AAction::Format); 2035ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (action) 2036ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2037ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_WideString script = action.GetJavaScript(); 2038ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!script.IsEmpty()) 2039ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2040ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_WideString Value = sValue; 2041ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2042ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IFXJS_Context* pContext = pRuntime->NewContext(); 2043ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pContext != NULL); 2044ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2045ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pContext->OnField_Format(nCommitKey, pFormField, Value, TRUE); 2046ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2047ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_WideString sInfo; 2048ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL bRet = pContext->RunScript(script, sInfo); 2049ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pRuntime->ReleaseContext(pContext); 2050ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2051ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bRet) 2052ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2053ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov sValue = Value; 2054ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov bFormated = TRUE; 2055ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2056ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2057ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2058ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2059ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2060ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return sValue; 2061ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2062ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2063ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPDFSDK_InterForm::ResetFieldAppearance(CPDF_FormField* pFormField, FX_LPCWSTR sValue, FX_BOOL bValueChanged) 2064ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2065ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pFormField != NULL); 2066ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2067ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov for (int i=0,sz=pFormField->CountControls(); i<sz; i++) 2068ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2069ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FormControl* pFormCtrl = pFormField->GetControl(i); 2070ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pFormCtrl != NULL); 2071ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2072ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_pInterForm != NULL); 2073ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(CPDFSDK_Widget* pWidget = GetWidget(pFormCtrl)) 2074ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pWidget->ResetAppearance(sValue, bValueChanged); 2075ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2076ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2077ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2078ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPDFSDK_InterForm::UpdateField(CPDF_FormField* pFormField) 2079ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2080ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pFormField != NULL); 2081ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2082ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov for (int i=0,sz=pFormField->CountControls(); i<sz; i++) 2083ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2084ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FormControl* pFormCtrl = pFormField->GetControl(i); 2085ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pFormCtrl != NULL); 2086ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2087ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(CPDFSDK_Widget* pWidget = GetWidget(pFormCtrl)) 2088ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2089ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFDoc_Environment * pEnv = m_pDocument->GetEnv(); 2090ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFFL_IFormFiller* pIFormFiller = pEnv->GetIFormFiller(); 2091ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2092ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Page * pPage = pWidget->GetPDFPage(); 2093ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_PageView * pPageView = m_pDocument->GetPageView(pPage,FALSE); 2094ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2095ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_RECT rcBBox = pIFormFiller->GetViewBBox(pPageView, pWidget); 2096ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2097ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pEnv->FFI_Invalidate(pPage,rcBBox.left, rcBBox.top, rcBBox.right, rcBBox.bottom); 2098ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2099ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2100ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2101ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2102ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPDFSDK_InterForm::OnKeyStrokeCommit(CPDF_FormField* pFormField, CFX_WideString& csValue, FX_BOOL& bRC) 2103ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2104ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pFormField != NULL); 2105ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2106ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_AAction aAction = pFormField->GetAdditionalAction(); 2107ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (aAction != NULL && aAction.ActionExist(CPDF_AAction::KeyStroke)) 2108ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2109ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Action action = aAction.GetAction(CPDF_AAction::KeyStroke); 2110ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (action) 2111ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2112ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_pDocument != NULL); 2113ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFDoc_Environment* pEnv = m_pDocument->GetEnv(); 2114ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pEnv != NULL); 2115ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2116ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_ActionHandler* pActionHandler = pEnv->GetActionHander(); 2117ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pActionHandler != NULL); 2118ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2119ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov PDFSDK_FieldAction fa; 2120ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov fa.bModifier = pEnv->FFI_IsCTRLKeyDown(0); 2121ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov fa.bShift = pEnv->FFI_IsSHIFTKeyDown(0); 2122ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov fa.sValue = csValue; 2123ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2124ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pActionHandler->DoAction_FieldJavaScript(action, CPDF_AAction::KeyStroke, 2125ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pDocument, pFormField, fa); 2126ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov bRC = fa.bRC; 2127ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2128ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2129ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2130ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2131ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPDFSDK_InterForm::OnValidate(CPDF_FormField* pFormField, CFX_WideString& csValue, FX_BOOL& bRC) 2132ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2133ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pFormField != NULL); 2134ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2135ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_AAction aAction = pFormField->GetAdditionalAction(); 2136ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (aAction != NULL && aAction.ActionExist(CPDF_AAction::Validate)) 2137ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2138ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Action action = aAction.GetAction(CPDF_AAction::Validate); 2139ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (action) 2140ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2141ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_pDocument != NULL); 2142ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFDoc_Environment* pEnv = m_pDocument->GetEnv(); 2143ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pEnv != NULL); 2144ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2145ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_ActionHandler* pActionHandler = pEnv->GetActionHander(); 2146ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pActionHandler != NULL); 2147ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2148ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov PDFSDK_FieldAction fa; 2149ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov fa.bModifier = pEnv->FFI_IsCTRLKeyDown(0); 2150ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov fa.bShift = pEnv->FFI_IsSHIFTKeyDown(0); 2151ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov fa.sValue = csValue; 2152ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2153ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pActionHandler->DoAction_FieldJavaScript(action, CPDF_AAction::Validate, m_pDocument, pFormField, fa); 2154ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov bRC = fa.bRC; 2155ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2156ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2157ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2158ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2159ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2160ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* ----------------------------- action ----------------------------- */ 2161ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2162ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CPDFSDK_InterForm::DoAction_Hide(const CPDF_Action& action) 2163ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2164ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(action != NULL); 2165ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2166ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_ActionFields af = action.GetWidgets(); 2167ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_PtrArray fieldObjects; 2168ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov af.GetAllFields(fieldObjects); 2169ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_PtrArray widgetArray; 2170ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_PtrArray fields; 2171ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov GetFieldFromObjects(fieldObjects, fields); 2172ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2173ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL bHide = action.GetHideStatus(); 2174ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2175ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL bChanged = FALSE; 2176ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2177ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov for (int i=0, sz=fields.GetSize(); i<sz; i++) 2178ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2179ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FormField* pField = (CPDF_FormField*)fields[i]; 2180ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pField != NULL); 2181ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2182ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2183ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov for (int j=0,jsz=pField->CountControls(); j<jsz; j++) 2184ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2185ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FormControl* pControl = pField->GetControl(j); 2186ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pControl != NULL); 2187ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2188ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (CPDFSDK_Widget* pWidget = GetWidget(pControl)) 2189ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2190ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int nFlags = pWidget->GetFlags(); 2191ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bHide) 2192ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2193ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nFlags &= (~ANNOTFLAG_INVISIBLE); 2194ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nFlags &= (~ANNOTFLAG_NOVIEW); 2195ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nFlags |= (ANNOTFLAG_HIDDEN); 2196ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2197ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 2198ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2199ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nFlags &= (~ANNOTFLAG_INVISIBLE); 2200ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nFlags &= (~ANNOTFLAG_HIDDEN); 2201ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nFlags &= (~ANNOTFLAG_NOVIEW); 2202ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2203ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pWidget->SetFlags(nFlags); 2204ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2205ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_PageView* pPageView = pWidget->GetPageView(); 2206ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pPageView != NULL); 2207ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2208ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pPageView->UpdateView(pWidget); 2209ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2210ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov bChanged = TRUE; 2211ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2212ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2213ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2214ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2215ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return bChanged; 2216ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2217ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2218ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CPDFSDK_InterForm::DoAction_SubmitForm(const CPDF_Action& action) 2219ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2220ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(action != NULL); 2221ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_pInterForm != NULL); 2222ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2223ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_WideString sDestination = action.GetFilePath(); 2224ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (sDestination.IsEmpty()) return FALSE; 2225ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2226ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Dictionary* pActionDict = action; 2227ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pActionDict->KeyExist("Fields")) 2228ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2229ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_ActionFields af = action.GetWidgets(); 2230ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_DWORD dwFlags = action.GetFlags(); 2231ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2232ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_PtrArray fieldObjects; 2233ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov af.GetAllFields(fieldObjects); 2234ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_PtrArray fields; 2235ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov GetFieldFromObjects(fieldObjects, fields); 2236ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2237ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (fields.GetSize() != 0) 2238ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2239ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL bIncludeOrExclude = !(dwFlags & 0x01); 2240ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pInterForm->CheckRequiredFields(&fields, bIncludeOrExclude)) 2241ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2242ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FALSE; 2243ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2244ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SubmitFields(sDestination, fields, bIncludeOrExclude, FALSE); 2245ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2246ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 2247ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2248ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if ( m_pInterForm->CheckRequiredFields()) 2249ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2250ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FALSE; 2251ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2252ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2253ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SubmitForm(sDestination, FALSE); 2254ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2255ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2256ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 2257ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2258ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if ( m_pInterForm->CheckRequiredFields()) 2259ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2260ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FALSE; 2261ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2262ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2263ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return SubmitForm(sDestination, FALSE); 2264ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2265ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2266ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2267ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CPDFSDK_InterForm::SubmitFields(const CFX_WideString& csDestination, const CFX_PtrArray& fields, 2268ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL bIncludeOrExclude, FX_BOOL bUrlEncoded) 2269ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2270ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFDoc_Environment* pEnv = m_pDocument->GetEnv(); 2271ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pEnv != NULL); 2272ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2273ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteTextBuf textBuf; 2274ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ExportFieldsToFDFTextBuf(fields, bIncludeOrExclude, textBuf); 2275ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2276ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_LPBYTE pBuffer = textBuf.GetBuffer(); 2277ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_STRSIZE nBufSize = textBuf.GetLength(); 2278ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2279ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bUrlEncoded) 2280ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2281ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(!FDFToURLEncodedData(pBuffer, nBufSize)) 2282ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FALSE; 2283ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2284ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2285ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pEnv->JS_docSubmitForm(pBuffer, nBufSize, (FX_LPCWSTR)csDestination); 2286ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2287ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bUrlEncoded && pBuffer) 2288ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2289ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_Free(pBuffer); 2290ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pBuffer = NULL; 2291ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2292ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2293ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return TRUE; 2294ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2295ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2296ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPDFSDK_InterForm::DoFDFBuffer(CFX_ByteString sBuffer) 2297ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2298ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_pDocument != NULL); 2299ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2300ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (CFDF_Document *pFDFDocument = CFDF_Document::ParseMemory((const unsigned char *)sBuffer.GetBuffer(sBuffer.GetLength()), sBuffer.GetLength())) 2301ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2302ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Dictionary* pRootDic = pFDFDocument->GetRoot(); 2303ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(pRootDic) 2304ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2305ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Dictionary * pFDFDict=pRootDic->GetDict("FDF"); 2306ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(pFDFDict) 2307ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2308ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Dictionary * pJSDict = pFDFDict->GetDict("JavaScript"); 2309ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(pJSDict) 2310ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2311ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_WideString csJS; 2312ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2313ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Object* pJS = pJSDict->GetElementValue("Before"); 2314ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pJS != NULL) 2315ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2316ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int iType = pJS->GetType(); 2317ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (iType == PDFOBJ_STRING) 2318ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov csJS = pJSDict->GetUnicodeText("Before"); 2319ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else if (iType == PDFOBJ_STREAM) 2320ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov csJS = pJS->GetUnicodeText(); 2321ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2322ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2323ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2324ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2325ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2326ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov delete pFDFDocument; 2327ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2328ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2329ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov sBuffer.ReleaseBuffer(); 2330ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2331ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2332ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CPDFSDK_InterForm::FDFToURLEncodedData(CFX_WideString csFDFFile, CFX_WideString csTxtFile) 2333ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2334ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return TRUE; 2335ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2336ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2337ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CPDFSDK_InterForm::FDFToURLEncodedData(FX_LPBYTE& pBuf, FX_STRSIZE& nBufSize) 2338ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2339ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFDF_Document* pFDF = CFDF_Document::ParseMemory(pBuf, nBufSize); 2340ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pFDF) 2341ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2342ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Dictionary* pMainDict = pFDF->GetRoot()->GetDict("FDF"); 2343ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pMainDict == NULL) return FALSE; 2344ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2345ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // Get fields 2346ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Array* pFields = pMainDict->GetArray("Fields"); 2347ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pFields == NULL) return FALSE; 2348ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2349ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteTextBuf fdfEncodedData; 2350ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2351ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov for (FX_DWORD i = 0; i < pFields->GetCount(); i ++) 2352ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2353ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Dictionary* pField = pFields->GetDict(i); 2354ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pField == NULL) continue; 2355ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_WideString name; 2356ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov name = pField->GetUnicodeText("T"); 2357ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteString name_b = CFX_ByteString::FromUnicode(name); 2358ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteString csBValue = pField->GetString("V"); 2359ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_WideString csWValue = PDF_DecodeText(csBValue); 2360ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteString csValue_b = CFX_ByteString::FromUnicode(csWValue); 2361ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2362ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov fdfEncodedData = fdfEncodedData<<name_b.GetBuffer(name_b.GetLength()); 2363ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov name_b.ReleaseBuffer(); 2364ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov fdfEncodedData = fdfEncodedData<<"="; 2365ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov fdfEncodedData = fdfEncodedData<<csValue_b.GetBuffer(csValue_b.GetLength()); 2366ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov csValue_b.ReleaseBuffer(); 2367ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(i != pFields->GetCount()-1) 2368ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov fdfEncodedData = fdfEncodedData<<"&"; 2369ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2370ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2371ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nBufSize = fdfEncodedData.GetLength(); 2372ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pBuf = FX_Alloc(FX_BYTE, nBufSize); 2373ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(!pBuf) 2374ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FALSE; 2375ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FXSYS_memcpy(pBuf, fdfEncodedData.GetBuffer(), nBufSize); 2376ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2377ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2378ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return TRUE; 2379ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2380ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2381ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CPDFSDK_InterForm::ExportFieldsToFDFFile(const CFX_WideString& sFDFFileName, 2382ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const CFX_PtrArray& fields, FX_BOOL bIncludeOrExclude) 2383ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2384ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (sFDFFileName.IsEmpty()) return FALSE; 2385ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_pDocument != NULL); 2386ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_pInterForm != NULL); 2387ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2388ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFDF_Document* pFDF = m_pInterForm->ExportToFDF(m_pDocument->GetPath(),(CFX_PtrArray&)fields, bIncludeOrExclude); 2389ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!pFDF) return FALSE; 2390ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL bRet = pFDF->WriteFile(sFDFFileName.UTF8Encode()); // = FALSE;// 2391ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov delete pFDF; 2392ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2393ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return bRet; 2394ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2395ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CPDFSDK_InterForm::ExportFieldsToFDFTextBuf(const CFX_PtrArray& fields,FX_BOOL bIncludeOrExclude, CFX_ByteTextBuf& textBuf) 2396ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2397ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_pDocument != NULL); 2398ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_pInterForm != NULL); 2399ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2400ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFDF_Document* pFDF = m_pInterForm->ExportToFDF(m_pDocument->GetPath(),(CFX_PtrArray&)fields, bIncludeOrExclude); 2401ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!pFDF) return FALSE; 2402ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL bRet = pFDF->WriteBuf(textBuf); // = FALSE;// 2403ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov delete pFDF; 2404ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2405ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return bRet; 2406ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2407ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2408ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCFX_WideString CPDFSDK_InterForm::GetTemporaryFileName(const CFX_WideString& sFileExt) 2409ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2410ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_WideString sFileName; 2411ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return L""; 2412ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2413ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2414ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CPDFSDK_InterForm::SubmitForm(const CFX_WideString& sDestination, FX_BOOL bUrlEncoded) 2415ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2416ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (sDestination.IsEmpty()) return FALSE; 2417ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2418ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFDoc_Environment* pEnv = m_pDocument->GetEnv(); 2419ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pEnv != NULL); 2420ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2421ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(NULL == m_pDocument) return FALSE; 2422ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_WideString wsPDFFilePath = m_pDocument->GetPath(); 2423ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2424ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(NULL == m_pInterForm) return FALSE; 2425ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFDF_Document* pFDFDoc = m_pInterForm->ExportToFDF(wsPDFFilePath); 2426ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (NULL == pFDFDoc) return FALSE; 2427ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2428ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteTextBuf FdfBuffer; 2429ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL bRet = pFDFDoc->WriteBuf(FdfBuffer); 2430ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov delete pFDFDoc; 2431ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!bRet) return FALSE; 2432ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2433ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_LPBYTE pBuffer = FdfBuffer.GetBuffer(); 2434ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_STRSIZE nBufSize = FdfBuffer.GetLength(); 2435ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2436ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bUrlEncoded) 2437ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2438ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(!FDFToURLEncodedData(pBuffer, nBufSize)) 2439ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FALSE; 2440ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2441ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2442ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pEnv->JS_docSubmitForm(pBuffer, nBufSize, (FX_LPCWSTR)sDestination); 2443ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2444ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bUrlEncoded && pBuffer) 2445ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2446ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_Free(pBuffer); 2447ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pBuffer = NULL; 2448ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2449ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2450ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return TRUE; 2451ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2452ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2453ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CPDFSDK_InterForm::ExportFormToFDFFile(const CFX_WideString& sFDFFileName) 2454ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2455ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (sFDFFileName.IsEmpty()) return FALSE; 2456ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2457ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_pInterForm != NULL); 2458ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_pDocument != NULL); 2459ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2460ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFDF_Document* pFDF = m_pInterForm->ExportToFDF(m_pDocument->GetPath()); 2461ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!pFDF) return FALSE; 2462ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2463ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL bRet = pFDF->WriteFile(sFDFFileName.UTF8Encode()); 2464ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov delete pFDF; 2465ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2466ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return bRet; 2467ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2468ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2469ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CPDFSDK_InterForm::ExportFormToFDFTextBuf(CFX_ByteTextBuf& textBuf) 2470ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2471ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2472ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_pInterForm != NULL); 2473ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_pDocument != NULL); 2474ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2475ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFDF_Document* pFDF = m_pInterForm->ExportToFDF(m_pDocument->GetPath()); 2476ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!pFDF) return FALSE; 2477ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2478ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL bRet = pFDF->WriteBuf(textBuf); 2479ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov delete pFDF; 2480ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2481ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return bRet; 2482ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2483ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2484ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CPDFSDK_InterForm::ExportFormToTxtFile(const CFX_WideString& sTxtFileName) 2485ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2486ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_pInterForm != NULL); 2487ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2488ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_WideString sFieldNames; 2489ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_WideString sFieldValues; 2490ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2491ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int nSize = m_pInterForm->CountFields(); 2492ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2493ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (nSize > 0) 2494ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2495ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov for (int i=0; i<nSize; i++) 2496ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2497ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FormField* pField = m_pInterForm->GetField(i); 2498ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pField != NULL); 2499ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2500ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (i != 0) 2501ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2502ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov sFieldNames += L"\t"; 2503ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov sFieldValues += L"\t"; 2504ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2505ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov sFieldNames += pField->GetFullName(); 2506ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov sFieldValues += pField->GetValue(); 2507ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2508ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2509ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return TRUE; 2510ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2511ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2512ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FALSE; 2513ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2514ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2515ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CPDFSDK_InterForm::ImportFormFromTxtFile(const CFX_WideString& sTxtFileName) 2516ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2517ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_pInterForm != NULL); 2518ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2519ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return TRUE; 2520ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2521ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2522ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CPDFSDK_InterForm::DoAction_ResetForm(const CPDF_Action& action) 2523ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2524ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(action != NULL); 2525ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2526ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Dictionary* pActionDict = action; 2527ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2528ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pActionDict->KeyExist("Fields")) 2529ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2530ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_ActionFields af = action.GetWidgets(); 2531ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_DWORD dwFlags = action.GetFlags(); 2532ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2533ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_PtrArray fieldObjects; 2534ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov af.GetAllFields(fieldObjects); 2535ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_PtrArray fields; 2536ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov GetFieldFromObjects(fieldObjects, fields); 2537ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2538ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_pInterForm != NULL); 2539ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2540ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_pInterForm->ResetForm(fields, !(dwFlags & 0x01), TRUE); 2541ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2542ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 2543ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2544ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_pInterForm != NULL); 2545ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_pInterForm->ResetForm(TRUE); 2546ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2547ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2548ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2549ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CPDFSDK_InterForm::DoAction_ImportData(const CPDF_Action& action) 2550ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2551ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(action != NULL); 2552ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2553ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_WideString sFilePath = action.GetFilePath(); 2554ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (sFilePath.IsEmpty()) 2555ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FALSE; 2556ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2557ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!ImportFormFromFDFFile(sFilePath, TRUE)) 2558ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2559ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FALSE; 2560ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2561ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2562ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return TRUE; 2563ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2564ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2565ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CPDFSDK_InterForm::ImportFormFromFDFFile(const CFX_WideString& csFDFFileName, 2566ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL bNotify) 2567ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2568ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FALSE; 2569ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2570ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2571ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPDFSDK_InterForm::GetFieldFromObjects(const CFX_PtrArray& objects, CFX_PtrArray& fields) 2572ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2573ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_pInterForm != NULL); 2574ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2575ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int iCount = objects.GetSize(); 2576ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov for (int i = 0; i < iCount; i ++) 2577ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2578ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Object* pObject = (CPDF_Object*)objects[i]; 2579ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pObject == NULL) continue; 2580ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2581ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int iType = pObject->GetType(); 2582ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (iType == PDFOBJ_STRING) 2583ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2584ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_WideString csName = pObject->GetUnicodeText(); 2585ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FormField* pField = m_pInterForm->GetField(0, csName); 2586ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pField != NULL) 2587ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov fields.Add(pField); 2588ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2589ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else if (iType == PDFOBJ_DICTIONARY) 2590ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2591ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pInterForm->IsValidFormField(pObject)) 2592ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov fields.Add(pObject); 2593ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2594ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2595ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2596ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2597ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* ----------------------------- CPDF_FormNotify ----------------------------- */ 2598ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2599ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovint CPDFSDK_InterForm::BeforeValueChange(const CPDF_FormField* pField, CFX_WideString& csValue) 2600ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2601ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pField != NULL); 2602ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2603ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FormField* pFormField = (CPDF_FormField*)pField; 2604ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2605ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int nType = pFormField->GetFieldType(); 2606ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (nType == FIELDTYPE_COMBOBOX || nType == FIELDTYPE_TEXTFIELD) 2607ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2608ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL bRC = TRUE; 2609ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov OnKeyStrokeCommit(pFormField, csValue, bRC); 2610ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bRC) 2611ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2612ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov OnValidate(pFormField, csValue, bRC); 2613ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bRC) 2614ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return 1; 2615ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 2616ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return -1; 2617ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2618ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 2619ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return -1; 2620ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2621ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 2622ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return 0; 2623ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2624ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2625ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovint CPDFSDK_InterForm::AfterValueChange(const CPDF_FormField* pField) 2626ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2627ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pField != NULL); 2628ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2629ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FormField* pFormField = (CPDF_FormField*)pField; 2630ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int nType = pFormField->GetFieldType(); 2631ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2632ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (nType == FIELDTYPE_COMBOBOX || nType == FIELDTYPE_TEXTFIELD) 2633ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2634ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov this->OnCalculate(pFormField); 2635ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL bFormated = FALSE; 2636ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_WideString sValue = this->OnFormat(pFormField, 0, bFormated); 2637ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bFormated) 2638ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov this->ResetFieldAppearance(pFormField, sValue, TRUE); 2639ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 2640ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov this->ResetFieldAppearance(pFormField, NULL, TRUE); 2641ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov this->UpdateField(pFormField); 2642ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2643ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2644ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return 0; 2645ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2646ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2647ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovint CPDFSDK_InterForm::BeforeSelectionChange(const CPDF_FormField* pField, CFX_WideString& csValue) 2648ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2649ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pField != NULL); 2650ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2651ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FormField* pFormField = (CPDF_FormField*)pField; 2652ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2653ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int nType = pFormField->GetFieldType(); 2654ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (nType == FIELDTYPE_LISTBOX) 2655ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2656ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL bRC = TRUE; 2657ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov OnKeyStrokeCommit(pFormField, csValue, bRC); 2658ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bRC) 2659ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2660ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov OnValidate(pFormField, csValue, bRC); 2661ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bRC) 2662ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return 1; 2663ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 2664ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return -1; 2665ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2666ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 2667ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return -1; 2668ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2669ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 2670ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return 0; 2671ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2672ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2673ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovint CPDFSDK_InterForm::AfterSelectionChange(const CPDF_FormField* pField) 2674ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2675ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pField != NULL); 2676ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2677ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FormField* pFormField = (CPDF_FormField*)pField; 2678ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int nType = pFormField->GetFieldType(); 2679ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2680ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (nType == FIELDTYPE_LISTBOX) 2681ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2682ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov this->OnCalculate(pFormField); 2683ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov this->ResetFieldAppearance(pFormField, NULL, TRUE); 2684ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov this->UpdateField(pFormField); 2685ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2686ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2687ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return 0; 2688ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2689ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2690ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovint CPDFSDK_InterForm::AfterCheckedStatusChange(const CPDF_FormField* pField, const CFX_ByteArray& statusArray) 2691ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2692ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pField != NULL); 2693ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2694ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FormField* pFormField = (CPDF_FormField*)pField; 2695ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int nType = pFormField->GetFieldType(); 2696ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2697ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (nType == FIELDTYPE_CHECKBOX || nType == FIELDTYPE_RADIOBUTTON) 2698ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2699ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov this->OnCalculate(pFormField); 2700ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov //this->ResetFieldAppearance(pFormField, NULL); 2701ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov this->UpdateField(pFormField); 2702ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2703ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2704ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return 0; 2705ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2706ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2707ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovint CPDFSDK_InterForm::BeforeFormReset(const CPDF_InterForm* pForm) 2708ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2709ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return 0; 2710ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2711ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2712ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovint CPDFSDK_InterForm::AfterFormReset(const CPDF_InterForm* pForm) 2713ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2714ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov this->OnCalculate(NULL); 2715ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2716ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return 0; 2717ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2718ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2719ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovint CPDFSDK_InterForm::BeforeFormImportData(const CPDF_InterForm* pForm) 2720ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2721ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return 0; 2722ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2723ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2724ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovint CPDFSDK_InterForm::AfterFormImportData(const CPDF_InterForm* pForm) 2725ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2726ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov this->OnCalculate(NULL); 2727ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2728ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return 0; 2729ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2730ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2731ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CPDFSDK_InterForm::IsNeedHighLight(int nFieldType) 2732ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2733ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(nFieldType <1 || nFieldType > 6) 2734ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FALSE; 2735ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_bNeedHightlight[nFieldType-1]; 2736ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2737ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2738ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPDFSDK_InterForm::RemoveAllHighLight() 2739ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2740ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov memset((void*)m_bNeedHightlight, 0, 6*sizeof(FX_BOOL)); 2741ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2742ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPDFSDK_InterForm::SetHighlightColor(FX_COLORREF clr, int nFieldType) 2743ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2744ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(nFieldType <0 || nFieldType > 6) return; 2745ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov switch(nFieldType) 2746ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2747ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case 0: 2748ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2749ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov for(int i=0; i<6; i++) 2750ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2751ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_aHighlightColor[i] = clr; 2752ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_bNeedHightlight[i] = TRUE; 2753ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2754ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 2755ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2756ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov default: 2757ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2758ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_aHighlightColor[nFieldType-1] = clr; 2759ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_bNeedHightlight[nFieldType-1] = TRUE; 2760ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 2761ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2762ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2763ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2764ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2765ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2766ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_COLORREF CPDFSDK_InterForm::GetHighlightColor(int nFieldType) 2767ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2768ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(nFieldType <0 || nFieldType >6) return FXSYS_RGB(255,255,255); 2769ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(nFieldType == 0) 2770ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_aHighlightColor[0]; 2771ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 2772ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_aHighlightColor[nFieldType-1]; 2773ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2774ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2775ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* ------------------------- CBA_AnnotIterator ------------------------- */ 2776ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2777ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCBA_AnnotIterator::CBA_AnnotIterator(CPDFSDK_PageView* pPageView, const CFX_ByteString& sType, const CFX_ByteString& sSubType) 2778ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov :m_pPageView(pPageView), 2779ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_sType(sType), 2780ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_sSubType(sSubType), 2781ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_nTabs(BAI_STRUCTURE) 2782ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2783ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_pPageView != NULL); 2784ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2785ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Page* pPDFPage = m_pPageView->GetPDFPage(); 2786ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pPDFPage != NULL); 2787ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pPDFPage->m_pFormDict != NULL); 2788ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2789ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteString sTabs = pPDFPage->m_pFormDict->GetString("Tabs"); 2790ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2791ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (sTabs == "R") 2792ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2793ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_nTabs = BAI_ROW; 2794ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2795ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else if (sTabs == "C") 2796ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2797ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_nTabs = BAI_COLUMN; 2798ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2799ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 2800ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2801ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_nTabs = BAI_STRUCTURE; 2802ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2803ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2804ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov GenerateResults(); 2805ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2806ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2807ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCBA_AnnotIterator::~CBA_AnnotIterator() 2808ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2809ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_Annots.RemoveAll(); 2810ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2811ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2812ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCPDFSDK_Annot* CBA_AnnotIterator::GetFirstAnnot() 2813ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2814ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_Annots.GetSize() > 0) 2815ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_Annots[0]; 2816ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2817ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return NULL; 2818ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2819ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2820ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCPDFSDK_Annot* CBA_AnnotIterator::GetLastAnnot() 2821ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2822ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_Annots.GetSize() > 0) 2823ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_Annots[m_Annots.GetSize() - 1]; 2824ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2825ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return NULL; 2826ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2827ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2828ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCPDFSDK_Annot* CBA_AnnotIterator::GetNextAnnot(CPDFSDK_Annot* pAnnot) 2829ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2830ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov for (int i=0,sz=m_Annots.GetSize(); i<sz; i++) 2831ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2832ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_Annots[i] == pAnnot) 2833ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2834ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (i+1 < sz) 2835ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_Annots[i+1]; 2836ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 2837ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_Annots[0]; 2838ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2839ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2840ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2841ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return NULL; 2842ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2843ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2844ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCPDFSDK_Annot* CBA_AnnotIterator::GetPrevAnnot(CPDFSDK_Annot* pAnnot) 2845ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2846ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov for (int i=0,sz=m_Annots.GetSize(); i<sz; i++) 2847ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2848ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_Annots[i] == pAnnot) 2849ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2850ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (i-1 >= 0) 2851ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_Annots[i-1]; 2852ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 2853ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_Annots[sz-1]; 2854ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2855ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2856ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2857ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return NULL; 2858ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2859ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2860ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovint CBA_AnnotIterator::CompareByLeft(CPDFSDK_Annot* p1, CPDFSDK_Annot* p2) 2861ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2862ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(p1 != NULL); 2863ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(p2 != NULL); 2864ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2865ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect rcAnnot1 = GetAnnotRect(p1); 2866ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect rcAnnot2 = GetAnnotRect(p2); 2867ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2868ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (rcAnnot1.left < rcAnnot2.left) 2869ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return -1; 2870ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (rcAnnot1.left > rcAnnot2.left) 2871ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return 1; 2872ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return 0; 2873ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2874ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2875ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2876ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovint CBA_AnnotIterator::CompareByTop(CPDFSDK_Annot* p1, CPDFSDK_Annot* p2) 2877ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2878ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(p1 != NULL); 2879ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(p2 != NULL); 2880ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2881ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect rcAnnot1 = GetAnnotRect(p1); 2882ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect rcAnnot2 = GetAnnotRect(p2); 2883ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2884ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (rcAnnot1.top < rcAnnot2.top) 2885ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return -1; 2886ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (rcAnnot1.top > rcAnnot2.top) 2887ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return 1; 2888ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return 0; 2889ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 2890ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2891ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CBA_AnnotIterator::GenerateResults() 2892ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 2893ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(m_pPageView != NULL); 2894ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2895ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov switch (m_nTabs) 2896ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2897ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case BAI_STRUCTURE: 2898ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2899ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov for (int i=0,sz=m_pPageView->CountAnnots(); i<sz; i++) 2900ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2901ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_Annot* pAnnot = m_pPageView->GetAnnot(i); 2902ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pAnnot != NULL); 2903ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2904ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pAnnot->GetType() == m_sType 2905ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov && pAnnot->GetSubType() == m_sSubType) 2906ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_Annots.Add(pAnnot); 2907ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2908ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2909ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 2910ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case BAI_ROW: 2911ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2912ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_SortAnnots sa; 2913ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2914ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2915ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2916ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov for (int i=0,sz=m_pPageView->CountAnnots(); i<sz; i++) 2917ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2918ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_Annot* pAnnot = m_pPageView->GetAnnot(i); 2919ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pAnnot != NULL); 2920ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2921ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pAnnot->GetType() == m_sType 2922ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov && pAnnot->GetSubType() == m_sSubType) 2923ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov sa.Add(pAnnot); 2924ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2925ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2926ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2927ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (sa.GetSize() > 0) 2928ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2929ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov sa.Sort(CBA_AnnotIterator::CompareByLeft); 2930ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2931ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2932ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov while (sa.GetSize() > 0) 2933ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2934ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int nLeftTopIndex = -1; 2935ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2936ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2937ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT fTop = 0.0f; 2938ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2939ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov for (int i=sa.GetSize()-1; i>=0; i--) 2940ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2941ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_Annot* pAnnot = sa.GetAt(i); 2942ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pAnnot != NULL); 2943ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2944ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect rcAnnot = GetAnnotRect(pAnnot); 2945ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2946ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (rcAnnot.top > fTop) 2947ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2948ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nLeftTopIndex = i; 2949ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov fTop = rcAnnot.top; 2950ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2951ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2952ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2953ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2954ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (nLeftTopIndex >= 0) 2955ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2956ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_Annot* pLeftTopAnnot = sa.GetAt(nLeftTopIndex); 2957ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pLeftTopAnnot != NULL); 2958ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2959ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect rcLeftTop = GetAnnotRect(pLeftTopAnnot); 2960ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2961ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_Annots.Add(pLeftTopAnnot); 2962ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov sa.RemoveAt(nLeftTopIndex); 2963ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2964ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ArrayTemplate<int> aSelect; 2965ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2966ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2967ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov for (int i=0,sz=sa.GetSize(); i<sz; i++) 2968ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2969ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_Annot* pAnnot = sa.GetAt(i); 2970ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pAnnot != NULL); 2971ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2972ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect rcAnnot = GetAnnotRect(pAnnot); 2973ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2974ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT fCenterY = (rcAnnot.top + rcAnnot.bottom) / 2.0f; 2975ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2976ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (fCenterY > rcLeftTop.bottom && fCenterY < rcLeftTop.top) 2977ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov aSelect.Add(i); 2978ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2979ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2980ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2981ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2982ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov for (int i=0,sz=aSelect.GetSize(); i<sz; i++) 2983ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2984ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_Annots.Add(sa[aSelect[i]]); 2985ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2986ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2987ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2988ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2989ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov for (int i=aSelect.GetSize()-1; i>=0; i--) 2990ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 2991ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov sa.RemoveAt(aSelect[i]); 2992ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2993ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2994ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 2995ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov aSelect.RemoveAll(); 2996ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2997ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 2998ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov sa.RemoveAll(); 2999ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3000ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 3001ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case BAI_COLUMN: 3002ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3003ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_SortAnnots sa; 3004ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3005ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3006ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov for (int i=0,sz=m_pPageView->CountAnnots(); i<sz; i++) 3007ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3008ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_Annot* pAnnot = m_pPageView->GetAnnot(i); 3009ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pAnnot != NULL); 3010ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3011ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (pAnnot->GetType() == m_sType 3012ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov && pAnnot->GetSubType() == m_sSubType) 3013ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov sa.Add(pAnnot); 3014ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3015ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3016ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3017ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (sa.GetSize() > 0) 3018ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3019ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov sa.Sort(CBA_AnnotIterator::CompareByTop, FALSE); 3020ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3021ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3022ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov while (sa.GetSize() > 0) 3023ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3024ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int nLeftTopIndex = -1; 3025ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3026ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3027ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT fLeft = -1.0f; 3028ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3029ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov for (int i=sa.GetSize()-1; i>=0; i--) 3030ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3031ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_Annot* pAnnot = sa.GetAt(i); 3032ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pAnnot != NULL); 3033ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3034ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect rcAnnot = GetAnnotRect(pAnnot); 3035ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3036ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (fLeft < 0) 3037ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3038ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nLeftTopIndex = 0; 3039ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov fLeft = rcAnnot.left; 3040ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3041ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else if (rcAnnot.left < fLeft) 3042ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3043ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov nLeftTopIndex = i; 3044ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov fLeft = rcAnnot.left; 3045ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3046ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3047ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3048ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3049ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (nLeftTopIndex >= 0) 3050ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3051ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_Annot* pLeftTopAnnot = sa.GetAt(nLeftTopIndex); 3052ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pLeftTopAnnot != NULL); 3053ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3054ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect rcLeftTop = GetAnnotRect(pLeftTopAnnot); 3055ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3056ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_Annots.Add(pLeftTopAnnot); 3057ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov sa.RemoveAt(nLeftTopIndex); 3058ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3059ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ArrayTemplate<int> aSelect; 3060ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3061ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3062ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov for (int i=0,sz=sa.GetSize(); i<sz; i++) 3063ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3064ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_Annot* pAnnot = sa.GetAt(i); 3065ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pAnnot != NULL); 3066ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3067ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect rcAnnot = GetAnnotRect(pAnnot); 3068ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3069ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT fCenterX = (rcAnnot.left + rcAnnot.right) / 2.0f; 3070ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3071ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (fCenterX > rcLeftTop.left && fCenterX < rcLeftTop.right) 3072ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov aSelect.Add(i); 3073ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3074ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3075ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3076ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3077ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov for (int i=0,sz=aSelect.GetSize(); i<sz; i++) 3078ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3079ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_Annots.Add(sa[aSelect[i]]); 3080ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3081ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3082ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3083ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3084ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov for (int i=aSelect.GetSize()-1; i>=0; i--) 3085ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 3086ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov sa.RemoveAt(aSelect[i]); 3087ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3088ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3089ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3090ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov aSelect.RemoveAll(); 3091ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3092ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3093ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov sa.RemoveAll(); 3094ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3095ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 3096ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 3097ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 3098ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3099ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCPDF_Rect CBA_AnnotIterator::GetAnnotRect(CPDFSDK_Annot* pAnnot) 3100ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 3101ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pAnnot != NULL); 3102ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3103ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Annot* pPDFAnnot = pAnnot->GetPDFAnnot(); 3104ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pPDFAnnot != NULL); 3105ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3106ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Rect rcAnnot; 3107ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pPDFAnnot->GetRect(rcAnnot); 3108ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3109ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return rcAnnot; 3110ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 3111ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 3112