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 <algorithm> 8ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 9ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#include "core/include/fxcrt/fx_ext.h" 10ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#include "fpdfsdk/include/fsdk_baseannot.h" 11ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#include "fpdfsdk/include/fsdk_define.h" 12ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#include "fpdfsdk/include/fsdk_mgr.h" 13ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 14ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#ifdef PDF_ENABLE_XFA 15ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#include "fpdfsdk/include/fpdfxfa/fpdfxfa_doc.h" 16ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#endif // PDF_ENABLE_XFA 17ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 18ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannint _gAfxGetTimeZoneInSeconds(FX_CHAR tzhour, uint8_t tzminute) { 19ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return (int)tzhour * 3600 + (int)tzminute * (tzhour >= 0 ? 60 : -60); 20ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 21ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 22ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL _gAfxIsLeapYear(int16_t year) { 23ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return ((year % 400 == 0) || ((year % 4 == 0) && (year % 100 != 0))); 24ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 25ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 26ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_WORD _gAfxGetYearDays(int16_t year) { 27ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return (_gAfxIsLeapYear(year) == TRUE ? 366 : 365); 28ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 29ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 30ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannuint8_t _gAfxGetMonthDays(int16_t year, uint8_t month) { 31ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann uint8_t mDays; 32ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann switch (month) { 33ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case 1: 34ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case 3: 35ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case 5: 36ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case 7: 37ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case 8: 38ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case 10: 39ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case 12: 40ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann mDays = 31; 41ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 42ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 43ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case 4: 44ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case 6: 45ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case 9: 46ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case 11: 47ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann mDays = 30; 48ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 49ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 50ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case 2: 51ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (_gAfxIsLeapYear(year) == TRUE) 52ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann mDays = 29; 53ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann else 54ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann mDays = 28; 55ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 56ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 57ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann default: 58ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann mDays = 0; 59ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 60ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 61ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 62ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return mDays; 63ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 64ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 65ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCPDFSDK_DateTime::CPDFSDK_DateTime() { 66ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ResetDateTime(); 67ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 68ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 69ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCPDFSDK_DateTime::CPDFSDK_DateTime(const CFX_ByteString& dtStr) { 70ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ResetDateTime(); 71ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 72ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FromPDFDateTimeString(dtStr); 73ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 74ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 75ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCPDFSDK_DateTime::CPDFSDK_DateTime(const CPDFSDK_DateTime& datetime) { 76ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann operator=(datetime); 77ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 78ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 79ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCPDFSDK_DateTime::CPDFSDK_DateTime(const FX_SYSTEMTIME& st) { 80ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann operator=(st); 81ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 82ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 83ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CPDFSDK_DateTime::ResetDateTime() { 84ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann tzset(); 85ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 86ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann time_t curTime; 87ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann time(&curTime); 88ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann struct tm* newtime; 89ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann // newtime = gmtime(&curTime); 90ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann newtime = localtime(&curTime); 91ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 92ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann dt.year = newtime->tm_year + 1900; 93ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann dt.month = newtime->tm_mon + 1; 94ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann dt.day = newtime->tm_mday; 95ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann dt.hour = newtime->tm_hour; 96ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann dt.minute = newtime->tm_min; 97ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann dt.second = newtime->tm_sec; 98ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann // dt.tzHour = _timezone / 3600 * -1; 99ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann // dt.tzMinute = (abs(_timezone) % 3600) / 60; 100ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 101ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 102ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCPDFSDK_DateTime& CPDFSDK_DateTime::operator=( 103ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CPDFSDK_DateTime& datetime) { 104ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FXSYS_memcpy(&dt, &datetime.dt, sizeof(FX_DATETIME)); 105ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return *this; 106ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 107ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 108ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCPDFSDK_DateTime& CPDFSDK_DateTime::operator=(const FX_SYSTEMTIME& st) { 109ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann tzset(); 110ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 111ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann dt.year = (int16_t)st.wYear; 112ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann dt.month = (uint8_t)st.wMonth; 113ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann dt.day = (uint8_t)st.wDay; 114ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann dt.hour = (uint8_t)st.wHour; 115ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann dt.minute = (uint8_t)st.wMinute; 116ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann dt.second = (uint8_t)st.wSecond; 117ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann // dt.tzHour = _timezone / 3600 * -1; 118ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann // dt.tzMinute = (abs(_timezone) % 3600) / 60; 119ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return *this; 120ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 121ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 122ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CPDFSDK_DateTime::operator==(CPDFSDK_DateTime& datetime) { 123ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return (FXSYS_memcmp(&dt, &datetime.dt, sizeof(FX_DATETIME)) == 0); 124ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 125ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 126ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CPDFSDK_DateTime::operator!=(CPDFSDK_DateTime& datetime) { 127ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return (FXSYS_memcmp(&dt, &datetime.dt, sizeof(FX_DATETIME)) != 0); 128ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 129ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 130ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CPDFSDK_DateTime::operator>(CPDFSDK_DateTime& datetime) { 131ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPDFSDK_DateTime dt1 = ToGMT(); 132ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPDFSDK_DateTime dt2 = datetime.ToGMT(); 133ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int d1 = 134ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (((int)dt1.dt.year) << 16) | (((int)dt1.dt.month) << 8) | (int)dt1.dt.day; 135ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int d2 = (((int)dt1.dt.hour) << 16) | (((int)dt1.dt.minute) << 8) | 136ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (int)dt1.dt.second; 137ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int d3 = 138ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (((int)dt2.dt.year) << 16) | (((int)dt2.dt.month) << 8) | (int)dt2.dt.day; 139ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int d4 = (((int)dt2.dt.hour) << 16) | (((int)dt2.dt.minute) << 8) | 140ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (int)dt2.dt.second; 141ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 142ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (d1 > d3) 143ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TRUE; 144ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (d2 > d4) 145ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TRUE; 146ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return FALSE; 147ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 148ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 149ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CPDFSDK_DateTime::operator>=(CPDFSDK_DateTime& datetime) { 150ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPDFSDK_DateTime dt1 = ToGMT(); 151ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPDFSDK_DateTime dt2 = datetime.ToGMT(); 152ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int d1 = 153ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (((int)dt1.dt.year) << 16) | (((int)dt1.dt.month) << 8) | (int)dt1.dt.day; 154ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int d2 = (((int)dt1.dt.hour) << 16) | (((int)dt1.dt.minute) << 8) | 155ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (int)dt1.dt.second; 156ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int d3 = 157ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (((int)dt2.dt.year) << 16) | (((int)dt2.dt.month) << 8) | (int)dt2.dt.day; 158ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int d4 = (((int)dt2.dt.hour) << 16) | (((int)dt2.dt.minute) << 8) | 159ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (int)dt2.dt.second; 160ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 161ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (d1 >= d3) 162ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TRUE; 163ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (d2 >= d4) 164ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TRUE; 165ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return FALSE; 166ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 167ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 168ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CPDFSDK_DateTime::operator<(CPDFSDK_DateTime& datetime) { 169ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPDFSDK_DateTime dt1 = ToGMT(); 170ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPDFSDK_DateTime dt2 = datetime.ToGMT(); 171ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int d1 = 172ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (((int)dt1.dt.year) << 16) | (((int)dt1.dt.month) << 8) | (int)dt1.dt.day; 173ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int d2 = (((int)dt1.dt.hour) << 16) | (((int)dt1.dt.minute) << 8) | 174ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (int)dt1.dt.second; 175ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int d3 = 176ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (((int)dt2.dt.year) << 16) | (((int)dt2.dt.month) << 8) | (int)dt2.dt.day; 177ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int d4 = (((int)dt2.dt.hour) << 16) | (((int)dt2.dt.minute) << 8) | 178ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (int)dt2.dt.second; 179ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 180ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (d1 < d3) 181ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TRUE; 182ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (d2 < d4) 183ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TRUE; 184ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return FALSE; 185ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 186ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 187ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CPDFSDK_DateTime::operator<=(CPDFSDK_DateTime& datetime) { 188ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPDFSDK_DateTime dt1 = ToGMT(); 189ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPDFSDK_DateTime dt2 = datetime.ToGMT(); 190ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int d1 = 191ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (((int)dt1.dt.year) << 16) | (((int)dt1.dt.month) << 8) | (int)dt1.dt.day; 192ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int d2 = (((int)dt1.dt.hour) << 16) | (((int)dt1.dt.minute) << 8) | 193ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (int)dt1.dt.second; 194ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int d3 = 195ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (((int)dt2.dt.year) << 16) | (((int)dt2.dt.month) << 8) | (int)dt2.dt.day; 196ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int d4 = (((int)dt2.dt.hour) << 16) | (((int)dt2.dt.minute) << 8) | 197ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (int)dt2.dt.second; 198ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 199ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (d1 <= d3) 200ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TRUE; 201ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (d2 <= d4) 202ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TRUE; 203ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return FALSE; 204ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 205ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 206ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCPDFSDK_DateTime::operator time_t() { 207ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann struct tm newtime; 208ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 209ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann newtime.tm_year = dt.year - 1900; 210ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann newtime.tm_mon = dt.month - 1; 211ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann newtime.tm_mday = dt.day; 212ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann newtime.tm_hour = dt.hour; 213ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann newtime.tm_min = dt.minute; 214ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann newtime.tm_sec = dt.second; 215ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 216ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return mktime(&newtime); 217ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 218ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 219ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCPDFSDK_DateTime& CPDFSDK_DateTime::FromPDFDateTimeString( 220ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFX_ByteString& dtStr) { 221ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int strLength = dtStr.GetLength(); 222ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (strLength > 0) { 223ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int i = 0; 224ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int j, k; 225ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_CHAR ch; 226ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann while (i < strLength && !std::isdigit(dtStr[i])) 227ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ++i; 228ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 229ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (i >= strLength) 230ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return *this; 231ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 232ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann j = 0; 233ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann k = 0; 234ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann while (i < strLength && j < 4) { 235ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ch = dtStr[i]; 236ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann k = k * 10 + FXSYS_toDecimalDigit(ch); 237ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann j++; 238ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!std::isdigit(ch)) 239ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 240ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann i++; 241ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 242ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann dt.year = (int16_t)k; 243ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (i >= strLength || j < 4) 244ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return *this; 245ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 246ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann j = 0; 247ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann k = 0; 248ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann while (i < strLength && j < 2) { 249ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ch = dtStr[i]; 250ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann k = k * 10 + FXSYS_toDecimalDigit(ch); 251ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann j++; 252ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!std::isdigit(ch)) 253ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 254ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann i++; 255ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 256ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann dt.month = (uint8_t)k; 257ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (i >= strLength || j < 2) 258ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return *this; 259ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 260ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann j = 0; 261ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann k = 0; 262ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann while (i < strLength && j < 2) { 263ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ch = dtStr[i]; 264ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann k = k * 10 + FXSYS_toDecimalDigit(ch); 265ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann j++; 266ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!std::isdigit(ch)) 267ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 268ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann i++; 269ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 270ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann dt.day = (uint8_t)k; 271ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (i >= strLength || j < 2) 272ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return *this; 273ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 274ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann j = 0; 275ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann k = 0; 276ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann while (i < strLength && j < 2) { 277ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ch = dtStr[i]; 278ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann k = k * 10 + FXSYS_toDecimalDigit(ch); 279ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann j++; 280ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!std::isdigit(ch)) 281ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 282ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann i++; 283ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 284ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann dt.hour = (uint8_t)k; 285ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (i >= strLength || j < 2) 286ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return *this; 287ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 288ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann j = 0; 289ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann k = 0; 290ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann while (i < strLength && j < 2) { 291ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ch = dtStr[i]; 292ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann k = k * 10 + FXSYS_toDecimalDigit(ch); 293ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann j++; 294ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!std::isdigit(ch)) 295ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 296ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann i++; 297ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 298ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann dt.minute = (uint8_t)k; 299ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (i >= strLength || j < 2) 300ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return *this; 301ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 302ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann j = 0; 303ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann k = 0; 304ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann while (i < strLength && j < 2) { 305ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ch = dtStr[i]; 306ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann k = k * 10 + FXSYS_toDecimalDigit(ch); 307ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann j++; 308ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!std::isdigit(ch)) 309ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 310ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann i++; 311ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 312ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann dt.second = (uint8_t)k; 313ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (i >= strLength || j < 2) 314ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return *this; 315ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 316ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ch = dtStr[i++]; 317ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (ch != '-' && ch != '+') 318ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return *this; 319ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (ch == '-') 320ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann dt.tzHour = -1; 321ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann else 322ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann dt.tzHour = 1; 323ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann j = 0; 324ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann k = 0; 325ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann while (i < strLength && j < 2) { 326ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ch = dtStr[i]; 327ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann k = k * 10 + FXSYS_toDecimalDigit(ch); 328ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann j++; 329ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!std::isdigit(ch)) 330ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 331ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann i++; 332ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 333ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann dt.tzHour *= (FX_CHAR)k; 334ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (i >= strLength || j < 2) 335ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return *this; 336ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 337ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ch = dtStr[i++]; 338ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (ch != '\'') 339ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return *this; 340ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann j = 0; 341ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann k = 0; 342ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann while (i < strLength && j < 2) { 343ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ch = dtStr[i]; 344ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann k = k * 10 + FXSYS_toDecimalDigit(ch); 345ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann j++; 346ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!std::isdigit(ch)) 347ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 348ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann i++; 349ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 350ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann dt.tzMinute = (uint8_t)k; 351ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (i >= strLength || j < 2) 352ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return *this; 353ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 354ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 355ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return *this; 356ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 357ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 358ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCFX_ByteString CPDFSDK_DateTime::ToCommonDateTimeString() { 359ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_ByteString str1; 360ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann str1.Format("%04d-%02d-%02d %02d:%02d:%02d ", dt.year, dt.month, dt.day, 361ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann dt.hour, dt.minute, dt.second); 362ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (dt.tzHour < 0) 363ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann str1 += "-"; 364ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann else 365ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann str1 += "+"; 366ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_ByteString str2; 367ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann str2.Format("%02d:%02d", abs(dt.tzHour), dt.tzMinute); 368ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return str1 + str2; 369ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 370ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 371ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCFX_ByteString CPDFSDK_DateTime::ToPDFDateTimeString() { 372ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_ByteString dtStr; 373ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann char tempStr[32]; 374ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann memset(tempStr, 0, sizeof(tempStr)); 375ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FXSYS_snprintf(tempStr, sizeof(tempStr) - 1, "D:%04d%02d%02d%02d%02d%02d", 376ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second); 377ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann dtStr = CFX_ByteString(tempStr); 378ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (dt.tzHour < 0) 379ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann dtStr += CFX_ByteString("-"); 380ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann else 381ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann dtStr += CFX_ByteString("+"); 382ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann memset(tempStr, 0, sizeof(tempStr)); 383ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FXSYS_snprintf(tempStr, sizeof(tempStr) - 1, "%02d'%02d'", abs(dt.tzHour), 384ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann dt.tzMinute); 385ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann dtStr += CFX_ByteString(tempStr); 386ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return dtStr; 387ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 388ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 389ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CPDFSDK_DateTime::ToSystemTime(FX_SYSTEMTIME& st) { 390ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPDFSDK_DateTime dt = *this; 391ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann time_t t = (time_t)dt; 392ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann struct tm* pTime = localtime(&t); 393ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pTime) { 394ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann st.wYear = (FX_WORD)pTime->tm_year + 1900; 395ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann st.wMonth = (FX_WORD)pTime->tm_mon + 1; 396ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann st.wDay = (FX_WORD)pTime->tm_mday; 397ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann st.wDayOfWeek = (FX_WORD)pTime->tm_wday; 398ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann st.wHour = (FX_WORD)pTime->tm_hour; 399ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann st.wMinute = (FX_WORD)pTime->tm_min; 400ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann st.wSecond = (FX_WORD)pTime->tm_sec; 401ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann st.wMilliseconds = 0; 402ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 403ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 404ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 405ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCPDFSDK_DateTime CPDFSDK_DateTime::ToGMT() { 406ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPDFSDK_DateTime dt = *this; 407ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann dt.AddSeconds(-_gAfxGetTimeZoneInSeconds(dt.dt.tzHour, dt.dt.tzMinute)); 408ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann dt.dt.tzHour = 0; 409ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann dt.dt.tzMinute = 0; 410ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return dt; 411ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 412ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 413ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCPDFSDK_DateTime& CPDFSDK_DateTime::AddDays(short days) { 414ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (days == 0) 415ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return *this; 416ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 417ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int16_t y = dt.year, yy; 418ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann uint8_t m = dt.month; 419ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann uint8_t d = dt.day; 420ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int mdays, ydays, ldays; 421ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 422ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ldays = days; 423ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (ldays > 0) { 424ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann yy = y; 425ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (((FX_WORD)m * 100 + d) > 300) 426ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann yy++; 427ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ydays = _gAfxGetYearDays(yy); 428ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann while (ldays >= ydays) { 429ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann y++; 430ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ldays -= ydays; 431ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann yy++; 432ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann mdays = _gAfxGetMonthDays(y, m); 433ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (d > mdays) { 434ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m++; 435ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann d -= mdays; 436ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 437ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ydays = _gAfxGetYearDays(yy); 438ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 439ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann mdays = _gAfxGetMonthDays(y, m) - d + 1; 440ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann while (ldays >= mdays) { 441ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ldays -= mdays; 442ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m++; 443ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann d = 1; 444ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann mdays = _gAfxGetMonthDays(y, m); 445ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 446ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann d += ldays; 447ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 448ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ldays *= -1; 449ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann yy = y; 450ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (((FX_WORD)m * 100 + d) < 300) 451ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann yy--; 452ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ydays = _gAfxGetYearDays(yy); 453ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann while (ldays >= ydays) { 454ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann y--; 455ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ldays -= ydays; 456ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann yy--; 457ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann mdays = _gAfxGetMonthDays(y, m); 458ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (d > mdays) { 459ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m++; 460ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann d -= mdays; 461ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 462ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ydays = _gAfxGetYearDays(yy); 463ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 464ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann while (ldays >= d) { 465ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ldays -= d; 466ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m--; 467ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann mdays = _gAfxGetMonthDays(y, m); 468ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann d = mdays; 469ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 470ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann d -= ldays; 471ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 472ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 473ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann dt.year = y; 474ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann dt.month = m; 475ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann dt.day = d; 476ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 477ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return *this; 478ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 479ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 480ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCPDFSDK_DateTime& CPDFSDK_DateTime::AddSeconds(int seconds) { 481ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (seconds == 0) 482ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return *this; 483ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 484ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int n; 485ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int days; 486ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 487ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann n = dt.hour * 3600 + dt.minute * 60 + dt.second + seconds; 488ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (n < 0) { 489ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann days = (n - 86399) / 86400; 490ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann n -= days * 86400; 491ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 492ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann days = n / 86400; 493ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann n %= 86400; 494ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 495ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann dt.hour = (uint8_t)(n / 3600); 496ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann dt.hour %= 24; 497ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann n %= 3600; 498ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann dt.minute = (uint8_t)(n / 60); 499ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann dt.second = (uint8_t)(n % 60); 500ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (days != 0) 501ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann AddDays(days); 502ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 503ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return *this; 504ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 505ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 506ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCPDFSDK_Annot::CPDFSDK_Annot(CPDFSDK_PageView* pPageView) 507ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann : m_pPageView(pPageView), m_bSelected(FALSE), m_nTabOrder(-1) { 508ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 509ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 510ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCPDFSDK_BAAnnot::CPDFSDK_BAAnnot(CPDF_Annot* pAnnot, 511ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPDFSDK_PageView* pPageView) 512ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann : CPDFSDK_Annot(pPageView), m_pAnnot(pAnnot) { 513ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 514ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 515ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCPDF_Annot* CPDFSDK_BAAnnot::GetPDFAnnot() const { 516ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return m_pAnnot; 517ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 518ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 519ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CPDFSDK_Annot::IsSelected() { 520ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return m_bSelected; 521ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 522ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 523ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CPDFSDK_Annot::SetSelected(FX_BOOL bSelected) { 524ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_bSelected = bSelected; 525ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 526ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 527ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// Tab Order 528ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannint CPDFSDK_Annot::GetTabOrder() { 529ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return m_nTabOrder; 530ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 531ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 532ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CPDFSDK_Annot::SetTabOrder(int iTabOrder) { 533ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_nTabOrder = iTabOrder; 534ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 535ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 536ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCPDF_Dictionary* CPDFSDK_BAAnnot::GetAnnotDict() const { 537ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return m_pAnnot->GetAnnotDict(); 538ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 539ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 540ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CPDFSDK_BAAnnot::SetRect(const CPDF_Rect& rect) { 541ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ASSERT(rect.right - rect.left >= GetMinWidth()); 542ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ASSERT(rect.top - rect.bottom >= GetMinHeight()); 543ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 544ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pAnnot->GetAnnotDict()->SetAtRect("Rect", rect); 545ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 546ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 547ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCPDF_Rect CPDFSDK_BAAnnot::GetRect() const { 548ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPDF_Rect rect; 549ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pAnnot->GetRect(rect); 550ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return rect; 551ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 552ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 553ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCFX_ByteString CPDFSDK_BAAnnot::GetType() const { 554ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return m_pAnnot->GetSubType(); 555ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 556ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 557ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCFX_ByteString CPDFSDK_BAAnnot::GetSubType() const { 558ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return ""; 559ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 560ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 561ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CPDFSDK_BAAnnot::DrawAppearance(CFX_RenderDevice* pDevice, 562ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFX_Matrix* pUser2Device, 563ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPDF_Annot::AppearanceMode mode, 564ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CPDF_RenderOptions* pOptions) { 565ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pAnnot->DrawAppearance(m_pPageView->GetPDFPage(), pDevice, pUser2Device, 566ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann mode, pOptions); 567ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 568ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 569ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CPDFSDK_BAAnnot::IsAppearanceValid() { 570ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return m_pAnnot->GetAnnotDict()->GetDict("AP") != NULL; 571ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 572ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 573ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CPDFSDK_BAAnnot::IsAppearanceValid(CPDF_Annot::AppearanceMode mode) { 574ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPDF_Dictionary* pAP = m_pAnnot->GetAnnotDict()->GetDict("AP"); 575ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!pAP) 576ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return FALSE; 577ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 578ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann // Choose the right sub-ap 579ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const FX_CHAR* ap_entry = "N"; 580ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (mode == CPDF_Annot::Down) 581ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ap_entry = "D"; 582ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann else if (mode == CPDF_Annot::Rollover) 583ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ap_entry = "R"; 584ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!pAP->KeyExist(ap_entry)) 585ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ap_entry = "N"; 586ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 587ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann // Get the AP stream or subdirectory 588ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPDF_Object* psub = pAP->GetElementValue(ap_entry); 589ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return !!psub; 590ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 591ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 592ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CPDFSDK_BAAnnot::DrawBorder(CFX_RenderDevice* pDevice, 593ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFX_Matrix* pUser2Device, 594ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CPDF_RenderOptions* pOptions) { 595ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pAnnot->DrawBorder(pDevice, pUser2Device, pOptions); 596ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 597ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 598ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CPDFSDK_BAAnnot::ClearCachedAP() { 599ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pAnnot->ClearCachedAP(); 600ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 601ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 602ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CPDFSDK_BAAnnot::SetContents(const CFX_WideString& sContents) { 603ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (sContents.IsEmpty()) 604ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pAnnot->GetAnnotDict()->RemoveAt("Contents"); 605ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann else 606ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pAnnot->GetAnnotDict()->SetAtString("Contents", 607ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann PDF_EncodeText(sContents)); 608ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 609ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 610ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCFX_WideString CPDFSDK_BAAnnot::GetContents() const { 611ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return m_pAnnot->GetAnnotDict()->GetUnicodeText("Contents"); 612ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 613ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 614ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CPDFSDK_BAAnnot::SetAnnotName(const CFX_WideString& sName) { 615ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (sName.IsEmpty()) 616ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pAnnot->GetAnnotDict()->RemoveAt("NM"); 617ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann else 618ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pAnnot->GetAnnotDict()->SetAtString("NM", PDF_EncodeText(sName)); 619ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 620ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 621ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCFX_WideString CPDFSDK_BAAnnot::GetAnnotName() const { 622ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return m_pAnnot->GetAnnotDict()->GetUnicodeText("NM"); 623ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 624ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 625ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CPDFSDK_BAAnnot::SetModifiedDate(const FX_SYSTEMTIME& st) { 626ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPDFSDK_DateTime dt(st); 627ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_ByteString str = dt.ToPDFDateTimeString(); 628ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 629ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (str.IsEmpty()) 630ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pAnnot->GetAnnotDict()->RemoveAt("M"); 631ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann else 632ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pAnnot->GetAnnotDict()->SetAtString("M", str); 633ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 634ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 635ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_SYSTEMTIME CPDFSDK_BAAnnot::GetModifiedDate() const { 636ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_SYSTEMTIME systime; 637ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_ByteString str = m_pAnnot->GetAnnotDict()->GetString("M"); 638e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 639ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPDFSDK_DateTime dt(str); 640ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann dt.ToSystemTime(systime); 641e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 642ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return systime; 643e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 644e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 645ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CPDFSDK_BAAnnot::SetFlags(int nFlags) { 646ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pAnnot->GetAnnotDict()->SetAtInteger("F", nFlags); 647e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 648e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 649ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannint CPDFSDK_BAAnnot::GetFlags() const { 650ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return m_pAnnot->GetAnnotDict()->GetInteger("F"); 651e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 652e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 653ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CPDFSDK_BAAnnot::SetAppState(const CFX_ByteString& str) { 654ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (str.IsEmpty()) 655ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pAnnot->GetAnnotDict()->RemoveAt("AS"); 656ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann else 657ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pAnnot->GetAnnotDict()->SetAtString("AS", str); 658ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 659ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 660ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCFX_ByteString CPDFSDK_BAAnnot::GetAppState() const { 661ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return m_pAnnot->GetAnnotDict()->GetString("AS"); 662ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 663ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 664ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CPDFSDK_BAAnnot::SetStructParent(int key) { 665ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pAnnot->GetAnnotDict()->SetAtInteger("StructParent", key); 666ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 667ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 668ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannint CPDFSDK_BAAnnot::GetStructParent() const { 669ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return m_pAnnot->GetAnnotDict()->GetInteger("StructParent"); 670ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 671e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 672ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// border 673ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CPDFSDK_BAAnnot::SetBorderWidth(int nWidth) { 674ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPDF_Array* pBorder = m_pAnnot->GetAnnotDict()->GetArray("Border"); 675e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 676ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pBorder) { 677ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pBorder->SetAt(2, new CPDF_Number(nWidth)); 678ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 679ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPDF_Dictionary* pBSDict = m_pAnnot->GetAnnotDict()->GetDict("BS"); 680e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 681ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!pBSDict) { 682ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pBSDict = new CPDF_Dictionary; 683ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pAnnot->GetAnnotDict()->SetAt("BS", pBSDict); 684ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 685e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 686ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pBSDict->SetAtInteger("W", nWidth); 687ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 688e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 689e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 690ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannint CPDFSDK_BAAnnot::GetBorderWidth() const { 691ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (CPDF_Array* pBorder = m_pAnnot->GetAnnotDict()->GetArray("Border")) { 692ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return pBorder->GetInteger(2); 693ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 694ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (CPDF_Dictionary* pBSDict = m_pAnnot->GetAnnotDict()->GetDict("BS")) { 695ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return pBSDict->GetInteger("W", 1); 696ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 697ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return 1; 698e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 699e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 700ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CPDFSDK_BAAnnot::SetBorderStyle(int nStyle) { 701ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPDF_Dictionary* pBSDict = m_pAnnot->GetAnnotDict()->GetDict("BS"); 702ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!pBSDict) { 703ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pBSDict = new CPDF_Dictionary; 704ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pAnnot->GetAnnotDict()->SetAt("BS", pBSDict); 705ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 706e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 707ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann switch (nStyle) { 708ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case BBS_SOLID: 709ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pBSDict->SetAtName("S", "S"); 710ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 711ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case BBS_DASH: 712ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pBSDict->SetAtName("S", "D"); 713ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 714ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case BBS_BEVELED: 715ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pBSDict->SetAtName("S", "B"); 716ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 717ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case BBS_INSET: 718ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pBSDict->SetAtName("S", "I"); 719ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 720ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann case BBS_UNDERLINE: 721ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pBSDict->SetAtName("S", "U"); 722ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 723ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 724e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 725e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 726ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannint CPDFSDK_BAAnnot::GetBorderStyle() const { 727ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPDF_Dictionary* pBSDict = m_pAnnot->GetAnnotDict()->GetDict("BS"); 728ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pBSDict) { 729ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_ByteString sBorderStyle = pBSDict->GetString("S", "S"); 730ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (sBorderStyle == "S") 731ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return BBS_SOLID; 732ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (sBorderStyle == "D") 733ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return BBS_DASH; 734ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (sBorderStyle == "B") 735ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return BBS_BEVELED; 736ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (sBorderStyle == "I") 737ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return BBS_INSET; 738ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (sBorderStyle == "U") 739ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return BBS_UNDERLINE; 740ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 741ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 742ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPDF_Array* pBorder = m_pAnnot->GetAnnotDict()->GetArray("Border"); 743ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pBorder) { 744ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pBorder->GetCount() >= 4) { 745ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPDF_Array* pDP = pBorder->GetArray(3); 746ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pDP && pDP->GetCount() > 0) 747ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return BBS_DASH; 748ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 749ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 750ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 751ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return BBS_SOLID; 752ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 753ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 754ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CPDFSDK_BAAnnot::SetBorderDash(const CFX_IntArray& array) { 755ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPDF_Dictionary* pBSDict = m_pAnnot->GetAnnotDict()->GetDict("BS"); 756ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!pBSDict) { 757ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pBSDict = new CPDF_Dictionary; 758ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pAnnot->GetAnnotDict()->SetAt("BS", pBSDict); 759ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 760ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 761ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPDF_Array* pArray = new CPDF_Array; 762ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (int i = 0, sz = array.GetSize(); i < sz; i++) { 763ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pArray->AddInteger(array[i]); 764ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 765ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 766ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pBSDict->SetAt("D", pArray); 767ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 768ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 769ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CPDFSDK_BAAnnot::GetBorderDash(CFX_IntArray& array) const { 770ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPDF_Array* pDash = NULL; 771ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 772ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPDF_Array* pBorder = m_pAnnot->GetAnnotDict()->GetArray("Border"); 773ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pBorder) { 774ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pDash = pBorder->GetArray(3); 775ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 776ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPDF_Dictionary* pBSDict = m_pAnnot->GetAnnotDict()->GetDict("BS"); 777ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pBSDict) { 778ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pDash = pBSDict->GetArray("D"); 779ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 780ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 781ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 782ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pDash) { 783ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (int i = 0, sz = pDash->GetCount(); i < sz; i++) { 784ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann array.Add(pDash->GetInteger(i)); 785ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 786ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 787ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 788ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 789ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CPDFSDK_BAAnnot::SetColor(FX_COLORREF color) { 790ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPDF_Array* pArray = new CPDF_Array; 791ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pArray->AddNumber((FX_FLOAT)FXSYS_GetRValue(color) / 255.0f); 792ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pArray->AddNumber((FX_FLOAT)FXSYS_GetGValue(color) / 255.0f); 793ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pArray->AddNumber((FX_FLOAT)FXSYS_GetBValue(color) / 255.0f); 794ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pAnnot->GetAnnotDict()->SetAt("C", pArray); 795ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 796ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 797ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CPDFSDK_BAAnnot::RemoveColor() { 798ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pAnnot->GetAnnotDict()->RemoveAt("C"); 799ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 800ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 801ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CPDFSDK_BAAnnot::GetColor(FX_COLORREF& color) const { 802ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (CPDF_Array* pEntry = m_pAnnot->GetAnnotDict()->GetArray("C")) { 803ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int nCount = pEntry->GetCount(); 804ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (nCount == 1) { 805ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT g = pEntry->GetNumber(0) * 255; 806ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 807ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann color = FXSYS_RGB((int)g, (int)g, (int)g); 808ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 809ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TRUE; 810ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else if (nCount == 3) { 811ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT r = pEntry->GetNumber(0) * 255; 812ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT g = pEntry->GetNumber(1) * 255; 813ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT b = pEntry->GetNumber(2) * 255; 814ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 815ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann color = FXSYS_RGB((int)r, (int)g, (int)b); 816ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 817ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TRUE; 818ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else if (nCount == 4) { 819ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT c = pEntry->GetNumber(0); 820ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT m = pEntry->GetNumber(1); 821ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT y = pEntry->GetNumber(2); 822ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT k = pEntry->GetNumber(3); 823ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 824ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT r = 1.0f - std::min(1.0f, c + k); 825ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT g = 1.0f - std::min(1.0f, m + k); 826ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT b = 1.0f - std::min(1.0f, y + k); 827ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 828ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann color = FXSYS_RGB((int)(r * 255), (int)(g * 255), (int)(b * 255)); 829ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 830ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TRUE; 831ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 832ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 833ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 834ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return FALSE; 835e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 836e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 837ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CPDFSDK_BAAnnot::WriteAppearance(const CFX_ByteString& sAPType, 838ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CPDF_Rect& rcBBox, 839ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFX_Matrix& matrix, 840ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFX_ByteString& sContents, 841ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFX_ByteString& sAPState) { 842ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPDF_Dictionary* pAPDict = m_pAnnot->GetAnnotDict()->GetDict("AP"); 843ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 844ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!pAPDict) { 845ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pAPDict = new CPDF_Dictionary; 846ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pAnnot->GetAnnotDict()->SetAt("AP", pAPDict); 847ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 848ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 849ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPDF_Stream* pStream = nullptr; 850ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPDF_Dictionary* pParentDict = nullptr; 851ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 852ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (sAPState.IsEmpty()) { 853ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pParentDict = pAPDict; 854ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pStream = pAPDict->GetStream(sAPType); 855ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 856ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPDF_Dictionary* pAPTypeDict = pAPDict->GetDict(sAPType); 857ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!pAPTypeDict) { 858ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pAPTypeDict = new CPDF_Dictionary; 859ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pAPDict->SetAt(sAPType, pAPTypeDict); 860ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 861ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 862ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pParentDict = pAPTypeDict; 863ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pStream = pAPTypeDict->GetStream(sAPState); 864ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 865ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 866ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!pStream) { 867ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pStream = new CPDF_Stream(nullptr, 0, nullptr); 868ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 869ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPDF_Document* pDoc = m_pPageView->GetPDFDocument(); 870ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t objnum = pDoc->AddIndirectObject(pStream); 871ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pParentDict->SetAtReference(sAPType, pDoc, objnum); 872ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 873ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 874ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPDF_Dictionary* pStreamDict = pStream->GetDict(); 875ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!pStreamDict) { 876ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pStreamDict = new CPDF_Dictionary; 877ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pStreamDict->SetAtName("Type", "XObject"); 878ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pStreamDict->SetAtName("Subtype", "Form"); 879ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pStreamDict->SetAtInteger("FormType", 1); 880ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pStream->InitStream(nullptr, 0, pStreamDict); 881ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 882ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 883ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pStreamDict) { 884ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pStreamDict->SetAtMatrix("Matrix", matrix); 885ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pStreamDict->SetAtRect("BBox", rcBBox); 886ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 887ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 888ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pStream->SetData((uint8_t*)sContents.c_str(), sContents.GetLength(), FALSE, 889ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FALSE); 890e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 891e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 892ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define BA_ANNOT_MINWIDTH 1 893ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define BA_ANNOT_MINHEIGHT 1 894e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 895ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_FLOAT CPDFSDK_Annot::GetMinWidth() const { 896ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return BA_ANNOT_MINWIDTH; 897ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 898e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 899ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_FLOAT CPDFSDK_Annot::GetMinHeight() const { 900ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return BA_ANNOT_MINHEIGHT; 901ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 902e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 903ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CPDFSDK_BAAnnot::CreateFormFiller() { 904ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TRUE; 905ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 906ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CPDFSDK_BAAnnot::IsVisible() const { 907ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int nFlags = GetFlags(); 908ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return !((nFlags & ANNOTFLAG_INVISIBLE) || (nFlags & ANNOTFLAG_HIDDEN) || 909ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (nFlags & ANNOTFLAG_NOVIEW)); 910e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 911e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 912ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCPDF_Action CPDFSDK_BAAnnot::GetAction() const { 913ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return CPDF_Action(m_pAnnot->GetAnnotDict()->GetDict("A")); 914e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 915e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 916ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CPDFSDK_BAAnnot::SetAction(const CPDF_Action& action) { 917ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ASSERT(action); 918ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if ((CPDF_Action&)action != 919ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPDF_Action(m_pAnnot->GetAnnotDict()->GetDict("A"))) { 920ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPDF_Document* pDoc = m_pPageView->GetPDFDocument(); 921ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPDF_Dictionary* pDict = action.GetDict(); 922ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pDict && pDict->GetObjNum() == 0) { 923ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pDoc->AddIndirectObject(pDict); 924ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 925ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pAnnot->GetAnnotDict()->SetAtReference("A", pDoc, pDict->GetObjNum()); 926ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 927ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 928e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 929ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CPDFSDK_BAAnnot::RemoveAction() { 930ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pAnnot->GetAnnotDict()->RemoveAt("A"); 931e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 932e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 933ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCPDF_AAction CPDFSDK_BAAnnot::GetAAction() const { 934ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return m_pAnnot->GetAnnotDict()->GetDict("AA"); 935e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 936e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 937ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CPDFSDK_BAAnnot::SetAAction(const CPDF_AAction& aa) { 938ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if ((CPDF_AAction&)aa != m_pAnnot->GetAnnotDict()->GetDict("AA")) 939ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pAnnot->GetAnnotDict()->SetAt("AA", (CPDF_AAction&)aa); 940e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 941ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 942ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CPDFSDK_BAAnnot::RemoveAAction() { 943ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pAnnot->GetAnnotDict()->RemoveAt("AA"); 944e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 945e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 946ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCPDF_Action CPDFSDK_BAAnnot::GetAAction(CPDF_AAction::AActionType eAAT) { 947ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPDF_AAction AAction = GetAAction(); 948ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 949ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (AAction.ActionExist(eAAT)) 950ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return AAction.GetAction(eAAT); 951e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 952ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (eAAT == CPDF_AAction::ButtonUp) 953ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return GetAction(); 954e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 955ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return CPDF_Action(); 956ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 957e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 958ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#ifdef PDF_ENABLE_XFA 959ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CPDFSDK_BAAnnot::IsXFAField() { 960ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return FALSE; 961e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 962ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#endif // PDF_ENABLE_XFA 963e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 964ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CPDFSDK_BAAnnot::Annot_OnDraw(CFX_RenderDevice* pDevice, 965ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_Matrix* pUser2Device, 966ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPDF_RenderOptions* pOptions) { 967ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pAnnot->GetAPForm(m_pPageView->GetPDFPage(), CPDF_Annot::Normal); 968ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pAnnot->DrawAppearance(m_pPageView->GetPDFPage(), pDevice, pUser2Device, 969ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPDF_Annot::Normal, NULL); 970ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 971e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 972ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannUnderlyingPageType* CPDFSDK_Annot::GetUnderlyingPage() { 973ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#ifdef PDF_ENABLE_XFA 974ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return GetPDFXFAPage(); 975ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#else // PDF_ENABLE_XFA 976ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return GetPDFPage(); 977ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#endif // PDF_ENABLE_XFA 978e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 979e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 980ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCPDF_Page* CPDFSDK_Annot::GetPDFPage() { 981ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_pPageView) 982ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return m_pPageView->GetPDFPage(); 983ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return NULL; 984e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov} 985e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov 986ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#ifdef PDF_ENABLE_XFA 987ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCPDFXFA_Page* CPDFSDK_Annot::GetPDFXFAPage() { 988ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_pPageView) 989ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return m_pPageView->GetPDFXFAPage(); 990ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return NULL; 991ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 992ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#endif // PDF_ENABLE_XFA 993