]> git.lizzy.rs Git - irrlicht.git/blobdiff - source/Irrlicht/COSOperator.cpp
Get rid of various old compiler and platform checks
[irrlicht.git] / source / Irrlicht / COSOperator.cpp
index 1bdbdc161fa0efc6043d6b401b249768ac7a4674..a6f9461d8a253a4eede0d8b0b481620599da5786 100644 (file)
@@ -5,9 +5,7 @@
 #include "COSOperator.h"\r
 \r
 #ifdef _IRR_WINDOWS_API_\r
-#ifndef _IRR_XBOX_PLATFORM_\r
 #include <windows.h>\r
-#endif\r
 #else\r
 #include <string.h>\r
 #include <unistd.h>\r
@@ -56,29 +54,33 @@ const core::stringc& COSOperator::getOperatingSystemVersion() const
 \r
 \r
 //! copies text to the clipboard\r
-void COSOperator::copyToClipboard(const c8* text) const\r
+//! \param text: text in utf-8\r
+void COSOperator::copyToClipboard(const c8 *text) const\r
 {\r
        if (strlen(text)==0)\r
                return;\r
 \r
 // Windows version\r
-#if defined(_IRR_XBOX_PLATFORM_)\r
-#elif defined(_IRR_WINDOWS_API_)\r
+#if defined(_IRR_WINDOWS_API_)\r
        if (!OpenClipboard(NULL) || text == 0)\r
                return;\r
 \r
        EmptyClipboard();\r
 \r
+       core::stringw tempbuffer;\r
+       core::multibyteToWString(tempbuffer, text);\r
+       const u32 size = (tempbuffer.size() + 1) * sizeof(wchar_t);\r
+\r
        HGLOBAL clipbuffer;\r
-       char * buffer;\r
+       void * buffer;\r
 \r
-       clipbuffer = GlobalAlloc(GMEM_DDESHARE, strlen(text)+1);\r
-       buffer = (char*)GlobalLock(clipbuffer);\r
+       clipbuffer = GlobalAlloc(GMEM_MOVEABLE, size);\r
+       buffer = GlobalLock(clipbuffer);\r
 \r
-       strcpy(buffer, text);\r
+       memcpy(buffer, tempbuffer.c_str(), size);\r
 \r
        GlobalUnlock(clipbuffer);\r
-       SetClipboardData(CF_TEXT, clipbuffer);\r
+       SetClipboardData(CF_UNICODETEXT, clipbuffer);\r
        CloseClipboard();\r
 \r
 #elif defined(_IRR_COMPILE_WITH_OSX_DEVICE_)\r
@@ -87,7 +89,7 @@ void COSOperator::copyToClipboard(const c8* text) const
 \r
     if ((text != NULL) && (strlen(text) > 0))\r
     {\r
-        str = [NSString stringWithCString:text encoding:NSWindowsCP1252StringEncoding];\r
+        str = [NSString stringWithCString:text encoding:NSUTF8StringEncoding];\r
         board = [NSPasteboard generalPasteboard];\r
         [board declareTypes:[NSArray arrayWithObject:NSStringPboardType] owner:NSApp];\r
         [board setString:str forType:NSStringPboardType];\r
@@ -96,29 +98,29 @@ void COSOperator::copyToClipboard(const c8* text) const
 #elif defined(_IRR_COMPILE_WITH_X11_DEVICE_)\r
     if ( IrrDeviceLinux )\r
         IrrDeviceLinux->copyToClipboard(text);\r
-#else\r
-\r
 #endif\r
 }\r
 \r
 \r
 //! gets text from the clipboard\r
-//! \return Returns 0 if no string is in there.\r
+//! \return Returns 0 if no string is in there, otherwise an utf-8 string.\r
 const c8* COSOperator::getTextFromClipboard() const\r
 {\r
-#if defined(_IRR_XBOX_PLATFORM_)\r
-               return 0;\r
-#elif defined(_IRR_WINDOWS_API_)\r
+#if defined(_IRR_WINDOWS_API_)\r
        if (!OpenClipboard(NULL))\r
                return 0;\r
 \r
-       char * buffer = 0;\r
+       wchar_t * buffer = 0;\r
+\r
+       HANDLE hData = GetClipboardData( CF_UNICODETEXT );\r
+       buffer = (wchar_t*) GlobalLock( hData );\r
+\r
+       core::wStringToMultibyte(ClipboardBuf, buffer);\r
 \r
-       HANDLE hData = GetClipboardData( CF_TEXT );\r
-       buffer = (char*)GlobalLock( hData );\r
        GlobalUnlock( hData );\r
        CloseClipboard();\r
-       return buffer;\r
+\r
+       return ClipboardBuf.c_str();\r
 \r
 #elif defined(_IRR_COMPILE_WITH_OSX_DEVICE_)\r
     NSString* str = nil;\r
@@ -129,7 +131,7 @@ const c8* COSOperator::getTextFromClipboard() const
     str = [board stringForType:NSStringPboardType];\r
 \r
     if (str != nil)\r
-        result = (char*)[str cStringUsingEncoding:NSWindowsCP1252StringEncoding];\r
+        result = (char*)[str cStringUsingEncoding:NSUTF8StringEncoding];\r
 \r
     return (result);\r
 \r
@@ -145,72 +147,10 @@ const c8* COSOperator::getTextFromClipboard() const
 }\r
 \r
 \r
-bool COSOperator::getProcessorSpeedMHz(u32* MHz) const\r
-{\r
-       if (MHz)\r
-               *MHz=0;\r
-#if defined(_IRR_WINDOWS_API_) && !defined(_WIN32_WCE ) && !defined (_IRR_XBOX_PLATFORM_)\r
-       LONG Error;\r
-\r
-       HKEY Key;\r
-       Error = RegOpenKeyEx(HKEY_LOCAL_MACHINE,\r
-                       __TEXT("HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0"),\r
-                       0, KEY_READ, &Key);\r
-\r
-       if(Error != ERROR_SUCCESS)\r
-               return false;\r
-\r
-       DWORD Speed = 0;\r
-       DWORD Size = sizeof(Speed);\r
-       Error = RegQueryValueEx(Key, __TEXT("~MHz"), NULL, NULL, (LPBYTE)&Speed, &Size);\r
-\r
-       RegCloseKey(Key);\r
-\r
-       if (Error != ERROR_SUCCESS)\r
-               return false;\r
-       else if (MHz)\r
-               *MHz = Speed;\r
-       return true;\r
-\r
-#elif defined(_IRR_OSX_PLATFORM_)\r
-       struct clockinfo CpuClock;\r
-       size_t Size = sizeof(clockinfo);\r
-\r
-       if (!sysctlbyname("kern.clockrate", &CpuClock, &Size, NULL, 0))\r
-               return false;\r
-       else if (MHz)\r
-               *MHz = CpuClock.hz;\r
-       return true;\r
-#else\r
-       // read from "/proc/cpuinfo"\r
-       FILE* file = fopen("/proc/cpuinfo", "r");\r
-       if (file)\r
-       {\r
-               char buffer[1024];\r
-               fread(buffer, 1, 1024, file);\r
-               buffer[1023]=0;\r
-               core::stringc str(buffer);\r
-               s32 pos = str.find("cpu MHz");\r
-               if (pos != -1)\r
-               {\r
-                       pos = str.findNext(':', pos);\r
-                       if (pos != -1)\r
-                       {\r
-                               while ( str[++pos] == ' ' );\r
-                               *MHz = core::fast_atof(str.c_str()+pos);\r
-                       }\r
-               }\r
-               fclose(file);\r
-       }\r
-       return (MHz && *MHz != 0);\r
-#endif\r
-}\r
-\r
 bool COSOperator::getSystemMemory(u32* Total, u32* Avail) const\r
 {\r
-#if defined(_IRR_WINDOWS_API_) && !defined (_IRR_XBOX_PLATFORM_)\r
+#if defined(_IRR_WINDOWS_API_)\r
 \r
-    #if (_WIN32_WINNT >= 0x0500)\r
        MEMORYSTATUSEX MemoryStatusEx;\r
        MemoryStatusEx.dwLength = sizeof(MEMORYSTATUSEX);\r
 \r
@@ -222,19 +162,6 @@ bool COSOperator::getSystemMemory(u32* Total, u32* Avail) const
        if (Avail)\r
                *Avail = (u32)(MemoryStatusEx.ullAvailPhys>>10);\r
        return true;\r
-       #else\r
-       MEMORYSTATUS MemoryStatus;\r
-       MemoryStatus.dwLength = sizeof(MEMORYSTATUS);\r
-\r
-       // cannot fail\r
-       GlobalMemoryStatus(&MemoryStatus);\r
-\r
-       if (Total)\r
-               *Total = (u32)(MemoryStatus.dwTotalPhys>>10);\r
-       if (Avail)\r
-               *Avail = (u32)(MemoryStatus.dwAvailPhys>>10);\r
-    return true;\r
-       #endif\r
 \r
 #elif defined(_IRR_POSIX_API_) && !defined(__FreeBSD__)\r
 #if defined(_SC_PHYS_PAGES) && defined(_SC_AVPHYS_PAGES)\r