Foxit PDF SDK
fs_basictypes.h
Go to the documentation of this file.
1 
16 #ifndef FS_BASIC_TYPES_H_
17 #define FS_BASIC_TYPES_H_
18 
19 #include <cstddef>
20 #include <fstream>
21 #include <iostream>
22 #include <string>
23 #include <memory>
24 #include <vector>
25 #include <exception>
26 #include <cmath>
27 #include <cfloat>
28 #include <stdlib.h>
29 #include <string.h>
30 
31 #include "common/fxcrt/fx_basic.h"
34 
35 #if defined(_WIN32) || defined(_WIN64)
36 #include <Windows.h>
37 #endif // defined(_WIN32) || defined(_WIN64)
38 
39 #define FSDK_DEFINE_ARRAY(ArrayName, Type) \
40 class ArrayName : public Object { \
41  public: \
42 \
43  ArrayName(); \
44 \
45  ~ArrayName(); \
46 \
50  ArrayName(const ArrayName& other); \
51 \
56  ArrayName& operator = (const ArrayName& other); \
57 \
61  size_t GetSize() const; \
62 \
67  Type GetAt(size_t index) const; \
68 \
73  Type& operator[](size_t index) const; \
74 \
79  void Add(const Type& element); \
80 \
86  void RemoveAt(size_t index); \
87 \
94  void InsertAt(size_t index, const Type& element); \
95 \
99  void RemoveAll(); \
100  \
101  private: \
102  void* data_; \
103 };
104 
105 namespace std {
106 class exception;
107 }
108 
116 inline CFX_ByteString FX_UTF8Encode(const wchar_t* wstr) {
118 }
119 
128 inline bool operator==(const char* str1, const CFX_ByteString& str2) {
129  return str2.Equal(str1);
130 }
131 
140 inline bool operator!=(const char* str1, const CFX_ByteString& str2) {
141  return !str2.Equal(str1);
142 }
151 inline std::ostream& operator<<(std::ostream& os, const CFX_ByteString& str) {
152  return os << (const char*) str;
153 }
154 
163 inline std::wostream& operator<<(std::wostream& os, const CFX_WideString& str) {
164  return os << (const wchar_t*) str;
165 }
166 
167 #ifndef TRUE
168 
169 #define TRUE true
170 #endif
171 
172 #ifndef FALSE
173 
174 #define FALSE false
175 #endif
176 
177 #ifndef NULL
178 
179 #define NULL ((void*)0)
180 #endif
181 
187 namespace foxit {
189 typedef FX_INT64 int64;
191 typedef FX_UINT64 uint64;
193 typedef FX_INT32 int32;
197 typedef FX_INT16 int16;
201 typedef FX_INT8 int8;
203 typedef FX_UINT8 uint8;
209 typedef uint32 ARGB;
211 typedef uint32 RGB;
213 typedef void* FS_HANDLE;
214 
215 #if defined(_WIN32) || defined(_WIN64) || defined(__EMSCRIPTEN__)
216 
217 typedef void* FX_HWND;
218 #endif
219 
220 typedef CFX_Object Object;
225 
227 FSDK_DEFINE_ARRAY(WStringArray, WString)
229 FSDK_DEFINE_ARRAY(StringArray, String)
230 
236 typedef enum _ErrorCode {
439 } ErrorCode;
440 
441 
446 
449 
451 class Base : public Object {
452  public:
458  FS_HANDLE Handle() const {
459  return handle_;
460  }
461  virtual ~Base(){}
462 
463  protected:
464  explicit Base(FS_HANDLE handle = NULL) : handle_(handle) {}
465  FS_HANDLE handle_;
466 };
467 
473 typedef PointF Offset;
477 typedef FX_RECT RectI;
482 
484 class DateTime : public Object {
485  public:
491  static DateTime GetUTCTime();
497  static DateTime GetLocalTime();
498 
519  : year(year)
520  , month(month)
521  , day(day)
522  , hour(hour)
523  , minute(minute)
524  , second(second)
528 
531  : year(0)
532  , month(0)
533  , day(0)
534  , hour(0)
535  , minute(0)
536  , second(0)
537  , milliseconds(0)
538  , utc_hour_offset(0)
539  , utc_minute_offset(0) {}
545  explicit DateTime(const FXCRT_DATETIMEZONE& time);
551  DateTime(const DateTime& dt)
552  : year(dt.year)
553  , month(dt.month)
554  , day(dt.day)
555  , hour(dt.hour)
556  , minute(dt.minute)
557  , second(dt.second)
561 
570  year = dt.year;
571  month = dt.month;
572  day = dt.day;
573  hour = dt.hour;
574  minute = dt.minute;
575  second = dt.second;
579  return *this;
580  }
582  operator FXCRT_DATETIMEZONE() const;
583 
584 #if (defined(_WIN32) || defined(_WIN64)) && !defined(SWIG)
585 
590  explicit DateTime(const SYSTEMTIME& systime)
591  : year(systime.wYear)
592  , month(systime.wMonth)
593  , day(systime.wDay)
594  , hour(systime.wHour)
595  , minute(systime.wMinute)
596  , second(systime.wSecond)
597  , milliseconds(systime.wMilliseconds)
598  , utc_hour_offset(0)
599  , utc_minute_offset(0) {}
600 
602  operator SYSTEMTIME() const;
603 #endif // defined(_WIN32) || defined(_WIN64)
604 
627  this->year = year;
628  this->month = month;
629  this->day = day;
630  this->hour = hour;
631  this->minute = minute;
632  this->second = second;
633  this->milliseconds = milliseconds;
634  this->utc_hour_offset = utc_hour_offset;
635  this->utc_minute_offset = utc_minute_offset;
636  }
637 
645  bool IsValid() const;
646 
654  bool operator == (const DateTime& datetime) const;
662  bool operator != (const DateTime& datetime) const;
670  bool operator > (const DateTime& datetime) const;
680  bool operator >= (const DateTime& datetime) const;
688  bool operator < (const DateTime& datetime) const;
699  bool operator <= (const DateTime& datetime) const;
700 
707 
713  DateTime& ToUTCTime();
714 
738 
741 };
742 
743 //#if !defined(_SWIG_ANDROID_) && !defined(_SWIG_IOS_)
744 
746 class Exception : public std::exception , public Object {
747  public:
758  Exception(const char* file_name, int line_number, const char* function_name, ErrorCode error_code);
759 
765  Exception(const Exception& exception)
766  : error_code_(exception.error_code_)
767  , error_message_(exception.error_message_)
768  , name_(exception.name_) {}
769 
777  Exception& operator = (const Exception& exception) {
778  error_code_ = exception.error_code_;
779  error_message_ = exception.error_message_;
780  return *this;
781  }
782 
784  ~Exception() throw() {}
785 
792  return error_code_;
793  }
794 
801  {
802  return error_message_;
803  }
804 
810  String GetName() const
811  { return name_; }
812 
813  private:
814  ErrorCode error_code_;
815  String error_message_;
816  String name_;
817 };
818 
819 #define throw(Exception)
820 //#endif // !defined(_SWIG_ANDROID_) && !defined(_SWIG_IOS_)
821 
822 #if __cpluscplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1700)
823 #define FS_FINAL final
824 #else
825 #define FS_FINAL
826 #endif
827 
828 #if __cpluscplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1600)
829 #define FS_OVERRIDE override
830 #else
831 #define FS_OVERRIDE
832 #endif
833 
834 } // namespace foxit
835 #endif
DateTime & operator=(const DateTime &dt)
Assign operator.
Definition: fs_basictypes.h:569
Invalid or incorrect state.
Definition: fs_basictypes.h:289
ErrorCode GetErrCode() const
Get the error code.
Definition: fs_basictypes.h:791
int16 utc_hour_offset
Hour of time zone. Valid range: from -12 to 12.
Definition: fs_basictypes.h:737
String GetMessage() const
Get the error message string.
Definition: fs_basictypes.h:800
Invalid password. Usually, this error may occur when loading a PDF document with password....
Definition: fs_basictypes.h:247
(For compliance only) Compliance resource file(s) cannot be found or opened. Please check if complian...
Definition: fs_basictypes.h:360
DateTime & ToLocalTime()
Convert current object to local time.
No "Conversion" module right.
Definition: fs_basictypes.h:382
(For ConnectedPDF only) Cannot set the ACL to ConnectedPDF server.
Definition: fs_basictypes.h:307
(For ConnectedPDF only) Cannot get client ID from ConnectedPDF server.
Definition: fs_basictypes.h:319
PointF Offset
Offset information, in float.
Definition: fs_basictypes.h:473
Format is invalid. For files, this may also mean that file is corrupted.
Definition: fs_basictypes.h:242
CFX_Object Object
Object type.
Definition: fs_basictypes.h:220
(For compliance only) Invalid unlock code is used to initialize compliance engine.
Definition: fs_basictypes.h:337
DateTime(const DateTime &dt)
Constructor, with another date and time object.
Definition: fs_basictypes.h:551
uint16 minute
Minute. Valid range: from 0 to 59.
Definition: fs_basictypes.h:724
No "TableMaker" module right.
Definition: fs_basictypes.h:400
(For compliance only) Fail to initialize compliance engine.
Definition: fs_basictypes.h:339
void Set(uint16 year, uint16 month, uint16 day, uint16 hour, uint16 minute, uint16 second, uint16 milliseconds, int16 utc_hour_offset, uint16 utc_minute_offset)
Set value.
Definition: fs_basictypes.h:624
(For LTV only) Fail to check DTS.
Definition: fs_basictypes.h:349
No "RMS" module right.
Definition: fs_basictypes.h:372
FX_DWORD FX_UINT32
unsigned 32bits integer.
Definition: fx_system.h:767
Data of current object is invalid.
Definition: fs_basictypes.h:283
wchar_t const * FX_LPCWSTR
Pointer to constant Unicode characters.
Definition: fx_system.h:736
No "Office2PDF" module right.
Definition: fs_basictypes.h:420
FX_UINT8 uint8
8-bit unsigned integer.
Definition: fs_basictypes.h:203
Definition: fs_basictypes.h:227
Definition: fs_basictypes.h:484
(For OCR only) Not enough disk space.
Definition: fs_basictypes.h:329
bool operator<(const DateTime &datetime) const
Smaller operator.
File or folder path does not exist.
Definition: fs_basictypes.h:333
uint16 hour
Hour. Valid range: from 0 to 23.
Definition: fs_basictypes.h:722
No "PDF2Office" module right.
Definition: fs_basictypes.h:406
DateTime(uint16 year, uint16 month, uint16 day, uint16 hour, uint16 minute, uint16 second, uint16 milliseconds, int16 utc_hour_offset, uint16 utc_minute_offset)
Constructor, with parameters.
Definition: fs_basictypes.h:516
uint32 RGB
RGB color type, 24 bits, ((b) | ((g) << 8) | ((r) << 16)))
Definition: fs_basictypes.h:211
uint16 milliseconds
Millisecond. Valid range: from 0 to 999. PDF standard does not support now, this can be omitted if it...
Definition: fs_basictypes.h:731
Definition: fx_coordinates.h:30
(For ConnectedPDF only) The input ConnectedPDF DRM wrapper document is invalid.
Definition: fs_basictypes.h:317
uint16 year
Year. It should be a four-digit number, such as 2014.
Definition: fs_basictypes.h:716
No default server has been set to time stamp server manager yet.
Definition: fs_basictypes.h:362
No "XFA" module right.
Definition: fs_basictypes.h:368
MIP engine: get extended label information by id failed.
Definition: fs_basictypes.h:428
File cannot be found or could not be opened.
Definition: fs_basictypes.h:240
(For ConnectedPDF only) Cannot connect to ConnectedPDF server.
Definition: fs_basictypes.h:293
uint16 month
Month. Valid range: from 1 to 12.
Definition: fs_basictypes.h:718
(For LTV only) Fail to load DSS.
Definition: fs_basictypes.h:351
Error handle.
Definition: fs_basictypes.h:249
PDF document is encrypted by some unsupported security handler.
Definition: fs_basictypes.h:266
No "Compliance" module right.
Definition: fs_basictypes.h:378
Exception & operator=(const Exception &exception)
Assign operator.
Definition: fs_basictypes.h:777
WIDE STRING CLASS.
Definition: fx_string.h:1461
std::ostream & operator<<(std::ostream &os, const CFX_ByteString &str)
Output byte string to std::ostream.
Definition: fs_basictypes.h:151
CFX_WideString WString
Wide string.
Definition: fs_basictypes.h:222
MIP engine: add upe engine failed.
Definition: fs_basictypes.h:424
void * FX_POSITION
A value used to denote the position of an element in a collection.
Definition: fx_system.h:658
No "AdvEdit" module right.
Definition: fs_basictypes.h:404
Cannot use current default time stamp server. Please check if default time stamp server can be used.
Definition: fs_basictypes.h:364
(For ConnectedPDF only) Current user has no right to open the ConnectedPDF DRM document.
Definition: fs_basictypes.h:297
No "3D" module right.
Definition: fs_basictypes.h:414
FX_UINT64 uint64
Unsigned 64-bit integer.
Definition: fs_basictypes.h:191
(For ConnectedPDF only) The loaded document is not a ConnectedPDF DRM document.
Definition: fs_basictypes.h:291
No "LayoutRecognition" module right.
Definition: fs_basictypes.h:390
(For ConnectedPDF only) Cannot get user token from ConnectedPDF server.
Definition: fs_basictypes.h:321
bool operator==(const DateTime &datetime) const
Equal operator.
(For ConnectedPDF only) There is some error in response data.
Definition: fs_basictypes.h:432
uint16 day
Day of month. Valid range: from 1 to 31.
Definition: fs_basictypes.h:720
(For OCR only) OCR engine has not been initialized successfully.
Definition: fs_basictypes.h:327
Structure for date and time.
Definition: fx_process.h:95
Definition: fs_basictypes.h:746
(For Office-to-PDF conversion only) No Microsoft Office is installed in current system.
Definition: fs_basictypes.h:386
No "Optimizer" module right.
Definition: fs_basictypes.h:380
Parameter error: value of any input parameter for a function is invalid.
Definition: fs_basictypes.h:260
static DateTime GetUTCTime()
Get UTC time.
Current object has not been loaded yet.
Definition: fs_basictypes.h:287
(For DWG-to-PDF conversion only) ODA engine is not found.
Definition: fs_basictypes.h:398
No "ConnectedPDF" module right.
Definition: fs_basictypes.h:366
Invalid license is used to initialize Foxit PDF SDK library.
Definition: fs_basictypes.h:258
int FX_INT32
32-bit signed integer.
Definition: fx_system.h:683
bool operator >(const DateTime &datetime) const
Greater operator.
(For ConnectedPDF only) Cannot remove the security from ConnectedPDF server.
Definition: fs_basictypes.h:303
int FX_STRSIZE
String size is limited to 2^31-1.
Definition: fx_string.h:35
(For OFD only) OFD engine has not been initialized successfully.
Definition: fs_basictypes.h:410
FS_HANDLE Handle() const
Get the handle of current object.
Definition: fs_basictypes.h:458
(For ConnectedPDF only) Input ACL is invalid.
Definition: fs_basictypes.h:323
bool operator==(const char *str1, const CFX_ByteString &str2)
Check if two byte strings are equal.
Definition: fs_basictypes.h:128
(For Office-to-PDF conversion only) Office COM has not been initialized successfully.
Definition: fs_basictypes.h:384
The type of input object or current object is invalid.
Definition: fs_basictypes.h:272
(For converting html to pdf only) The converted URL is on blacklist.
Definition: fs_basictypes.h:408
No "DWG2PDF" module right.
Definition: fs_basictypes.h:402
(For FXOCR only) FXOCR Engine has not been initialized successfully.
Definition: fs_basictypes.h:438
(For ConnectedPDF only) Cannot upload ConnectedPDF DRM document info to ConnectedPDF server.
Definition: fs_basictypes.h:315
Data is not ready. Usually this is used as an exception error code when loading document in asynchron...
Definition: fs_basictypes.h:281
Content has not been parsed yet. Usually, this represents PDF page has not been parsed yet.
Definition: fs_basictypes.h:268
Certificate error: PDF document is encrypted by digital certificate but current user does not have th...
Definition: fs_basictypes.h:254
CFX_FloatRect RectF
Rectangle, in float.
Definition: fs_basictypes.h:475
uint32 ARGB
ARGB color type, 32 bits, ((b) | ((g) << 8) | ((r) << 16)) | ((a) << 24)
Definition: fs_basictypes.h:209
#define FXSYS_wcslen
Get the length of a wide-character string.
Definition: fx_system.h:1028
ErrorCode
Enumeration for error code.
Definition: fs_basictypes.h:236
CFX_ByteString FX_UTF8Encode(const wchar_t *wstr)
Convert wide string to UTF-8 encoding byte string.
Definition: fs_basictypes.h:116
signed char FX_INT8
Signed 8bits integer.
Definition: fx_system.h:661
CFX_PointF PointF
Point information, in float.
Definition: fs_basictypes.h:471
(For ConnectedPDF only) Loaded document is already a ConnectedPDF document.
Definition: fs_basictypes.h:309
(For Office-to-PDF conversion only) WPS office engine is not found.
Definition: fs_basictypes.h:392
CFX_ArrayTemplate< int32 > Int32Array
An array of signed integer values.
Definition: fs_basictypes.h:445
(For ConnectedPDF only) Loaded document is already a ConnectedPDF DRM document.
Definition: fs_basictypes.h:311
Any unknown state occurs.
Definition: fs_basictypes.h:276
(For ConnectedPDF only) Current device is limited to open the ConnectedPDF DRM document.
Definition: fs_basictypes.h:301
bool operator<=(const DateTime &datetime) const
Smaller or equal operator.
Time stamp server manager has not been initialized successfully.
Definition: fs_basictypes.h:341
bool operator >=(const DateTime &datetime) const
Greater or equal operator.
No "OCR" module right.
Definition: fs_basictypes.h:374
FX_POSITION POSITION
A value used to denote the position of an element in a collection.
Definition: fs_basictypes.h:205
Exception(const char *file_name, int line_number, const char *function_name, ErrorCode error_code)
Constructor, with parameters.
MIP engine: add upe engine failed.
Definition: fs_basictypes.h:422
FX_INT64 int64
Signed 64-bit integer.
Definition: fs_basictypes.h:189
(For PDF Optimizer PDF) There are some objects not image type.
Definition: fs_basictypes.h:436
FX_UINT32 uint32
32-bit unsigned integer.
Definition: fs_basictypes.h:195
(For compliance only) Compliance engine has not been initialized successfully.
Definition: fs_basictypes.h:335
void * FS_HANDLE
Handle type.
Definition: fs_basictypes.h:213
CFX_ByteString String
Byte string.
Definition: fs_basictypes.h:224
(For LTV only) LTV verify mode has not been set.
Definition: fs_basictypes.h:343
FX_INT64 FILESIZE
File size. Support large file directly.
Definition: fs_basictypes.h:207
Header file for Process & thread related definitions and classes.
(For ConnectedPDF only) Input client ID is invalid.
Definition: fs_basictypes.h:325
(For HTML2PDF only)Occuring timeout during loading web page.
Definition: fs_basictypes.h:434
FX_INT8 int8
8-bit signed integer.
Definition: fs_basictypes.h:201
unsigned short FX_UINT16
Unsigned 16bits integer.
Definition: fx_system.h:673
(For OCR only) The trial for OCR module is end.
Definition: fs_basictypes.h:331
(For signature only) The signature being operated needs to be signed.
Definition: fs_basictypes.h:355
CFX_ArrayTemplate< uint32 > UInt32Array
An array of unsigned integer values.
Definition: fs_basictypes.h:448
Definition: fx_coordinates.h:596
CFX_Matrix Matrix
Matrix information, in float.
Definition: fs_basictypes.h:469
DateTime()
Constructor.
Definition: fs_basictypes.h:530
unsigned char FX_UINT8
Unsigned 8bits integer.
Definition: fx_system.h:663
FX_INT32 int32
32-bit signed integer.
Definition: fs_basictypes.h:193
New data conflicts with existed data.
Definition: fs_basictypes.h:274
Definition: fs_basictypes.h:451
(For ConnectedPDF only) Cannot upload ConnectedPDF document info to ConnectedPDF server.
Definition: fs_basictypes.h:313
Definition: fs_basictypes.h:229
No "Accessibility" module right.
Definition: fs_basictypes.h:396
String GetName() const
Get the string of error code.
Definition: fs_basictypes.h:810
bool operator !=(const DateTime &datetime) const
Not equal operator.
uint16 second
Second. Valid range: from 0 to 60. 60 for leap second.
Definition: fs_basictypes.h:726
uint16 utc_minute_offset
Minute of time zone. Valid range: from 0 to 59.
Definition: fs_basictypes.h:740
FX_INT16 int16
16-bit signed integer.
Definition: fs_basictypes.h:197
Foxit namespace.
Definition: fs_taggedpdf.h:27
XFA loading error.
Definition: fs_basictypes.h:285
short FX_INT16
Signed 16bits integer.
Definition: fx_system.h:671
(For ConnectedPDF only) Cannot get the ACL from ConnectedPDF server.
Definition: fs_basictypes.h:305
No "Comparison" module right.
Definition: fs_basictypes.h:376
Exception(const Exception &exception)
Constructor, with another exception object.
Definition: fs_basictypes.h:765
No "OFD" module right.
Definition: fs_basictypes.h:412
Invalid regular expression.
Definition: fs_basictypes.h:416
BYTE STRING CLASS.
Definition: fx_string.h:317
FX_UINT16 uint16
16-bit unsigned integer.
Definition: fs_basictypes.h:199
(For Office-to-PDF conversion only) Libre office engine is not found.
Definition: fs_basictypes.h:394
Header file for basic data class.
static DateTime GetLocalTime()
Get local time.
(For LTV only) Fail to load DTS.
Definition: fs_basictypes.h:353
No "Print2PDF" module right.
Definition: fs_basictypes.h:430
#define NULL
The null-pointer value.
Definition: fx_system.h:792
bool operator!=(const char *str1, const CFX_ByteString &str2)
Check if two byte strings are not equal.
Definition: fs_basictypes.h:140
CFX_ArrayTemplate< PointF > PointFArray
An array of PointF objects.
Definition: fs_basictypes.h:481
Definition: fx_coordinates.h:1076
Success, and no error occurs.
Definition: fs_basictypes.h:238
CFX_ArrayTemplate< RectF > RectFArray
An array of RectF objects.
Definition: fs_basictypes.h:479
bool Equal(FX_BSTR str) const
Check if current string is equal to another one. Case-sensitive.
Any unknown error occurs.
Definition: fs_basictypes.h:256
MIP engine: create protection handler failed.
Definition: fs_basictypes.h:426
#define FX_FILESIZE
Support large file directly.
Definition: fx_stream.h:155
Expected data or object is not found.
Definition: fs_basictypes.h:270
Header file for coordinate system.
(For ConnectedPDF only) Input user token is invalid.
Definition: fs_basictypes.h:295
No document permission to operate.
Definition: fs_basictypes.h:418
No "Redaction" module right.
Definition: fs_basictypes.h:370
(For ConnectedPDF only) The rights of Current user has expired.
Definition: fs_basictypes.h:299
(For LTV only) Revocation callback for LTV has not been set.
Definition: fs_basictypes.h:345
~Exception()
Destructor.
Definition: fs_basictypes.h:784
DateTime & ToUTCTime()
Convert current object to UTC time.
(For LTV only) Fail to switch PDF verion.
Definition: fs_basictypes.h:347
Out-of-memory error occurs.
Definition: fs_basictypes.h:264
bool IsValid() const
Check whether current object is valid or not.
CFX_ArrayTemplate< float > FloatArray
An array of float values.
Definition: fs_basictypes.h:443
(For Excel-to-PDF conversion only) Excel document does not have any content so it cannot be converted...
Definition: fs_basictypes.h:388
FX_RECT RectI
Rectangle, in integer.
Definition: fs_basictypes.h:477
Definition: fx_coordinates.h:771
Some types are not supported.
Definition: fs_basictypes.h:262