| OLD | NEW |
| 1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
| 6 | 6 |
| 7 #include "../include/fsdk_define.h" | 7 #include "../include/fsdk_define.h" |
| 8 #include "../include/fpdfxfa/fpdfxfa_doc.h" | 8 #include "../include/fpdfxfa/fpdfxfa_doc.h" |
| 9 #include "../include/fsdk_mgr.h" | 9 #include "../include/fsdk_mgr.h" |
| 10 #include "../include/fsdk_baseannot.h" | 10 #include "../include/fsdk_baseannot.h" |
| 11 | 11 |
| 12 | 12 |
| 13 //--------------------------------------------------------------------------- | 13 //--------------------------------------------------------------------------- |
| 14 // CPDFSDK_DateTime
| 14 // CPDFSDK_DateTime
|
| 15 //--------------------------------------------------------------------------- | 15 //--------------------------------------------------------------------------- |
| 16 int _gAfxGetTimeZoneInSeconds(FX_CHAR tzhour, FX_BYTE tzminute) | 16 int _gAfxGetTimeZoneInSeconds(FX_CHAR tzhour, uint8_t tzminute) |
| 17 { | 17 { |
| 18 return (int)tzhour * 3600 + (int)tzminute * (tzhour >= 0 ? 60 : -60); | 18 return (int)tzhour * 3600 + (int)tzminute * (tzhour >= 0 ? 60 : -60); |
| 19 } | 19 } |
| 20 | 20 |
| 21 FX_BOOL _gAfxIsLeapYear(FX_SHORT year) | 21 FX_BOOL _gAfxIsLeapYear(int16_t year) |
| 22 { | 22 { |
| 23 return ((year % 400 == 0) || ((year % 4 == 0) && (year % 100 != 0))); | 23 return ((year % 400 == 0) || ((year % 4 == 0) && (year % 100 != 0))); |
| 24 } | 24 } |
| 25 | 25 |
| 26 FX_WORD _gAfxGetYearDays(FX_SHORT year) | 26 FX_WORD _gAfxGetYearDays(int16_t year) |
| 27 { | 27 { |
| 28 return (_gAfxIsLeapYear(year) == TRUE ? 366 : 365); | 28 return (_gAfxIsLeapYear(year) == TRUE ? 366 : 365); |
| 29 } | 29 } |
| 30 | 30 |
| 31 FX_BYTE _gAfxGetMonthDays(FX_SHORT year, FX_BYTE month) | 31 uint8_t _gAfxGetMonthDays(int16_t year, uint8_t month) |
| 32 { | 32 { |
| 33 » FX_BYTE»mDays; | 33 » uint8_t»mDays; |
| 34 switch (month) | 34 switch (month) |
| 35 { | 35 { |
| 36 case 1: | 36 case 1: |
| 37 case 3: | 37 case 3: |
| 38 case 5: | 38 case 5: |
| 39 case 7: | 39 case 7: |
| 40 case 8: | 40 case 8: |
| 41 case 10: | 41 case 10: |
| 42 case 12: | 42 case 12: |
| 43 mDays = 31; | 43 mDays = 31; |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 111 CPDFSDK_DateTime& CPDFSDK_DateTime::operator = (const CPDFSDK_DateTime& datetime
) | 111 CPDFSDK_DateTime& CPDFSDK_DateTime::operator = (const CPDFSDK_DateTime& datetime
) |
| 112 { | 112 { |
| 113 FXSYS_memcpy(&dt, &datetime.dt, sizeof(FX_DATETIME)); | 113 FXSYS_memcpy(&dt, &datetime.dt, sizeof(FX_DATETIME)); |
| 114 return *this; | 114 return *this; |
| 115 } | 115 } |
| 116 | 116 |
| 117 CPDFSDK_DateTime& CPDFSDK_DateTime::operator = (const FX_SYSTEMTIME& st) | 117 CPDFSDK_DateTime& CPDFSDK_DateTime::operator = (const FX_SYSTEMTIME& st) |
| 118 { | 118 { |
| 119 tzset(); | 119 tzset(); |
| 120 | 120 |
| 121 » dt.year = (FX_SHORT)st.wYear; | 121 » dt.year = (int16_t)st.wYear; |
| 122 » dt.month = (FX_BYTE)st.wMonth; | 122 » dt.month = (uint8_t)st.wMonth; |
| 123 » dt.day = (FX_BYTE)st.wDay; | 123 » dt.day = (uint8_t)st.wDay; |
| 124 » dt.hour = (FX_BYTE)st.wHour; | 124 » dt.hour = (uint8_t)st.wHour; |
| 125 » dt.minute = (FX_BYTE)st.wMinute; | 125 » dt.minute = (uint8_t)st.wMinute; |
| 126 » dt.second = (FX_BYTE)st.wSecond; | 126 » dt.second = (uint8_t)st.wSecond; |
| 127 // dt.tzHour = _timezone / 3600 * -1; | 127 // dt.tzHour = _timezone / 3600 * -1; |
| 128 // dt.tzMinute = (abs(_timezone) % 3600) / 60; | 128 // dt.tzMinute = (abs(_timezone) % 3600) / 60; |
| 129 return *this; | 129 return *this; |
| 130 } | 130 } |
| 131 | 131 |
| 132 FX_BOOL CPDFSDK_DateTime::operator == (CPDFSDK_DateTime& datetime) | 132 FX_BOOL CPDFSDK_DateTime::operator == (CPDFSDK_DateTime& datetime) |
| 133 { | 133 { |
| 134 return (FXSYS_memcmp(&dt, &datetime.dt, sizeof(FX_DATETIME)) == 0); | 134 return (FXSYS_memcmp(&dt, &datetime.dt, sizeof(FX_DATETIME)) == 0); |
| 135 } | 135 } |
| 136 | 136 |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 228 j = 0; | 228 j = 0; |
| 229 k = 0; | 229 k = 0; |
| 230 while (i < strLength && j < 4) | 230 while (i < strLength && j < 4) |
| 231 { | 231 { |
| 232 ch = dtStr[i]; | 232 ch = dtStr[i]; |
| 233 k = k * 10 + ch - '0'; | 233 k = k * 10 + ch - '0'; |
| 234 j ++; | 234 j ++; |
| 235 if (ch < '0' || ch > '9') break; | 235 if (ch < '0' || ch > '9') break; |
| 236 i ++; | 236 i ++; |
| 237 } | 237 } |
| 238 » » dt.year = (FX_SHORT)k; | 238 » » dt.year = (int16_t)k; |
| 239 if (i >= strLength || j < 4) return *this; | 239 if (i >= strLength || j < 4) return *this; |
| 240 | 240 |
| 241 j = 0; | 241 j = 0; |
| 242 k = 0; | 242 k = 0; |
| 243 while (i < strLength && j < 2) | 243 while (i < strLength && j < 2) |
| 244 { | 244 { |
| 245 ch = dtStr[i]; | 245 ch = dtStr[i]; |
| 246 k = k * 10 + ch - '0'; | 246 k = k * 10 + ch - '0'; |
| 247 j ++; | 247 j ++; |
| 248 if (ch < '0' || ch > '9') break; | 248 if (ch < '0' || ch > '9') break; |
| 249 i ++; | 249 i ++; |
| 250 } | 250 } |
| 251 » » dt.month = (FX_BYTE)k; | 251 » » dt.month = (uint8_t)k; |
| 252 if (i >= strLength || j < 2) return *this; | 252 if (i >= strLength || j < 2) return *this; |
| 253 | 253 |
| 254 j = 0; | 254 j = 0; |
| 255 k = 0; | 255 k = 0; |
| 256 while (i < strLength && j < 2) | 256 while (i < strLength && j < 2) |
| 257 { | 257 { |
| 258 ch = dtStr[i]; | 258 ch = dtStr[i]; |
| 259 k = k * 10 + ch - '0'; | 259 k = k * 10 + ch - '0'; |
| 260 j ++; | 260 j ++; |
| 261 if (ch < '0' || ch > '9') break; | 261 if (ch < '0' || ch > '9') break; |
| 262 i ++; | 262 i ++; |
| 263 } | 263 } |
| 264 » » dt.day = (FX_BYTE)k; | 264 » » dt.day = (uint8_t)k; |
| 265 if (i >= strLength || j < 2) return *this; | 265 if (i >= strLength || j < 2) return *this; |
| 266 | 266 |
| 267 j = 0; | 267 j = 0; |
| 268 k = 0; | 268 k = 0; |
| 269 while (i < strLength && j < 2) | 269 while (i < strLength && j < 2) |
| 270 { | 270 { |
| 271 ch = dtStr[i]; | 271 ch = dtStr[i]; |
| 272 k = k * 10 + ch - '0'; | 272 k = k * 10 + ch - '0'; |
| 273 j ++; | 273 j ++; |
| 274 if (ch < '0' || ch > '9') break; | 274 if (ch < '0' || ch > '9') break; |
| 275 i ++; | 275 i ++; |
| 276 } | 276 } |
| 277 » » dt.hour = (FX_BYTE)k; | 277 » » dt.hour = (uint8_t)k; |
| 278 if (i >= strLength || j < 2) return *this; | 278 if (i >= strLength || j < 2) return *this; |
| 279 | 279 |
| 280 j = 0; | 280 j = 0; |
| 281 k = 0; | 281 k = 0; |
| 282 while (i < strLength && j < 2) | 282 while (i < strLength && j < 2) |
| 283 { | 283 { |
| 284 ch = dtStr[i]; | 284 ch = dtStr[i]; |
| 285 k = k * 10 + ch - '0'; | 285 k = k * 10 + ch - '0'; |
| 286 j ++; | 286 j ++; |
| 287 if (ch < '0' || ch > '9') break; | 287 if (ch < '0' || ch > '9') break; |
| 288 i ++; | 288 i ++; |
| 289 } | 289 } |
| 290 » » dt.minute = (FX_BYTE)k; | 290 » » dt.minute = (uint8_t)k; |
| 291 if (i >= strLength || j < 2) return *this; | 291 if (i >= strLength || j < 2) return *this; |
| 292 | 292 |
| 293 j = 0; | 293 j = 0; |
| 294 k = 0; | 294 k = 0; |
| 295 while (i < strLength && j < 2) | 295 while (i < strLength && j < 2) |
| 296 { | 296 { |
| 297 ch = dtStr[i]; | 297 ch = dtStr[i]; |
| 298 k = k * 10 + ch - '0'; | 298 k = k * 10 + ch - '0'; |
| 299 j ++; | 299 j ++; |
| 300 if (ch < '0' || ch > '9') break; | 300 if (ch < '0' || ch > '9') break; |
| 301 i ++; | 301 i ++; |
| 302 } | 302 } |
| 303 » » dt.second = (FX_BYTE)k; | 303 » » dt.second = (uint8_t)k; |
| 304 if (i >= strLength || j < 2) return *this; | 304 if (i >= strLength || j < 2) return *this; |
| 305 | 305 |
| 306 ch = dtStr[i ++]; | 306 ch = dtStr[i ++]; |
| 307 if (ch != '-' && ch != '+') return *this; | 307 if (ch != '-' && ch != '+') return *this; |
| 308 if (ch == '-') | 308 if (ch == '-') |
| 309 dt.tzHour = -1; | 309 dt.tzHour = -1; |
| 310 else | 310 else |
| 311 dt.tzHour = 1; | 311 dt.tzHour = 1; |
| 312 j = 0; | 312 j = 0; |
| 313 k = 0; | 313 k = 0; |
| (...skipping 13 matching lines...) Expand all Loading... |
| 327 j = 0; | 327 j = 0; |
| 328 k = 0; | 328 k = 0; |
| 329 while (i < strLength && j < 2) | 329 while (i < strLength && j < 2) |
| 330 { | 330 { |
| 331 ch = dtStr[i]; | 331 ch = dtStr[i]; |
| 332 k = k * 10 + ch - '0'; | 332 k = k * 10 + ch - '0'; |
| 333 j ++; | 333 j ++; |
| 334 if (ch < '0' || ch > '9') break; | 334 if (ch < '0' || ch > '9') break; |
| 335 i ++; | 335 i ++; |
| 336 } | 336 } |
| 337 » » dt.tzMinute = (FX_BYTE)k; | 337 » » dt.tzMinute = (uint8_t)k; |
| 338 if (i >= strLength || j < 2) return *this; | 338 if (i >= strLength || j < 2) return *this; |
| 339 } | 339 } |
| 340 | 340 |
| 341 return *this; | 341 return *this; |
| 342 } | 342 } |
| 343 | 343 |
| 344 CFX_ByteString CPDFSDK_DateTime::ToCommonDateTimeString() | 344 CFX_ByteString CPDFSDK_DateTime::ToCommonDateTimeString() |
| 345 { | 345 { |
| 346 CFX_ByteString str1; | 346 CFX_ByteString str1; |
| 347 str1.Format("%04d-%02d-%02d %02d:%02d:%02d ", dt.year, dt.month, dt.day,
dt.hour, dt.minute, dt.second); | 347 str1.Format("%04d-%02d-%02d %02d:%02d:%02d ", dt.year, dt.month, dt.day,
dt.hour, dt.minute, dt.second); |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 395 dt.AddSeconds(-_gAfxGetTimeZoneInSeconds(dt.dt.tzHour, dt.dt.tzMinute)); | 395 dt.AddSeconds(-_gAfxGetTimeZoneInSeconds(dt.dt.tzHour, dt.dt.tzMinute)); |
| 396 dt.dt.tzHour = 0; | 396 dt.dt.tzHour = 0; |
| 397 dt.dt.tzMinute = 0; | 397 dt.dt.tzMinute = 0; |
| 398 return dt; | 398 return dt; |
| 399 } | 399 } |
| 400 | 400 |
| 401 CPDFSDK_DateTime& CPDFSDK_DateTime::AddDays(short days) | 401 CPDFSDK_DateTime& CPDFSDK_DateTime::AddDays(short days) |
| 402 { | 402 { |
| 403 if (days == 0) return *this; | 403 if (days == 0) return *this; |
| 404 | 404 |
| 405 » FX_SHORT» y = dt.year, yy; | 405 » int16_t»y = dt.year, yy; |
| 406 » FX_BYTE»» m = dt.month; | 406 » uint8_t»» m = dt.month; |
| 407 » FX_BYTE»» d = dt.day; | 407 » uint8_t»» d = dt.day; |
| 408 int mdays, ydays, ldays; | 408 int mdays, ydays, ldays; |
| 409 | 409 |
| 410 ldays = days; | 410 ldays = days; |
| 411 if (ldays > 0) | 411 if (ldays > 0) |
| 412 { | 412 { |
| 413 yy = y; | 413 yy = y; |
| 414 if (((FX_WORD)m * 100 + d) > 300) yy ++; | 414 if (((FX_WORD)m * 100 + d) > 300) yy ++; |
| 415 ydays = _gAfxGetYearDays(yy); | 415 ydays = _gAfxGetYearDays(yy); |
| 416 while (ldays >= ydays) | 416 while (ldays >= ydays) |
| 417 { | 417 { |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 483 if (n < 0) | 483 if (n < 0) |
| 484 { | 484 { |
| 485 days = (n - 86399) / 86400; | 485 days = (n - 86399) / 86400; |
| 486 n -= days * 86400; | 486 n -= days * 86400; |
| 487 } | 487 } |
| 488 else | 488 else |
| 489 { | 489 { |
| 490 days = n / 86400; | 490 days = n / 86400; |
| 491 n %= 86400; | 491 n %= 86400; |
| 492 } | 492 } |
| 493 » dt.hour = (FX_BYTE)(n / 3600); | 493 » dt.hour = (uint8_t)(n / 3600); |
| 494 dt.hour %= 24; | 494 dt.hour %= 24; |
| 495 n %= 3600; | 495 n %= 3600; |
| 496 » dt.minute = (FX_BYTE)(n / 60); | 496 » dt.minute = (uint8_t)(n / 60); |
| 497 » dt.second = (FX_BYTE)(n % 60); | 497 » dt.second = (uint8_t)(n % 60); |
| 498 if (days != 0) AddDays(days); | 498 if (days != 0) AddDays(days); |
| 499 | 499 |
| 500 return *this; | 500 return *this; |
| 501 } | 501 } |
| 502 | 502 |
| 503 | 503 |
| 504 //--------------------------------------------------------------------------- | 504 //--------------------------------------------------------------------------- |
| 505 // CPDFSDK_Annot | 505 // CPDFSDK_Annot |
| 506 //--------------------------------------------------------------------------- | 506 //--------------------------------------------------------------------------- |
| 507 CPDFSDK_Annot::CPDFSDK_Annot(CPDFSDK_PageView* pPageView) : | 507 CPDFSDK_Annot::CPDFSDK_Annot(CPDFSDK_PageView* pPageView) : |
| (...skipping 447 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 955 | 955 |
| 956 pParentDict = pAPTypeDict; | 956 pParentDict = pAPTypeDict; |
| 957 pStream = pAPTypeDict->GetStream(sAPState); | 957 pStream = pAPTypeDict->GetStream(sAPState); |
| 958 } | 958 } |
| 959 | 959 |
| 960 if (!pStream) | 960 if (!pStream) |
| 961 { | 961 { |
| 962 ASSERT(m_pPageView != NULL); | 962 ASSERT(m_pPageView != NULL); |
| 963 CPDF_Document* pDoc = m_pPageView->GetPDFDocument(); | 963 CPDF_Document* pDoc = m_pPageView->GetPDFDocument(); |
| 964 ASSERT(pDoc != NULL); | 964 ASSERT(pDoc != NULL); |
| 965 » » | 965 |
| 966 pStream = FX_NEW CPDF_Stream(NULL, 0, NULL); | 966 pStream = FX_NEW CPDF_Stream(NULL, 0, NULL); |
| 967 » » FX_INT32 objnum = pDoc->AddIndirectObject(pStream); | 967 » » int32_t objnum = pDoc->AddIndirectObject(pStream); |
| 968 //pAPDict->SetAtReference(sAPType, pDoc, objnum); | 968 //pAPDict->SetAtReference(sAPType, pDoc, objnum); |
| 969 ASSERT(pParentDict != NULL); | 969 ASSERT(pParentDict != NULL); |
| 970 pParentDict->SetAtReference(sAPType, pDoc, objnum); | 970 pParentDict->SetAtReference(sAPType, pDoc, objnum); |
| 971 } | 971 } |
| 972 » | 972 |
| 973 CPDF_Dictionary * pStreamDict = pStream->GetDict(); | 973 CPDF_Dictionary * pStreamDict = pStream->GetDict(); |
| 974 | 974 |
| 975 if (!pStreamDict) | 975 if (!pStreamDict) |
| 976 { | 976 { |
| 977 pStreamDict = FX_NEW CPDF_Dictionary; | 977 pStreamDict = FX_NEW CPDF_Dictionary; |
| 978 pStreamDict->SetAtName("Type", "XObject"); | 978 pStreamDict->SetAtName("Type", "XObject"); |
| 979 pStreamDict->SetAtName("Subtype", "Form"); | 979 pStreamDict->SetAtName("Subtype", "Form"); |
| 980 pStreamDict->SetAtInteger("FormType", 1); | 980 pStreamDict->SetAtInteger("FormType", 1); |
| 981 pStream->InitStream(NULL,0,pStreamDict); | 981 pStream->InitStream(NULL,0,pStreamDict); |
| 982 } | 982 } |
| 983 | 983 |
| 984 if (pStreamDict) | 984 if (pStreamDict) |
| 985 { | 985 { |
| 986 pStreamDict->SetAtMatrix("Matrix",matrix); | 986 pStreamDict->SetAtMatrix("Matrix",matrix); |
| 987 pStreamDict->SetAtRect("BBox", rcBBox); | 987 pStreamDict->SetAtRect("BBox", rcBBox); |
| 988 } | 988 } |
| 989 | 989 |
| 990 » pStream->SetData((FX_BYTE*)sContents.c_str(), sContents.GetLength(), FAL
SE, FALSE); | 990 » pStream->SetData((uint8_t*)sContents.c_str(), sContents.GetLength(), FAL
SE, FALSE); |
| 991 } | 991 } |
| 992 | 992 |
| 993 #define BA_ANNOT_MINWIDTH 1 | 993 #define BA_ANNOT_MINWIDTH 1 |
| 994 #define BA_ANNOT_MINHEIGHT 1 | 994 #define BA_ANNOT_MINHEIGHT 1 |
| 995 | 995 |
| 996 FX_FLOAT CPDFSDK_Annot::GetMinWidth() const | 996 FX_FLOAT CPDFSDK_Annot::GetMinWidth() const |
| 997 { | 997 { |
| 998 return BA_ANNOT_MINWIDTH; | 998 return BA_ANNOT_MINWIDTH; |
| 999 } | 999 } |
| 1000 | 1000 |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1089 return NULL; | 1089 return NULL; |
| 1090 } | 1090 } |
| 1091 | 1091 |
| 1092 CPDFXFA_Page* CPDFSDK_Annot::GetPDFXFAPage() | 1092 CPDFXFA_Page* CPDFSDK_Annot::GetPDFXFAPage() |
| 1093 { | 1093 { |
| 1094 if (m_pPageView) | 1094 if (m_pPageView) |
| 1095 return m_pPageView->GetPDFXFAPage(); | 1095 return m_pPageView->GetPDFXFAPage(); |
| 1096 return NULL; | 1096 return NULL; |
| 1097 } | 1097 } |
| 1098 | 1098 |
| OLD | NEW |