Index: core/src/fxcrt/fx_extension.cpp |
diff --git a/core/src/fxcrt/fx_extension.cpp b/core/src/fxcrt/fx_extension.cpp |
index 37437ae9ed587e91c6d7e3b193d197f216c9b898..c796a57102c0f5d96599e234bcdfff31202c43d3 100644 |
--- a/core/src/fxcrt/fx_extension.cpp |
+++ b/core/src/fxcrt/fx_extension.cpp |
@@ -14,6 +14,20 @@ |
#include <ctime> |
#endif |
+#ifdef PDF_ENABLE_XFA |
+IFX_FileAccess* FX_CreateDefaultFileAccess(const CFX_WideStringC& wsPath) { |
+ if (wsPath.GetLength() == 0) |
+ return NULL; |
+ |
+ CFX_CRTFileAccess* pFA = NULL; |
+ pFA = new CFX_CRTFileAccess; |
+ if (NULL == pFA) |
+ return NULL; |
+ |
+ pFA->Init(wsPath); |
+ return pFA; |
+} |
+#endif |
IFX_FileStream* FX_CreateFileStream(const FX_CHAR* filename, FX_DWORD dwModes) { |
IFXCRT_FileAccess* pFA = FXCRT_FileAccess_Create(); |
if (!pFA) { |
@@ -291,3 +305,38 @@ void FX_Random_GenerateCrypto(FX_DWORD* pBuffer, int32_t iCount) { |
FX_Random_GenerateBase(pBuffer, iCount); |
#endif |
} |
+#ifdef PDF_ENABLE_XFA |
+ |
+void FX_GUID_CreateV4(FX_LPGUID pGUID) { |
+#if (_FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN32_MOBILE_ || \ |
+ _FX_OS_ == _FX_WIN64_) |
+#ifdef _FX_WINAPI_PARTITION_DESKTOP_ |
+ if (!FX_GenerateCryptoRandom((FX_DWORD*)pGUID, 4)) { |
+ FX_Random_GenerateMT((FX_DWORD*)pGUID, 4); |
+ } |
+#else |
+ FX_Random_GenerateMT((FX_DWORD*)pGUID, 4); |
+#endif |
+#else |
+ FX_Random_GenerateMT((FX_DWORD*)pGUID, 4); |
+#endif |
+ uint8_t& b = ((uint8_t*)pGUID)[6]; |
+ b = (b & 0x0F) | 0x40; |
+} |
+const FX_CHAR* gs_FX_pHexChars = "0123456789ABCDEF"; |
+void FX_GUID_ToString(FX_LPCGUID pGUID, |
+ CFX_ByteString& bsStr, |
+ FX_BOOL bSeparator) { |
+ FX_CHAR* pBuf = bsStr.GetBuffer(40); |
+ uint8_t b; |
+ for (int32_t i = 0; i < 16; i++) { |
+ b = ((const uint8_t*)pGUID)[i]; |
+ *pBuf++ = gs_FX_pHexChars[b >> 4]; |
+ *pBuf++ = gs_FX_pHexChars[b & 0x0F]; |
+ if (bSeparator && (i == 3 || i == 5 || i == 7 || i == 9)) { |
+ *pBuf++ = L'-'; |
+ } |
+ } |
+ bsStr.ReleaseBuffer(bSeparator ? 36 : 32); |
+} |
+#endif |