1ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Copyright 2014 PDFium Authors. All rights reserved. 2ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Use of this source code is governed by a BSD-style license that can be 3ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// found in the LICENSE file. 4ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 5ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 7ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../include/fpdfview.h" 8ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../include/fpdfformfill.h" 9ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../include/fsdk_define.h" 10ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../include/fsdk_mgr.h" 11ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 12ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 13ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../include/javascript/IJavaScript.h" 14ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 15ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 16ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovDLLEXPORT int STDCALL FPDPage_HasFormFieldAtPoint(FPDF_FORMHANDLE hHandle, FPDF_PAGE page,double page_x, double page_y) 17ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 18ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(!page || !hHandle) 19ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return -1; 20ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Page * pPage = (CPDF_Page*) page; 21ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 22ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_InterForm * pInterForm = NULL; 23ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pInterForm = new CPDF_InterForm(pPage->m_pDocument,FALSE); 24ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!pInterForm) 25ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return -1; 26ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FormControl* pFormCtrl = pInterForm->GetControlAtPoint(pPage, (FX_FLOAT)page_x, (FX_FLOAT)page_y); 27ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(!pFormCtrl) 28ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 29ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov delete pInterForm; 30ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return -1; 31ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 32ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_FormField* pFormField = pFormCtrl->GetField(); 33ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(!pFormField) 34ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 35ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov delete pInterForm; 36ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return -1; 37ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 38ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 39ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int nType = pFormField->GetFieldType(); 40ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov delete pInterForm; 41ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return nType; 42ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 43ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 44ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovDLLEXPORT FPDF_FORMHANDLE STDCALL FPDFDOC_InitFormFillEnviroument(FPDF_DOCUMENT document, FPDF_FORMFILLINFO* formInfo) 45ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 46ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(!document || !formInfo || formInfo->version!=1) 47ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return NULL; 48ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Document * pDocument = (CPDF_Document*) document; 49ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFDoc_Environment * pEnv = NULL; 50ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pEnv = new CPDFDoc_Environment(pDocument); 51ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!pEnv) 52ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return NULL; 53ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pEnv->RegAppHandle(formInfo); 54ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 55ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(pEnv->GetPDFDocument()) 56ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 57ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_Document* pSDKDoc = new CPDFSDK_Document(pEnv->GetPDFDocument(), pEnv); 58ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(pSDKDoc) 59ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pEnv->SetCurrentDoc(pSDKDoc); 60ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 61ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return pEnv; 62ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 63ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 64ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovDLLEXPORT void STDCALL FPDFDOC_ExitFormFillEnviroument(FPDF_FORMHANDLE hHandle) 65ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 66ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(!hHandle) 67ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return; 68ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_Document* pSDKDoc = ((CPDFDoc_Environment*)hHandle)->GetCurrentDoc(); 69ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(pSDKDoc) 70ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 71ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ((CPDFDoc_Environment*)hHandle)->SetCurrentDoc(NULL); 72ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov delete pSDKDoc; 73ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 74ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov delete (CPDFDoc_Environment*)hHandle; 75ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov hHandle = NULL; 76ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 77ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 78ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovDLLEXPORT FPDF_BOOL STDCALL FORM_OnMouseMove(FPDF_FORMHANDLE hHandle, FPDF_PAGE page, int modifier, double page_x, double page_y) 79ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 80ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!hHandle || !page) 81ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FALSE; 82ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// CPDF_Page * pPage = (CPDF_Page*) page; 83ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// CPDF_Document * pDoc = pPage->m_pDocument; 84ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// CPDFDoc_Environment* pEnv = (CPDFDoc_Environment*)hHandle; 85ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_Document* pFXDoc = ((CPDFDoc_Environment*)hHandle)->GetCurrentDoc(); 86ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(!pFXDoc) 87ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FALSE; 88ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_PageView* pPageView = pFXDoc->GetPageView((CPDF_Page*)page); 89ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(!pPageView) 90ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FALSE; 91ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 92ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// double page_x = 0; 93ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// double page_y = 0; 94ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// pEnv->FFI_DeviceToPage(page, point_x, point_y, &page_x, &page_y); 95ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Point pt((FX_FLOAT)page_x, (FX_FLOAT)page_y); 96ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return pPageView->OnMouseMove(pt, modifier); 97ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 98ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 99ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovDLLEXPORT FPDF_BOOL STDCALL FORM_OnLButtonDown(FPDF_FORMHANDLE hHandle, FPDF_PAGE page, int modifier, double page_x, double page_y) 100ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 101ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!hHandle || !page) 102ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FALSE; 103ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_Document* pFXDoc = ((CPDFDoc_Environment*)hHandle)->GetCurrentDoc(); 104ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(!pFXDoc) 105ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FALSE; 106ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_PageView* pPageView = pFXDoc->GetPageView((CPDF_Page*)page); 107ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(!pPageView) 108ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FALSE; 109ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// double page_x = 0; 110ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// double page_y = 0; 111ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// pEnv->FFI_DeviceToPage(page, point_x, point_y, &page_x, &page_y); 112ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Point pt((FX_FLOAT)page_x, (FX_FLOAT)page_y); 113ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return pPageView->OnLButtonDown(pt, modifier); 114ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 115ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 116ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovDLLEXPORT FPDF_BOOL STDCALL FORM_OnLButtonUp(FPDF_FORMHANDLE hHandle, FPDF_PAGE page, int modifier, double page_x, double page_y) 117ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 118ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!hHandle || !page) 119ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FALSE; 120ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_Document* pFXDoc = ((CPDFDoc_Environment*)hHandle)->GetCurrentDoc(); 121ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(!pFXDoc) 122ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FALSE; 123ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_PageView* pPageView = pFXDoc->GetPageView((CPDF_Page*)page); 124ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(!pPageView) 125ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FALSE; 126ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// double page_x = 0; 127ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// double page_y = 0; 128ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// pEnv->FFI_DeviceToPage(page, point_x, point_y, &page_x, &page_y); 129ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Point pt((FX_FLOAT)page_x, (FX_FLOAT)page_y); 130ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return pPageView->OnLButtonUp(pt, modifier); 131ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 132ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 133ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovDLLEXPORT FPDF_BOOL STDCALL FORM_OnKeyDown(FPDF_FORMHANDLE hHandle, FPDF_PAGE page, int nKeyCode, int modifier) 134ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 135ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!hHandle || !page) 136ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FALSE; 137ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_Document* pFXDoc = ((CPDFDoc_Environment*)hHandle)->GetCurrentDoc(); 138ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(!pFXDoc) 139ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FALSE; 140ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_PageView* pPageView = pFXDoc->GetPageView((CPDF_Page*)page); 141ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(!pPageView) 142ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FALSE; 143ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 144ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 145ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return pPageView->OnKeyDown(nKeyCode, modifier); 146ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 147ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 148ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovDLLEXPORT FPDF_BOOL STDCALL FORM_OnKeyUp(FPDF_FORMHANDLE hHandle, FPDF_PAGE page, int nKeyCode, int modifier) 149ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 150ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!hHandle || !page) 151ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FALSE; 152ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_Document* pFXDoc = ((CPDFDoc_Environment*)hHandle)->GetCurrentDoc(); 153ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(!pFXDoc) 154ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FALSE; 155ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_PageView* pPageView = pFXDoc->GetPageView((CPDF_Page*)page); 156ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(!pPageView) 157ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FALSE; 158ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 159ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 160ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return pPageView->OnKeyUp(nKeyCode, modifier); 161ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 162ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 163ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 164ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovDLLEXPORT FPDF_BOOL STDCALL FORM_OnChar(FPDF_FORMHANDLE hHandle, FPDF_PAGE page, int nChar, int modifier) 165ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 166ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!hHandle || !page) 167ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FALSE; 168ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_Document* pFXDoc = ((CPDFDoc_Environment*)hHandle)->GetCurrentDoc(); 169ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(!pFXDoc) 170ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FALSE; 171ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_PageView* pPageView = pFXDoc->GetPageView((CPDF_Page*)page); 172ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(!pPageView) 173ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FALSE; 174ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return pPageView->OnChar(nChar, modifier); 175ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 176ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 177ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 178ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovDLLEXPORT FPDF_BOOL STDCALL FORM_ForceToKillFocus(FPDF_FORMHANDLE hHandle) 179ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 180ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(!hHandle) 181ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FALSE; 182ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_Document* pSDKDoc = ((CPDFDoc_Environment*)hHandle)->GetCurrentDoc(); 183ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(!pSDKDoc) 184ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FALSE; 185ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov //Kill the current focus. 186ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return pSDKDoc->KillFocusAnnot(0); 187ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 188ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 189ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovDLLEXPORT void STDCALL FPDF_FFLDraw(FPDF_FORMHANDLE hHandle, FPDF_BITMAP bitmap, FPDF_PAGE page, int start_x, int start_y, 190ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int size_x, int size_y, int rotate, int flags) 191ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 192ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!hHandle || !page) 193ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return ; 194ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Page* pPage = (CPDF_Page*)page; 195ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 196ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_RenderOptions options; 197ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (flags & FPDF_LCD_TEXT) 198ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov options.m_Flags |= RENDER_CLEARTYPE; 199ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 200ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov options.m_Flags &= ~RENDER_CLEARTYPE; 201ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 202ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov //Grayscale output 203ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (flags & FPDF_GRAYSCALE) 204ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 205ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov options.m_ColorMode = RENDER_COLOR_GRAY; 206ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov options.m_ForeColor = 0; 207ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov options.m_BackColor = 0xffffff; 208ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 209ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 210ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov options.m_AddFlags = flags >> 8; 211ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 212ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov options.m_pOCContext = FX_NEW CPDF_OCContext(pPage->m_pDocument); 213ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 214ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov //FXMT_CSLOCK_OBJ(&pPage->m_PageLock); 215ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 216ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_AffineMatrix matrix; 217ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pPage->GetDisplayMatrix(matrix, start_x, start_y, size_x, size_y, rotate); 218ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 219ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_RECT clip; 220ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov clip.left = start_x; 221ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov clip.right = start_x + size_x; 222ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov clip.top = start_y; 223ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov clip.bottom = start_y + size_y; 224ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 225ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifdef _SKIA_SUPPORT_ 226ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_SkiaDevice* pDevice = FX_NEW CFX_SkiaDevice; 227ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#else 228ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_FxgeDevice* pDevice = NULL; 229ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pDevice = FX_NEW CFX_FxgeDevice; 230ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif 231ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 232ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!pDevice) 233ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return; 234ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pDevice->Attach((CFX_DIBitmap*)bitmap); 235ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pDevice->SaveState(); 236ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pDevice->SetClip_Rect(&clip); 237ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 238ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 239ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_RenderContext* pContext = NULL; 240ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pContext = FX_NEW CPDF_RenderContext; 241ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!pContext) 242ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 243ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov delete pDevice; 244ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pDevice = NULL; 245ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return; 246ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 247ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 248ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 249ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// CPDF_Document* pDoc = pPage->m_pDocument; 250ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFDoc_Environment* pEnv = (CPDFDoc_Environment*)hHandle; 251ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_Document* pFXDoc = pEnv->GetCurrentDoc(); 252ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(!pFXDoc) 253ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 254ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov delete pContext; 255ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov delete pDevice; 256ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pContext = NULL; 257ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pDevice = NULL; 258ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return; 259ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 260ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(CPDFSDK_PageView* pPageView = pFXDoc->GetPageView(pPage)) 261ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 262ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pPageView->PageView_OnDraw(pDevice, &matrix, &options); 263ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 264ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pDevice->RestoreState(); 265ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 266ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(options.m_pOCContext) 267ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 268ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov delete options.m_pOCContext; 269ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov options.m_pOCContext = NULL; 270ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 271ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(pContext) 272ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 273ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov delete pContext; 274ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pContext = NULL; 275ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 276ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(pDevice) 277ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 278ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov delete pDevice; 279ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pDevice = NULL; 280ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 281ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 282ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 283ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 284ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovDLLEXPORT void STDCALL FPDF_SetFormFieldHighlightColor(FPDF_FORMHANDLE hHandle, int fieldType, unsigned long color) 285ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 286ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!hHandle) 287ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return; 288ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// CPDFDoc_Environment* pEnv = (CPDFDoc_Environment* )hHandle; 289ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_Document* pSDKDoc = ((CPDFDoc_Environment*)hHandle)->GetCurrentDoc(); 290ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(pSDKDoc) 291ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 292ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(CPDFSDK_InterForm* pInterForm = pSDKDoc->GetInterForm()) 293ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 294ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pInterForm->SetHighlightColor(color, fieldType); 295ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 296ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 297ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 298ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 299ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 300ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 301ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovDLLEXPORT void STDCALL FPDF_SetFormFieldHighlightAlpha(FPDF_FORMHANDLE hHandle, unsigned char alpha) 302ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 303ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!hHandle) 304ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return; 305ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_Document* pSDKDoc = ((CPDFDoc_Environment*)hHandle)->GetCurrentDoc(); 306ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(pSDKDoc) 307ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 308ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(CPDFSDK_InterForm* pInterForm = pSDKDoc->GetInterForm()) 309ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pInterForm->SetHighlightAlpha(alpha); 310ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 311ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 312ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 313ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovDLLEXPORT void STDCALL FPDF_RemoveFormFieldHighlight(FPDF_FORMHANDLE hHandle) 314ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 315ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!hHandle) 316ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return; 317ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_Document* pSDKDoc = ((CPDFDoc_Environment*)hHandle)->GetCurrentDoc(); 318ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(pSDKDoc) 319ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 320ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(CPDFSDK_InterForm* pInterForm = pSDKDoc->GetInterForm()) 321ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pInterForm->RemoveAllHighLight(); 322ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 323ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 324ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 325ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovDLLEXPORT void STDCALL FORM_OnAfterLoadPage(FPDF_PAGE page, FPDF_FORMHANDLE hHandle) 326ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 327ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(!hHandle || !page) 328ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return; 329ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_Document* pSDKDoc = ((CPDFDoc_Environment*)hHandle)->GetCurrentDoc(); 330ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(!pSDKDoc) 331ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return; 332ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Page* pPage = (CPDF_Page*)page; 333ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_PageView* pPageView = pSDKDoc->GetPageView(pPage, TRUE); 334ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(pPageView) 335ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 336ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pPageView->SetValid(TRUE); 337ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 338ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 339ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 340ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovDLLEXPORT void STDCALL FORM_OnBeforeClosePage(FPDF_PAGE page, FPDF_FORMHANDLE hHandle) 341ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 342ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(!hHandle || !page) 343ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return; 344ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_Document* pSDKDoc = ((CPDFDoc_Environment*)hHandle)->GetCurrentDoc(); 345ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Page* pPage = (CPDF_Page*)page; 346ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_PageView* pPageView = pSDKDoc->GetPageView(pPage, FALSE); 347ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(pPageView) 348ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 349ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pPageView->SetValid(FALSE); 350ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov // ReMovePageView() takes care of the delete for us. 351ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pSDKDoc->ReMovePageView(pPage); 352ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 353ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 354ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovDLLEXPORT void STDCALL FORM_DoDocumentJSAction(FPDF_FORMHANDLE hHandle) 355ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 356ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(!hHandle) 357ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return; 358ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if( CPDFSDK_Document* pSDKDoc = ((CPDFDoc_Environment*)hHandle)->GetCurrentDoc()) 359ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 360ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pSDKDoc->InitPageView(); 361ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(((CPDFDoc_Environment*)hHandle)->IsJSInitiated()) 362ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pSDKDoc->ProcJavascriptFun(); 363ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 364ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 365ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 366ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovDLLEXPORT void STDCALL FORM_DoDocumentOpenAction(FPDF_FORMHANDLE hHandle) 367ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 368ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(!hHandle) 369ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return; 370ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if( CPDFSDK_Document* pSDKDoc = ((CPDFDoc_Environment*)hHandle)->GetCurrentDoc()) 371ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 372ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(((CPDFDoc_Environment*)hHandle)->IsJSInitiated()) 373ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pSDKDoc->ProcOpenAction(); 374ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 375ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 376ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovDLLEXPORT void STDCALL FORM_DoDocumentAAction(FPDF_FORMHANDLE hHandle, int aaType) 377ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 378ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(!hHandle) 379ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return; 380ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_Document* pSDKDoc = ((CPDFDoc_Environment*)hHandle)->GetCurrentDoc(); 381ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(pSDKDoc) 382ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 383ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Document* pDoc = pSDKDoc->GetDocument(); 384ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Dictionary* pDic = pDoc->GetRoot(); 385ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!pDic) 386ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return; 387ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_AAction aa = pDic->GetDict(FX_BSTRC("AA")); 388ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 389ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(aa.ActionExist((CPDF_AAction::AActionType)aaType)) 390ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 391ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Action action = aa.GetAction((CPDF_AAction::AActionType)aaType); 392ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_ActionHandler *pActionHandler = ((CPDFDoc_Environment*)hHandle)->GetActionHander(); 393ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pActionHandler != NULL); 394ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pActionHandler->DoAction_Document(action, (CPDF_AAction::AActionType)aaType, pSDKDoc); 395ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 396ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 397ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 398ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovDLLEXPORT void STDCALL FORM_DoPageAAction(FPDF_PAGE page, FPDF_FORMHANDLE hHandle, int aaType) 399ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 400ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(!hHandle || !page) 401ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return; 402ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_Document* pSDKDoc = ((CPDFDoc_Environment*)hHandle)->GetCurrentDoc(); 403ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Page* pPage = (CPDF_Page*)page; 404ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_PageView* pPageView = pSDKDoc->GetPageView(pPage, FALSE); 405ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(pPageView) 406ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 407ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFDoc_Environment *pEnv = pSDKDoc->GetEnv(); 408ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pEnv != NULL); 409ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 410ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDFSDK_ActionHandler *pActionHandler = pEnv->GetActionHander(); 411ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pActionHandler != NULL); 412ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 413ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Dictionary *pPageDict = pPage->m_pFormDict; 414ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ASSERT(pPageDict != NULL); 415ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 416ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_AAction aa = pPageDict->GetDict(FX_BSTRC("AA")); 417ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 418ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL bExistOAAction = FALSE; 419ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL bExistCAAction = FALSE; 420ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (FPDFPAGE_AACTION_OPEN == aaType) 421ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 422ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov bExistOAAction = aa.ActionExist(CPDF_AAction::OpenPage); 423ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bExistOAAction) 424ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 425ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Action action = aa.GetAction(CPDF_AAction::OpenPage); 426ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pActionHandler->DoAction_Page(action, CPDF_AAction::OpenPage, pSDKDoc); 427ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 428ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 429ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov else 430ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 431ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov bExistCAAction = aa.ActionExist(CPDF_AAction::ClosePage); 432ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (bExistCAAction) 433ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 434ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Action action = aa.GetAction(CPDF_AAction::ClosePage); 435ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pActionHandler->DoAction_Page(action, CPDF_AAction::ClosePage, pSDKDoc); 436ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 437ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 438ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 439ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 440ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 441ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 442