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