]> granicus.if.org Git - imagemagick/commitdiff
(no commit message)
authorcristy <urban-warrior@git.imagemagick.org>
Fri, 5 Aug 2011 13:25:47 +0000 (13:25 +0000)
committercristy <urban-warrior@git.imagemagick.org>
Fri, 5 Aug 2011 13:25:47 +0000 (13:25 +0000)
MagickCore/utility.c
coders/emf.c

index b369536e204b26f2486fadbf6437a8169f867eee..1d5f45ea2ec77a4ab0ad25cf4507b6242d8fc32c 100644 (file)
@@ -1235,10 +1235,14 @@ MagickExport MagickBooleanType GetPathAttributes(const char *path,
   status=stat(path,(struct stat *) attributes) == 0 ? MagickTrue : MagickFalse;
 #else
   {
+    int
+      count;
+
     wchar_t
       *unicode_path;
 
-    unicode_path=ConvertUTF8ToUTF16((const unsigned char *) path);
+    count=MultiByteToWideChar(CP_ACP,0,path,-1,NULL,0);
+    unicode_path=(wchar_t *) AcquireQuantumMemory(count,sizeof(*unicode_path));
     if (unicode_path == (wchar_t *) NULL)
       return(MagickFalse);
     status=wstat(unicode_path,(struct stat *) attributes) == 0 ? MagickTrue :
@@ -1924,14 +1928,19 @@ MagickExport FILE *OpenMagickStream(const char *path,const char *mode)
   file=(FILE *) NULL;
 #if defined(MAGICKCORE_HAVE__WFOPEN)
   {
+    int
+      count;
+
     wchar_t
       *unicode_mode,
       *unicode_path;
 
-    unicode_path=ConvertUTF8ToUTF16((const unsigned char *) path);
+    count=MultiByteToWideChar(CP_ACP,0,path,-1,NULL,0);
+    unicode_path=(wchar_t *) AcquireQuantumMemory(count,sizeof(*unicode_path));
     if (unicode_path == (wchar_t *) NULL)
       return((FILE *) NULL);
-    unicode_mode=ConvertUTF8ToUTF16((const unsigned char *) mode);
+    count=MultiByteToWideChar(CP_ACP,0,mode,-1,NULL,0);
+    unicode_mode=(wchar_t *) AcquireQuantumMemory(count,sizeof(*unicode_mode));
     if (unicode_mode == (wchar_t *) NULL)
       {
         unicode_path=(wchar_t *) RelinquishMagickMemory(unicode_path);
index 7df34b61eca4f2e0688c807a72ee8b40bd500794..393e1c2f1ef5d80af61632cd5451da442b47ac24 100644 (file)
@@ -162,123 +162,6 @@ static MagickBooleanType IsWMF(const unsigned char *magick,const size_t length)
 %
 */
 
-#if defined(MAGICKCORE_HAVE__WFOPEN)
-static size_t UTF8ToUTF16(const unsigned char *utf8,wchar_t *utf16)
-{
-  register const unsigned char
-    *p;
-
-  if (utf16 != (wchar_t *) NULL)
-    {
-      register wchar_t
-        *q;
-
-      wchar_t
-        c;
-
-      /*
-        Convert UTF-8 to UTF-16.
-      */
-      q=utf16;
-      for (p=utf8; *p != '\0'; p++)
-      {
-        if ((*p & 0x80) == 0)
-          *q=(*p);
-        else
-          if ((*p & 0xE0) == 0xC0)
-            {
-              c=(*p);
-              *q=(c & 0x1F) << 6;
-              p++;
-              if ((*p & 0xC0) != 0x80)
-                return(0);
-              *q|=(*p & 0x3F);
-            }
-          else
-            if ((*p & 0xF0) == 0xE0)
-              {
-                c=(*p);
-                *q=c << 12;
-                p++;
-                if ((*p & 0xC0) != 0x80)
-                  return(0);
-                c=(*p);
-                *q|=(c & 0x3F) << 6;
-                p++;
-                if ((*p & 0xC0) != 0x80)
-                  return(0);
-                *q|=(*p & 0x3F);
-              }
-            else
-              return(0);
-        q++;
-      }
-      *q++='\0';
-      return(q-utf16);
-    }
-  /*
-    Compute UTF-16 string length.
-  */
-  for (p=utf8; *p != '\0'; p++)
-  {
-    if ((*p & 0x80) == 0)
-      ;
-    else
-      if ((*p & 0xE0) == 0xC0)
-        {
-          p++;
-          if ((*p & 0xC0) != 0x80)
-            return(0);
-        }
-      else
-        if ((*p & 0xF0) == 0xE0)
-          {
-            p++;
-            if ((*p & 0xC0) != 0x80)
-              return(0);
-            p++;
-            if ((*p & 0xC0) != 0x80)
-              return(0);
-         }
-       else
-         return(0);
-  }
-  return(p-utf8);
-}
-
-static wchar_t *ConvertUTF8ToUTF16(const unsigned char *source)
-{
-  size_t
-    length;
-
-  wchar_t
-    *utf16;
-
-  length=UTF8ToUTF16(source,(wchar_t *) NULL);
-  if (length == 0)
-    {
-      register ssize_t
-        i;
-
-      /*
-        Not UTF-8, just copy.
-      */
-      length=strlen((char *) source);
-      utf16=(wchar_t *) AcquireQuantumMemory(length+1,sizeof(*utf16));
-      if (utf16 == (wchar_t *) NULL)
-        return((wchar_t *) NULL);
-      for (i=0; i <= (ssize_t) length; i++)
-        utf16[i]=source[i];
-      return(utf16);
-    }
-  utf16=(wchar_t *) AcquireQuantumMemory(length+1,sizeof(*utf16));
-  if (utf16 == (wchar_t *) NULL)
-    return((wchar_t *) NULL);
-  length=UTF8ToUTF16(source,utf16);
-  return(utf16);
-}
-#endif
-
 /*
   This method reads either an enhanced metafile, a regular 16bit Windows
   metafile, or an Aldus Placeable metafile and converts it into an enhanced
@@ -330,10 +213,15 @@ static HENHMETAFILE ReadEnhMetaFile(const char *path,ssize_t *width,
 #if defined(MAGICKCORE_HAVE__WFOPEN)
   if (hTemp == (HENHMETAFILE) NULL)
     {
+      int
+        count;
+
       wchar_t
         *unicode_path;
 
-      unicode_path=ConvertUTF8ToUTF16((const unsigned char *) path);
+      count=MultiByteToWideChar(CP_ACP,0,path,-1,NULL,0);
+      unicode_path=(wchar_t *) AcquireQuantumMemory(count,
+        sizeof(*unicode_path));
       if (unicode_path != (wchar_t *) NULL)
         {
           hTemp=GetEnhMetaFileW(unicode_path);