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