Go to the documentation of this file.
96 #ifndef _SIZE_T_DEFINED
97 #define _SIZE_T_DEFINED
98 #endif //_SIZE_T_DEFINED
107 #define _FX_WIN32_DESKTOP_ 1
110 #define _FX_WIN32_MOBILE_ 2
116 #define _FX_LINUX_DESKTOP_ 4
119 #define _FX_LINUX_EMBEDDED_ 5
121 #define _FX_SYMBIAN_ 6
124 #define _FX_MACOSX_ 7
127 #define _FX_EMBEDDED_ 8
129 #define _FX_SOLARIS_ 9
131 #define _FX_PALMOS_ 10
133 #define _FX_NETBSD_ 11
137 #define _FX_ANDROID_ 12
140 #define _FX_VXWORKS_ 13
147 #define _FXM_PLATFORM_WINDOWS_ 1
149 #define _FXM_PLATFORM_LINUX_ 2
151 #define _FXM_PLATFORM_APPLE_ 3
153 #define _FXM_PLATFORM_ANDROID_ 4
156 #define _CHROME_PNACL_
159 #if defined(_FXM_PLATFORM_LINUX_JS_) || defined(_CHROME_PNACL_)
160 #define _FX_OS_ _FX_LINUX_DESKTOP_
161 #define _FXM_PLATFORM_ _FXM_PLATFORM_LINUX_
167 #if defined(__SYMBIAN32__) || defined(__symbian__)
168 #define _FX_OS_ _FX_SYMBIAN_
169 #elif defined(_WIN32_WCE)
170 #define _FX_OS_ _FX_WIN32_MOBILE_
171 #define _FXM_PLATFORM_ _FXM_PLATFORM_WINDOWS_
172 #if defined (_WIN32_WCE) && (_WIN32_WCE == 0x600)
173 #define UNSUPPORT_CPP0X
175 #elif defined(__linux__) || defined(__native_client__)
176 #if ((defined(__arm__) || defined(__aarch64__)) && defined(__ARM_EABI__)) && (!defined(OS_CHROMEOS))
177 #define _FX_OS_ _FX_LINUX_EMBEDDED_
179 #define _FX_OS_ _FX_LINUX_DESKTOP_
181 #define _FXM_PLATFORM_ _FXM_PLATFORM_LINUX_
182 #elif defined(__NetBSD__)
183 #define _FX_OS_ _FX_NETBSD_
184 #elif defined(_WIN64)
185 #define _FX_OS_ _FX_WIN64_
186 #define _FXM_PLATFORM_ _FXM_PLATFORM_WINDOWS_
187 #elif defined(_WIN32)
188 #define _FX_OS_ _FX_WIN32_DESKTOP_
189 #define _FXM_PLATFORM_ _FXM_PLATFORM_WINDOWS_
190 #elif defined(__sparc__)
191 #define _FX_OS_ _FX_SOLARIS_
192 #define _FXM_PLATFORM_ _FXM_PLATFORM_LINUX_
193 #elif defined(__ARMCC_VERSION) || defined(__ICCARM__) || defined(__TMS470__)
194 #define _FX_OS_ _FX_EMBEDDED_
195 #elif defined(__APPLE__)
196 #include "TargetConditionals.h"
197 #if (defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE == 1) || (defined(TARGET_IPHONE_SIMULATOR) && TARGET_IPHONE_SIMULATOR == 1)
198 #define _FX_OS_ _FX_IOS_
200 #define _FX_OS_ _FX_MACOSX_
202 #define _FXM_PLATFORM_ _FXM_PLATFORM_APPLE_
203 #elif defined(__ARM_EABI__)
204 #define _FX_OS_ _FX_EMBEDDED_
207 #if _FX_OS_ == _FX_ANDROID_
208 #ifndef _FXM_PLATFORM_
209 #define _FXM_PLATFORM_ _FXM_PLATFORM_ANDROID_
211 #elif (_FX_OS_ == _FX_WIN32_MOBILE_ || _FX_OS_ == _FX_WIN64_ || _FX_OS_ == _FX_WIN32_DESKTOP_)
212 #ifndef _FXM_PLATFORM_
213 #define _FXM_PLATFORM_ _FXM_PLATFORM_WINDOWS_
215 #elif (_FX_OS_ == _FX_IOS_ || _FX_OS_ == _FX_MACOSX_)
216 #ifndef _FXM_PLATFORM_
217 #define _FXM_PLATFORM_ _FXM_PLATFORM_APPLE_
219 #elif _FX_OS_ == _FX_SOLARIS_ || _FX_OS_ == _FX_LINUX_EMBEDDED_ || _FX_OS_ == _FX_LINUX_DESKTOP_
220 #ifndef _FXM_PLATFORM_
221 #define _FXM_PLATFORM_ _FXM_PLATFORM_LINUX_
226 #if !defined(_FX_OS_) || _FX_OS_ == 0
227 #error Sorry, can not figure out what OS you are targeting to. Please specify _FX_OS_ macro.
231 #if (_FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN32_MOBILE_ || _FX_OS_ == _FX_WIN64_) && !defined(_FX_NO_WINDOWS_)
233 #define _CRT_SECURE_NO_WARNINGS
234 #if defined(_MSC_VER) && _MSC_VER < 1300
235 #define _WIN32_WINNT 0x400
237 #if defined(_MSC_VER) && _MSC_VER < 1600
238 #define UNSUPPORT_CPP0X
246 #if (0x00000001 == WINAPI_PARTITION_DESKTOP) && (0x00000002 == WINAPI_PARTITION_APP) //Macros in Windows Kit/8
248 #else //Macros in Windows Kit/8.1
250 #endif //(0x00000001 == WINAPI_PARTITION_DESKTOP) && (0x00000002 == WINAPI_PARTITION_APP)
253 #if ((WINAPI_FAMILY&WINAPI_PARTITION_APP) == WINAPI_PARTITION_APP)
255 #define _FX_WINAPI_PARTITION_APP_
257 #if defined(WINAPI_FAMILY) && ((WINAPI_FAMILY&WINAPI_PARTITION_DESKTOP) == WINAPI_PARTITION_DESKTOP)
259 #define _FX_WINAPI_PARTITION_DESKTOP_
265 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) && !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) && WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_PC_APP)
267 #define _FX_WINAPI_PARTITION_APP_
270 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) && WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_PHONE_APP) && !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_PC_APP)
272 #define _FX_WINAPI_PARTITION_PHONE_APP_
275 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) && WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
277 #define _FX_WINAPI_PARTITION_DESKTOP_
280 #else // !defined(WINAPI_FAMILY)
282 #define _FX_WINAPI_PARTITION_DESKTOP_
284 #endif //WINAPI_FAMILY
285 #endif //(_FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN32_MOBILE_ || _FX_OS_ == _FX_WIN64_) && !defined(_FX_NO_WINDOWS_)
310 #define _FX_NOKIA_X86_ 8
312 #define _FX_METROWERKS_ 9
316 #define _FX_TMS470_ 11
318 #define _FX_MIPS_SDE_ 12
321 #ifndef _FX_COMPILER_
324 #define _FX_COMPILER_ _FX_VC8_
325 #elif _MSC_VER >= 1300
326 #define _FX_COMPILER_ _FX_VC7_
347 #define _FX_COMPILER_ _FX_VC6_
349 #elif defined(__GNUC__)
350 #define _FX_COMPILER_ _FX_GCC_
351 #elif defined(__ARMCC_VERSION)
352 #if __ARMCC_VERSION < 200000
353 #define _FX_COMPILER_ _FX_ADS_
355 #define _FX_COMPILER_ _FX_RVCT_
357 #elif defined(__ICCARM__)
358 #define _FX_COMPILER_ _FX_IARCC_
359 #elif defined(_PACC_VER)
360 #define _FX_COMPILER_ _FX_PACC_
361 #elif defined(__TMS470__)
362 #define _FX_COMPILER_ _FX_TMS470_
365 #if !defined(_FX_COMPILER_) || _FX_COMPILER_ == 0
366 #error Sorry, can not figure out what compiler you are using. Please specify _FX_COMPILER_ macro.
382 #define _FX_POWERPC_ 3
394 #define _FX_MIPS64_ 9
396 #if defined(_FXM_PLATFORM_LINUX_JS_)
397 #define _FX_CPU_ _FX_X86_
400 #if defined(_CHROME_PNACL_)
401 #define _FX_CPU_ _FX_X86_
405 #if defined(__arm__) || defined(ARM) || defined(_ARM_) || defined(__ARMCC_VERSION) || defined(__ICCARM__) || defined(__arm) || defined(arm9)
406 #define _FX_CPU_ _FX_ARM_
407 #elif defined(__arm64) || defined(__arm64__) || defined(__aarch64__) || defined(_ARM64_)
408 #define _FX_CPU_ _FX_ARM64_
409 #elif defined(_M_IX86) || defined(__i386__)
425 #define _FX_CPU_ _FX_X86_
426 #elif defined(_M_X64) || defined(__x86_64__)
427 #define _FX_CPU_ _FX_X64_
428 #elif defined(_M_IA64)
429 #define _FX_CPU_ _FX_IA64_
430 #elif defined(__POWERPC__)
431 #define _FX_CPU_ _FX_POWERPC_
432 #elif defined(__sparc__)
433 #define _FX_CPU_ _FX_SPARC_
434 #elif defined(__mips64)
435 #define _FX_CPU_ _FX_MIPS64_
436 #elif defined(MIPS) || defined(_MIPS_) || defined(__mips)
437 #define _FX_CPU_ _FX_MIPS_
440 #if !defined(_FX_CPU_) || _FX_CPU_ == 0
441 #error Sorry, can not figure out what CPU you are targeting to. Please specify _FX_CPU_ macro.
448 #define _FX_EMBEDFONT_PRINT_
464 #ifndef _FX_WORDSIZE_
465 #if defined(_WIN64) || defined(__arm64) || defined(__arm64__) || defined(_M_AMD64) || \
466 defined(_M_X64) || defined(_M_IA64) || defined(__powerpc64__) || defined(__x86_64__) || \
467 __WORDSIZE == 64 || defined(__LP64__) || defined(__mips64) || defined(__loongarch64)
468 #define _FX_WORDSIZE_ _FX_W64_
470 #define _FX_WORDSIZE_ _FX_W32_
483 #define _FX_BIG_ENDIAN_ 1
485 #define _FX_LITTLE_ENDIAN_ 2
489 #if _FX_CPU_ == _FX_POWERPC_ || _FX_CPU_ == _FX_SPARC_
490 #define _FX_ENDIAN_ _FX_BIG_ENDIAN_
501 #define _FX_ENDIAN_ _FX_LITTLE_ENDIAN_
514 #ifndef _FX_NO_ANSIC_
519 #if _FX_OS_ != _FX_VXWORKS_ && ((_FX_COMPILER_ == _FX_GCC_ && _FX_OS_ != _FX_SYMBIAN_) || _FX_COMPILER_ == _FX_NOKIA_X86_ || _FX_COMPILER_ == _FX_METROWERKS_ || _FX_COMPILER_ == _FX_IARCC_)
526 #if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_
527 #include <libkern/OSAtomic.h>
528 #if _FX_OS_ == _FX_MACOSX_
529 #include <Carbon/Carbon.h>
530 #elif _FX_OS_ == _FX_IOS_
531 #include <CoreText/CoreText.h>
532 #include <CoreGraphics/CoreGraphics.h>
538 #define GetObject GetObjectW
539 #define GetModuleFileName GetModuleFileNameW
540 #define GetFullPathName GetFullPathNameW
546 #define GetObject GetObjectA
552 #define GetModuleFileName GetModuleFileNameA
558 #define GetFullPathName GetFullPathNameA
561 #if ( _FX_OS_ == _FX_IOS_ && (_FX_CPU_ == _FX_ARM_ || _FX_CPU_ == _FX_ARM64_)) || (_FX_OS_ == _FX_ANDROID_) || (_FX_OS_ == _FX_WIN32_MOBILE_)
562 #ifndef _FXCORE_LIMITED_MEMORY_
563 #define _FXCORE_LIMITED_MEMORY_
565 #ifndef _FXCORE_LIMITED_CPU_
566 #define _FXCORE_LIMITED_CPU_
570 #if _FX_COMPILER_ == _FX_ADS_ || _FX_COMPILER_ == _FX_RVCT_ || _FX_COMPILER_ == _FX_TMS470_ || _FX_OS_ == _FX_ANDROID_
572 #define _FX_NO_NAMESPACE_
581 #define _FX_DEFAULT_TARGET_ 0
588 #if (((_FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN64_) && (defined(_FX_WINAPI_PARTITION_DESKTOP_) || defined(_FX_WINAPI_PARTITION_APP_))) || _FX_OS_ == _FX_LINUX_DESKTOP_ || _FX_OS_ == _FX_MACOSX_)
590 #if !defined(_FXM_PLATFORM_LINUX_JS_) && !defined(_CHROME_PNACL_) && (_FX_CPU_ != _FX_ARM_) && \
591 (_FX_CPU_ != _FX_ARM64_) && (_FX_CPU_ != _FX_MIPS_) && (_FX_CPU_ != _FX_MIPS64_)
596 #if _FX_OS_ != _FX_MACOSX_
600 #ifndef _FX_NO_OPENSSL_
601 #define _FX_NO_OPENSSL_
604 #if (((_FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN64_) && defined(_FX_WINAPI_PARTITION_DESKTOP_)) || _FX_OS_ == _FX_LINUX_DESKTOP_ || _FX_OS_ == _FX_MACOSX_)
605 #ifndef _FX_NO_JPEG_TURBO_
606 #if !defined(_CHROME_PNACL_)
607 #define _FX_JPEG_TURBO_
610 #ifndef _FX_NO_OPENSSL_
611 #define _FXM_OPENSSL_
613 #define _FX_LARGEFILE_SUPPORT_
617 #define _FPDF_STREAM_RENDER_
618 #ifndef _FX_ENABLE_OVERPRINT_
619 #define _FX_ENABLE_OVERPRINT_
623 #if _FX_OS_ == _FX_LINUX_EMBEDDED_
624 #ifndef _FX_ENABLE_OVERPRINT_
625 #define _FX_ENABLE_OVERPRINT_
629 #ifdef _FX_WINAPI_PARTITION_APP_
630 #define _FPDF_STREAM_RENDER_
687 #define FX_SUCCEEDED(Status) ((FX_ERR)(Status) >= 0)
689 #define FX_FAILED(Status) ((FX_ERR)(Status) < 0)
708 #if !defined(_MSC_VER) && (_FX_CPU_ == _FX_X64_ || _FX_CPU_ == _FX_IA64_ || _FX_CPU_ == _FX_ARM64_ || _FX_CPU_ == _FX_MIPS64_)
729 typedef __int64 FX_INT64;
731 typedef unsigned __int64 FX_UINT64;
733 typedef long long int FX_INT64;
734 typedef unsigned long long FX_UINT64;
737 #if (_FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN64_) && !defined(_FX_NO_WINDOWS_)
743 #if (_FX_CPU_ == _FX_X64_ || _FX_CPU_ == _FX_IA64_ || _FX_CPU_ == _FX_ARM64_ || _FX_CPU_ == _FX_MIPS64_)
760 #define FX_DEFINEHANDLE(name) typedef struct _##name {FX_LPVOID pData;} * name;
762 #if defined(DEBUG) && !defined(_DEBUG)
787 #if !defined(_FX_NO_ANSIC_)
792 #define FXSYS_assert assert
801 #define ASSERT FXSYS_assert
812 #define FX_MAX(a, b) (((a) > (b)) ? (a) : (b))
814 #define FX_MIN(a, b) (((a) < (b)) ? (a) : (b))
817 #define FX_PI 3.1415926535897932384626433832795f
820 #if _FX_WORDSIZE_ == _FX_W64_ && _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_
821 #define _FX_CRT_MALLOC_LIMIT_ 0x7fffffffffffffffL
823 #define _FX_CRT_MALLOC_LIMIT_ 0x7fffffffL
836 #if !defined(_FX_NO_ANSIC_)
841 #define FXSYS_sprintf sprintf
847 #define FXSYS_snprintf _snprintf
848 #define FXSYS_vsnprintf _vsnprintf
850 #define FXSYS_snprintf snprintf
851 #define FXSYS_vsnprintf vsnprintf
857 #define FXSYS_vsprintf vsprintf
862 #define FXSYS_strchr strchr
867 #define FXSYS_strlen strlen
872 #define FXSYS_strncmp strncmp
877 #define FXSYS_strcmp strcmp
882 #define FXSYS_strcpy strcpy
887 #define FXSYS_strncpy strncpy
892 #define FXSYS_strstr strstr
895 int FXSYS_vsprintf(
char *buffer,
const char *format, va_list args);
898 int FXSYS_strncmp(
const char* str1,
const char* str2,
size_t len);
901 char*
FXSYS_strncpy(
char* dest,
const char* src,
size_t len);
902 char*
FXSYS_strstr(
const char *
string,
const char *strFind);
913 #if !defined(_FX_NO_ANSIC_) && !defined(__EMSCRIPTEN__)
918 #define FXSYS_FILE FILE
923 #define FXSYS_fopen fopen
928 #define FXSYS_fclose fclose
933 #define FXSYS_SEEK_END SEEK_END
938 #define FXSYS_SEEK_SET SEEK_SET
943 #define FXSYS_fseek fseek
948 #define FXSYS_ftell ftell
953 #define FXSYS_fread fread
958 #define FXSYS_fwrite fwrite
963 #define FXSYS_fprintf fprintf
968 #define FXSYS_fflush fflush
970 #define FXSYS_FILE void
973 #define FXSYS_SEEK_END 2
974 #define FXSYS_SEEK_SET 0
984 #if _FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN32_MOBILE_ || _FX_OS_ == _FX_WIN64_
989 #ifdef _NATIVE_WCHAR_T_DEFINED
990 #define FXSYS_wfopen(f, m) _wfopen((const wchar_t*)(f), (const wchar_t*)(m))
992 #define FXSYS_wfopen _wfopen
1007 #if _FX_OS_ != _FX_VXWORKS_ && _FX_OS_ != _FX_ANDROID_ && !defined(_FX_NO_ANSIC_) && _FX_COMPILER_ != _FX_ADS_ && _FX_COMPILER_ != _FX_RVCT_ && _FX_COMPILER_ != _FX_PACC_ && _FX_COMPILER_ != _FX_TMS470_ && _FX_COMPILER_ != _FX_MIPS_SDE_
1008 #ifdef _NATIVE_WCHAR_T_DEFINED
1009 #define FXSYS_wcslen(str) wcslen((wchar_t*)(str))
1010 #define FXSYS_wcscmp(str1, str2) wcscmp((wchar_t*)(str1), (wchar_t*)(str2))
1016 #define FXSYS_wcslen wcslen
1021 #define FXSYS_wcscmp wcscmp
1029 #if _FX_OS_ != _FX_VXWORKS_ && _FX_OS_ != _FX_ANDROID_ && !defined(_FX_NO_ANSIC_) && _FX_COMPILER_ != _FX_ADS_ && _FX_COMPILER_ != _FX_RVCT_ && !(_FX_COMPILER_ == _FX_GCC_ && _FX_OS_ == _FX_SYMBIAN_) && _FX_COMPILER_ != _FX_PACC_ && _FX_COMPILER_ != _FX_TMS470_ && _FX_COMPILER_ != _FX_MIPS_SDE_
1030 #ifdef _NATIVE_WCHAR_T_DEFINED
1031 #define FXSYS_wcschr(str, ch) (FX_LPCWSTR)wcschr((wchar_t*)(str), ch)
1032 #define FXSYS_wcsstr(str1, str2) (FX_LPCWSTR)wcsstr((wchar_t*)(str1), (wchar_t*)(str2))
1033 #define FXSYS_wcsncmp(str1, str2, n) wcsncmp((wchar_t*)(str1), (wchar_t*)(str2), n)
1039 #define FXSYS_wcschr wcschr
1044 #define FXSYS_wcsstr wcsstr
1049 #define FXSYS_wcsncmp wcsncmp
1055 #define FXSYS_vswprintf vswprintf
1060 #if _FX_OS_ != _FX_ANDROID_
1063 #define FXSYS_vswprintf vswprintf
1067 #if !defined(_FX_NO_ANSIC_) && _FX_COMPILER_ != _FX_TMS470_
1072 #define FXSYS_mbstowcs mbstowcs
1077 #define FXSYS_wcstombs wcstombs
1092 #if !defined(_FX_NO_ANSIC_)
1097 #define FXSYS_memcmp memcmp
1102 #define FXSYS_memcpy memcpy
1109 #define FXSYS_memmove memmove
1114 #define FXSYS_memset memset
1119 #define FXSYS_memchr memchr
1131 #if !defined(_FX_NO_ANSIC_)
1136 #define FXSYS_qsort qsort
1138 void FXSYS_qsort(
void*,
unsigned,
unsigned,
int (*)(
const void*,
const void*));
1141 #if _FX_OS_ != _FX_WIN32_MOBILE_ && !defined(_FX_NO_ANSIC_) && _FX_OS_ != _FX_SYMBIAN_
1146 #define FXSYS_bsearch bsearch
1149 void *
FXSYS_bsearch(
const void *key,
const void *base,
size_t num,
size_t width,
int (*compare)(
const void *,
const void *));
1152 #if (_FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN32_MOBILE_ || _FX_OS_ == _FX_WIN64_) && !defined(_FX_NO_WINDOWS_)
1159 #define FXSYS_itoa _itoa
1164 #define FXSYS_strlwr _strlwr
1169 #define FXSYS_strupr _strupr
1174 #define FXSYS_stricmp _stricmp
1176 #ifdef _NATIVE_WCHAR_T_DEFINED
1177 #define FXSYS_wcsicmp(str1, str2) _wcsicmp((wchar_t*)(str1), (wchar_t*)(str2))
1178 #define FXSYS_WideCharToMultiByte(p1, p2, p3, p4, p5, p6, p7, p8) WideCharToMultiByte(p1, p2, (const wchar_t*)(p3), p4, p5, p6, p7, p8)
1179 #define FXSYS_MultiByteToWideChar(p1, p2, p3, p4, p5, p6) MultiByteToWideChar(p1, p2, p3, p4, (wchar_t*)(p5), p6)
1180 #define FXSYS_wcslwr(str) _wcslwr((wchar_t*)(str))
1181 #define FXSYS_wcsupr(str) _wcsupr((wchar_t*)(str))
1187 #define FXSYS_wcsicmp _wcsicmp
1192 #define FXSYS_WideCharToMultiByte WideCharToMultiByte
1197 #define FXSYS_MultiByteToWideChar MultiByteToWideChar
1202 #define FXSYS_wcslwr _wcslwr
1207 #define FXSYS_wcsupr _wcsupr
1210 #ifndef _FX_WINAPI_PARTITION_DESKTOP_
1220 #define FXSYS_GetFullPathName GetFullPathName
1225 #define FXSYS_GetModuleFileName GetModuleFileName
1230 #define FXSYS_GetACP GetACP
1233 char*
FXSYS_itoa(
int value,
char*
string,
int radix);
1236 char* buf,
int buflen,
const char* default_str,
int* pUseDefault);
1238 wchar_t* buf,
int buflen);
1245 int FXSYS_wcsicmp(
const wchar_t *string1,
const wchar_t *string2);
1343 #if _FX_OS_ == _FX_PALMOS_ && _FX_COMPILER_ == _FX_METROWERKS_
1349 extern double __ieee754_pow(
double,
double);
1350 extern double __ieee754_sqrt(
double);
1351 extern double __fabs(
double);
1352 extern double __ieee754_atan2(
double,
double);
1353 extern double __ceil(
double);
1354 extern double __floor(
double);
1355 extern double __cos(
double);
1356 extern double __ieee754_acos(
double);
1357 extern double __sin(
double);
1358 extern double __ieee754_log(
double);
1359 extern double __ieee754_log10(
double);
1361 #define FXSYS_pow(x, y) __ieee754_pow(x, y)
1362 #define FXSYS_sqrt(x) __ieee754_sqrt(x)
1363 #define FXSYS_fabs(x) __fabs(x)
1364 #define FXSYS_atan2(x, y) __ieee754_atan2(x, y)
1365 #define FXSYS_ceil(x) __ceil(x)
1366 #define FXSYS_floor(x) __floor(x)
1367 #define FXSYS_cos(x) __cos(x)
1368 #define FXSYS_acos(x) __ieee754_acos(x)
1369 #define FXSYS_sin(x) __sin(x)
1370 #define FXSYS_log(x) __ieee754_log(x)
1371 #define FXSYS_log10(x) __ieee754_log10(x)
1378 #if _FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN64_ || _FX_OS_ == _FX_LINUX_DESKTOP_
1383 #define FXSYS_pow powf
1388 #define FXSYS_sqrt sqrtf
1393 #define FXSYS_fabs fabsf
1398 #define FXSYS_atan2 atan2f
1403 #define FXSYS_ceil ceilf
1408 #define FXSYS_floor floorf
1413 #define FXSYS_cos cosf
1418 #define FXSYS_acos acosf
1423 #define FXSYS_sin sinf
1428 #define FXSYS_log logf
1433 #define FXSYS_log10 log10f
1438 #define FXSYS_fmod fmodf
1440 #define FXSYS_pow(a, b) (FX_FLOAT)pow(a, b)
1441 #define FXSYS_sqrt(a) (FX_FLOAT)sqrt(a)
1442 #define FXSYS_fabs(a) (FX_FLOAT)fabs(a)
1443 #define FXSYS_atan2(a, b) (FX_FLOAT)atan2(a, b)
1444 #define FXSYS_ceil(a) (FX_FLOAT)ceil(a)
1445 #define FXSYS_floor(a) (FX_FLOAT)floor(a)
1446 #define FXSYS_cos(a) (FX_FLOAT)cos(a)
1447 #define FXSYS_acos(a) (FX_FLOAT)acos(a)
1448 #define FXSYS_sin(a) (FX_FLOAT)sin(a)
1449 #define FXSYS_log(a) (FX_FLOAT)log(a)
1450 #define FXSYS_log10(a) (FX_FLOAT)log10(a)
1451 #define FXSYS_fmod(a, b) (FX_FLOAT)fmod(a, b)
1455 #if !defined(_FX_NO_ANSIC_)
1460 #define FXSYS_abs abs
1462 #define FXSYS_abs(a) ((a)<0?-(a):(a))
1475 #ifdef _FX_NO_GLOBAL_
1478 void FXSYS_SetStaticPointer1(
void*);
1480 void* FXSYS_GetStaticPointer1(
void);
1482 void FXSYS_SetStaticPointer2(
void*);
1484 void* FXSYS_GetStaticPointer2(
void);
1488 #if _FX_ENDIAN_ == _FX_BIG_ENDIAN_
1489 #define _FX_MSB_FIRST_
1490 #define FXDWORD_FROM_LSBFIRST(i) ( ((FX_BYTE)(i) << 24) | ((FX_BYTE)((i) >> 8) << 16) | ((FX_BYTE)((i) >> 16) << 8) | (FX_BYTE)((i) >> 24) )
1491 #define FXDWORD_FROM_MSBFIRST(i) (i)
1493 #define _FX_LSB_FIRST_
1494 #define FXDWORD_FROM_LSBFIRST(i) (i)
1495 #define FXDWORD_FROM_MSBFIRST(i) ( ((FX_BYTE)(i) << 24) | ((FX_BYTE)((i) >> 8) << 16) | ((FX_BYTE)((i) >> 16) << 8) | (FX_BYTE)((i) >> 24) )
1498 #if _FX_CPU_ == _FX_X86_ || _FX_CPU_ == _FX_X64_ || _FX_CPU_ == _FX_ARM64_ || _FX_CPU_ == _FX_MIPS64_
1499 #define FXDWORD_GET_LSBFIRST(p) (*(FX_DWORD*)(p))
1501 #define FXDWORD_GET_LSBFIRST(p) ((((FX_LPBYTE)(p))[3] << 24) | (((FX_LPBYTE)(p))[2] << 16) | (((FX_LPBYTE)(p))[1] << 8) | (((FX_LPBYTE)(p))[0]))
1504 #define FXDWORD_GET_MSBFIRST(p) ((((FX_LPBYTE)(p))[0] << 24) | (((FX_LPBYTE)(p))[1] << 16) | (((FX_LPBYTE)(p))[2] << 8) | (((FX_LPBYTE)(p))[3]))
1506 #define FXSYS_HIBYTE(word) ((FX_BYTE)((word) >> 8))
1507 #define FXSYS_LOBYTE(word) ((FX_BYTE)(word))
1508 #define FXSYS_HIWORD(dword) ((FX_WORD)((dword) >> 16))
1509 #define FXSYS_LOWORD(dword) ((FX_WORD)(dword))
1512 #define FXSYS_strtol strtol
1575 #define FXSYS_Mul(a, b) ((a) * (b))
1577 #define FXSYS_Div(a, b) ((a) / (b))
1579 #define FXSYS_MulDiv(a, b, c) ((a) * (b) / (c))
1581 #define FXSYS_sqrt2(a, b) (FX_FLOAT)FXSYS_sqrt((a)*(a) + (b)*(b))
1587 #if (_FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN32_MOBILE_ || _FX_OS_ == _FX_WIN64_) && !defined(_FX_NO_WINDOWS_)
1590 #elif _FX_OS_ == _FX_LINUX_DESKTOP_ || _FX_OS_ == _FX_LINUX_EMBEDDED_ || _FX_OS_ == _FX_MACOSX_ || _FX_OS_ == _FX_IOS_ || _FX_OS_ == _FX_ANDROID_
1591 #include <pthread.h>
1593 #if _FX_OS_ == _FX_ANDROID_
1596 typedef pthread_rwlock_t FX_RWLOCK;
1609 #define FX_CRITICAL_SECTION FX_MUTEX
1610 #define FX_InitializeCriticalSection(a) FX_Mutex_Initialize(a)
1611 #define FX_DeleteCriticalSection(a) FX_Mutex_Destroy(a)
1612 #define FX_TryEnterCriticalSection(a) FX_Mutex_TryLock(a)
1613 #define FX_EnterCriticalSection(a) FX_Mutex_Lock(a)
1614 #define FX_LeaveCriticalSection(a) FX_Mutex_Unlock(a)
1617 #if (_FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN32_MOBILE_ || _FX_OS_ == _FX_WIN64_) && !defined(_FX_NO_WINDOWS_)
1619 #elif _FX_OS_ == _FX_LINUX_DESKTOP_ || _FX_OS_==_FX_LINUX_EMBEDDED_
1620 #ifdef _FX_SPINLOCK_USEGCCCAS_
1623 #ifndef _CHROME_PNACL_
1629 #elif _FX_OS_ == _FX_MACOSX_ || _FX_OS_ == _FX_IOS_
1631 #else // android/embeded linux/other os
1642 #if _FX_OS_ == _FX_PALMOS_ && _FX_COMPILER_ == _FX_PACC_
1643 #include <errtrycatch.h>
1644 #define setjmp ErrSetJump
1645 #define longjmp ErrLongJump
1646 #define jmp_buf ErrJumpBuf
1651 #if _FX_OS_ == _FX_MACOSX_
1652 #include <Carbon/Carbon.h>
1653 #elif _FX_OS_ == _FX_IOS_
1654 #include <CoreText/CoreText.h>
1655 #include <CoreGraphics/CoreGraphics.h>
void FX_Mutex_Unlock(FX_MUTEX *pMutex)
Unlock a mutex.
unsigned char FX_BYTE
Byte (8 bits).
Definition: fx_system.h:656
unsigned short const * FX_LPCWORD
Pointer to a WORD.
Definition: fx_system.h:672
unsigned long FX_DWORD
32-bit unsigned integer.
Definition: fx_system.h:715
FX_LPCWSTR FXSYS_i64tow(FX_INT64 value, FX_LPWSTR str, int radix)
Convert an integer to an wide string.
#define FXSYS_stricmp
Compare two ANSIC strings. case-insensitive.
Definition: fx_system.h:1174
int FX_ERR
Error indicator.
Definition: fx_system.h:685
#define FXSYS_fprintf
Print formatted data to a file.
Definition: fx_system.h:963
FX_INT32 FXSYS_memcmp32(const void *buf1, const void *buf2, size_t size)
Compare data in two buffers.
void const * FX_LPCVOID
Pointer to any constant type.
Definition: fx_system.h:647
int FXSYS_round(FX_FLOAT f)
Get nearest integer.
wchar_t FX_WCHAR
Compiler dependant Unicode character (16-bit for Microsoft Compiler, 32-bit for gcc).
Definition: fx_system.h:721
FX_INT64 FXSYS_atoi64(FX_LPCSTR str)
Convert an ANSI string to an integer.
#define FXSYS_memcpy
Copy from one buffer to another.
Definition: fx_system.h:1102
INT_PTR FX_INTPTR
Signed integral type for pointer precision.
Definition: fx_system.h:739
#define FXSYS_strlwr
Convert a ANSIC string to lowercase.
Definition: fx_system.h:1164
FX_INT32 FXSYS_atoi(FX_LPCSTR str)
Convert an ANSI string to an integer.
void * FXSYS_memset8(void *dst, FX_BYTE v, size_t size)
Set buffer data to specified value.
#define FXSYS_wcscmp
Compare wide-character strings.
Definition: fx_system.h:1021
#define FXSYS_memchr
Search for a byte in a memory block.
Definition: fx_system.h:1119
#define FXSYS_wcsncmp
Compare characters of two wide-character strings.
Definition: fx_system.h:1049
#define FXSYS_vswprintf
Write formatted output wide character string using a pointer to a list of arguments.
Definition: fx_system.h:1055
#define FXSYS_strchr
Find a character in a ANSIC string.
Definition: fx_system.h:862
#define FXSYS_strlen
Get the length of a ANSIC string.
Definition: fx_system.h:867
void * FXSYS_memset32(void *dst, FX_INT32 v, size_t size)
Set buffer data to specified value.
#define FXSYS_wcslwr
Convert a wide-character string to lowercase.
Definition: fx_system.h:1202
char FX_CHAR
8-bit Windows (ANSI) character.
Definition: fx_system.h:692
#define FXSYS_strncpy
Copy an ANSIC string with length limitation.
Definition: fx_system.h:887
unsigned long * FX_LPDWORD
Pointer to a DWORD.
Definition: fx_system.h:717
wchar_t * FX_LPWSTR
Pointer to Unicode characters.
Definition: fx_system.h:723
char * FX_LPSTR
Pointer to 8-bit Windows (ANSI) characters.
Definition: fx_system.h:694
void * FX_LPVOID
Pointer to any type.
Definition: fx_system.h:645
#define FXSYS_memmove
Moves one buffer to another. If some regions of the source area and the destination overlap,...
Definition: fx_system.h:1109
FX_INT32 FXSYS_wtoi(FX_LPCWSTR str)
Convert a wide string to an integer.
#define FXSYS_itoa
Convert an integer to a ANSIC string.
Definition: fx_system.h:1159
#define FX_DEFINEHANDLE(name)
Macro to define a handle type.
Definition: fx_system.h:760
void FX_Mutex_Destroy(FX_MUTEX *pMutex)
Destroy a mutex.
void * FX_SPINLOCK
Definition for spinlock.
Definition: fx_system.h:1618
#define FXSYS_wcslen
Get the length of a wide-character string.
Definition: fx_system.h:1016
void * FX_POSITION
A value used to denote the position of an element in a collection.
Definition: fx_system.h:649
int FX_INT32
32-bit signed integer.
Definition: fx_system.h:674
FX_INT64 FXSYS_wtoi64(FX_LPCWSTR str)
Convert a wide string to an integer.
void * FXSYS_memmove32(void *dst, const void *src, size_t size)
Move source buffer data into destination.
FX_BOOL FX_Mutex_TryLock(FX_MUTEX *pMutex)
Try to lock a mutex.
short FX_SHORT
Short integer (16 bits).
Definition: fx_system.h:666
#define FXSYS_WideCharToMultiByte
Maps a wide-character string to a character string.
Definition: fx_system.h:1192
#define FXSYS_fopen
Open a file.
Definition: fx_system.h:923
#define FXSYS_bsearch
Performs a binary search of a sorted array. A generic algorithm.
Definition: fx_system.h:1146
#define FXSYS_GetFullPathName
Get the full path and file name of a specified file.
Definition: fx_system.h:1220
wchar_t const * FX_LPCWSTR
Pointer to constant Unicode characters.
Definition: fx_system.h:725
FX_BOOL FX_Mutex_Initialize(FX_MUTEX *pMutex)
Initialize a mutex.
#define FXSYS_assert
Assertion.
Definition: fx_system.h:792
#define FXSYS_memset
Use given character to initialize the buffer.
Definition: fx_system.h:1114
#define FXSYS_GetACP
Retrieve the current ANSI code-page identifier for the system.
Definition: fx_system.h:1230
#define FXSYS_wfopen
Open a file using wide-string parameters. Only supported on Windows platforms now.
Definition: fx_system.h:992
unsigned short FX_WORD
16-bit unsigned integer.
Definition: fx_system.h:668
#define FXSYS_fread
Reads data from a file.
Definition: fx_system.h:953
#define FXSYS_fclose
Close a file.
Definition: fx_system.h:928
#define FXSYS_memcmp
Compares two buffers.
Definition: fx_system.h:1097
#define FXSYS_wcsicmp
Compare two wide character strings. case-insensitive.
Definition: fx_system.h:1187
char const * FX_LPCSTR
Pointer to constant 8-bit Windows (ANSI) characters.
Definition: fx_system.h:696
unsigned char const * FX_LPCBYTE
Pointer to a constant FX_BYTE.
Definition: fx_system.h:660
#define FXSYS_strncmp
Compare characters of two ANSIC strings.
Definition: fx_system.h:872
#define FXSYS_FILE
File structure.
Definition: fx_system.h:918
#define FXSYS_fflush
Flush file.
Definition: fx_system.h:968
UINT_PTR FX_UINTPTR
Unsigned integral type for pointer precision.
Definition: fx_system.h:741
#define FXSYS_vsprintf
Write formatted output using a pointer to a list of arguments.
Definition: fx_system.h:857
#define FXSYS_qsort
Performs a quick sort. A generic algorithm.
Definition: fx_system.h:1136
FX_DWORD FX_UINT32
unsigned 32bits integer.
Definition: fx_system.h:755
#define FXSYS_ftell
Gets the current position of a file pointer.
Definition: fx_system.h:948
float FX_FLOAT
32-bit floating-point number.
Definition: fx_system.h:676
unsigned short FX_UINT16
Unsigned 16bits integer.
Definition: fx_system.h:664
#define FXSYS_MultiByteToWideChar
Maps a character string to a wide-character string.
Definition: fx_system.h:1197
signed char FX_INT8
Signed 8bits integer.
Definition: fx_system.h:652
FX_UINT64 FX_QWORD
unsigned quad-word integer.
Definition: fx_system.h:757
#define FXSYS_sprintf
Write formatted data to a ANSIC string.
Definition: fx_system.h:841
unsigned char FX_UINT8
Unsigned 8bits integer.
Definition: fx_system.h:654
#define FXSYS_strstr
Find a substring.
Definition: fx_system.h:892
#define FXSYS_wcstombs
Converts a sequence of wide characters to a corresponding sequence of multi-byte characters.
Definition: fx_system.h:1077
void FX_Mutex_Lock(FX_MUTEX *pMutex)
Lock a mutex.
#define FXSYS_mbstowcs
Converts a sequence of multi-byte characters to a corresponding sequence of wide characters.
Definition: fx_system.h:1072
int FX_BOOL
Boolean variable (should be TRUE or FALSE).
Definition: fx_system.h:682
unsigned short * FX_LPWORD
Pointer to a WORD.
Definition: fx_system.h:670
short FX_INT16
Signed 16bits integer.
Definition: fx_system.h:662
unsigned char * FX_LPBYTE
Pointer to a FX_BYTE.
Definition: fx_system.h:658
#define FXSYS_strcpy
Copy an ANSIC string.
Definition: fx_system.h:882
Definition: fx_coordinates.h:596
#define FXSYS_wcsupr
Convert a wide-character string to uppercase.
Definition: fx_system.h:1207
#define FXSYS_fwrite
Writes data to a file.
Definition: fx_system.h:958
#define FXSYS_wcschr
Find a wide-character in a wide-character string.
Definition: fx_system.h:1039
#define FXSYS_strupr
Convert a ANSIC string to uppercase.
Definition: fx_system.h:1169
#define FXSYS_GetModuleFileName
Get the fully-qualified path for specified module.
Definition: fx_system.h:1225
#define FXSYS_wcsstr
Find a sub-wide-character-string.
Definition: fx_system.h:1044
#define FXSYS_fseek
Moves the file pointer to a specified location.
Definition: fx_system.h:943
CRITICAL_SECTION FX_MUTEX
Definition for mutex/critical section and read-write lock.
Definition: fx_system.h:1588
FX_LPCSTR FXSYS_i64toa(FX_INT64 value, FX_LPSTR str, int radix)
Convert an integer to an ANSI string.
#define FXSYS_strcmp
Compare ANSIC strings.
Definition: fx_system.h:877
void * FXSYS_memcpy32(void *dst, const void *src, size_t size)
Copy buffer data from source to destination.
@2024 Foxit Software Incorporated. All rights reserved.