Merge XFA to PDFium master at 4dc95e7 on 10/28/2014
[pdfium.git] / core / src / fxcrt / fx_extension.cpp
index 7ff6b06..330c675 100644 (file)
@@ -80,6 +80,18 @@ FX_BOOL FX_File_Truncate(FX_HFILE hFile, FX_FILESIZE szFile)
     FXSYS_assert(hFile != NULL);
     return ((IFXCRT_FileAccess*)hFile)->Truncate(szFile);
 }
+IFX_FileAccess* FX_CreateDefaultFileAccess(FX_WSTR wsPath)\r
+{\r
+       if (wsPath.GetLength() == 0)\r
+               return NULL;\r
+\r
+       CFX_CRTFileAccess* pFA = NULL;\r
+       pFA = FX_NEW CFX_CRTFileAccess;\r
+       if (NULL == pFA) return NULL;\r
+\r
+       pFA->Init(wsPath);\r
+       return pFA;\r
+}\r
 IFX_FileStream* FX_CreateFileStream(FX_LPCSTR filename, FX_DWORD dwModes)
 {
     IFXCRT_FileAccess* pFA = FXCRT_FileAccess_Create();
@@ -383,3 +395,40 @@ void FX_Random_GenerateCrypto(FX_LPDWORD pBuffer, FX_INT32 iCount)
 #ifdef __cplusplus
 }
 #endif
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+void FX_GUID_CreateV4(FX_LPGUID pGUID)\r
+{\r
+#if (_FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN32_MOBILE_ || _FX_OS_ == _FX_WIN64_)\r
+#ifdef _FX_WINAPI_PARTITION_DESKTOP_\r
+    if (!FX_GenerateCryptoRandom((FX_LPDWORD)pGUID, 4)) {\r
+        FX_Random_GenerateMT((FX_LPDWORD)pGUID, 4);\r
+    }\r
+#else\r
+    FX_Random_GenerateMT((FX_LPDWORD)pGUID, 4);\r
+#endif\r
+#else\r
+    FX_Random_GenerateMT((FX_LPDWORD)pGUID, 4);\r
+#endif\r
+    FX_BYTE &b = ((FX_LPBYTE)pGUID)[6];\r
+    b = (b & 0x0F) | 0x40;\r
+}\r
+FX_LPCSTR gs_FX_pHexChars = "0123456789ABCDEF";\r
+void FX_GUID_ToString(FX_LPCGUID pGUID, CFX_ByteString &bsStr, FX_BOOL bSeparator)\r
+{\r
+    FX_LPSTR pBuf = bsStr.GetBuffer(40);\r
+    FX_BYTE b;\r
+    for (FX_INT32 i = 0; i < 16; i ++) {\r
+        b = ((FX_LPCBYTE)pGUID)[i];\r
+        *pBuf ++ = gs_FX_pHexChars[b >> 4];\r
+        *pBuf ++ = gs_FX_pHexChars[b & 0x0F];\r
+        if (bSeparator && (i == 3 || i == 5 || i == 7 || i == 9)) {\r
+            *pBuf ++ = L'-';\r
+        }\r
+    }\r
+    bsStr.ReleaseBuffer(bSeparator ? 36 : 32);\r
+}\r
+#ifdef __cplusplus\r
+}\r
+#endif\r