Index: fpdfsdk/src/fsdk_baseannot.cpp |
diff --git a/fpdfsdk/src/fsdk_baseannot.cpp b/fpdfsdk/src/fsdk_baseannot.cpp |
index e9a1cc396ea15495c3735460ad730d12cded461b..a862ea77239e541493d25bd2534c3cdb311e56e4 100644 |
--- a/fpdfsdk/src/fsdk_baseannot.cpp |
+++ b/fpdfsdk/src/fsdk_baseannot.cpp |
@@ -11,498 +11,498 @@ |
//--------------------------------------------------------------------------- |
-// CPDFSDK_DateTime |
+// CPDFSDK_DateTime |
//--------------------------------------------------------------------------- |
int _gAfxGetTimeZoneInSeconds(FX_CHAR tzhour, uint8_t tzminute) |
{ |
- return (int)tzhour * 3600 + (int)tzminute * (tzhour >= 0 ? 60 : -60); |
+ return (int)tzhour * 3600 + (int)tzminute * (tzhour >= 0 ? 60 : -60); |
} |
FX_BOOL _gAfxIsLeapYear(int16_t year) |
{ |
- return ((year % 400 == 0) || ((year % 4 == 0) && (year % 100 != 0))); |
+ return ((year % 400 == 0) || ((year % 4 == 0) && (year % 100 != 0))); |
} |
FX_WORD _gAfxGetYearDays(int16_t year) |
{ |
- return (_gAfxIsLeapYear(year) == TRUE ? 366 : 365); |
+ return (_gAfxIsLeapYear(year) == TRUE ? 366 : 365); |
} |
uint8_t _gAfxGetMonthDays(int16_t year, uint8_t month) |
{ |
- uint8_t mDays; |
- switch (month) |
- { |
- case 1: |
- case 3: |
- case 5: |
- case 7: |
- case 8: |
- case 10: |
- case 12: |
- mDays = 31; |
- break; |
- |
- case 4: |
- case 6: |
- case 9: |
- case 11: |
- mDays = 30; |
- break; |
- |
- case 2: |
- if (_gAfxIsLeapYear(year) == TRUE) |
- mDays = 29; |
- else |
- mDays = 28; |
- break; |
- |
- default: |
- mDays = 0; |
- break; |
- } |
- |
- return mDays; |
+ uint8_t mDays; |
+ switch (month) |
+ { |
+ case 1: |
+ case 3: |
+ case 5: |
+ case 7: |
+ case 8: |
+ case 10: |
+ case 12: |
+ mDays = 31; |
+ break; |
+ |
+ case 4: |
+ case 6: |
+ case 9: |
+ case 11: |
+ mDays = 30; |
+ break; |
+ |
+ case 2: |
+ if (_gAfxIsLeapYear(year) == TRUE) |
+ mDays = 29; |
+ else |
+ mDays = 28; |
+ break; |
+ |
+ default: |
+ mDays = 0; |
+ break; |
+ } |
+ |
+ return mDays; |
} |
CPDFSDK_DateTime::CPDFSDK_DateTime() |
{ |
- ResetDateTime(); |
+ ResetDateTime(); |
} |
CPDFSDK_DateTime::CPDFSDK_DateTime(const CFX_ByteString& dtStr) |
{ |
- ResetDateTime(); |
+ ResetDateTime(); |
- FromPDFDateTimeString(dtStr); |
+ FromPDFDateTimeString(dtStr); |
} |
CPDFSDK_DateTime::CPDFSDK_DateTime(const CPDFSDK_DateTime& datetime) |
{ |
- operator = (datetime); |
+ operator = (datetime); |
} |
CPDFSDK_DateTime::CPDFSDK_DateTime(const FX_SYSTEMTIME& st) |
{ |
- operator = (st) ; |
+ operator = (st) ; |
} |
void CPDFSDK_DateTime::ResetDateTime() |
{ |
- tzset(); |
+ tzset(); |
- time_t curTime; |
- time(&curTime); |
- struct tm* newtime; |
- //newtime = gmtime(&curTime); |
- newtime = localtime(&curTime); |
+ time_t curTime; |
+ time(&curTime); |
+ struct tm* newtime; |
+ //newtime = gmtime(&curTime); |
+ newtime = localtime(&curTime); |
- dt.year = newtime->tm_year + 1900; |
- dt.month = newtime->tm_mon + 1; |
- dt.day = newtime->tm_mday; |
- dt.hour = newtime->tm_hour; |
- dt.minute = newtime->tm_min; |
- dt.second = newtime->tm_sec; |
-// dt.tzHour = _timezone / 3600 * -1; |
-// dt.tzMinute = (abs(_timezone) % 3600) / 60; |
+ dt.year = newtime->tm_year + 1900; |
+ dt.month = newtime->tm_mon + 1; |
+ dt.day = newtime->tm_mday; |
+ dt.hour = newtime->tm_hour; |
+ dt.minute = newtime->tm_min; |
+ dt.second = newtime->tm_sec; |
+// dt.tzHour = _timezone / 3600 * -1; |
+// dt.tzMinute = (abs(_timezone) % 3600) / 60; |
} |
CPDFSDK_DateTime& CPDFSDK_DateTime::operator = (const CPDFSDK_DateTime& datetime) |
{ |
- FXSYS_memcpy(&dt, &datetime.dt, sizeof(FX_DATETIME)); |
- return *this; |
+ FXSYS_memcpy(&dt, &datetime.dt, sizeof(FX_DATETIME)); |
+ return *this; |
} |
CPDFSDK_DateTime& CPDFSDK_DateTime::operator = (const FX_SYSTEMTIME& st) |
{ |
- tzset(); |
+ tzset(); |
- dt.year = (int16_t)st.wYear; |
- dt.month = (uint8_t)st.wMonth; |
- dt.day = (uint8_t)st.wDay; |
- dt.hour = (uint8_t)st.wHour; |
- dt.minute = (uint8_t)st.wMinute; |
- dt.second = (uint8_t)st.wSecond; |
-// dt.tzHour = _timezone / 3600 * -1; |
-// dt.tzMinute = (abs(_timezone) % 3600) / 60; |
- return *this; |
+ dt.year = (int16_t)st.wYear; |
+ dt.month = (uint8_t)st.wMonth; |
+ dt.day = (uint8_t)st.wDay; |
+ dt.hour = (uint8_t)st.wHour; |
+ dt.minute = (uint8_t)st.wMinute; |
+ dt.second = (uint8_t)st.wSecond; |
+// dt.tzHour = _timezone / 3600 * -1; |
+// dt.tzMinute = (abs(_timezone) % 3600) / 60; |
+ return *this; |
} |
FX_BOOL CPDFSDK_DateTime::operator == (CPDFSDK_DateTime& datetime) |
{ |
- return (FXSYS_memcmp(&dt, &datetime.dt, sizeof(FX_DATETIME)) == 0); |
+ return (FXSYS_memcmp(&dt, &datetime.dt, sizeof(FX_DATETIME)) == 0); |
} |
FX_BOOL CPDFSDK_DateTime::operator != (CPDFSDK_DateTime& datetime) |
{ |
- return (FXSYS_memcmp(&dt, &datetime.dt, sizeof(FX_DATETIME)) != 0); |
+ return (FXSYS_memcmp(&dt, &datetime.dt, sizeof(FX_DATETIME)) != 0); |
} |
FX_BOOL CPDFSDK_DateTime::operator > (CPDFSDK_DateTime& datetime) |
{ |
- CPDFSDK_DateTime dt1 = ToGMT(); |
- CPDFSDK_DateTime dt2 = datetime.ToGMT(); |
- int d1 = (((int)dt1.dt.year) << 16) | (((int)dt1.dt.month) << 8) | (int)dt1.dt.day; |
- int d2 = (((int)dt1.dt.hour) << 16) | (((int)dt1.dt.minute) << 8) | (int)dt1.dt.second; |
- int d3 = (((int)dt2.dt.year) << 16) | (((int)dt2.dt.month) << 8) | (int)dt2.dt.day; |
- int d4 = (((int)dt2.dt.hour) << 16) | (((int)dt2.dt.minute) << 8) | (int)dt2.dt.second; |
+ CPDFSDK_DateTime dt1 = ToGMT(); |
+ CPDFSDK_DateTime dt2 = datetime.ToGMT(); |
+ int d1 = (((int)dt1.dt.year) << 16) | (((int)dt1.dt.month) << 8) | (int)dt1.dt.day; |
+ int d2 = (((int)dt1.dt.hour) << 16) | (((int)dt1.dt.minute) << 8) | (int)dt1.dt.second; |
+ int d3 = (((int)dt2.dt.year) << 16) | (((int)dt2.dt.month) << 8) | (int)dt2.dt.day; |
+ int d4 = (((int)dt2.dt.hour) << 16) | (((int)dt2.dt.minute) << 8) | (int)dt2.dt.second; |
- if (d1 > d3) return TRUE; |
- if (d2 > d4) return TRUE; |
- return FALSE; |
+ if (d1 > d3) return TRUE; |
+ if (d2 > d4) return TRUE; |
+ return FALSE; |
} |
FX_BOOL CPDFSDK_DateTime::operator >= (CPDFSDK_DateTime& datetime) |
{ |
- CPDFSDK_DateTime dt1 = ToGMT(); |
- CPDFSDK_DateTime dt2 = datetime.ToGMT(); |
- int d1 = (((int)dt1.dt.year) << 16) | (((int)dt1.dt.month) << 8) | (int)dt1.dt.day; |
- int d2 = (((int)dt1.dt.hour) << 16) | (((int)dt1.dt.minute) << 8) | (int)dt1.dt.second; |
- int d3 = (((int)dt2.dt.year) << 16) | (((int)dt2.dt.month) << 8) | (int)dt2.dt.day; |
- int d4 = (((int)dt2.dt.hour) << 16) | (((int)dt2.dt.minute) << 8) | (int)dt2.dt.second; |
+ CPDFSDK_DateTime dt1 = ToGMT(); |
+ CPDFSDK_DateTime dt2 = datetime.ToGMT(); |
+ int d1 = (((int)dt1.dt.year) << 16) | (((int)dt1.dt.month) << 8) | (int)dt1.dt.day; |
+ int d2 = (((int)dt1.dt.hour) << 16) | (((int)dt1.dt.minute) << 8) | (int)dt1.dt.second; |
+ int d3 = (((int)dt2.dt.year) << 16) | (((int)dt2.dt.month) << 8) | (int)dt2.dt.day; |
+ int d4 = (((int)dt2.dt.hour) << 16) | (((int)dt2.dt.minute) << 8) | (int)dt2.dt.second; |
- if (d1 >= d3) return TRUE; |
- if (d2 >= d4) return TRUE; |
- return FALSE; |
+ if (d1 >= d3) return TRUE; |
+ if (d2 >= d4) return TRUE; |
+ return FALSE; |
} |
FX_BOOL CPDFSDK_DateTime::operator < (CPDFSDK_DateTime& datetime) |
{ |
- CPDFSDK_DateTime dt1 = ToGMT(); |
- CPDFSDK_DateTime dt2 = datetime.ToGMT(); |
- int d1 = (((int)dt1.dt.year) << 16) | (((int)dt1.dt.month) << 8) | (int)dt1.dt.day; |
- int d2 = (((int)dt1.dt.hour) << 16) | (((int)dt1.dt.minute) << 8) | (int)dt1.dt.second; |
- int d3 = (((int)dt2.dt.year) << 16) | (((int)dt2.dt.month) << 8) | (int)dt2.dt.day; |
- int d4 = (((int)dt2.dt.hour) << 16) | (((int)dt2.dt.minute) << 8) | (int)dt2.dt.second; |
+ CPDFSDK_DateTime dt1 = ToGMT(); |
+ CPDFSDK_DateTime dt2 = datetime.ToGMT(); |
+ int d1 = (((int)dt1.dt.year) << 16) | (((int)dt1.dt.month) << 8) | (int)dt1.dt.day; |
+ int d2 = (((int)dt1.dt.hour) << 16) | (((int)dt1.dt.minute) << 8) | (int)dt1.dt.second; |
+ int d3 = (((int)dt2.dt.year) << 16) | (((int)dt2.dt.month) << 8) | (int)dt2.dt.day; |
+ int d4 = (((int)dt2.dt.hour) << 16) | (((int)dt2.dt.minute) << 8) | (int)dt2.dt.second; |
- if (d1 < d3) return TRUE; |
- if (d2 < d4) return TRUE; |
- return FALSE; |
+ if (d1 < d3) return TRUE; |
+ if (d2 < d4) return TRUE; |
+ return FALSE; |
} |
FX_BOOL CPDFSDK_DateTime::operator <= (CPDFSDK_DateTime& datetime) |
{ |
- CPDFSDK_DateTime dt1 = ToGMT(); |
- CPDFSDK_DateTime dt2 = datetime.ToGMT(); |
- int d1 = (((int)dt1.dt.year) << 16) | (((int)dt1.dt.month) << 8) | (int)dt1.dt.day; |
- int d2 = (((int)dt1.dt.hour) << 16) | (((int)dt1.dt.minute) << 8) | (int)dt1.dt.second; |
- int d3 = (((int)dt2.dt.year) << 16) | (((int)dt2.dt.month) << 8) | (int)dt2.dt.day; |
- int d4 = (((int)dt2.dt.hour) << 16) | (((int)dt2.dt.minute) << 8) | (int)dt2.dt.second; |
+ CPDFSDK_DateTime dt1 = ToGMT(); |
+ CPDFSDK_DateTime dt2 = datetime.ToGMT(); |
+ int d1 = (((int)dt1.dt.year) << 16) | (((int)dt1.dt.month) << 8) | (int)dt1.dt.day; |
+ int d2 = (((int)dt1.dt.hour) << 16) | (((int)dt1.dt.minute) << 8) | (int)dt1.dt.second; |
+ int d3 = (((int)dt2.dt.year) << 16) | (((int)dt2.dt.month) << 8) | (int)dt2.dt.day; |
+ int d4 = (((int)dt2.dt.hour) << 16) | (((int)dt2.dt.minute) << 8) | (int)dt2.dt.second; |
- if (d1 <= d3) return TRUE; |
- if (d2 <= d4) return TRUE; |
- return FALSE; |
+ if (d1 <= d3) return TRUE; |
+ if (d2 <= d4) return TRUE; |
+ return FALSE; |
} |
CPDFSDK_DateTime::operator time_t() |
{ |
- struct tm newtime; |
+ struct tm newtime; |
- newtime.tm_year = dt.year - 1900; |
- newtime.tm_mon = dt.month - 1; |
- newtime.tm_mday = dt.day; |
- newtime.tm_hour = dt.hour; |
- newtime.tm_min = dt.minute; |
- newtime.tm_sec = dt.second; |
+ newtime.tm_year = dt.year - 1900; |
+ newtime.tm_mon = dt.month - 1; |
+ newtime.tm_mday = dt.day; |
+ newtime.tm_hour = dt.hour; |
+ newtime.tm_min = dt.minute; |
+ newtime.tm_sec = dt.second; |
- return mktime(&newtime); |
+ return mktime(&newtime); |
} |
CPDFSDK_DateTime& CPDFSDK_DateTime::FromPDFDateTimeString(const CFX_ByteString& dtStr) |
{ |
- int strLength = dtStr.GetLength(); |
- if (strLength > 0) |
- { |
- int i = 0; |
- int j, k; |
- FX_CHAR ch; |
- while (i < strLength) |
- { |
- ch = dtStr[i]; |
- if (ch >= '0' && ch <= '9') break; |
- i ++; |
- } |
- if (i >= strLength) return *this; |
- |
- j = 0; |
- k = 0; |
- while (i < strLength && j < 4) |
- { |
- ch = dtStr[i]; |
- k = k * 10 + ch - '0'; |
- j ++; |
- if (ch < '0' || ch > '9') break; |
- i ++; |
- } |
- dt.year = (int16_t)k; |
- if (i >= strLength || j < 4) return *this; |
- |
- j = 0; |
- k = 0; |
- while (i < strLength && j < 2) |
- { |
- ch = dtStr[i]; |
- k = k * 10 + ch - '0'; |
- j ++; |
- if (ch < '0' || ch > '9') break; |
- i ++; |
- } |
- dt.month = (uint8_t)k; |
- if (i >= strLength || j < 2) return *this; |
- |
- j = 0; |
- k = 0; |
- while (i < strLength && j < 2) |
- { |
- ch = dtStr[i]; |
- k = k * 10 + ch - '0'; |
- j ++; |
- if (ch < '0' || ch > '9') break; |
- i ++; |
- } |
- dt.day = (uint8_t)k; |
- if (i >= strLength || j < 2) return *this; |
- |
- j = 0; |
- k = 0; |
- while (i < strLength && j < 2) |
- { |
- ch = dtStr[i]; |
- k = k * 10 + ch - '0'; |
- j ++; |
- if (ch < '0' || ch > '9') break; |
- i ++; |
- } |
- dt.hour = (uint8_t)k; |
- if (i >= strLength || j < 2) return *this; |
- |
- j = 0; |
- k = 0; |
- while (i < strLength && j < 2) |
- { |
- ch = dtStr[i]; |
- k = k * 10 + ch - '0'; |
- j ++; |
- if (ch < '0' || ch > '9') break; |
- i ++; |
- } |
- dt.minute = (uint8_t)k; |
- if (i >= strLength || j < 2) return *this; |
- |
- j = 0; |
- k = 0; |
- while (i < strLength && j < 2) |
- { |
- ch = dtStr[i]; |
- k = k * 10 + ch - '0'; |
- j ++; |
- if (ch < '0' || ch > '9') break; |
- i ++; |
- } |
- dt.second = (uint8_t)k; |
- if (i >= strLength || j < 2) return *this; |
- |
- ch = dtStr[i ++]; |
- if (ch != '-' && ch != '+') return *this; |
- if (ch == '-') |
- dt.tzHour = -1; |
- else |
- dt.tzHour = 1; |
- j = 0; |
- k = 0; |
- while (i < strLength && j < 2) |
- { |
- ch = dtStr[i]; |
- k = k * 10 + ch - '0'; |
- j ++; |
- if (ch < '0' || ch > '9') break; |
- i ++; |
- } |
- dt.tzHour *= (FX_CHAR)k; |
- if (i >= strLength || j < 2) return *this; |
- |
- ch = dtStr[i ++]; |
- if (ch != '\'') return *this; |
- j = 0; |
- k = 0; |
- while (i < strLength && j < 2) |
- { |
- ch = dtStr[i]; |
- k = k * 10 + ch - '0'; |
- j ++; |
- if (ch < '0' || ch > '9') break; |
- i ++; |
- } |
- dt.tzMinute = (uint8_t)k; |
- if (i >= strLength || j < 2) return *this; |
- } |
- |
- return *this; |
+ int strLength = dtStr.GetLength(); |
+ if (strLength > 0) |
+ { |
+ int i = 0; |
+ int j, k; |
+ FX_CHAR ch; |
+ while (i < strLength) |
+ { |
+ ch = dtStr[i]; |
+ if (ch >= '0' && ch <= '9') break; |
+ i ++; |
+ } |
+ if (i >= strLength) return *this; |
+ |
+ j = 0; |
+ k = 0; |
+ while (i < strLength && j < 4) |
+ { |
+ ch = dtStr[i]; |
+ k = k * 10 + ch - '0'; |
+ j ++; |
+ if (ch < '0' || ch > '9') break; |
+ i ++; |
+ } |
+ dt.year = (int16_t)k; |
+ if (i >= strLength || j < 4) return *this; |
+ |
+ j = 0; |
+ k = 0; |
+ while (i < strLength && j < 2) |
+ { |
+ ch = dtStr[i]; |
+ k = k * 10 + ch - '0'; |
+ j ++; |
+ if (ch < '0' || ch > '9') break; |
+ i ++; |
+ } |
+ dt.month = (uint8_t)k; |
+ if (i >= strLength || j < 2) return *this; |
+ |
+ j = 0; |
+ k = 0; |
+ while (i < strLength && j < 2) |
+ { |
+ ch = dtStr[i]; |
+ k = k * 10 + ch - '0'; |
+ j ++; |
+ if (ch < '0' || ch > '9') break; |
+ i ++; |
+ } |
+ dt.day = (uint8_t)k; |
+ if (i >= strLength || j < 2) return *this; |
+ |
+ j = 0; |
+ k = 0; |
+ while (i < strLength && j < 2) |
+ { |
+ ch = dtStr[i]; |
+ k = k * 10 + ch - '0'; |
+ j ++; |
+ if (ch < '0' || ch > '9') break; |
+ i ++; |
+ } |
+ dt.hour = (uint8_t)k; |
+ if (i >= strLength || j < 2) return *this; |
+ |
+ j = 0; |
+ k = 0; |
+ while (i < strLength && j < 2) |
+ { |
+ ch = dtStr[i]; |
+ k = k * 10 + ch - '0'; |
+ j ++; |
+ if (ch < '0' || ch > '9') break; |
+ i ++; |
+ } |
+ dt.minute = (uint8_t)k; |
+ if (i >= strLength || j < 2) return *this; |
+ |
+ j = 0; |
+ k = 0; |
+ while (i < strLength && j < 2) |
+ { |
+ ch = dtStr[i]; |
+ k = k * 10 + ch - '0'; |
+ j ++; |
+ if (ch < '0' || ch > '9') break; |
+ i ++; |
+ } |
+ dt.second = (uint8_t)k; |
+ if (i >= strLength || j < 2) return *this; |
+ |
+ ch = dtStr[i ++]; |
+ if (ch != '-' && ch != '+') return *this; |
+ if (ch == '-') |
+ dt.tzHour = -1; |
+ else |
+ dt.tzHour = 1; |
+ j = 0; |
+ k = 0; |
+ while (i < strLength && j < 2) |
+ { |
+ ch = dtStr[i]; |
+ k = k * 10 + ch - '0'; |
+ j ++; |
+ if (ch < '0' || ch > '9') break; |
+ i ++; |
+ } |
+ dt.tzHour *= (FX_CHAR)k; |
+ if (i >= strLength || j < 2) return *this; |
+ |
+ ch = dtStr[i ++]; |
+ if (ch != '\'') return *this; |
+ j = 0; |
+ k = 0; |
+ while (i < strLength && j < 2) |
+ { |
+ ch = dtStr[i]; |
+ k = k * 10 + ch - '0'; |
+ j ++; |
+ if (ch < '0' || ch > '9') break; |
+ i ++; |
+ } |
+ dt.tzMinute = (uint8_t)k; |
+ if (i >= strLength || j < 2) return *this; |
+ } |
+ |
+ return *this; |
} |
CFX_ByteString CPDFSDK_DateTime::ToCommonDateTimeString() |
{ |
- CFX_ByteString str1; |
- str1.Format("%04d-%02d-%02d %02d:%02d:%02d ", dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second); |
- if (dt.tzHour < 0) |
- str1 += "-"; |
- else |
- str1 += "+"; |
- CFX_ByteString str2; |
- str2.Format("%02d:%02d", abs(dt.tzHour), dt.tzMinute); |
- return str1 + str2; |
+ CFX_ByteString str1; |
+ str1.Format("%04d-%02d-%02d %02d:%02d:%02d ", dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second); |
+ if (dt.tzHour < 0) |
+ str1 += "-"; |
+ else |
+ str1 += "+"; |
+ CFX_ByteString str2; |
+ str2.Format("%02d:%02d", abs(dt.tzHour), dt.tzMinute); |
+ return str1 + str2; |
} |
CFX_ByteString CPDFSDK_DateTime::ToPDFDateTimeString() |
{ |
- CFX_ByteString dtStr; |
- char tempStr[32]; |
- memset(tempStr, 0, sizeof(tempStr)); |
- FXSYS_snprintf(tempStr, sizeof(tempStr) - 1, "D:%04d%02d%02d%02d%02d%02d", |
+ CFX_ByteString dtStr; |
+ char tempStr[32]; |
+ memset(tempStr, 0, sizeof(tempStr)); |
+ FXSYS_snprintf(tempStr, sizeof(tempStr) - 1, "D:%04d%02d%02d%02d%02d%02d", |
dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second); |
- dtStr = CFX_ByteString(tempStr); |
- if (dt.tzHour < 0) |
- dtStr += CFX_ByteString("-"); |
- else |
- dtStr += CFX_ByteString("+"); |
- memset(tempStr, 0, sizeof(tempStr)); |
- FXSYS_snprintf(tempStr, sizeof(tempStr) - 1, "%02d'%02d'", abs(dt.tzHour), dt.tzMinute); |
- dtStr += CFX_ByteString(tempStr); |
- return dtStr; |
+ dtStr = CFX_ByteString(tempStr); |
+ if (dt.tzHour < 0) |
+ dtStr += CFX_ByteString("-"); |
+ else |
+ dtStr += CFX_ByteString("+"); |
+ memset(tempStr, 0, sizeof(tempStr)); |
+ FXSYS_snprintf(tempStr, sizeof(tempStr) - 1, "%02d'%02d'", abs(dt.tzHour), dt.tzMinute); |
+ dtStr += CFX_ByteString(tempStr); |
+ return dtStr; |
} |
void CPDFSDK_DateTime::ToSystemTime(FX_SYSTEMTIME& st) |
{ |
- CPDFSDK_DateTime dt = *this; |
- time_t t = (time_t)dt; |
- struct tm* pTime = localtime(&t); |
- if(pTime){ |
- st.wYear = (FX_WORD)pTime->tm_year + 1900; |
- st.wMonth = (FX_WORD)pTime->tm_mon + 1; |
- st.wDay = (FX_WORD)pTime->tm_mday; |
- st.wDayOfWeek = (FX_WORD)pTime->tm_wday; |
- st.wHour = (FX_WORD)pTime->tm_hour; |
- st.wMinute = (FX_WORD)pTime->tm_min; |
- st.wSecond = (FX_WORD)pTime->tm_sec; |
- st.wMilliseconds = 0; |
- } |
+ CPDFSDK_DateTime dt = *this; |
+ time_t t = (time_t)dt; |
+ struct tm* pTime = localtime(&t); |
+ if(pTime){ |
+ st.wYear = (FX_WORD)pTime->tm_year + 1900; |
+ st.wMonth = (FX_WORD)pTime->tm_mon + 1; |
+ st.wDay = (FX_WORD)pTime->tm_mday; |
+ st.wDayOfWeek = (FX_WORD)pTime->tm_wday; |
+ st.wHour = (FX_WORD)pTime->tm_hour; |
+ st.wMinute = (FX_WORD)pTime->tm_min; |
+ st.wSecond = (FX_WORD)pTime->tm_sec; |
+ st.wMilliseconds = 0; |
+ } |
} |
CPDFSDK_DateTime CPDFSDK_DateTime::ToGMT() |
{ |
- CPDFSDK_DateTime dt = *this; |
- dt.AddSeconds(-_gAfxGetTimeZoneInSeconds(dt.dt.tzHour, dt.dt.tzMinute)); |
- dt.dt.tzHour = 0; |
- dt.dt.tzMinute = 0; |
- return dt; |
+ CPDFSDK_DateTime dt = *this; |
+ dt.AddSeconds(-_gAfxGetTimeZoneInSeconds(dt.dt.tzHour, dt.dt.tzMinute)); |
+ dt.dt.tzHour = 0; |
+ dt.dt.tzMinute = 0; |
+ return dt; |
} |
CPDFSDK_DateTime& CPDFSDK_DateTime::AddDays(short days) |
{ |
- if (days == 0) return *this; |
- |
- int16_t y = dt.year, yy; |
- uint8_t m = dt.month; |
- uint8_t d = dt.day; |
- int mdays, ydays, ldays; |
- |
- ldays = days; |
- if (ldays > 0) |
- { |
- yy = y; |
- if (((FX_WORD)m * 100 + d) > 300) yy ++; |
- ydays = _gAfxGetYearDays(yy); |
- while (ldays >= ydays) |
- { |
- y ++; |
- ldays -= ydays; |
- yy ++; |
- mdays = _gAfxGetMonthDays(y, m); |
- if (d > mdays) |
- { |
- m ++; |
- d -= mdays; |
- } |
- ydays = _gAfxGetYearDays(yy); |
- } |
- mdays = _gAfxGetMonthDays(y, m) - d + 1; |
- while (ldays >= mdays) |
- { |
- ldays -= mdays; |
- m ++; |
- d = 1; |
- mdays = _gAfxGetMonthDays(y, m); |
- } |
- d += ldays; |
- } |
- else |
- { |
- ldays *= -1; |
- yy = y; |
- if (((FX_WORD)m * 100 + d) < 300) yy --; |
- ydays = _gAfxGetYearDays(yy); |
- while (ldays >= ydays) |
- { |
- y --; |
- ldays -= ydays; |
- yy --; |
- mdays = _gAfxGetMonthDays(y, m); |
- if (d > mdays) |
- { |
- m ++; |
- d -= mdays; |
- } |
- ydays = _gAfxGetYearDays(yy); |
- } |
- while (ldays >= d) |
- { |
- ldays -= d; |
- m --; |
- mdays = _gAfxGetMonthDays(y, m); |
- d = mdays; |
- } |
- d -= ldays; |
- } |
- |
- dt.year = y; |
- dt.month = m; |
- dt.day = d; |
- |
- return *this; |
+ if (days == 0) return *this; |
+ |
+ int16_t y = dt.year, yy; |
+ uint8_t m = dt.month; |
+ uint8_t d = dt.day; |
+ int mdays, ydays, ldays; |
+ |
+ ldays = days; |
+ if (ldays > 0) |
+ { |
+ yy = y; |
+ if (((FX_WORD)m * 100 + d) > 300) yy ++; |
+ ydays = _gAfxGetYearDays(yy); |
+ while (ldays >= ydays) |
+ { |
+ y ++; |
+ ldays -= ydays; |
+ yy ++; |
+ mdays = _gAfxGetMonthDays(y, m); |
+ if (d > mdays) |
+ { |
+ m ++; |
+ d -= mdays; |
+ } |
+ ydays = _gAfxGetYearDays(yy); |
+ } |
+ mdays = _gAfxGetMonthDays(y, m) - d + 1; |
+ while (ldays >= mdays) |
+ { |
+ ldays -= mdays; |
+ m ++; |
+ d = 1; |
+ mdays = _gAfxGetMonthDays(y, m); |
+ } |
+ d += ldays; |
+ } |
+ else |
+ { |
+ ldays *= -1; |
+ yy = y; |
+ if (((FX_WORD)m * 100 + d) < 300) yy --; |
+ ydays = _gAfxGetYearDays(yy); |
+ while (ldays >= ydays) |
+ { |
+ y --; |
+ ldays -= ydays; |
+ yy --; |
+ mdays = _gAfxGetMonthDays(y, m); |
+ if (d > mdays) |
+ { |
+ m ++; |
+ d -= mdays; |
+ } |
+ ydays = _gAfxGetYearDays(yy); |
+ } |
+ while (ldays >= d) |
+ { |
+ ldays -= d; |
+ m --; |
+ mdays = _gAfxGetMonthDays(y, m); |
+ d = mdays; |
+ } |
+ d -= ldays; |
+ } |
+ |
+ dt.year = y; |
+ dt.month = m; |
+ dt.day = d; |
+ |
+ return *this; |
} |
CPDFSDK_DateTime& CPDFSDK_DateTime::AddSeconds(int seconds) |
{ |
- if (seconds == 0) return *this; |
+ if (seconds == 0) return *this; |
- int n; |
- int days; |
+ int n; |
+ int days; |
- n = dt.hour * 3600 + dt.minute * 60 + dt.second + seconds; |
- if (n < 0) |
- { |
- days = (n - 86399) / 86400; |
- n -= days * 86400; |
- } |
- else |
- { |
- days = n / 86400; |
- n %= 86400; |
- } |
- dt.hour = (uint8_t)(n / 3600); |
- dt.hour %= 24; |
- n %= 3600; |
- dt.minute = (uint8_t)(n / 60); |
- dt.second = (uint8_t)(n % 60); |
- if (days != 0) AddDays(days); |
+ n = dt.hour * 3600 + dt.minute * 60 + dt.second + seconds; |
+ if (n < 0) |
+ { |
+ days = (n - 86399) / 86400; |
+ n -= days * 86400; |
+ } |
+ else |
+ { |
+ days = n / 86400; |
+ n %= 86400; |
+ } |
+ dt.hour = (uint8_t)(n / 3600); |
+ dt.hour %= 24; |
+ n %= 3600; |
+ dt.minute = (uint8_t)(n / 60); |
+ dt.second = (uint8_t)(n % 60); |
+ if (days != 0) AddDays(days); |
- return *this; |
+ return *this; |
} |
//--------------------------------------------------------------------------- |
-// CPDFSDK_Annot |
+// CPDFSDK_Annot |
//--------------------------------------------------------------------------- |
CPDFSDK_Annot::CPDFSDK_Annot(CPDFSDK_PageView* pPageView) : |
m_pPageView(pPageView), |
@@ -514,585 +514,575 @@ m_nTabOrder(-1) |
//CPDFSDK_BAAnnot |
CPDFSDK_BAAnnot::CPDFSDK_BAAnnot(CPDF_Annot* pAnnot, CPDFSDK_PageView* pPageView) : |
- CPDFSDK_Annot(pPageView), |
- m_pAnnot(pAnnot) |
+ CPDFSDK_Annot(pPageView), |
+ m_pAnnot(pAnnot) |
{ |
- |
} |
CPDFSDK_BAAnnot::~CPDFSDK_BAAnnot() |
{ |
- m_pAnnot = NULL; |
+ m_pAnnot = NULL; |
} |
-CPDF_Annot* CPDFSDK_BAAnnot::GetPDFAnnot() |
+CPDF_Annot* CPDFSDK_BAAnnot::GetPDFAnnot() |
{ |
- return m_pAnnot; |
+ return m_pAnnot; |
} |
FX_BOOL CPDFSDK_Annot::IsSelected() |
{ |
- return m_bSelected; |
+ return m_bSelected; |
} |
void CPDFSDK_Annot::SetSelected(FX_BOOL bSelected) |
{ |
- m_bSelected = bSelected; |
+ m_bSelected = bSelected; |
} |
// Tab Order |
int CPDFSDK_Annot::GetTabOrder() |
{ |
- return m_nTabOrder; |
+ return m_nTabOrder; |
} |
void CPDFSDK_Annot::SetTabOrder(int iTabOrder) |
{ |
- m_nTabOrder = iTabOrder; |
+ m_nTabOrder = iTabOrder; |
} |
CPDF_Dictionary* CPDFSDK_BAAnnot::GetAnnotDict() const |
{ |
- ASSERT(m_pAnnot != NULL); |
+ ASSERT(m_pAnnot != NULL); |
- return m_pAnnot->GetAnnotDict(); |
+ return m_pAnnot->GetAnnotDict(); |
} |
void CPDFSDK_BAAnnot::SetRect(const CPDF_Rect& rect) |
{ |
- ASSERT(rect.right - rect.left >= GetMinWidth()); |
- ASSERT(rect.top - rect.bottom >= GetMinHeight()); |
+ ASSERT(rect.right - rect.left >= GetMinWidth()); |
+ ASSERT(rect.top - rect.bottom >= GetMinHeight()); |
- m_pAnnot->GetAnnotDict()->SetAtRect("Rect", rect); |
+ m_pAnnot->GetAnnotDict()->SetAtRect("Rect", rect); |
} |
CPDF_Rect CPDFSDK_BAAnnot::GetRect() const |
{ |
- ASSERT(m_pAnnot != NULL); |
+ ASSERT(m_pAnnot != NULL); |
- CPDF_Rect rect; |
- m_pAnnot->GetRect(rect); |
+ CPDF_Rect rect; |
+ m_pAnnot->GetRect(rect); |
- return rect; |
+ return rect; |
} |
CFX_ByteString CPDFSDK_BAAnnot::GetType() const |
{ |
- ASSERT(m_pAnnot != NULL); |
+ ASSERT(m_pAnnot != NULL); |
- return m_pAnnot->GetSubType(); |
+ return m_pAnnot->GetSubType(); |
} |
CFX_ByteString CPDFSDK_BAAnnot::GetSubType() const |
{ |
- return ""; |
+ return ""; |
} |
void CPDFSDK_BAAnnot::ResetAppearance() |
{ |
- ASSERT(FALSE); |
+ ASSERT(FALSE); |
} |
void CPDFSDK_BAAnnot::DrawAppearance(CFX_RenderDevice* pDevice, const CPDF_Matrix* pUser2Device, |
- CPDF_Annot::AppearanceMode mode, const CPDF_RenderOptions* pOptions) |
+ CPDF_Annot::AppearanceMode mode, const CPDF_RenderOptions* pOptions) |
{ |
- ASSERT(m_pPageView != NULL); |
- ASSERT(m_pAnnot != NULL); |
+ ASSERT(m_pPageView != NULL); |
+ ASSERT(m_pAnnot != NULL); |
- m_pAnnot->DrawAppearance(m_pPageView->GetPDFPage(), pDevice, pUser2Device, mode, pOptions); |
+ m_pAnnot->DrawAppearance(m_pPageView->GetPDFPage(), pDevice, pUser2Device, mode, pOptions); |
} |
-FX_BOOL CPDFSDK_BAAnnot::IsAppearanceValid() |
+FX_BOOL CPDFSDK_BAAnnot::IsAppearanceValid() |
{ |
- return m_pAnnot->GetAnnotDict()->GetDict("AP") != NULL; |
+ return m_pAnnot->GetAnnotDict()->GetDict("AP") != NULL; |
} |
-FX_BOOL CPDFSDK_BAAnnot::IsAppearanceValid(CPDF_Annot::AppearanceMode mode) |
+FX_BOOL CPDFSDK_BAAnnot::IsAppearanceValid(CPDF_Annot::AppearanceMode mode) |
{ |
- CPDF_Dictionary* pAP = m_pAnnot->GetAnnotDict()->GetDict("AP"); |
- if (pAP == NULL) return FALSE; |
+ CPDF_Dictionary* pAP = m_pAnnot->GetAnnotDict()->GetDict("AP"); |
+ if (pAP == NULL) return FALSE; |
- // Choose the right sub-ap |
- const FX_CHAR* ap_entry = "N"; |
- if (mode == CPDF_Annot::Down) |
- ap_entry = "D"; |
- else if (mode == CPDF_Annot::Rollover) |
- ap_entry = "R"; |
- if (!pAP->KeyExist(ap_entry)) |
- ap_entry = "N"; |
+ // Choose the right sub-ap |
+ const FX_CHAR* ap_entry = "N"; |
+ if (mode == CPDF_Annot::Down) |
+ ap_entry = "D"; |
+ else if (mode == CPDF_Annot::Rollover) |
+ ap_entry = "R"; |
+ if (!pAP->KeyExist(ap_entry)) |
+ ap_entry = "N"; |
- // Get the AP stream or subdirectory |
- CPDF_Object* psub = pAP->GetElementValue(ap_entry); |
- if (psub == NULL) return FALSE; |
+ // Get the AP stream or subdirectory |
+ CPDF_Object* psub = pAP->GetElementValue(ap_entry); |
+ if (psub == NULL) return FALSE; |
- return TRUE; |
+ return TRUE; |
} |
void CPDFSDK_BAAnnot::DrawBorder(CFX_RenderDevice* pDevice, const CPDF_Matrix* pUser2Device, |
- const CPDF_RenderOptions* pOptions) |
+ const CPDF_RenderOptions* pOptions) |
{ |
- ASSERT(m_pAnnot != NULL); |
- m_pAnnot->DrawBorder(pDevice, pUser2Device, pOptions); |
+ ASSERT(m_pAnnot != NULL); |
+ m_pAnnot->DrawBorder(pDevice, pUser2Device, pOptions); |
} |
void CPDFSDK_BAAnnot::ClearCachedAP() |
{ |
- ASSERT(m_pAnnot != NULL); |
- m_pAnnot->ClearCachedAP(); |
+ ASSERT(m_pAnnot != NULL); |
+ m_pAnnot->ClearCachedAP(); |
} |
void CPDFSDK_BAAnnot::SetContents(const CFX_WideString& sContents) |
{ |
- if (sContents.IsEmpty()) |
- m_pAnnot->GetAnnotDict()->RemoveAt("Contents"); |
- else |
- m_pAnnot->GetAnnotDict()->SetAtString("Contents", PDF_EncodeText(sContents)); |
+ if (sContents.IsEmpty()) |
+ m_pAnnot->GetAnnotDict()->RemoveAt("Contents"); |
+ else |
+ m_pAnnot->GetAnnotDict()->SetAtString("Contents", PDF_EncodeText(sContents)); |
} |
CFX_WideString CPDFSDK_BAAnnot::GetContents() const |
{ |
- return m_pAnnot->GetAnnotDict()->GetUnicodeText("Contents"); |
+ return m_pAnnot->GetAnnotDict()->GetUnicodeText("Contents"); |
} |
void CPDFSDK_BAAnnot::SetAnnotName(const CFX_WideString& sName) |
{ |
- if (sName.IsEmpty()) |
- m_pAnnot->GetAnnotDict()->RemoveAt("NM"); |
- else |
- m_pAnnot->GetAnnotDict()->SetAtString("NM", PDF_EncodeText(sName)); |
+ if (sName.IsEmpty()) |
+ m_pAnnot->GetAnnotDict()->RemoveAt("NM"); |
+ else |
+ m_pAnnot->GetAnnotDict()->SetAtString("NM", PDF_EncodeText(sName)); |
} |
CFX_WideString CPDFSDK_BAAnnot::GetAnnotName() const |
{ |
- return m_pAnnot->GetAnnotDict()->GetUnicodeText("NM"); |
+ return m_pAnnot->GetAnnotDict()->GetUnicodeText("NM"); |
} |
void CPDFSDK_BAAnnot::SetModifiedDate(const FX_SYSTEMTIME& st) |
{ |
- CPDFSDK_DateTime dt(st); |
- CFX_ByteString str = dt.ToPDFDateTimeString(); |
+ CPDFSDK_DateTime dt(st); |
+ CFX_ByteString str = dt.ToPDFDateTimeString(); |
- if (str.IsEmpty()) |
- m_pAnnot->GetAnnotDict()->RemoveAt("M"); |
- else |
- m_pAnnot->GetAnnotDict()->SetAtString("M", str); |
+ if (str.IsEmpty()) |
+ m_pAnnot->GetAnnotDict()->RemoveAt("M"); |
+ else |
+ m_pAnnot->GetAnnotDict()->SetAtString("M", str); |
} |
FX_SYSTEMTIME CPDFSDK_BAAnnot::GetModifiedDate() const |
{ |
- FX_SYSTEMTIME systime; |
- CFX_ByteString str = m_pAnnot->GetAnnotDict()->GetString("M"); |
+ FX_SYSTEMTIME systime; |
+ CFX_ByteString str = m_pAnnot->GetAnnotDict()->GetString("M"); |
- CPDFSDK_DateTime dt(str); |
- dt.ToSystemTime(systime); |
+ CPDFSDK_DateTime dt(str); |
+ dt.ToSystemTime(systime); |
- return systime; |
+ return systime; |
} |
void CPDFSDK_BAAnnot::SetFlags(int nFlags) |
{ |
- m_pAnnot->GetAnnotDict()->SetAtInteger("F", nFlags); |
+ m_pAnnot->GetAnnotDict()->SetAtInteger("F", nFlags); |
} |
int CPDFSDK_BAAnnot::GetFlags() const |
{ |
- return m_pAnnot->GetAnnotDict()->GetInteger("F"); |
+ return m_pAnnot->GetAnnotDict()->GetInteger("F"); |
} |
void CPDFSDK_BAAnnot::SetAppState(const CFX_ByteString& str) |
{ |
- if (str.IsEmpty()) |
- m_pAnnot->GetAnnotDict()->RemoveAt("AS"); |
- else |
- m_pAnnot->GetAnnotDict()->SetAtString("AS", str); |
+ if (str.IsEmpty()) |
+ m_pAnnot->GetAnnotDict()->RemoveAt("AS"); |
+ else |
+ m_pAnnot->GetAnnotDict()->SetAtString("AS", str); |
} |
CFX_ByteString CPDFSDK_BAAnnot::GetAppState() const |
{ |
- return m_pAnnot->GetAnnotDict()->GetString("AS"); |
+ return m_pAnnot->GetAnnotDict()->GetString("AS"); |
} |
void CPDFSDK_BAAnnot::SetStructParent(int key) |
{ |
- m_pAnnot->GetAnnotDict()->SetAtInteger("StructParent", key); |
+ m_pAnnot->GetAnnotDict()->SetAtInteger("StructParent", key); |
} |
-int CPDFSDK_BAAnnot::GetStructParent() const |
+int CPDFSDK_BAAnnot::GetStructParent() const |
{ |
- return m_pAnnot->GetAnnotDict()->GetInteger("StructParent"); |
+ return m_pAnnot->GetAnnotDict()->GetInteger("StructParent"); |
} |
//border |
void CPDFSDK_BAAnnot::SetBorderWidth(int nWidth) |
{ |
- CPDF_Array* pBorder = m_pAnnot->GetAnnotDict()->GetArray("Border"); |
+ CPDF_Array* pBorder = m_pAnnot->GetAnnotDict()->GetArray("Border"); |
- if (pBorder) |
- { |
- pBorder->SetAt(2, FX_NEW CPDF_Number(nWidth)); |
- } |
- else |
- { |
- CPDF_Dictionary* pBSDict = m_pAnnot->GetAnnotDict()->GetDict("BS"); |
+ if (pBorder) |
+ { |
+ pBorder->SetAt(2, FX_NEW CPDF_Number(nWidth)); |
+ } |
+ else |
+ { |
+ CPDF_Dictionary* pBSDict = m_pAnnot->GetAnnotDict()->GetDict("BS"); |
- if (!pBSDict) |
- { |
- pBSDict = FX_NEW CPDF_Dictionary; |
- m_pAnnot->GetAnnotDict()->SetAt("BS", pBSDict); |
- } |
+ if (!pBSDict) |
+ { |
+ pBSDict = FX_NEW CPDF_Dictionary; |
+ m_pAnnot->GetAnnotDict()->SetAt("BS", pBSDict); |
+ } |
- pBSDict->SetAtInteger("W", nWidth); |
- } |
+ pBSDict->SetAtInteger("W", nWidth); |
+ } |
} |
-int CPDFSDK_BAAnnot::GetBorderWidth() const |
+int CPDFSDK_BAAnnot::GetBorderWidth() const |
{ |
- CPDF_Array* pBorder = m_pAnnot->GetAnnotDict()->GetArray("Border"); |
- |
- if (pBorder) |
- { |
- return pBorder->GetInteger(2); |
- } |
- else |
- { |
- CPDF_Dictionary* pBSDict = m_pAnnot->GetAnnotDict()->GetDict("BS"); |
- |
- if (pBSDict) |
- { |
- return pBSDict->GetInteger("W", 1); |
- } |
- } |
- return 1; |
+ if (CPDF_Array* pBorder = m_pAnnot->GetAnnotDict()->GetArray("Border")) { |
+ return pBorder->GetInteger(2); |
+ } |
+ if (CPDF_Dictionary* pBSDict = m_pAnnot->GetAnnotDict()->GetDict("BS")) { |
+ return pBSDict->GetInteger("W", 1); |
+ } |
+ return 1; |
} |
void CPDFSDK_BAAnnot::SetBorderStyle(int nStyle) |
{ |
- CPDF_Dictionary* pBSDict = m_pAnnot->GetAnnotDict()->GetDict("BS"); |
- if (!pBSDict) |
- { |
- pBSDict = new CPDF_Dictionary; |
- m_pAnnot->GetAnnotDict()->SetAt("BS", pBSDict); |
- } |
- |
- switch (nStyle) |
- { |
- case BBS_SOLID: |
- pBSDict->SetAtName("S", "S"); |
- break; |
- case BBS_DASH: |
- pBSDict->SetAtName("S", "D"); |
- break; |
- case BBS_BEVELED: |
- pBSDict->SetAtName("S", "B"); |
- break; |
- case BBS_INSET: |
- pBSDict->SetAtName("S", "I"); |
- break; |
- case BBS_UNDERLINE: |
- pBSDict->SetAtName("S", "U"); |
- break; |
- } |
-} |
- |
-int CPDFSDK_BAAnnot::GetBorderStyle() const |
-{ |
- CPDF_Dictionary* pBSDict = m_pAnnot->GetAnnotDict()->GetDict("BS"); |
- if (pBSDict) |
- { |
- CFX_ByteString sBorderStyle = pBSDict->GetString("S", "S"); |
- if (sBorderStyle == "S") return BBS_SOLID; |
- if (sBorderStyle == "D") return BBS_DASH; |
- if (sBorderStyle == "B") return BBS_BEVELED; |
- if (sBorderStyle == "I") return BBS_INSET; |
- if (sBorderStyle == "U") return BBS_UNDERLINE; |
- } |
- |
- CPDF_Array* pBorder = m_pAnnot->GetAnnotDict()->GetArray("Border"); |
- if (pBorder) |
- { |
- if (pBorder->GetCount() >= 4) |
- { |
- CPDF_Array *pDP = pBorder->GetArray(3); |
- if (pDP && pDP->GetCount() > 0) |
- return BBS_DASH; |
- } |
- } |
- |
- return BBS_SOLID; |
+ CPDF_Dictionary* pBSDict = m_pAnnot->GetAnnotDict()->GetDict("BS"); |
+ if (!pBSDict) |
+ { |
+ pBSDict = new CPDF_Dictionary; |
+ m_pAnnot->GetAnnotDict()->SetAt("BS", pBSDict); |
+ } |
+ |
+ switch (nStyle) |
+ { |
+ case BBS_SOLID: |
+ pBSDict->SetAtName("S", "S"); |
+ break; |
+ case BBS_DASH: |
+ pBSDict->SetAtName("S", "D"); |
+ break; |
+ case BBS_BEVELED: |
+ pBSDict->SetAtName("S", "B"); |
+ break; |
+ case BBS_INSET: |
+ pBSDict->SetAtName("S", "I"); |
+ break; |
+ case BBS_UNDERLINE: |
+ pBSDict->SetAtName("S", "U"); |
+ break; |
+ } |
+} |
+ |
+int CPDFSDK_BAAnnot::GetBorderStyle() const |
+{ |
+ CPDF_Dictionary* pBSDict = m_pAnnot->GetAnnotDict()->GetDict("BS"); |
+ if (pBSDict) |
+ { |
+ CFX_ByteString sBorderStyle = pBSDict->GetString("S", "S"); |
+ if (sBorderStyle == "S") return BBS_SOLID; |
+ if (sBorderStyle == "D") return BBS_DASH; |
+ if (sBorderStyle == "B") return BBS_BEVELED; |
+ if (sBorderStyle == "I") return BBS_INSET; |
+ if (sBorderStyle == "U") return BBS_UNDERLINE; |
+ } |
+ |
+ CPDF_Array* pBorder = m_pAnnot->GetAnnotDict()->GetArray("Border"); |
+ if (pBorder) |
+ { |
+ if (pBorder->GetCount() >= 4) |
+ { |
+ CPDF_Array *pDP = pBorder->GetArray(3); |
+ if (pDP && pDP->GetCount() > 0) |
+ return BBS_DASH; |
+ } |
+ } |
+ |
+ return BBS_SOLID; |
} |
void CPDFSDK_BAAnnot::SetBorderDash(const CFX_IntArray& array) |
{ |
- CPDF_Dictionary* pBSDict = m_pAnnot->GetAnnotDict()->GetDict("BS"); |
- if (!pBSDict) |
- { |
- pBSDict = new CPDF_Dictionary; |
- m_pAnnot->GetAnnotDict()->SetAt("BS", pBSDict); |
- } |
+ CPDF_Dictionary* pBSDict = m_pAnnot->GetAnnotDict()->GetDict("BS"); |
+ if (!pBSDict) |
+ { |
+ pBSDict = new CPDF_Dictionary; |
+ m_pAnnot->GetAnnotDict()->SetAt("BS", pBSDict); |
+ } |
- CPDF_Array* pArray = FX_NEW CPDF_Array; |
- for (int i=0,sz=array.GetSize(); i<sz; i++) |
- { |
- pArray->AddInteger(array[i]); |
- } |
+ CPDF_Array* pArray = FX_NEW CPDF_Array; |
+ for (int i=0,sz=array.GetSize(); i<sz; i++) |
+ { |
+ pArray->AddInteger(array[i]); |
+ } |
- pBSDict->SetAt("D", pArray); |
+ pBSDict->SetAt("D", pArray); |
} |
void CPDFSDK_BAAnnot::GetBorderDash(CFX_IntArray& array) const |
{ |
- CPDF_Array* pDash = NULL; |
- |
- CPDF_Array* pBorder = m_pAnnot->GetAnnotDict()->GetArray("Border"); |
- if (pBorder) |
- { |
- pDash = pBorder->GetArray(3); |
- } |
- else |
- { |
- CPDF_Dictionary* pBSDict = m_pAnnot->GetAnnotDict()->GetDict("BS"); |
- if (pBSDict) |
- { |
- pDash = pBSDict->GetArray("D"); |
- } |
- } |
- |
- if (pDash) |
- { |
- for (int i=0,sz=pDash->GetCount(); i<sz; i++) |
- { |
- array.Add(pDash->GetInteger(i)); |
- } |
- } |
+ CPDF_Array* pDash = NULL; |
+ |
+ CPDF_Array* pBorder = m_pAnnot->GetAnnotDict()->GetArray("Border"); |
+ if (pBorder) |
+ { |
+ pDash = pBorder->GetArray(3); |
+ } |
+ else |
+ { |
+ CPDF_Dictionary* pBSDict = m_pAnnot->GetAnnotDict()->GetDict("BS"); |
+ if (pBSDict) |
+ { |
+ pDash = pBSDict->GetArray("D"); |
+ } |
+ } |
+ |
+ if (pDash) |
+ { |
+ for (int i=0,sz=pDash->GetCount(); i<sz; i++) |
+ { |
+ array.Add(pDash->GetInteger(i)); |
+ } |
+ } |
} |
void CPDFSDK_BAAnnot::SetColor(FX_COLORREF color) |
{ |
- CPDF_Array* pArray = new CPDF_Array; |
- pArray->AddNumber((FX_FLOAT)FXSYS_GetRValue(color) / 255.0f); |
- pArray->AddNumber((FX_FLOAT)FXSYS_GetGValue(color) / 255.0f); |
- pArray->AddNumber((FX_FLOAT)FXSYS_GetBValue(color) / 255.0f); |
- m_pAnnot->GetAnnotDict()->SetAt("C", pArray); |
+ CPDF_Array* pArray = new CPDF_Array; |
+ pArray->AddNumber((FX_FLOAT)FXSYS_GetRValue(color) / 255.0f); |
+ pArray->AddNumber((FX_FLOAT)FXSYS_GetGValue(color) / 255.0f); |
+ pArray->AddNumber((FX_FLOAT)FXSYS_GetBValue(color) / 255.0f); |
+ m_pAnnot->GetAnnotDict()->SetAt("C", pArray); |
} |
void CPDFSDK_BAAnnot::RemoveColor() |
{ |
- m_pAnnot->GetAnnotDict()->RemoveAt("C"); |
+ m_pAnnot->GetAnnotDict()->RemoveAt("C"); |
} |
FX_BOOL CPDFSDK_BAAnnot::GetColor(FX_COLORREF& color) const |
{ |
- if (CPDF_Array* pEntry = m_pAnnot->GetAnnotDict()->GetArray("C")) |
- { |
- int nCount = pEntry->GetCount(); |
- if (nCount == 1) |
- { |
- FX_FLOAT g = pEntry->GetNumber(0) * 255; |
+ if (CPDF_Array* pEntry = m_pAnnot->GetAnnotDict()->GetArray("C")) |
+ { |
+ int nCount = pEntry->GetCount(); |
+ if (nCount == 1) |
+ { |
+ FX_FLOAT g = pEntry->GetNumber(0) * 255; |
- color = FXSYS_RGB((int)g, (int)g, (int)g); |
+ color = FXSYS_RGB((int)g, (int)g, (int)g); |
- return TRUE; |
- } |
- else if (nCount == 3) |
- { |
- FX_FLOAT r = pEntry->GetNumber(0) * 255; |
- FX_FLOAT g = pEntry->GetNumber(1) * 255; |
- FX_FLOAT b = pEntry->GetNumber(2) * 255; |
+ return TRUE; |
+ } |
+ else if (nCount == 3) |
+ { |
+ FX_FLOAT r = pEntry->GetNumber(0) * 255; |
+ FX_FLOAT g = pEntry->GetNumber(1) * 255; |
+ FX_FLOAT b = pEntry->GetNumber(2) * 255; |
- color = FXSYS_RGB((int)r, (int)g, (int)b); |
+ color = FXSYS_RGB((int)r, (int)g, (int)b); |
- return TRUE; |
- } |
- else if (nCount == 4) |
- { |
- FX_FLOAT c = pEntry->GetNumber(0); |
- FX_FLOAT m = pEntry->GetNumber(1); |
- FX_FLOAT y = pEntry->GetNumber(2); |
- FX_FLOAT k = pEntry->GetNumber(3); |
+ return TRUE; |
+ } |
+ else if (nCount == 4) |
+ { |
+ FX_FLOAT c = pEntry->GetNumber(0); |
+ FX_FLOAT m = pEntry->GetNumber(1); |
+ FX_FLOAT y = pEntry->GetNumber(2); |
+ FX_FLOAT k = pEntry->GetNumber(3); |
- FX_FLOAT r = 1.0f - FX_MIN(1.0f, c + k); |
- FX_FLOAT g = 1.0f - FX_MIN(1.0f, m + k); |
- FX_FLOAT b = 1.0f - FX_MIN(1.0f, y + k); |
+ FX_FLOAT r = 1.0f - FX_MIN(1.0f, c + k); |
+ FX_FLOAT g = 1.0f - FX_MIN(1.0f, m + k); |
+ FX_FLOAT b = 1.0f - FX_MIN(1.0f, y + k); |
- color = FXSYS_RGB((int)(r * 255), (int)(g * 255), (int)(b * 255)); |
+ color = FXSYS_RGB((int)(r * 255), (int)(g * 255), (int)(b * 255)); |
- return TRUE; |
- } |
- } |
+ return TRUE; |
+ } |
+ } |
- return FALSE; |
+ return FALSE; |
} |
void CPDFSDK_BAAnnot::WriteAppearance(const CFX_ByteString& sAPType, const CPDF_Rect& rcBBox, |
- const CPDF_Matrix& matrix, const CFX_ByteString& sContents, |
- const CFX_ByteString& sAPState) |
-{ |
- CPDF_Dictionary* pAPDict = m_pAnnot->GetAnnotDict()->GetDict("AP"); |
- |
- if (!pAPDict) |
- { |
- pAPDict = new CPDF_Dictionary; |
- m_pAnnot->GetAnnotDict()->SetAt("AP", pAPDict); |
- } |
- |
- CPDF_Stream* pStream = NULL; |
- CPDF_Dictionary* pParentDict = NULL; |
- |
- if (sAPState.IsEmpty()) |
- { |
- pParentDict = pAPDict; |
- pStream = pAPDict->GetStream(sAPType); |
- } |
- else |
- { |
- CPDF_Dictionary* pAPTypeDict = pAPDict->GetDict(sAPType); |
- if (!pAPTypeDict) |
- { |
- pAPTypeDict = FX_NEW CPDF_Dictionary; |
- pAPDict->SetAt(sAPType, pAPTypeDict); |
- } |
- |
- pParentDict = pAPTypeDict; |
- pStream = pAPTypeDict->GetStream(sAPState); |
- } |
- |
- if (!pStream) |
- { |
- ASSERT(m_pPageView != NULL); |
- CPDF_Document* pDoc = m_pPageView->GetPDFDocument(); |
- ASSERT(pDoc != NULL); |
- |
- pStream = FX_NEW CPDF_Stream(NULL, 0, NULL); |
- int32_t objnum = pDoc->AddIndirectObject(pStream); |
- //pAPDict->SetAtReference(sAPType, pDoc, objnum); |
- ASSERT(pParentDict != NULL); |
- pParentDict->SetAtReference(sAPType, pDoc, objnum); |
- } |
- |
- CPDF_Dictionary * pStreamDict = pStream->GetDict(); |
- |
- if (!pStreamDict) |
- { |
- pStreamDict = FX_NEW CPDF_Dictionary; |
- pStreamDict->SetAtName("Type", "XObject"); |
- pStreamDict->SetAtName("Subtype", "Form"); |
- pStreamDict->SetAtInteger("FormType", 1); |
- pStream->InitStream(NULL,0,pStreamDict); |
- } |
- |
- if (pStreamDict) |
- { |
- pStreamDict->SetAtMatrix("Matrix",matrix); |
- pStreamDict->SetAtRect("BBox", rcBBox); |
- } |
- |
- pStream->SetData((uint8_t*)sContents.c_str(), sContents.GetLength(), FALSE, FALSE); |
-} |
- |
-#define BA_ANNOT_MINWIDTH 1 |
-#define BA_ANNOT_MINHEIGHT 1 |
+ const CPDF_Matrix& matrix, const CFX_ByteString& sContents, |
+ const CFX_ByteString& sAPState) |
+{ |
+ CPDF_Dictionary* pAPDict = m_pAnnot->GetAnnotDict()->GetDict("AP"); |
+ |
+ if (!pAPDict) |
+ { |
+ pAPDict = new CPDF_Dictionary; |
+ m_pAnnot->GetAnnotDict()->SetAt("AP", pAPDict); |
+ } |
+ |
+ CPDF_Stream* pStream = NULL; |
+ CPDF_Dictionary* pParentDict = NULL; |
+ |
+ if (sAPState.IsEmpty()) |
+ { |
+ pParentDict = pAPDict; |
+ pStream = pAPDict->GetStream(sAPType); |
+ } |
+ else |
+ { |
+ CPDF_Dictionary* pAPTypeDict = pAPDict->GetDict(sAPType); |
+ if (!pAPTypeDict) |
+ { |
+ pAPTypeDict = FX_NEW CPDF_Dictionary; |
+ pAPDict->SetAt(sAPType, pAPTypeDict); |
+ } |
+ |
+ pParentDict = pAPTypeDict; |
+ pStream = pAPTypeDict->GetStream(sAPState); |
+ } |
+ |
+ if (!pStream) |
+ { |
+ ASSERT(m_pPageView != NULL); |
+ CPDF_Document* pDoc = m_pPageView->GetPDFDocument(); |
+ ASSERT(pDoc != NULL); |
+ |
+ pStream = FX_NEW CPDF_Stream(NULL, 0, NULL); |
+ int32_t objnum = pDoc->AddIndirectObject(pStream); |
+ //pAPDict->SetAtReference(sAPType, pDoc, objnum); |
+ ASSERT(pParentDict != NULL); |
+ pParentDict->SetAtReference(sAPType, pDoc, objnum); |
+ } |
+ |
+ CPDF_Dictionary * pStreamDict = pStream->GetDict(); |
+ |
+ if (!pStreamDict) |
+ { |
+ pStreamDict = FX_NEW CPDF_Dictionary; |
+ pStreamDict->SetAtName("Type", "XObject"); |
+ pStreamDict->SetAtName("Subtype", "Form"); |
+ pStreamDict->SetAtInteger("FormType", 1); |
+ pStream->InitStream(NULL,0,pStreamDict); |
+ } |
+ |
+ if (pStreamDict) |
+ { |
+ pStreamDict->SetAtMatrix("Matrix",matrix); |
+ pStreamDict->SetAtRect("BBox", rcBBox); |
+ } |
+ |
+ pStream->SetData((uint8_t*)sContents.c_str(), sContents.GetLength(), FALSE, FALSE); |
+} |
+ |
+#define BA_ANNOT_MINWIDTH 1 |
+#define BA_ANNOT_MINHEIGHT 1 |
FX_FLOAT CPDFSDK_Annot::GetMinWidth() const |
{ |
- return BA_ANNOT_MINWIDTH; |
+ return BA_ANNOT_MINWIDTH; |
} |
FX_FLOAT CPDFSDK_Annot::GetMinHeight() const |
{ |
- return BA_ANNOT_MINHEIGHT; |
+ return BA_ANNOT_MINHEIGHT; |
} |
FX_BOOL CPDFSDK_BAAnnot::CreateFormFiller() |
{ |
- return TRUE; |
+ return TRUE; |
} |
-FX_BOOL CPDFSDK_BAAnnot::IsVisible() const |
+FX_BOOL CPDFSDK_BAAnnot::IsVisible() const |
{ |
- int nFlags = GetFlags(); |
- return !((nFlags & ANNOTFLAG_INVISIBLE) || (nFlags & ANNOTFLAG_HIDDEN) || (nFlags & ANNOTFLAG_NOVIEW)); |
+ int nFlags = GetFlags(); |
+ return !((nFlags & ANNOTFLAG_INVISIBLE) || (nFlags & ANNOTFLAG_HIDDEN) || (nFlags & ANNOTFLAG_NOVIEW)); |
} |
CPDF_Action CPDFSDK_BAAnnot::GetAction() const |
{ |
- return CPDF_Action(m_pAnnot->GetAnnotDict()->GetDict("A")); |
+ return CPDF_Action(m_pAnnot->GetAnnotDict()->GetDict("A")); |
} |
void CPDFSDK_BAAnnot::SetAction(const CPDF_Action& action) |
{ |
- ASSERT(action); |
- if ((CPDF_Action&)action != CPDF_Action(m_pAnnot->GetAnnotDict()->GetDict("A"))) |
- { |
- CPDF_Document* pDoc = m_pPageView->GetPDFDocument(); |
- CPDF_Dictionary* pDict = action.GetDict(); |
- if (pDict && pDict->GetObjNum() == 0) { |
- pDoc->AddIndirectObject(pDict); |
- } |
- m_pAnnot->GetAnnotDict()->SetAtReference("A", pDoc, pDict->GetObjNum()); |
- } |
+ ASSERT(action); |
+ if ((CPDF_Action&)action != CPDF_Action(m_pAnnot->GetAnnotDict()->GetDict("A"))) |
+ { |
+ CPDF_Document* pDoc = m_pPageView->GetPDFDocument(); |
+ CPDF_Dictionary* pDict = action.GetDict(); |
+ if (pDict && pDict->GetObjNum() == 0) { |
+ pDoc->AddIndirectObject(pDict); |
+ } |
+ m_pAnnot->GetAnnotDict()->SetAtReference("A", pDoc, pDict->GetObjNum()); |
+ } |
} |
void CPDFSDK_BAAnnot::RemoveAction() |
{ |
- m_pAnnot->GetAnnotDict()->RemoveAt("A"); |
+ m_pAnnot->GetAnnotDict()->RemoveAt("A"); |
} |
CPDF_AAction CPDFSDK_BAAnnot::GetAAction() const |
{ |
- return m_pAnnot->GetAnnotDict()->GetDict("AA"); |
+ return m_pAnnot->GetAnnotDict()->GetDict("AA"); |
} |
void CPDFSDK_BAAnnot::SetAAction(const CPDF_AAction& aa) |
{ |
- ASSERT(aa != NULL); |
+ ASSERT(aa != NULL); |
- if ((CPDF_AAction&)aa != m_pAnnot->GetAnnotDict()->GetDict("AA")) |
- m_pAnnot->GetAnnotDict()->SetAt("AA", (CPDF_AAction&)aa); |
+ if ((CPDF_AAction&)aa != m_pAnnot->GetAnnotDict()->GetDict("AA")) |
+ m_pAnnot->GetAnnotDict()->SetAt("AA", (CPDF_AAction&)aa); |
} |
void CPDFSDK_BAAnnot::RemoveAAction() |
{ |
- m_pAnnot->GetAnnotDict()->RemoveAt("AA"); |
+ m_pAnnot->GetAnnotDict()->RemoveAt("AA"); |
} |
-CPDF_Action CPDFSDK_BAAnnot::GetAAction(CPDF_AAction::AActionType eAAT) |
+CPDF_Action CPDFSDK_BAAnnot::GetAAction(CPDF_AAction::AActionType eAAT) |
{ |
- CPDF_AAction AAction = GetAAction(); |
+ CPDF_AAction AAction = GetAAction(); |
- if (AAction.ActionExist(eAAT)) |
- return AAction.GetAction(eAAT); |
+ if (AAction.ActionExist(eAAT)) |
+ return AAction.GetAction(eAAT); |
- if (eAAT == CPDF_AAction::ButtonUp) |
- return GetAction(); |
+ if (eAAT == CPDF_AAction::ButtonUp) |
+ return GetAction(); |
- return CPDF_Action(); |
+ return CPDF_Action(); |
} |
FX_BOOL CPDFSDK_BAAnnot::IsXFAField() |
{ |
- return FALSE; |
+ return FALSE; |
} |
void CPDFSDK_BAAnnot::Annot_OnDraw(CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device, CPDF_RenderOptions* pOptions) |
{ |
- m_pAnnot->GetAPForm(m_pPageView->GetPDFPage(), CPDF_Annot::Normal); |
- m_pAnnot->DrawAppearance(m_pPageView->GetPDFPage(), pDevice, pUser2Device, CPDF_Annot::Normal, NULL); |
+ m_pAnnot->GetAPForm(m_pPageView->GetPDFPage(), CPDF_Annot::Normal); |
+ m_pAnnot->DrawAppearance(m_pPageView->GetPDFPage(), pDevice, pUser2Device, CPDF_Annot::Normal, NULL); |
- return ; |
+ return ; |
} |
CPDF_Page* CPDFSDK_Annot::GetPDFPage() |
{ |
- if(m_pPageView) |
- return m_pPageView->GetPDFPage(); |
- return NULL; |
+ if(m_pPageView) |
+ return m_pPageView->GetPDFPage(); |
+ return NULL; |
} |
CPDFXFA_Page* CPDFSDK_Annot::GetPDFXFAPage() |
{ |
- if (m_pPageView) |
- return m_pPageView->GetPDFXFAPage(); |
- return NULL; |
+ if (m_pPageView) |
+ return m_pPageView->GetPDFXFAPage(); |
+ return NULL; |
} |