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