ImageMagicObject - non-ASCII characters

Post any defects you find in the released or beta versions of the ImageMagick software here. Include the ImageMagick version, OS, and any command-line required to reproduce the problem. Got a patch for a bug? Post it here.
roed

ImageMagicObject - non-ASCII characters

Postby roed » 2009-02-18T13:39:02-07:00

Hello everyone.

Here is my patch of OLE Automation wrapper of ImageMagick (ATL7 version).

ImageMagickObject is a fine simple wrapper but I cannot open any graphics file whitch name contains any non-ASCII character such as zażółć_gęślą_jaźń.jpg.
Additionaly I cannot render any text with non-ASCII (polish) characters.

The solution seems simple: instead of converting parameter strings from UTF-16 (all OLE Automation strings) to ANSI use UTF-16 to UTF-8 conversion. It seems that ImageMagic uses UTF-8 encoded strings internally.

Additionaly I decided to remove all ATL3 string conversion macros (USING_CONVERSION macro etc.) to new ATL7 class/macros.
I also removed usage of STL library (string class) and use CStringA and CStringW classes instead.
Additionaly code cleanup was performed - many unused macros,variables and funcions were removed.

I'm using VC++ 2005 and VC++ 2008.
Previous versions may not work.

Command line tools such ach convert.exe (Windows version) still have problems with non-ASII characters.

Because I cannot attach file to message here it is:

Code: Select all

Index: ImageMagickObject.cpp
===================================================================
--- ImageMagickObject.cpp   (revision 14073)
+++ ImageMagickObject.cpp   (working copy)
@@ -117,7 +117,7 @@
 // MagickImage
 [
   coclass,
-  threading("both"),
+  threading(both),
   support_error_info("IMagickImage"),
   vi_progid("ImageMagickObject.MagickImage"),
   progid("ImageMagickObject.MagickImage.1"),
@@ -144,6 +144,9 @@
       "MagickImage constructor");
     m_bOnStartPageCalled = FALSE;
   }

+private:

   HRESULT TestHarness(SAFEARRAY **pArrayVar, VARIANT *pVar);
   HRESULT Compare(SAFEARRAY **pArrayVar, VARIANT *pVar);
   HRESULT Composite(SAFEARRAY **pArrayVar, VARIANT *pVar);
@@ -158,23 +161,26 @@
   HRESULT Perform(MagickLib::MagickBooleanType (*func)(MagickLib::ImageInfo *image_info,
   const int argc,char **argv,char **text,MagickLib::ExceptionInfo *exception),
     SAFEARRAY **pArrayVar,VARIANT *pVar2,MagickLib::ExceptionInfo *exception);
+   
 private:
+
   char **m_argv;
-  char **m_argv_t;
   int m_argc;
   int m_argvIndex;
-public:

+
   HRESULT AllocateArgs(int iArgs);
   HRESULT ReAllocateArgs(int iArgs);
   void DeleteArgs(void);
   char **GetArgv(void);
-  char **GetArgvT(void);
   int GetArgc(void);
   void EmptyArgs(void);
-  //HRESULT AddArgs(VARIANTARG *arg);
-  HRESULT AddArgs(BSTR arg);
-  HRESULT AddArgs(LPTSTR arg);
 
+  HRESULT AddArgs(LPCWSTR);
+  HRESULT AddArgs(LPCSTR);

+ private:
+
   static void warninghandler(const MagickLib::ExceptionType warning,const char *message,
     const char *qualifier);
 
@@ -184,7 +190,9 @@
   static void fatalerrorhandler(const MagickLib::ExceptionType error,const char *message,
     const char *qualifier);
 
-  void CheckAndReportError(MagickImageError &error, HRESULT &hr, const char *program);
+  static void CheckAndReportError(MagickImageError &error, HRESULT &hr, const char *program);

+  public:
 
   DECLARE_PROTECT_FINAL_CONSTRUCT()
   HRESULT FinalConstruct()
@@ -233,7 +241,7 @@
   CComPtr<IObjectContext> m_spObjectContext;
 };
 
-static char *translate_exception(DWORD code)
+static const char *translate_exception(DWORD code)
 {
   switch (code)
   {
@@ -286,21 +294,6 @@
   }
 }
 
-static LPTSTR StrChr(LPTSTR lpsz, TCHAR ch)
-{
-  LPTSTR p = NULL;
-  while (*lpsz)
-  {
-    if (*lpsz == ch)
-    {
-      p = lpsz;
-      break;
-    }
-    lpsz = CharNext(lpsz);
-  }
-  return p;
-}
-
 const char *objName = "ImageMagickObject";
 
 #define ThrowPerformException(exception,code,reason,description) \
@@ -347,8 +340,6 @@
 
 STDMETHODIMP MagickImage::get_Item(VARIANT varIndex, VARIANT *pVal)
 {
-  USES_CONVERSION;
-
   HRESULT hr = E_INVALIDARG;
   VARIANTARG *pvarIndex = &varIndex;
   VARTYPE vt = V_VT(pvarIndex);
@@ -364,10 +355,9 @@
     return hr;
   if ((vt & ~VT_BYREF) == VT_BSTR)
     {
-      LPTSTR lpszNext;
-      LPTSTR lpszVal = W2T(V_BSTR(pvarIndex));
+      CW2A szVal( V_BSTR(pvarIndex) );
       var = _T("");
-      if (lpszVal)
+      if (szVal)
         {
           MagickLib::Image
             *image;
@@ -380,15 +370,17 @@
 
           long
             id;
+           
+           LPSTR lpszNext;
 
-              lpszNext = StrChr(lpszVal, _T('.'));
-              if (lpszNext == NULL)
-            lpszNext = _T("%w,%h,%m");
+          lpszNext = StrChr(szVal, '.');
+        if (lpszNext == NULL)
+            lpszNext = "%w,%h,%m";
           else
-            *lpszNext++ = _T('\0');
+            *lpszNext++ = '\0';
           // lookup the registry id using token and pass the image in
           MagickLib::GetExceptionInfo(&exception);
-          image=MagickLib::GetImageFromMagickRegistry(lpszVal, &id, &exception);
+          image=MagickLib::GetImageFromMagickRegistry(szVal, &id, &exception);
           if (image != (MagickLib::Image *) NULL)
             {
               TCHAR *text;
@@ -506,8 +498,6 @@
 
 STDMETHODIMP MagickImage::Remove(VARIANT varIndex)
 {
-  USES_CONVERSION;
-
   HRESULT hr = E_INVALIDARG;
   VARIANTARG *pvarIndex = &varIndex;
   VARTYPE vt = V_VT(pvarIndex);
@@ -526,10 +516,9 @@
       if (!V_ISBYREF(pvarIndex))
       {
         CComVariant var;
-        LPTSTR lpszNext;
-        LPTSTR lpszVal = W2T(V_BSTR(pvarIndex));
         var = _T("");
-        if (lpszVal)
+        CW2A szVal( V_BSTR(pvarIndex) );
+        if (szVal)
           {
             MagickLib::Image
               *image;
@@ -539,15 +528,18 @@
 
             long
               id;
+             
+             LPTSTR
+               lpszNext;
 
-                lpszNext = StrChr(lpszVal, _T('.'));
+                lpszNext = StrChr(szVal, '.');
                 if (lpszNext == NULL)
-              lpszNext = _T("%w,%h,%m");
+              lpszNext = "%w,%h,%m";
             else
-              *lpszNext++ = _T('\0');
+              *lpszNext++ = '\0';
             // lookup the registry id using token and pass the image in
             MagickLib::GetExceptionInfo(&exception);
-            image=MagickLib::GetImageFromMagickRegistry(lpszVal, &id, &exception);
+            image=MagickLib::GetImageFromMagickRegistry(szVal, &id, &exception);
             if (image != (MagickLib::Image *) NULL)
               {
                 MagickLib::DestroyImageList(image);
@@ -765,28 +757,17 @@
                       // is the way that VB does it.
                       LPCWSTR pReturnBuffer = NULL;
                       long size = SafeArraySize(psa);
-                      long sizeneeded;
-                      char *ptrANSI;
                       hr = SafeArrayAccessData(psa, (void**)&pReturnBuffer);
                        if(SUCCEEDED(hr))
                         {
-                          sizeneeded = WideCharToMultiByte(
-                            CP_ACP, 0, pReturnBuffer, size/2, (LPSTR)NULL, 0, NULL, NULL);
-                          if (sizeneeded)
-                            {
-                              ptrANSI = new char [sizeneeded + 1];
-                              WideCharToMultiByte(
-                                CP_ACP, 0, pReturnBuffer, size, (LPSTR)ptrANSI, sizeneeded, NULL, NULL);
-                              ptrANSI[sizeneeded]='\0';
-                              hr = SafeArrayUnaccessData(psa);
-                              SafeArrayDestroy(psa);
-
-                              SAFEARRAY* pSafeArray = SafeArrayCreateVector(VT_UI1,0,0);
-                              wsprintf(sz, _T("xtrnarray:0x%lx,%s"),
-                                (unsigned long)(pSafeArray),ptrANSI);
-                              hr = AddArgs(sz);
-                              if (ptrANSI)
-                                delete ptrANSI;
+                     CStringW ws( pReturnBuffer, size );
+                            hr = SafeArrayUnaccessData(psa);
+                            SafeArrayDestroy(psa);
+                     
+                            SAFEARRAY* pSafeArray = SafeArrayCreateVector(VT_UI1,0,0);
+                            wsprintf(sz, _T("xtrnarray:0x%lx,%ws"),
+                                (unsigned long)(pSafeArray),(LPCWSTR)ws);
+                            hr = AddArgs( sz );
                               if (V_ISBYREF(pvarIndex))
                                 {
                                   V_VT(pvarIndex) = VT_ARRAY | VT_UI1 | VT_BYREF;      
@@ -797,12 +778,7 @@
                                   V_VT(pvarIndex) = VT_ARRAY | VT_UI1;      
                                   V_ARRAY(pvarIndex) = pSafeArray;
                                 }
-                            }
-                          else
-                            {
-                              ThrowPerformException(exception,MagickLib::ErrorException,
-                                "Perform","Output array for blob did not specify image format");
-                            }
+                           
                         }
                       else
                       {
@@ -1022,7 +998,6 @@
 
 void MagickImage::CheckAndReportError(MagickImageError &error, HRESULT &hr, const char *program)
 {
-  USES_CONVERSION;
   char message_text[MaxTextExtent];
 
   if (FAILED(hr))
@@ -1062,7 +1037,8 @@
 #ifdef _DEBUG
     //DebugBreak();
 #endif
-    Error(A2W(message_text), __uuidof(IMagickImage), hr);
+   CA2WEX<MaxTextExtent> wsMessageText( message_text);
+    Error( wsMessageText, __uuidof(IMagickImage), hr);
   }
   MagickLib::DestroyExceptionInfo(&error.exception);
 }
@@ -1355,7 +1331,7 @@
   return hr;
 }
 
-HRESULT MagickImage::AddArgs(BSTR widestr)
+HRESULT MagickImage::AddArgs(LPCWSTR widestr)
 {
   HRESULT hr = E_OUTOFMEMORY;
 
@@ -1364,11 +1340,12 @@
 
   hr = S_OK;
 
-  MAKE_ANSIPTR_FROMWIDE(ptrANSI, widestr);
-  m_argv[m_argvIndex++] = ptrANSI;
+  CW2A sArgUTF8( widestr, CP_UTF8 );
+  m_argv[m_argvIndex++] = strdup( sArgUTF8 );
 
+  CW2A sArgANSI( widestr );
   (void) MagickLib::LogMagickEvent(MagickLib::ResourceEvent,GetMagickModule(),
-    "arg: %s",ptrANSI);
+    "arg: %s", (LPSTR)sArgANSI );
 
   if (m_argvIndex >= m_argc)
     hr = ReAllocateArgs( nDefaultArgumentSize );
@@ -1376,7 +1353,7 @@
   return hr;
 }
 
-HRESULT MagickImage::AddArgs(LPTSTR lpstr)
+HRESULT MagickImage::AddArgs(LPCSTR lpstr)
 {
   HRESULT hr = E_OUTOFMEMORY;
 
@@ -1384,15 +1361,15 @@
     return hr;
 
   hr = S_OK;
-#ifdef _UNICODE
-  MAKE_ANSIPTR_FROMWIDE(ptrANSI, lpstr);
-#else
-  MAKE_COPY_OF_ANSI(ptrANSI, lpstr);
-#endif
-  m_argv[m_argvIndex++] = ptrANSI;

+  CA2W wsArg( lpstr );
+  CW2A sArgUTF8( wsArg, CP_UTF8 );
+  CW2A sArgANSI( wsArg );

+  m_argv[m_argvIndex++] = strdup( sArgUTF8 );
 
   (void) MagickLib::LogMagickEvent(MagickLib::ResourceEvent,GetMagickModule(),
-    "arg: %s",ptrANSI);
+    "arg: %s", (LPSTR)sArgANSI );
 
   if (m_argvIndex >= m_argc)
     hr = ReAllocateArgs( nDefaultArgumentSize );
@@ -1403,17 +1380,15 @@
 HRESULT MagickImage::AllocateArgs(int cArgc)
 {
   m_argv = new LPTSTR [cArgc];
-  m_argv_t = new LPTSTR [cArgc];
 
-  if ((m_argv == NULL) || (m_argv_t == NULL))
+  if (m_argv == NULL)
     return E_OUTOFMEMORY;
+   
   m_argc = cArgc;
-
   m_argvIndex = 0;
   for (int i=0; i<m_argc; i++)
   {
     m_argv[i] = NULL;
-    m_argv_t[i] = NULL;
   }
   return S_OK;
 }
@@ -1421,13 +1396,11 @@
 HRESULT MagickImage::ReAllocateArgs(int cArgc)
 {
   LPTSTR *argv = m_argv;
-  LPTSTR *argv_t = m_argv_t;
   int argc = m_argc + cArgc;
 
   argv = new LPTSTR [argc];
-  argv_t = new LPTSTR [argc];
 
-  if ((argv == NULL) || (argv_t == NULL))
+  if (argv == NULL)
     return E_OUTOFMEMORY;
 
   for (int i=0; i<argc; i++)
@@ -1435,12 +1408,10 @@
     if (i < m_argc)
     {
       argv[i] = m_argv[i];
-      argv_t[i] = m_argv_t[i];
     }
     else
     {
       argv[i] = NULL;
-      argv_t[i] = NULL;
     }
   }
   if (m_argv)
@@ -1448,11 +1419,6 @@
     delete m_argv;
     m_argv = argv;
   }
-  if (m_argv_t)
-  {
-    delete m_argv_t;
-    m_argv_t = argv_t;
-  }
   m_argc = argc;
   return S_OK;
 }
@@ -1462,8 +1428,6 @@
   EmptyArgs();
   if (m_argv)
     delete m_argv;
-  if (m_argv_t)
-    delete m_argv_t;
 }
 
 char **MagickImage::GetArgv()
@@ -1471,11 +1435,6 @@
   return m_argv;
 }
 
-char **MagickImage::GetArgvT()
-{
-  return m_argv_t;
-}
-
 int MagickImage::GetArgc()
 {
   return m_argvIndex;
@@ -1485,12 +1444,8 @@
 {
   for (int i=0; i<m_argc; i++)
   {
-    if (m_argv[i] != NULL)
-      delete (void *) (m_argv[i]);
+    free( (void *) (m_argv[i]) );
     m_argv[i] = NULL;
-    if (m_argv_t[i] != NULL)
-      delete (void *) (m_argv_t[i]);
-    m_argv_t[i] = NULL;
   }
   m_argvIndex = 0;
 }
@@ -1652,86 +1607,28 @@
   m_spObjectContext.Release();
 }
 
-int LocalGetFieldCount( string &s, const TCHAR* psz )
-{
-  int len = _tcslen( psz );
-  int pos = 0;
-  int iCount = 1;
+typedef CAtlArray<CStringA> CStringArray;
 
-  while( (pos = s.find(psz, pos)) >= 0 )
-  {
-    pos += len;
-    iCount++;
-  }
-  return iCount;
-};
-
-int LocalGetFieldCount( string &s, const TCHAR& ch )
+static void LocalTokenize( const CString& s, LPCSTR sz, CStringArray& asToken )
 {
-  int pos = 0;
-  int iCount = 1;
+   int nPos = 0;
+   CStringA sToken;
+   
+   asToken.RemoveAll();
+   sToken = s.Tokenize( sz, nPos );
+   while( !sToken.IsEmpty() )
+   {
+      asToken.Add( sToken );
+   }
+   
+   if ( asToken.GetCount() == 0 )
+   {
+      asToken.Add( s );
+   }
+}
 
-  while( (pos = s.find(ch, pos)) >= 0 )
-  {
-    pos++;
-    iCount++;
-  }
-  return iCount;
-};
-
-string LocalGetField( string &s, const TCHAR* delim, int fieldnum )
-{
-  int lenDelim = _tcslen( delim );
-  int pos = 0, term = 0;
-  int retlen = 0, retpos = 0;
-
-  while( fieldnum-- >= 0 )
-  {
-    term = s.find(delim, pos);
-    if( term >= 0 )
-    {
-      retpos = pos;
-      retlen = term - pos;
-      pos = term + lenDelim;
-    }
-    else
-    {
-      retpos = pos;
-      retlen = s.length() - pos;
-      break;
-    }
-  }
-  return s.substr(retpos, retlen);
-};
-
-string LocalGetField( string &s, const TCHAR& ch, int fieldnum )
-{
-  int pos = 0, term = 0;
-  int retlen = 0, retpos = 0;
-
-  while( fieldnum-- >= 0 )
-  {
-    term = s.find(ch, pos);
-    if( term >= 0 )
-    {
-      retpos = pos;
-      retlen = term - pos;
-      pos = term + 1;
-    }
-    else
-    {
-      retpos = pos;
-      retlen = s.length() - pos;
-      break;
-    }
-  }
-  return s.substr(retpos, retlen);
-};
-
 HRESULT MagickImage::Construct(IDispatch * pCtorObj)
 {
-  USES_CONVERSION;
-
   (void) MagickLib::LogMagickEvent(MagickLib::ResourceEvent,GetMagickModule(),
     "Construct");
   CComPtr<IObjectConstructString> spObjectConstructString;
@@ -1742,34 +1639,46 @@
     hr = spObjectConstructString->get_ConstructString(&bstrConstruct);
     if (SUCCEEDED(hr))
     {
-      string options;
-      MAKE_ANSIPTR_FROMWIDE(ptrANSI, bstrConstruct);
+      CStringA sOptions( bstrConstruct );
+      int nPos = 0;
+      CStringA sToken;
+      CStringArray asToken;
+     
       (void) MagickLib::LogMagickEvent(MagickLib::ResourceEvent,GetMagickModule(),
-        "Construct data: %s",ptrANSI);
-      options = W2CA(bstrConstruct);
-      int nOptions = LocalGetFieldCount(options,_T(','));
-      for (int nOptionIndex = 0; nOptionIndex < nOptions; nOptionIndex++)
+        "Construct data: %s", (LPCSTR)sOptions );
+       
+      sToken = sOptions.Tokenize( ".", nPos );
+      while( !sToken.IsEmpty() )
       {
-        string param = LocalGetField( options, _T(','), nOptionIndex );
-        int nParams = LocalGetFieldCount(param,_T('='));
-        if (nParams == 2)
-        {
-          string name = LocalGetField( param, _T('='), 0 );
-          string value = LocalGetField( param, _T('='), 1 );
+      LocalTokenize( sToken, "=", asToken );
+      if ( asToken.GetCount() == 2 )
+      {
+         const CStringA& sName = asToken[0];
+         const CStringA& sValue = asToken[1];
+         
           (void) MagickLib::LogMagickEvent(MagickLib::ResourceEvent,GetMagickModule(),
             "Construct name: %s value: %s",
-              name.c_str(),value.c_str());
+              (LPCSTR)sName,(LPCSTR)sValue);
+             
 #if defined(_ENABLE_OLD_LOGGING_SUPPORT_)
-          if (name.compare(_T("MAGICK_DEBUG_LEVEL")) == 0)
-            MagickLib::DebugLevel(atoi(value.c_str()));
-          if (name.compare(_T("MAGICK_DEBUG_PATH")) == 0)
-            MagickLib::DebugFilePath(value.c_str());           
-          if (name.compare(_T("MAGICK_LOG_EVENTMASK")) == 0)
-            MagickLib::SetLogEventMask(value.c_str());
+          if (sName.Compare("MAGICK_DEBUG_LEVEL") == 0)
+          {
+            MagickLib::DebugLevel( atoi(sValue) );
+          }
+         
+          if (sName.Compare("MAGICK_DEBUG_PATH") == 0)
+          {
+            MagickLib::DebugFilePath(sValue);           
+          }
+         
+          if (sName.Compare("MAGICK_LOG_EVENTMASK") == 0)
+          {
+            MagickLib::SetLogEventMask(sValue);
+          }
 #endif
-        }
-     }
-    }
-  }
+      } // if
+      } // while
+    } // if
+   }
   return hr;
 }
Index: ImageMagickObject_.h
===================================================================
--- ImageMagickObject_.h   (revision 14073)
+++ ImageMagickObject_.h   (working copy)
@@ -1,98 +1,60 @@
-#pragma once
-#ifndef STRICT
-#define STRICT
-#endif
-#ifndef WINVER
-#define WINVER 0x0400
-#endif
-#ifndef _WIN32_WINNT
-#define _WIN32_WINNT 0x0400
-#endif                  
-#ifndef _WIN32_WINDOWS
-#define _WIN32_WINDOWS 0x0410
-#endif
-#ifndef _WIN32_IE
-#define _WIN32_IE 0x0400
-#endif
-#define _ATL_ATTRIBUTES
-#define _ATL_APARTMENT_THREADED
-#define _ATL_NO_AUTOMATIC_NAMESPACE
-#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS
-#define _ATL_ALL_WARNINGS
-#pragma warning(disable: 4103) // pragma pack
-#define _WINSOCKAPI_
-#include <atlbase.h>
-#include <atlcom.h>
-#include <atlwin.h>
-#include <atltypes.h>
-#include <atlctl.h>
-#include <atlhost.h>
-#include <atlsafe.h>
-using namespace ATL;
-
-#include <asptlb.h>         // Active Server Pages Definitions
-#include <comsvcs.h>
-
-#include <iostream>
-using namespace std;
-
-
-namespace MagickLib
-{
-#define _VISUALC_
-//#define _MAGICKDLL_
-//#define _MAGICKLIB_
-#include <wand/MagickWand.h>
-#include <magick/semaphore.h>
-#include <magick/nt-base.h>
-#include <magick/log.h>
-#include <magick/hashmap.h>
-//#undef _MAGICKDLL_
-//#undef _MAGICKLIB_
-#undef inline
-#undef class
-}
-
-
-const DWORD dwErrorBase = 5000;
-const int nDefaultArgumentSize = 128;
-const LCID lcidDefault = 0;
-
-//
-// This routine converts a wide character string to ANSI and stores the new
-// string in a buffer allocated by the new operator
-//
-#define MAKE_WIDEPTR_FROMANSI(ptrname, ansistr) \
-    long __l##ptrname = (lstrlen(ansistr) + 1) * sizeof(WCHAR); \
-    void * __TempBuffer##ptrname = (void *) new char [ __l##ptrname ]; \
-    MultiByteToWideChar(CP_ACP, 0, ansistr, -1, (LPWSTR)__TempBuffer##ptrname.GetBuffer(), __l##ptrname); \
-    LPWSTR ptrname = (LPWSTR)__TempBuffer##ptrname
-
-//
-// This routine converts an ANSI string to a wide character string in a new
-// buffer area allocated using the new operator
-// We allocate lstrlenW(widestr) * 2 because its possible for a UNICODE char
-// to map to 2 ansi characters this is a quick guarantee that enough space
-// will be allocated.
-//
-#define MAKE_ANSIPTR_FROMWIDE(ptrname, widestr) \
-    long __l##ptrname = (lstrlenW(widestr) + 1) * 2 * sizeof(char); \
-    void * __TempBuffer##ptrname = (void *) new char [ __l##ptrname]; \
-    WideCharToMultiByte(CP_ACP, 0, widestr, -1, (LPSTR)__TempBuffer##ptrname, __l##ptrname, NULL, NULL); \
-    LPSTR ptrname = (LPSTR)__TempBuffer##ptrname
-
-#define MAKE_ANSIPTR_FROMWIDE_2(ptrname, widestr, wlen) \
-    long __l##ptrname = (wlen + 1) * 2 * sizeof(char); \
-    void * __TempBuffer##ptrname = (void *) new char [ __l##ptrname]; \
-    WideCharToMultiByte(CP_ACP, 0, widestr, -1, (LPSTR)__TempBuffer##ptrname, __l##ptrname, NULL, NULL); \
-    LPSTR ptrname = (LPSTR)__TempBuffer##ptrname
-//
-// This routine is used to make a copy of an existing ANSI string
-//
-#define MAKE_COPY_OF_ANSI(ptrname, ansistr) \
-    long __l##ptrname = (lstrlen(ansistr) + 1); \
-    void * __TempBuffer##ptrname = (void *) new char [ __l##ptrname ]; \
-    lstrcpyn((LPSTR)__TempBuffer##ptrname, (LPCSTR)ansistr, __l##ptrname); \
-    LPSTR ptrname = (LPSTR)__TempBuffer##ptrname
-
-#define _DbgBreak() __asm { int 3 }
+#pragma once
+#ifndef STRICT
+#define STRICT
+#endif
+#ifndef WINVER
+#define WINVER 0x0400
+#endif
+#ifndef _WIN32_WINNT
+#define _WIN32_WINNT 0x0400
+#endif                  
+#ifndef _WIN32_WINDOWS
+#define _WIN32_WINDOWS 0x0410
+#endif
+#ifndef _WIN32_IE
+#define _WIN32_IE 0x0400
+#endif
+#define _ATL_ATTRIBUTES
+#define _ATL_APARTMENT_THREADED
+#define _ATL_NO_AUTOMATIC_NAMESPACE
+#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS
+#define _ATL_ALL_WARNINGS
+#pragma warning(disable: 4103) // pragma pack
+#define _WINSOCKAPI_
+#include <atlbase.h>
+#include <atlcom.h>
+#include <atlwin.h>
+#include <atltypes.h>
+#include <atlctl.h>
+#include <atlhost.h>
+#include <atlsafe.h>
+#include <atlconv.h>
+#include <atlstr.h>
+#include <atlcoll.h>
+using namespace ATL;
+
+#include <asptlb.h>         // Active Server Pages Definitions
+#include <comsvcs.h>
+
+namespace MagickLib
+{
+#define _VISUALC_
+//#define _MAGICKDLL_
+//#define _MAGICKLIB_
+#include <wand/MagickWand.h>
+#include <magick/semaphore.h>
+#include <magick/nt-base.h>
+#include <magick/log.h>
+#include <magick/hashmap.h>
+//#undef _MAGICKDLL_
+//#undef _MAGICKLIB_
+#undef inline
+#undef class
+}
+
+
+const DWORD dwErrorBase = 5000;
+const int nDefaultArgumentSize = 128;
+const LCID lcidDefault = 0;
+
+#define _DbgBreak() __asm { int 3 }
Last edited by roed on 2009-02-18T14:00:07-07:00, edited 1 time in total.

User avatar
magick
Site Admin
Posts: 9745
Joined: 2003-05-31T11:32:55-07:00
Contact:

Re: ImageMagicObject - non-ASCII characters

Postby magick » 2009-02-18T13:49:30-07:00

Thanks for the patch. We will get it into the Subversion trunk by sometime tomorrow.

roed

Re: ImageMagicObject - non-ASCII characters

Postby roed » 2009-02-20T08:04:29-07:00


User avatar
magick
Site Admin
Posts: 9745
Joined: 2003-05-31T11:32:55-07:00
Contact:

Re: ImageMagicObject - non-ASCII characters

Postby magick » 2009-02-20T08:47:45-07:00

We will get your patch into the Subversion trunk and test it over the next few days. As always, thanks for the improvements to ImageMagickObject. The ImageMagick developers have a limited knowledge of Windows and depend on users like yourselves for these sorts of improvements.

roed

Re: ImageMagicObject - non-ASCII characters

Postby roed » 2009-02-21T01:04:55-07:00

There are problems with ArrayTest.vbs sample.
The output file bill_meets_gorilla_screen_iptc.jpg is empty.
For now I don't understand why this file isn't created properly. Something goes wrong in APP1 writer or maybe before.
As I understand code there's nothing wrong when saving blob data to VB arrays.
I am still working on this problem but this requires knowledge of ImageMagick library internals so it may take some time.

Please change definition of DEF_DEBUG_MODE at the beginning of ImageMagickObject.cpp to

Code: Select all

static const int DEF_DEBUG_MODE = _CRTDBG_MODE_DEBUG;

for better debugging (no message box).
In the Convert (in the same file) method you may also remove:

Code: Select all

ATLASSERT( FALSE )

macro.

User avatar
magick
Site Admin
Posts: 9745
Joined: 2003-05-31T11:32:55-07:00
Contact:

Re: ImageMagicObject - non-ASCII characters

Postby magick » 2009-02-21T06:17:12-07:00

Ok, patch applied. Thanks.

roed

Re: ImageMagicObject - non-ASCII characters

Postby roed » 2009-02-23T13:31:15-07:00

ArrayTest.vbs doesn't generate bill_meets_gorilla_screen_iptc.jpg even using orginal ImageMagickObject.dll (ImageMagick-6.4.9-Q16) file. So this is not a bug generated by my modifications. Additionally two empty (probably temporary) magick-* are created.

For now new patch:
  • New VC++ 2005 (and 2008 aftter importing) projects and solution for ImageMagicObject and MagickCMD.
  • Removing obsolete files: ImageMagickObject.def and ImageMagickObject.dsp.
  • ImageMagickObject.cpp - now Unicode configuration compiles without problems.
  • MagickCMD.cpp: Using TCHAR-related macros and functions. Errors are displayed to stderr instead of stdout. Removing line using namespace std; - standard C++ library is not used.

Please try new VC++ solution ImageMagickObject.sln and report me about any problems you find.
Binaries are generated in bin subdirectory.

Code: Select all

Index: ImageMagickObject.cpp
===================================================================
--- ImageMagickObject.cpp   (revision 7)
+++ ImageMagickObject.cpp   (working copy)
@@ -8,7 +8,6 @@
 static const int nDefaultArgumentSize = 128;
 static const LCID lcidDefault = 0;
 
-//static const int DEF_DEBUG_MODE = _CRTDBG_MODE_WNDW;
 static const int DEF_DEBUG_MODE = _CRTDBG_MODE_DEBUG;
 
 // for logging
@@ -33,9 +32,7 @@
          LPVOID lpReserved
       )
       {
-#ifdef _DEBUG
          //ATLASSERT( FALSE );
-#endif
          if( dwReason == DLL_PROCESS_ATTACH )
          {
             MagickLib::ExceptionInfo
@@ -73,15 +70,16 @@
             /* Next we use a back door to init the path to US so that the logging
                system can find its configuration file log.gk and load it
              */
-            (void)MagickLib::SetClientPath( m_szAppPath );
+             CT2AEX<MAX_PATH> app_path( m_szAppPath );
+            (void)MagickLib::SetClientPath( app_path );
 
             //(void) MagickLib::SetLogEventMask("All");
             (void)MagickLib::LogMagickEvent( MagickLib::ResourceEvent, GetMagickModule(),
-               "DLL Attach -  path: %s", m_szAppPath );
+               "DLL Attach -  path: %s", app_path );
 
             // MagickLib::InitializeTracingCriticalSection();
             // MagickLib::DebugString("DLL Attach -  path: %s\n",m_szAppPath);
-            MagickLib::InitializeMagick( m_szAppPath );
+            MagickLib::InitializeMagick( app_path );
             MagickLib::RegisterStaticModules();
             MagickLib::GetExceptionInfo( &exception );
             (void)MagickLib::GetMagicInfo( (unsigned char*)NULL, 0, &exception );
@@ -90,8 +88,9 @@
          }
          else if( dwReason == DLL_PROCESS_DETACH )
          {
+            CT2AEX<MAX_PATH> app_path( m_szAppPath );
             (void)MagickLib::LogMagickEvent( MagickLib::ResourceEvent, GetMagickModule(),
-               "DLL Detach -  path: %s", m_szAppPath );
+               "DLL Detach -  path: %s", app_path );
             MagickLib::DestroyMagick();
 #ifdef _DEBUG
             if( _CrtDumpMemoryLeaks() )
@@ -156,7 +155,7 @@
       }
 
       static LPCSTR translate_exception( DWORD );
-      LPCTSTR translate_exception() const
+      LPCSTR translate_exception() const
       {
          return translate_exception( fullExceptionCode );
       }
@@ -254,7 +253,7 @@
 
    private:
 
-      char** m_argv;
+      LPSTR* m_argv;
       int m_argc;
       int m_argvIndex;
 
@@ -536,7 +535,7 @@
          long id;
          LPSTR lpszNext;
 
-         lpszNext = StrChr( szVal, '.' );
+         lpszNext = StrChrA( szVal, '.' );
          if( lpszNext == NULL )
          {
             lpszNext = "%w,%h,%m";
@@ -652,8 +651,6 @@
             CW2A szVal( V_BSTR( pvarIndex ) );
             if( szVal )
             {
-               MagickLib::Image* image;
-
                if( MagickLib::DeleteImageRegistry( szVal ) )
                {
                   hr = S_OK;
@@ -668,7 +665,7 @@
 }
 
 HRESULT MagickImage::Perform(
-   MagickLib::MagickBooleanType (* func)(MagickLib::ImageInfo* image_info,const int argc, LPTSTR* argv, LPTSTR* text, MagickLib::ExceptionInfo* exception),
+   MagickLib::MagickBooleanType (* func)(MagickLib::ImageInfo* image_info,const int argc, char** argv, char** text, MagickLib::ExceptionInfo* exception),
    SAFEARRAY** pArrayVar,
    VARIANT* pVar,
    MagickLib::ExceptionInfo* exception
@@ -1043,6 +1040,7 @@
 
    image_info = MagickLib::CloneImageInfo( (MagickLib::ImageInfo*)NULL );
 #ifdef _DEBUG
+
    //ATLASSERT( FALSE );
 #endif
    hr = Execute( func, &text, image_info, exception );
@@ -1127,9 +1125,7 @@
       errno ? " [" : "", errno ? strerror( errno ) : "", errno ? "]" : "" );
    (void)MagickLib::LogMagickEvent( MagickLib::ResourceEvent, GetMagickModule(), fatalerror_text );
 
-#ifdef _DEBUG
-   //ATLASSERT( FALSE );
-#endif
+//  ATLASSERT( FALSE );
 }
 
 #define ENABLE_FULL_EXCEPTIONS
@@ -1179,6 +1175,7 @@
          hr = MAKE_HRESULT( SEVERITY_ERROR, FACILITY_ITF, dwErrorBase + 1001 );
 
    #ifdef _DEBUG
+
          //ATLASSERT( FALSE );
    #endif
          CA2WEX<MaxTextExtent>wsMessageText( message_text );
@@ -1310,6 +1307,7 @@
          "convert: %d: %.1024s: %.1024s", exception.severity, reason, description );
       CA2WEX<MaxTextExtent> str( message_text );
 #ifdef _DEBUG
+
 //    ATLASSERT( FALSE );
 #endif
       Error( str, __uuidof( IMagickImage ), hr );
@@ -1389,9 +1387,7 @@
    HRESULT hr;
    MagickImageError error;
 
-#ifdef _DEBUG
-   //ATLASSERT( FALSE );
-#endif
+   ATLASSERT( FALSE );
 
 #ifdef ENABLE_FULL_EXCEPTIONS
    __try
@@ -1588,7 +1584,7 @@
    int cArgc
 )
 {
-   m_argv = new LPTSTR [ cArgc ];
+   m_argv = new LPSTR [ cArgc ];
 
    if( m_argv == NULL )
    {
@@ -1609,10 +1605,10 @@
    int cArgc
 )
 {
-   LPTSTR* argv = m_argv;
+   LPSTR* argv = m_argv;
    int argc = m_argc + cArgc;
 
-   argv = new LPTSTR [ argc ];
+   argv = new LPSTR [ argc ];
 
    if( argv == NULL )
    {
@@ -1868,7 +1864,7 @@
 typedef CAtlArray<CStringA>CStringArray;
 
 static void LocalTokenize(
-   const CString& s,
+   const CStringA& s,
    LPCSTR sz,
    CStringArray& asToken
 )
Index: ImageMagickObject.def
===================================================================
--- ImageMagickObject.def   (revision 7)
+++ ImageMagickObject.def   (working copy)
@@ -1,18 +0,0 @@
-LIBRARY ImageMagickObject
-EXPORTS
-MagickCommand @6
-SetClientName @7
-GetExceptionInfo @8
-CloneImageInfo @9
-CatchException @10
-DestroyImageInfo @11
-DestroyExceptionInfo @12
-InitializeMagick @13
-DestroyMagick @14
-GetMagickCopyright @15
-GetMagickVersion @16
-Exit @17
-GetClientName @18
-DefineClientName @19
-LocaleCompare @20
-GetPathComponent @21
Index: ImageMagickObject.dsp
===================================================================
--- ImageMagickObject.dsp   (revision 7)
+++ ImageMagickObject.dsp   (working copy)
@@ -1,345 +0,0 @@
-# Microsoft Developer Studio Project File - Name="ImageMagickObject" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
-
-CFG=ImageMagickObject - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "ImageMagickObject.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "ImageMagickObject.mak" CFG="ImageMagickObject - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "ImageMagickObject - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "ImageMagickObject - Win32 Unicode Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "ImageMagickObject - Win32 Release MinSize" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "ImageMagickObject - Win32 Release MinDependency" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "ImageMagickObject - Win32 Unicode Release MinSize" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "ImageMagickObject - Win32 Unicode Release MinDependency" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""$/ImageMagickObject", YKCAAAAA"
-# PROP Scc_LocalPath "."
-CPP=cl.exe
-MTL=midl.exe
-RSC=rc.exe
-
-!IF  "$(CFG)" == "ImageMagickObject - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-LIB32=link.exe -lib
-# ADD BASE CPP /nologo /MTd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /Yu"stdafx.h" /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /Gf /Gy /I "..\..\..\.." /I "..\..\..\..\magick" /I "..\..\..\..\xlib" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_USRDLL" /D "_VISUALC_" /D "NeedFunctionPrototypes" /D "_ATL_DLL" /D "_LIB" /Yu"stdafx.h" /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 CORE_DB_bzlib_.lib CORE_DB_fpx_.lib CORE_DB_jbig_.lib CORE_DB_jpeg_.lib CORE_DB_lcms_.lib CORE_DB_libxml_.lib CORE_DB_magick_.lib CORE_DB_Magick++_.lib CORE_DB_png_.lib CORE_DB_tiff_.lib CORE_DB_ttf_.lib CORE_DB_xlib_.lib CORE_DB_zlib_.lib CORE_DB_jp2_.lib CORE_DB_wmf_.lib IM_MOD_DB_art_.lib IM_MOD_DB_avi_.lib IM_MOD_DB_avs_.lib IM_MOD_DB_bmp_.lib IM_MOD_DB_caption_.lib IM_MOD_DB_clipboard_.lib IM_MOD_DB_cmyk_.lib IM_MOD_DB_cut_.lib IM_MOD_DB_dcm_.lib IM_MOD_DB_dib_.lib IM_MOD_DB_dps_.lib IM_MOD_DB_dpx_.lib IM_MOD_DB_emf_.lib IM_MOD_DB_ept_.lib IM_MOD_DB_fax_.lib IM_MOD_DB_fits_.lib IM_MOD_DB_fpx_.lib IM_MOD_DB_gif_.lib IM_MOD_DB_gradient_.lib IM_MOD_DB_gray_.lib IM_MOD_DB_hdf_.lib IM_MOD_DB_histogram_.lib IM_MOD_DB_html_.lib IM_MOD_DB_icon_.lib IM_MOD_DB_jbig_.lib IM_MOD_DB_jp2_.lib IM_MOD_DB_jpeg_.lib IM_MOD_DB_label_.lib IM_MOD_DB_locale_.lib IM_MOD_DB_logo_.lib IM_MOD_DB_map_.lib IM_MOD_DB_mat_.lib IM_MOD_DB_matte_.lib IM_MOD_DB_meta_.lib IM_MOD_DB_miff_.lib IM_MOD_DB_mono_.lib IM_MOD_DB_mpc_.lib IM_MOD_DB_mpeg_.lib IM_MOD_DB_mpr_.lib IM_MOD_DB_msl_.lib IM_MOD_DB_mtv_.lib IM_MOD_DB_mvg_.lib IM_MOD_DB_null_.lib IM_MOD_DB_otb_.lib IM_MOD_DB_palm_.lib IM_MOD_DB_pcd_.lib IM_MOD_DB_pcl_.lib IM_MOD_DB_pcx_.lib IM_MOD_DB_pdb_.lib IM_MOD_DB_pdf_.lib IM_MOD_DB_pict_.lib IM_MOD_DB_pix_.lib IM_MOD_DB_plasma_.lib IM_MOD_DB_png_.lib IM_MOD_DB_pnm_.lib IM_MOD_DB_preview_.lib IM_MOD_DB_ps_.lib IM_MOD_DB_ps2_.lib IM_MOD_DB_ps3_.lib IM_MOD_DB_psd_.lib IM_MOD_DB_pwp_.lib IM_MOD_DB_rgb_.lib IM_MOD_DB_rla_.lib IM_MOD_DB_rle_.lib IM_MOD_DB_sct_.lib IM_MOD_DB_sfw_.lib IM_MOD_DB_sgi_.lib IM_MOD_DB_stegano_.lib IM_MOD_DB_sun_.lib IM_MOD_DB_svg_.lib IM_MOD_DB_tga_.lib IM_MOD_DB_tiff_.lib IM_MOD_DB_tile_.lib IM_MOD_DB_tim_.lib IM_MOD_DB_ttf_.lib IM_MOD_DB_txt_.lib IM_MOD_DB_uil_.lib IM_MOD_DB_url_.lib IM_MOD_DB_uyvy_.lib IM_MOD_DB_vicar_.lib IM_MOD_DB_vid_.lib IM_MOD_DB_viff_.lib IM_MOD_DB_wbmp_.lib IM_MOD_DB_wmf_.lib IM_MOD_DB_wpg_.lib IM_MOD_DB_x_.lib IM_MOD_DB_xbm_.lib IM_MOD_DB_xc_.lib IM_MOD_DB_xcf_.lib IM_MOD_DB_xpm_.lib IM_MOD_DB_xwd_.lib IM_MOD_DB_yuv_.lib IM_MOD_DB_xtrn_.lib kernel32.lib user32.lib gdi32.lib odbc32.lib odbccp32.lib ole32.lib oleaut32.lib winmm.lib dxguid.lib wsock32.lib advapi32.lib /nologo /subsystem:windows /dll /pdb:"..\bin\ImageMagickObject.pdb" /debug /machine:I386 /libpath:"..\..\..\..\VisualMagick\lib"
-# SUBTRACT LINK32 /pdb:none
-# Begin Custom Build - Performing registration
-OutDir=.\Debug
-TargetPath=.\Debug\ImageMagickObject.dll
-InputPath=.\Debug\ImageMagickObject.dll
-SOURCE="$(InputPath)"
-
-"$(OutDir)\regsvr32.trg" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
-   regsvr32 /s /c "$(TargetPath)"
-   echo regsvr32 exec. time > "$(OutDir)\regsvr32.trg"
-   
-# End Custom Build
-
-!ELSEIF  "$(CFG)" == "ImageMagickObject - Win32 Unicode Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "DebugU"
-# PROP BASE Intermediate_Dir "DebugU"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "DebugU"
-# PROP Intermediate_Dir "DebugU"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-LIB32=link.exe -lib
-# ADD BASE CPP /nologo /MTd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_USRDLL" /D "_UNICODE" /Yu"stdafx.h" /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "..\..\..\.." /I "..\..\..\..\magick" /I "..\..\..\..\xlib" /D "_DEBUG" /D "_UNICODE" /D "WIN32" /D "_WINDOWS" /D "_USRDLL" /D "_VISUALC_" /D "NeedFunctionPrototypes" /D "_ATL_DLL" /D "_LIB" /Yu"stdafx.h" /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 CORE_RL_bzlib_.lib CORE_RL_fpx_.lib CORE_RL_jbig_.lib CORE_RL_jpeg_.lib CORE_RL_lcms_.lib CORE_RL_libxml_.lib CORE_RL_magick_.lib CORE_RL_Magick++_.lib CORE_RL_png_.lib CORE_RL_tiff_.lib CORE_RL_ttf_.lib CORE_RL_xlib_.lib CORE_RL_zlib_.lib CORE_RL_jp2_.lib CORE_RL_wmf_.lib IM_MOD_RL_art_.lib IM_MOD_RL_avi_.lib IM_MOD_RL_avs_.lib IM_MOD_RL_bmp_.lib IM_MOD_RL_caption_.lib IM_MOD_RL_clipboard_.lib IM_MOD_RL_cmyk_.lib IM_MOD_RL_cut_.lib IM_MOD_RL_dcm_.lib IM_MOD_RL_dib_.lib IM_MOD_RL_dps_.lib IM_MOD_RL_dpx_.lib IM_MOD_RL_emf_.lib IM_MOD_RL_ept_.lib IM_MOD_RL_fax_.lib IM_MOD_RL_fits_.lib IM_MOD_RL_fpx_.lib IM_MOD_RL_gif_.lib IM_MOD_RL_gradient_.lib IM_MOD_RL_gray_.lib IM_MOD_RL_hdf_.lib IM_MOD_RL_histogram_.lib IM_MOD_RL_html_.lib IM_MOD_RL_icon_.lib IM_MOD_RL_jbig_.lib IM_MOD_RL_jp2_.lib IM_MOD_RL_jpeg_.lib IM_MOD_RL_label_.lib IM_MOD_RL_locale_.lib IM_MOD_RL_logo_.lib IM_MOD_RL_map_.lib IM_MOD_RL_mat_.lib IM_MOD_RL_matte_.lib IM_MOD_RL_meta_.lib IM_MOD_RL_miff_.lib IM_MOD_RL_mono_.lib IM_MOD_RL_mpc_.lib IM_MOD_RL_mpeg_.lib IM_MOD_RL_mpr_.lib IM_MOD_RL_msl_.lib IM_MOD_RL_mtv_.lib IM_MOD_RL_mvg_.lib IM_MOD_RL_null_.lib IM_MOD_RL_otb_.lib IM_MOD_RL_palm_.lib IM_MOD_RL_pcd_.lib IM_MOD_RL_pcl_.lib IM_MOD_RL_pcx_.lib IM_MOD_RL_pdb_.lib IM_MOD_RL_pdf_.lib IM_MOD_RL_pict_.lib IM_MOD_RL_pix_.lib IM_MOD_RL_plasma_.lib IM_MOD_RL_png_.lib IM_MOD_RL_pnm_.lib IM_MOD_RL_preview_.lib IM_MOD_RL_ps_.lib IM_MOD_RL_ps2_.lib IM_MOD_RL_ps3_.lib IM_MOD_RL_psd_.lib IM_MOD_RL_pwp_.lib IM_MOD_RL_rgb_.lib IM_MOD_RL_rla_.lib IM_MOD_RL_rle_.lib IM_MOD_RL_sct_.lib IM_MOD_RL_sfw_.lib IM_MOD_RL_sgi_.lib IM_MOD_RL_stegano_.lib IM_MOD_RL_sun_.lib IM_MOD_RL_svg_.lib IM_MOD_RL_tga_.lib IM_MOD_RL_tiff_.lib IM_MOD_RL_tile_.lib IM_MOD_RL_tim_.lib IM_MOD_RL_ttf_.lib IM_MOD_RL_txt_.lib IM_MOD_RL_uil_.lib IM_MOD_RL_url_.lib IM_MOD_RL_uyvy_.lib IM_MOD_RL_vicar_.lib IM_MOD_RL_vid_.lib IM_MOD_RL_viff_.lib IM_MOD_RL_wbmp_.lib IM_MOD_RL_wmf_.lib IM_MOD_RL_wpg_.lib IM_MOD_RL_x_.lib IM_MOD_RL_xbm_.lib IM_MOD_RL_xc_.lib IM_MOD_RL_xcf_.lib IM_MOD_RL_xpm_.lib IM_MOD_RL_xwd_.lib IM_MOD_RL_yuv_.lib IM_MOD_RL_xtrn_.lib kernel32.lib user32.lib gdi32.lib odbc32.lib odbccp32.lib ole32.lib oleaut32.lib winmm.lib dxguid.lib wsock32.lib advapi32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\..\VisualMagick\lib"
-# SUBTRACT LINK32 /pdb:none
-# Begin Custom Build - Performing registration
-OutDir=.\DebugU
-TargetPath=.\DebugU\ImageMagickObject.dll
-InputPath=.\DebugU\ImageMagickObject.dll
-SOURCE="$(InputPath)"
-
-"$(OutDir)\regsvr32.trg" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
-   if "%OS%"=="" goto NOTNT
-   if not "%OS%"=="Windows_NT" goto NOTNT
-   regsvr32 /s /c "$(TargetPath)"
-   echo regsvr32 exec. time > "$(OutDir)\regsvr32.trg"
-   goto end
-   :NOTNT
-   echo Warning : Cannot register Unicode DLL on Windows 95
-   :end
-   
-# End Custom Build
-
-!ELSEIF  "$(CFG)" == "ImageMagickObject - Win32 Release MinSize"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "ReleaseMinSize"
-# PROP BASE Intermediate_Dir "ReleaseMinSize"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "ReleaseMinSize"
-# PROP Intermediate_Dir "ReleaseMinSize"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-LIB32=link.exe -lib
-# ADD BASE CPP /nologo /MT /W3 /O1 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "_ATL_DLL" /D "_ATL_MIN_CRT" /Yu"stdafx.h" /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O1 /I "..\..\..\.." /I "..\..\..\..\magick" /I "..\..\..\..\xlib" /D "NDEBUG" /D "_MBCS" /D "_ATL_DLL" /D "_ATL_MIN_CRT" /D "WIN32" /D "_WINDOWS" /D "_USRDLL" /D "_VISUALC_" /D "NeedFunctionPrototypes" /D "_LIB" /Yu"stdafx.h" /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
-# ADD LINK32 CORE_RL_bzlib_.lib CORE_RL_fpx_.lib CORE_RL_jbig_.lib CORE_RL_jpeg_.lib CORE_RL_lcms_.lib CORE_RL_libxml_.lib CORE_RL_magick_.lib CORE_RL_Magick++_.lib CORE_RL_png_.lib CORE_RL_tiff_.lib CORE_RL_ttf_.lib CORE_RL_xlib_.lib CORE_RL_zlib_.lib CORE_RL_jp2_.lib CORE_RL_wmf_.lib IM_MOD_RL_art_.lib IM_MOD_RL_avi_.lib IM_MOD_RL_avs_.lib IM_MOD_RL_bmp_.lib IM_MOD_RL_caption_.lib IM_MOD_RL_clipboard_.lib IM_MOD_RL_cmyk_.lib IM_MOD_RL_cut_.lib IM_MOD_RL_dcm_.lib IM_MOD_RL_dib_.lib IM_MOD_RL_dps_.lib IM_MOD_RL_dpx_.lib IM_MOD_RL_emf_.lib IM_MOD_RL_ept_.lib IM_MOD_RL_fax_.lib IM_MOD_RL_fits_.lib IM_MOD_RL_fpx_.lib IM_MOD_RL_gif_.lib IM_MOD_RL_gradient_.lib IM_MOD_RL_gray_.lib IM_MOD_RL_hdf_.lib IM_MOD_RL_histogram_.lib IM_MOD_RL_html_.lib IM_MOD_RL_icon_.lib IM_MOD_RL_jbig_.lib IM_MOD_RL_jp2_.lib IM_MOD_RL_jpeg_.lib IM_MOD_RL_label_.lib IM_MOD_RL_locale_.lib IM_MOD_RL_logo_.lib IM_MOD_RL_map_.lib IM_MOD_RL_mat_.lib IM_MOD_RL_matte_.lib IM_MOD_RL_meta_.lib IM_MOD_RL_miff_.lib IM_MOD_RL_mono_.lib IM_MOD_RL_mpc_.lib IM_MOD_RL_mpeg_.lib IM_MOD_RL_mpr_.lib IM_MOD_RL_msl_.lib IM_MOD_RL_mtv_.lib IM_MOD_RL_mvg_.lib IM_MOD_RL_null_.lib IM_MOD_RL_otb_.lib IM_MOD_RL_palm_.lib IM_MOD_RL_pcd_.lib IM_MOD_RL_pcl_.lib IM_MOD_RL_pcx_.lib IM_MOD_RL_pdb_.lib IM_MOD_RL_pdf_.lib IM_MOD_RL_pict_.lib IM_MOD_RL_pix_.lib IM_MOD_RL_plasma_.lib IM_MOD_RL_png_.lib IM_MOD_RL_pnm_.lib IM_MOD_RL_preview_.lib IM_MOD_RL_ps_.lib IM_MOD_RL_ps2_.lib IM_MOD_RL_ps3_.lib IM_MOD_RL_psd_.lib IM_MOD_RL_pwp_.lib IM_MOD_RL_rgb_.lib IM_MOD_RL_rla_.lib IM_MOD_RL_rle_.lib IM_MOD_RL_sct_.lib IM_MOD_RL_sfw_.lib IM_MOD_RL_sgi_.lib IM_MOD_RL_stegano_.lib IM_MOD_RL_sun_.lib IM_MOD_RL_svg_.lib IM_MOD_RL_tga_.lib IM_MOD_RL_tiff_.lib IM_MOD_RL_tile_.lib IM_MOD_RL_tim_.lib IM_MOD_RL_ttf_.lib IM_MOD_RL_txt_.lib IM_MOD_RL_uil_.lib IM_MOD_RL_url_.lib IM_MOD_RL_uyvy_.lib IM_MOD_RL_vicar_.lib IM_MOD_RL_vid_.lib IM_MOD_RL_viff_.lib IM_MOD_RL_wbmp_.lib IM_MOD_RL_wmf_.lib IM_MOD_RL_wpg_.lib IM_MOD_RL_x_.lib IM_MOD_RL_xbm_.lib IM_MOD_RL_xc_.lib IM_MOD_RL_xcf_.lib IM_MOD_RL_xpm_.lib IM_MOD_RL_xwd_.lib IM_MOD_RL_yuv_.lib IM_MOD_RL_xtrn_.lib kernel32.lib user32.lib gdi32.lib odbc32.lib odbccp32.lib ole32.lib oleaut32.lib winmm.lib dxguid.lib wsock32.lib advapi32.lib /nologo /subsystem:windows /dll /machine:IX86 /libpath:"..\..\..\..\VisualMagick\lib"
-# SUBTRACT LINK32 /pdb:none
-# Begin Custom Build - Performing registration
-OutDir=.\ReleaseMinSize
-TargetPath=.\ReleaseMinSize\ImageMagickObject.dll
-InputPath=.\ReleaseMinSize\ImageMagickObject.dll
-SOURCE="$(InputPath)"
-
-"$(OutDir)\regsvr32.trg" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
-   regsvr32 /s /c "$(TargetPath)"
-   echo regsvr32 exec. time > "$(OutDir)\regsvr32.trg"
-   
-# End Custom Build
-
-!ELSEIF  "$(CFG)" == "ImageMagickObject - Win32 Release MinDependency"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "ReleaseMinDependency"
-# PROP BASE Intermediate_Dir "ReleaseMinDependency"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "ReleaseMinDependency"
-# PROP Intermediate_Dir "ReleaseMinDependency"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-LIB32=link.exe -lib
-# ADD BASE CPP /nologo /MT /W3 /O1 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "_ATL_STATIC_REGISTRY" /D "_ATL_MIN_CRT" /Yu"stdafx.h" /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\..\.." /I "..\..\..\..\magick" /I "..\..\..\..\xlib" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_USRDLL" /D "_VISUALC_" /D "NeedFunctionPrototypes" /D "_ATL_DLL" /D "_LIB" /Yu"stdafx.h" /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
-# ADD LINK32 CORE_RL_bzlib_.lib CORE_RL_fpx_.lib CORE_RL_jbig_.lib CORE_RL_jpeg_.lib CORE_RL_lcms_.lib CORE_RL_libxml_.lib CORE_RL_magick_.lib CORE_RL_Magick++_.lib CORE_RL_png_.lib CORE_RL_tiff_.lib CORE_RL_ttf_.lib CORE_RL_xlib_.lib CORE_RL_zlib_.lib CORE_RL_jp2_.lib CORE_RL_wmf_.lib IM_MOD_RL_art_.lib IM_MOD_RL_avi_.lib IM_MOD_RL_avs_.lib IM_MOD_RL_bmp_.lib IM_MOD_RL_caption_.lib IM_MOD_RL_clipboard_.lib IM_MOD_RL_cmyk_.lib IM_MOD_RL_cut_.lib IM_MOD_RL_dcm_.lib IM_MOD_RL_dib_.lib IM_MOD_RL_dps_.lib IM_MOD_RL_dpx_.lib IM_MOD_RL_emf_.lib IM_MOD_RL_ept_.lib IM_MOD_RL_fax_.lib IM_MOD_RL_fits_.lib IM_MOD_RL_fpx_.lib IM_MOD_RL_gif_.lib IM_MOD_RL_gradient_.lib IM_MOD_RL_gray_.lib IM_MOD_RL_hdf_.lib IM_MOD_RL_histogram_.lib IM_MOD_RL_html_.lib IM_MOD_RL_icon_.lib IM_MOD_RL_jbig_.lib IM_MOD_RL_jp2_.lib IM_MOD_RL_jpeg_.lib IM_MOD_RL_label_.lib IM_MOD_RL_locale_.lib IM_MOD_RL_logo_.lib IM_MOD_RL_map_.lib IM_MOD_RL_mat_.lib IM_MOD_RL_matte_.lib IM_MOD_RL_meta_.lib IM_MOD_RL_miff_.lib IM_MOD_RL_mono_.lib IM_MOD_RL_mpc_.lib IM_MOD_RL_mpeg_.lib IM_MOD_RL_mpr_.lib IM_MOD_RL_msl_.lib IM_MOD_RL_mtv_.lib IM_MOD_RL_mvg_.lib IM_MOD_RL_null_.lib IM_MOD_RL_otb_.lib IM_MOD_RL_palm_.lib IM_MOD_RL_pcd_.lib IM_MOD_RL_pcl_.lib IM_MOD_RL_pcx_.lib IM_MOD_RL_pdb_.lib IM_MOD_RL_pdf_.lib IM_MOD_RL_pict_.lib IM_MOD_RL_pix_.lib IM_MOD_RL_plasma_.lib IM_MOD_RL_png_.lib IM_MOD_RL_pnm_.lib IM_MOD_RL_preview_.lib IM_MOD_RL_ps_.lib IM_MOD_RL_ps2_.lib IM_MOD_RL_ps3_.lib IM_MOD_RL_psd_.lib IM_MOD_RL_pwp_.lib IM_MOD_RL_rgb_.lib IM_MOD_RL_rla_.lib IM_MOD_RL_rle_.lib IM_MOD_RL_sct_.lib IM_MOD_RL_sfw_.lib IM_MOD_RL_sgi_.lib IM_MOD_RL_stegano_.lib IM_MOD_RL_sun_.lib IM_MOD_RL_svg_.lib IM_MOD_RL_tga_.lib IM_MOD_RL_tiff_.lib IM_MOD_RL_tile_.lib IM_MOD_RL_tim_.lib IM_MOD_RL_ttf_.lib IM_MOD_RL_txt_.lib IM_MOD_RL_uil_.lib IM_MOD_RL_url_.lib IM_MOD_RL_uyvy_.lib IM_MOD_RL_vicar_.lib IM_MOD_RL_vid_.lib IM_MOD_RL_viff_.lib IM_MOD_RL_wbmp_.lib IM_MOD_RL_wmf_.lib IM_MOD_RL_wpg_.lib IM_MOD_RL_x_.lib IM_MOD_RL_xbm_.lib IM_MOD_RL_xc_.lib IM_MOD_RL_xcf_.lib IM_MOD_RL_xpm_.lib IM_MOD_RL_xwd_.lib IM_MOD_RL_yuv_.lib IM_MOD_RL_xtrn_.lib winmm.lib dxguid.lib wsock32.lib kernel32.lib user32.lib gdi32.lib odbc32.lib odbccp32.lib ole32.lib oleaut32.lib advapi32.lib /nologo /subsystem:windows /dll /machine:IX86 /libpath:"..\..\..\..\VisualMagick\lib"
-# SUBTRACT LINK32 /pdb:none
-# Begin Custom Build - Performing registration
-OutDir=.\ReleaseMinDependency
-TargetPath=.\ReleaseMinDependency\ImageMagickObject.dll
-InputPath=.\ReleaseMinDependency\ImageMagickObject.dll
-SOURCE="$(InputPath)"
-
-"$(OutDir)\regsvr32.trg" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
-   regsvr32 /s /c "$(TargetPath)"
-   echo regsvr32 exec. time > "$(OutDir)\regsvr32.trg"
-   
-# End Custom Build
-
-!ELSEIF  "$(CFG)" == "ImageMagickObject - Win32 Unicode Release MinSize"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "ReleaseUMinSize"
-# PROP BASE Intermediate_Dir "ReleaseUMinSize"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "ReleaseUMinSize"
-# PROP Intermediate_Dir "ReleaseUMinSize"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-LIB32=link.exe -lib
-# ADD BASE CPP /nologo /MT /W3 /O1 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_USRDLL" /D "_UNICODE" /D "_ATL_DLL" /D "_ATL_MIN_CRT" /Yu"stdafx.h" /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O1 /I "..\..\..\.." /I "..\..\..\..\magick" /I "..\..\..\..\xlib" /D "NDEBUG" /D "_UNICODE" /D "_ATL_DLL" /D "_ATL_MIN_CRT" /D "WIN32" /D "_WINDOWS" /D "_USRDLL" /D "_VISUALC_" /D "NeedFunctionPrototypes" /D "_LIB" /Yu"stdafx.h" /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
-# ADD LINK32 CORE_RL_bzlib_.lib CORE_RL_fpx_.lib CORE_RL_jbig_.lib CORE_RL_jpeg_.lib CORE_RL_lcms_.lib CORE_RL_libxml_.lib CORE_RL_magick_.lib CORE_RL_Magick++_.lib CORE_RL_png_.lib CORE_RL_tiff_.lib CORE_RL_ttf_.lib CORE_RL_xlib_.lib CORE_RL_zlib_.lib CORE_RL_jp2_.lib CORE_RL_wmf_.lib IM_MOD_RL_art_.lib IM_MOD_RL_avi_.lib IM_MOD_RL_avs_.lib IM_MOD_RL_bmp_.lib IM_MOD_RL_caption_.lib IM_MOD_RL_clipboard_.lib IM_MOD_RL_cmyk_.lib IM_MOD_RL_cut_.lib IM_MOD_RL_dcm_.lib IM_MOD_RL_dib_.lib IM_MOD_RL_dps_.lib IM_MOD_RL_dpx_.lib IM_MOD_RL_emf_.lib IM_MOD_RL_ept_.lib IM_MOD_RL_fax_.lib IM_MOD_RL_fits_.lib IM_MOD_RL_fpx_.lib IM_MOD_RL_gif_.lib IM_MOD_RL_gradient_.lib IM_MOD_RL_gray_.lib IM_MOD_RL_hdf_.lib IM_MOD_RL_histogram_.lib IM_MOD_RL_html_.lib IM_MOD_RL_icon_.lib IM_MOD_RL_jbig_.lib IM_MOD_RL_jp2_.lib IM_MOD_RL_jpeg_.lib IM_MOD_RL_label_.lib IM_MOD_RL_locale_.lib IM_MOD_RL_logo_.lib IM_MOD_RL_map_.lib IM_MOD_RL_mat_.lib IM_MOD_RL_matte_.lib IM_MOD_RL_meta_.lib IM_MOD_RL_miff_.lib IM_MOD_RL_mono_.lib IM_MOD_RL_mpc_.lib IM_MOD_RL_mpeg_.lib IM_MOD_RL_mpr_.lib IM_MOD_RL_msl_.lib IM_MOD_RL_mtv_.lib IM_MOD_RL_mvg_.lib IM_MOD_RL_null_.lib IM_MOD_RL_otb_.lib IM_MOD_RL_palm_.lib IM_MOD_RL_pcd_.lib IM_MOD_RL_pcl_.lib IM_MOD_RL_pcx_.lib IM_MOD_RL_pdb_.lib IM_MOD_RL_pdf_.lib IM_MOD_RL_pict_.lib IM_MOD_RL_pix_.lib IM_MOD_RL_plasma_.lib IM_MOD_RL_png_.lib IM_MOD_RL_pnm_.lib IM_MOD_RL_preview_.lib IM_MOD_RL_ps_.lib IM_MOD_RL_ps2_.lib IM_MOD_RL_ps3_.lib IM_MOD_RL_psd_.lib IM_MOD_RL_pwp_.lib IM_MOD_RL_rgb_.lib IM_MOD_RL_rla_.lib IM_MOD_RL_rle_.lib IM_MOD_RL_sct_.lib IM_MOD_RL_sfw_.lib IM_MOD_RL_sgi_.lib IM_MOD_RL_stegano_.lib IM_MOD_RL_sun_.lib IM_MOD_RL_svg_.lib IM_MOD_RL_tga_.lib IM_MOD_RL_tiff_.lib IM_MOD_RL_tile_.lib IM_MOD_RL_tim_.lib IM_MOD_RL_ttf_.lib IM_MOD_RL_txt_.lib IM_MOD_RL_uil_.lib IM_MOD_RL_url_.lib IM_MOD_RL_uyvy_.lib IM_MOD_RL_vicar_.lib IM_MOD_RL_vid_.lib IM_MOD_RL_viff_.lib IM_MOD_RL_wbmp_.lib IM_MOD_RL_wmf_.lib IM_MOD_RL_wpg_.lib IM_MOD_RL_x_.lib IM_MOD_RL_xbm_.lib IM_MOD_RL_xc_.lib IM_MOD_RL_xcf_.lib IM_MOD_RL_xpm_.lib IM_MOD_RL_xwd_.lib IM_MOD_RL_yuv_.lib IM_MOD_RL_xtrn_.lib kernel32.lib user32.lib gdi32.lib odbc32.lib odbccp32.lib ole32.lib oleaut32.lib winmm.lib dxguid.lib wsock32.lib advapi32.lib /nologo /subsystem:windows /dll /machine:I386 /libpath:"..\..\..\..\VisualMagick\lib"
-# SUBTRACT LINK32 /pdb:none
-# Begin Custom Build - Performing registration
-OutDir=.\ReleaseUMinSize
-TargetPath=.\ReleaseUMinSize\ImageMagickObject.dll
-InputPath=.\ReleaseUMinSize\ImageMagickObject.dll
-SOURCE="$(InputPath)"
-
-"$(OutDir)\regsvr32.trg" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
-   if "%OS%"=="" goto NOTNT
-   if not "%OS%"=="Windows_NT" goto NOTNT
-   regsvr32 /s /c "$(TargetPath)"
-   echo regsvr32 exec. time > "$(OutDir)\regsvr32.trg"
-   goto end
-   :NOTNT
-   echo Warning : Cannot register Unicode DLL on Windows 95
-   :end
-   
-# End Custom Build
-
-!ELSEIF  "$(CFG)" == "ImageMagickObject - Win32 Unicode Release MinDependency"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "ReleaseUMinDependency"
-# PROP BASE Intermediate_Dir "ReleaseUMinDependency"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "ReleaseUMinDependency"
-# PROP Intermediate_Dir "ReleaseUMinDependency"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-LIB32=link.exe -lib
-# ADD BASE CPP /nologo /MT /W3 /O1 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_USRDLL" /D "_UNICODE" /D "_ATL_STATIC_REGISTRY" /D "_ATL_MIN_CRT" /Yu"stdafx.h" /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O1 /I "..\..\..\.." /I "..\..\..\..\magick" /I "..\..\..\..\xlib" /D "NDEBUG" /D "_UNICODE" /D "_ATL_STATIC_REGISTRY" /D "_ATL_MIN_CRT" /D "WIN32" /D "_WINDOWS" /D "_USRDLL" /D "_VISUALC_" /D "NeedFunctionPrototypes" /D "_ATL_DLL" /D "_LIB" /Yu"stdafx.h" /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
-# ADD LINK32 CORE_RL_bzlib_.lib CORE_RL_fpx_.lib CORE_RL_jbig_.lib CORE_RL_jpeg_.lib CORE_RL_lcms_.lib CORE_RL_libxml_.lib CORE_RL_magick_.lib CORE_RL_Magick++_.lib CORE_RL_png_.lib CORE_RL_tiff_.lib CORE_RL_ttf_.lib CORE_RL_xlib_.lib CORE_RL_zlib_.lib CORE_RL_jp2_.lib CORE_RL_wmf_.lib IM_MOD_RL_art_.lib IM_MOD_RL_avi_.lib IM_MOD_RL_avs_.lib IM_MOD_RL_bmp_.lib IM_MOD_RL_caption_.lib IM_MOD_RL_clipboard_.lib IM_MOD_RL_cmyk_.lib IM_MOD_RL_cut_.lib IM_MOD_RL_dcm_.lib IM_MOD_RL_dib_.lib IM_MOD_RL_dps_.lib IM_MOD_RL_dpx_.lib IM_MOD_RL_emf_.lib IM_MOD_RL_ept_.lib IM_MOD_RL_fax_.lib IM_MOD_RL_fits_.lib IM_MOD_RL_fpx_.lib IM_MOD_RL_gif_.lib IM_MOD_RL_gradient_.lib IM_MOD_RL_gray_.lib IM_MOD_RL_hdf_.lib IM_MOD_RL_histogram_.lib IM_MOD_RL_html_.lib IM_MOD_RL_icon_.lib IM_MOD_RL_jbig_.lib IM_MOD_RL_jp2_.lib IM_MOD_RL_jpeg_.lib IM_MOD_RL_label_.lib IM_MOD_RL_locale_.lib IM_MOD_RL_logo_.lib IM_MOD_RL_map_.lib IM_MOD_RL_mat_.lib IM_MOD_RL_matte_.lib IM_MOD_RL_meta_.lib IM_MOD_RL_miff_.lib IM_MOD_RL_mono_.lib IM_MOD_RL_mpc_.lib IM_MOD_RL_mpeg_.lib IM_MOD_RL_mpr_.lib IM_MOD_RL_msl_.lib IM_MOD_RL_mtv_.lib IM_MOD_RL_mvg_.lib IM_MOD_RL_null_.lib IM_MOD_RL_otb_.lib IM_MOD_RL_palm_.lib IM_MOD_RL_pcd_.lib IM_MOD_RL_pcl_.lib IM_MOD_RL_pcx_.lib IM_MOD_RL_pdb_.lib IM_MOD_RL_pdf_.lib IM_MOD_RL_pict_.lib IM_MOD_RL_pix_.lib IM_MOD_RL_plasma_.lib IM_MOD_RL_png_.lib IM_MOD_RL_pnm_.lib IM_MOD_RL_preview_.lib IM_MOD_RL_ps_.lib IM_MOD_RL_ps2_.lib IM_MOD_RL_ps3_.lib IM_MOD_RL_psd_.lib IM_MOD_RL_pwp_.lib IM_MOD_RL_rgb_.lib IM_MOD_RL_rla_.lib IM_MOD_RL_rle_.lib IM_MOD_RL_sct_.lib IM_MOD_RL_sfw_.lib IM_MOD_RL_sgi_.lib IM_MOD_RL_stegano_.lib IM_MOD_RL_sun_.lib IM_MOD_RL_svg_.lib IM_MOD_RL_tga_.lib IM_MOD_RL_tiff_.lib IM_MOD_RL_tile_.lib IM_MOD_RL_tim_.lib IM_MOD_RL_ttf_.lib IM_MOD_RL_txt_.lib IM_MOD_RL_uil_.lib IM_MOD_RL_url_.lib IM_MOD_RL_uyvy_.lib IM_MOD_RL_vicar_.lib IM_MOD_RL_vid_.lib IM_MOD_RL_viff_.lib IM_MOD_RL_wbmp_.lib IM_MOD_RL_wmf_.lib IM_MOD_RL_wpg_.lib IM_MOD_RL_x_.lib IM_MOD_RL_xbm_.lib IM_MOD_RL_xc_.lib IM_MOD_RL_xcf_.lib IM_MOD_RL_xpm_.lib IM_MOD_RL_xwd_.lib IM_MOD_RL_yuv_.lib IM_MOD_RL_xtrn_.lib kernel32.lib user32.lib gdi32.lib odbc32.lib odbccp32.lib ole32.lib oleaut32.lib winmm.lib dxguid.lib wsock32.lib advapi32.lib /nologo /subsystem:windows /dll /machine:I386 /libpath:"..\..\..\..\VisualMagick\lib"
-# SUBTRACT LINK32 /pdb:none
-# Begin Custom Build - Performing registration
-OutDir=.\ReleaseUMinDependency
-TargetPath=.\ReleaseUMinDependency\ImageMagickObject.dll
-InputPath=.\ReleaseUMinDependency\ImageMagickObject.dll
-SOURCE="$(InputPath)"
-
-"$(OutDir)\regsvr32.trg" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
-   if "%OS%"=="" goto NOTNT
-   if not "%OS%"=="Windows_NT" goto NOTNT
-   regsvr32 /s /c "$(TargetPath)"
-   echo regsvr32 exec. time > "$(OutDir)\regsvr32.trg"
-   goto end
-   :NOTNT
-   echo Warning : Cannot register Unicode DLL on Windows 95
-   :end
-   
-# End Custom Build
-
-!ENDIF
-
-# Begin Target
-
-# Name "ImageMagickObject - Win32 Debug"
-# Name "ImageMagickObject - Win32 Unicode Debug"
-# Name "ImageMagickObject - Win32 Release MinSize"
-# Name "ImageMagickObject - Win32 Release MinDependency"
-# Name "ImageMagickObject - Win32 Unicode Release MinSize"
-# Name "ImageMagickObject - Win32 Unicode Release MinDependency"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=.\ImageMagickObject.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\ImageMagickObject.def
-# End Source File
-# Begin Source File
-
-SOURCE=.\ImageMagickObject.idl
-# ADD MTL /tlb ".\ImageMagickObject.tlb" /h "ImageMagickObject.h" /iid "ImageMagickObject_i.c" /Oicf
-# End Source File
-# Begin Source File
-
-SOURCE=.\ImageMagickObject.rc
-# End Source File
-# Begin Source File
-
-SOURCE=.\MagickImage.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\StdAfx.cpp
-# ADD CPP /Yc"stdafx.h"
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=.\MagickImage.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\Resource.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\StdAfx.h
-# End Source File
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# Begin Source File
-
-SOURCE=.\MagickImage.rgs
-# End Source File
-# End Group
-# Begin Source File
-
-SOURCE=..\..\..\..\config\colors.xml
-# End Source File
-# End Target
-# End Project
Index: ImageMagickObject.sln
===================================================================
--- ImageMagickObject.sln   (revision 0)
+++ ImageMagickObject.sln   (revision 0)
@@ -0,0 +1,39 @@
+
+Microsoft Visual Studio Solution File, Format Version 9.00
+# Visual Studio 2005
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ImageMagickObject", "ImageMagickObject.vcproj", "{DBE97348-A3A9-44CA-B3BE-44F8A4D479DD}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MagickCMD", "MagickCMD.vcproj", "{54639816-FC30-4351-BE6C-794ADD3C04DC}"
+   ProjectSection(ProjectDependencies) = postProject
+      {DBE97348-A3A9-44CA-B3BE-44F8A4D479DD} = {DBE97348-A3A9-44CA-B3BE-44F8A4D479DD}
+   EndProjectSection
+EndProject
+Global
+   GlobalSection(SolutionConfigurationPlatforms) = preSolution
+      Debug|Win32 = Debug|Win32
+      Release|Win32 = Release|Win32
+      Unicode Debug|Win32 = Unicode Debug|Win32
+      Unicode Release|Win32 = Unicode Release|Win32
+   EndGlobalSection
+   GlobalSection(ProjectConfigurationPlatforms) = postSolution
+      {DBE97348-A3A9-44CA-B3BE-44F8A4D479DD}.Debug|Win32.ActiveCfg = Debug|Win32
+      {DBE97348-A3A9-44CA-B3BE-44F8A4D479DD}.Debug|Win32.Build.0 = Debug|Win32
+      {DBE97348-A3A9-44CA-B3BE-44F8A4D479DD}.Release|Win32.ActiveCfg = Release|Win32
+      {DBE97348-A3A9-44CA-B3BE-44F8A4D479DD}.Release|Win32.Build.0 = Release|Win32
+      {DBE97348-A3A9-44CA-B3BE-44F8A4D479DD}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
+      {DBE97348-A3A9-44CA-B3BE-44F8A4D479DD}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32
+      {DBE97348-A3A9-44CA-B3BE-44F8A4D479DD}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32
+      {DBE97348-A3A9-44CA-B3BE-44F8A4D479DD}.Unicode Release|Win32.Build.0 = Unicode Release|Win32
+      {54639816-FC30-4351-BE6C-794ADD3C04DC}.Debug|Win32.ActiveCfg = Debug|Win32
+      {54639816-FC30-4351-BE6C-794ADD3C04DC}.Debug|Win32.Build.0 = Debug|Win32
+      {54639816-FC30-4351-BE6C-794ADD3C04DC}.Release|Win32.ActiveCfg = Release|Win32
+      {54639816-FC30-4351-BE6C-794ADD3C04DC}.Release|Win32.Build.0 = Release|Win32
+      {54639816-FC30-4351-BE6C-794ADD3C04DC}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32
+      {54639816-FC30-4351-BE6C-794ADD3C04DC}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32
+      {54639816-FC30-4351-BE6C-794ADD3C04DC}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32
+      {54639816-FC30-4351-BE6C-794ADD3C04DC}.Unicode Release|Win32.Build.0 = Unicode Release|Win32
+   EndGlobalSection
+   GlobalSection(SolutionProperties) = preSolution
+      HideSolutionNode = FALSE
+   EndGlobalSection
+EndGlobal
Index: ImageMagickObject.vcproj
===================================================================
--- ImageMagickObject.vcproj   (revision 0)
+++ ImageMagickObject.vcproj   (revision 0)
@@ -0,0 +1,571 @@
+<?xml version="1.0" encoding="windows-1250"?>
+<VisualStudioProject
+   ProjectType="Visual C++"
+   Version="8,00"
+   Name="ImageMagickObject"
+   ProjectGUID="{DBE97348-A3A9-44CA-B3BE-44F8A4D479DD}"
+   RootNamespace="ImageMagickObject"
+   Keyword="AtlProj"
+   >
+   <Platforms>
+      <Platform
+         Name="Win32"
+      />
+   </Platforms>
+   <ToolFiles>
+   </ToolFiles>
+   <Configurations>
+      <Configuration
+         Name="Debug|Win32"
+         OutputDirectory="$(SolutionDir)bin\$(ConfigurationName)"
+         IntermediateDirectory="$(ConfigurationName)\$(ProjectName)"
+         ConfigurationType="2"
+         InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
+         UseOfMFC="0"
+         UseOfATL="2"
+         ATLMinimizesCRunTimeLibraryUsage="false"
+         CharacterSet="2"
+         >
+         <Tool
+            Name="VCPreBuildEventTool"
+         />
+         <Tool
+            Name="VCCustomBuildTool"
+            Description=""
+            CommandLine=""
+            Outputs=""
+         />
+         <Tool
+            Name="VCXMLDataGeneratorTool"
+         />
+         <Tool
+            Name="VCWebServiceProxyGeneratorTool"
+         />
+         <Tool
+            Name="VCMIDLTool"
+            TypeLibraryName=".\Debug/ImageMagickObject.tlb"
+            HeaderFileName=""
+         />
+         <Tool
+            Name="VCCLCompilerTool"
+            Optimization="0"
+            AdditionalIncludeDirectories="..\..\..\..,..\..\..\..\magick,..\..\..\..\xlib"
+            PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;_USRDLL;_VISUALC_;NeedFunctionPrototypes;_LIB"
+            StringPooling="true"
+            MinimalRebuild="true"
+            BasicRuntimeChecks="3"
+            RuntimeLibrary="3"
+            EnableFunctionLevelLinking="true"
+            UsePrecompiledHeader="0"
+            PrecompiledHeaderThrough=""
+            PrecompiledHeaderFile=""
+            AssemblerListingLocation=""
+            ObjectFile="$(IntDir)\"
+            ProgramDataBaseFileName="$(IntDir)\vc80.pdb"
+            WarningLevel="3"
+            SuppressStartupBanner="true"
+            DebugInformationFormat="3"
+         />
+         <Tool
+            Name="VCManagedResourceCompilerTool"
+         />
+         <Tool
+            Name="VCResourceCompilerTool"
+            PreprocessorDefinitions="_DEBUG"
+            Culture="1033"
+         />
+         <Tool
+            Name="VCPreLinkEventTool"
+         />
+         <Tool
+            Name="VCLinkerTool"
+            RegisterOutput="true"
+            AdditionalDependencies="..\..\..\..\VisualMagick\lib\CORE_DB_*.lib ..\..\..\..\VisualMagick\lib\IM_MOD_DB_*.lib odbc32.lib odbccp32.lib winmm.lib wsock32.lib comsvcs.lib"
+            OutputFile="$(OutDir)/ImageMagickObject.dll"
+            LinkIncremental="2"
+            SuppressStartupBanner="true"
+            AdditionalLibraryDirectories="..\..\..\..\VisualMagick\lib"
+            ModuleDefinitionFile=""
+            MergedIDLBaseFileName="$(IntDir)\ImageMagickObject.idl"
+            GenerateDebugInformation="true"
+            ProgramDatabaseFile="$(OutDir)/ImageMagickObject.pdb"
+            SubSystem="2"
+            ImportLibrary="$(OutDir)/ImageMagickObject.lib"
+            TargetMachine="1"
+         />
+         <Tool
+            Name="VCALinkTool"
+         />
+         <Tool
+            Name="VCManifestTool"
+         />
+         <Tool
+            Name="VCXDCMakeTool"
+         />
+         <Tool
+            Name="VCBscMakeTool"
+            SuppressStartupBanner="true"
+            OutputFile=".\Debug/ImageMagickObject.bsc"
+         />
+         <Tool
+            Name="VCFxCopTool"
+         />
+         <Tool
+            Name="VCAppVerifierTool"
+         />
+         <Tool
+            Name="VCWebDeploymentTool"
+         />
+         <Tool
+            Name="VCPostBuildEventTool"
+         />
+      </Configuration>
+      <Configuration
+         Name="Release|Win32"
+         OutputDirectory="$(SolutionDir)bin\$(ConfigurationName)"
+         IntermediateDirectory="$(ConfigurationName)\$(ProjectName)"
+         ConfigurationType="2"
+         InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
+         UseOfMFC="0"
+         UseOfATL="1"
+         ATLMinimizesCRunTimeLibraryUsage="true"
+         CharacterSet="2"
+         WholeProgramOptimization="1"
+         >
+         <Tool
+            Name="VCPreBuildEventTool"
+         />
+         <Tool
+            Name="VCCustomBuildTool"
+            Description=""
+            CommandLine=""
+            Outputs=""
+         />
+         <Tool
+            Name="VCXMLDataGeneratorTool"
+         />
+         <Tool
+            Name="VCWebServiceProxyGeneratorTool"
+         />
+         <Tool
+            Name="VCMIDLTool"
+            TypeLibraryName=".\ReleaseMinDependency/ImageMagickObject.tlb"
+            HeaderFileName=""
+         />
+         <Tool
+            Name="VCCLCompilerTool"
+            Optimization="2"
+            InlineFunctionExpansion="2"
+            FavorSizeOrSpeed="1"
+            AdditionalIncludeDirectories="..\..\..\..,..\..\..\..\magick,..\..\..\..\xlib"
+            PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;_USRDLL;_VISUALC_;NeedFunctionPrototypes;_LIB"
+            StringPooling="true"
+            RuntimeLibrary="0"
+            EnableFunctionLevelLinking="true"
+            UsePrecompiledHeader="0"
+            PrecompiledHeaderThrough=""
+            PrecompiledHeaderFile=""
+            AssemblerListingLocation=""
+            ObjectFile="$(IntDir)\"
+            ProgramDataBaseFileName="$(IntDir)\vc80.pdb"
+            WarningLevel="3"
+            SuppressStartupBanner="true"
+         />
+         <Tool
+            Name="VCManagedResourceCompilerTool"
+         />
+         <Tool
+            Name="VCResourceCompilerTool"
+            PreprocessorDefinitions="NDEBUG"
+            Culture="1033"
+         />
+         <Tool
+            Name="VCPreLinkEventTool"
+         />
+         <Tool
+            Name="VCLinkerTool"
+            RegisterOutput="true"
+            AdditionalDependencies="..\..\..\..\VisualMagick\lib\CORE_DB_*.lib ..\..\..\..\VisualMagick\lib\IM_MOD_DB_*.lib odbc32.lib odbccp32.lib winmm.lib wsock32.lib comsvcs.lib"
+            OutputFile="$(OutDir)/ImageMagickObject.dll"
+            LinkIncremental="1"
+            SuppressStartupBanner="true"
+            AdditionalLibraryDirectories="..\..\..\..\VisualMagick\lib"
+            ModuleDefinitionFile=""
+            MergedIDLBaseFileName="$(IntDir)\ImageMagickObject.idl"
+            ProgramDatabaseFile="$(OutDir)/ImageMagickObject.pdb"
+            SubSystem="2"
+            OptimizeReferences="2"
+            EnableCOMDATFolding="2"
+            SetChecksum="true"
+            ImportLibrary="$(OutDir)/ImageMagickObject.lib"
+         />
+         <Tool
+            Name="VCALinkTool"
+         />
+         <Tool
+            Name="VCManifestTool"
+         />
+         <Tool
+            Name="VCXDCMakeTool"
+         />
+         <Tool
+            Name="VCBscMakeTool"
+            SuppressStartupBanner="true"
+            OutputFile=".\ReleaseMinDependency/ImageMagickObject.bsc"
+         />
+         <Tool
+            Name="VCFxCopTool"
+         />
+         <Tool
+            Name="VCAppVerifierTool"
+         />
+         <Tool
+            Name="VCWebDeploymentTool"
+         />
+         <Tool
+            Name="VCPostBuildEventTool"
+         />
+      </Configuration>
+      <Configuration
+         Name="Unicode Debug|Win32"
+         OutputDirectory="$(SolutionDir)bin\$(ConfigurationName)"
+         IntermediateDirectory="$(ConfigurationName)\$(ProjectName)"
+         ConfigurationType="2"
+         InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
+         UseOfMFC="0"
+         UseOfATL="2"
+         ATLMinimizesCRunTimeLibraryUsage="false"
+         CharacterSet="1"
+         >
+         <Tool
+            Name="VCPreBuildEventTool"
+         />
+         <Tool
+            Name="VCCustomBuildTool"
+            Description=""
+            CommandLine=""
+            Outputs=""
+         />
+         <Tool
+            Name="VCXMLDataGeneratorTool"
+         />
+         <Tool
+            Name="VCWebServiceProxyGeneratorTool"
+         />
+         <Tool
+            Name="VCMIDLTool"
+            TypeLibraryName=".\DebugU/ImageMagickObject.tlb"
+            HeaderFileName=""
+         />
+         <Tool
+            Name="VCCLCompilerTool"
+            Optimization="0"
+            AdditionalIncludeDirectories="..\..\..\..,..\..\..\..\magick,..\..\..\..\xlib"
+            PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;_USRDLL;_VISUALC_;NeedFunctionPrototypes;_LIB"
+            MinimalRebuild="true"
+            BasicRuntimeChecks="3"
+            RuntimeLibrary="1"
+            UsePrecompiledHeader="0"
+            PrecompiledHeaderThrough=""
+            PrecompiledHeaderFile=""
+            AssemblerListingLocation=""
+            ObjectFile="$(IntDir)\"
+            ProgramDataBaseFileName="$(IntDir)\vc80.pdb"
+            WarningLevel="3"
+            SuppressStartupBanner="true"
+            DebugInformationFormat="4"
+         />
+         <Tool
+            Name="VCManagedResourceCompilerTool"
+         />
+         <Tool
+            Name="VCResourceCompilerTool"
+            PreprocessorDefinitions="_DEBUG"
+            Culture="1033"
+         />
+         <Tool
+            Name="VCPreLinkEventTool"
+         />
+         <Tool
+            Name="VCLinkerTool"
+            RegisterOutput="true"
+            AdditionalDependencies="..\..\..\..\VisualMagick\lib\CORE_DB_*.lib ..\..\..\..\VisualMagick\lib\IM_MOD_DB_*.lib odbc32.lib odbccp32.lib winmm.lib wsock32.lib comsvcs.lib"
+            OutputFile="$(OutDir)/ImageMagickObject.dll"
+            LinkIncremental="2"
+            SuppressStartupBanner="true"
+            AdditionalLibraryDirectories="..\..\..\..\VisualMagick\lib"
+            ModuleDefinitionFile=""
+            MergedIDLBaseFileName="$(IntDir)\ImageMagickObject.idl"
+            GenerateDebugInformation="true"
+            ProgramDatabaseFile="$(OutDir)/ImageMagickObject.pdb"
+            SubSystem="2"
+            ImportLibrary="$(OutDir)/ImageMagickObject.lib"
+            TargetMachine="1"
+         />
+         <Tool
+            Name="VCALinkTool"
+         />
+         <Tool
+            Name="VCManifestTool"
+         />
+         <Tool
+            Name="VCXDCMakeTool"
+         />
+         <Tool
+            Name="VCBscMakeTool"
+            SuppressStartupBanner="true"
+            OutputFile=".\DebugU/ImageMagickObject.bsc"
+         />
+         <Tool
+            Name="VCFxCopTool"
+         />
+         <Tool
+            Name="VCAppVerifierTool"
+         />
+         <Tool
+            Name="VCWebDeploymentTool"
+         />
+         <Tool
+            Name="VCPostBuildEventTool"
+         />
+      </Configuration>
+      <Configuration
+         Name="Unicode Release|Win32"
+         OutputDirectory="$(SolutionDir)bin\$(ConfigurationName)"
+         IntermediateDirectory="$(ConfigurationName)\$(ProjectName)"
+         ConfigurationType="2"
+         InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
+         UseOfMFC="0"
+         UseOfATL="1"
+         ATLMinimizesCRunTimeLibraryUsage="true"
+         CharacterSet="1"
+         WholeProgramOptimization="1"
+         >
+         <Tool
+            Name="VCPreBuildEventTool"
+         />
+         <Tool
+            Name="VCCustomBuildTool"
+            Description=""
+            CommandLine=""
+            Outputs=""
+         />
+         <Tool
+            Name="VCXMLDataGeneratorTool"
+         />
+         <Tool
+            Name="VCWebServiceProxyGeneratorTool"
+         />
+         <Tool
+            Name="VCMIDLTool"
+            TypeLibraryName=".\ReleaseUMinDependency/ImageMagickObject.tlb"
+            HeaderFileName=""
+         />
+         <Tool
+            Name="VCCLCompilerTool"
+            Optimization="2"
+            InlineFunctionExpansion="2"
+            FavorSizeOrSpeed="1"
+            AdditionalIncludeDirectories="..\..\..\..,..\..\..\..\magick,..\..\..\..\xlib"
+            PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;_USRDLL;_VISUALC_;NeedFunctionPrototypes;_ATL_DLL;_LIB"
+            StringPooling="true"
+            RuntimeLibrary="0"
+            EnableFunctionLevelLinking="true"
+            UsePrecompiledHeader="0"
+            PrecompiledHeaderThrough=""
+            PrecompiledHeaderFile=""
+            AssemblerListingLocation=""
+            ObjectFile="$(IntDir)\"
+            ProgramDataBaseFileName="$(IntDir)\vc80.pdb"
+            WarningLevel="3"
+            SuppressStartupBanner="true"
+         />
+         <Tool
+            Name="VCManagedResourceCompilerTool"
+         />
+         <Tool
+            Name="VCResourceCompilerTool"
+            PreprocessorDefinitions="NDEBUG"
+            Culture="1033"
+         />
+         <Tool
+            Name="VCPreLinkEventTool"
+         />
+         <Tool
+            Name="VCLinkerTool"
+            RegisterOutput="true"
+            AdditionalDependencies="..\..\..\..\VisualMagick\lib\CORE_DB_*.lib ..\..\..\..\VisualMagick\lib\IM_MOD_DB_*.lib odbc32.lib odbccp32.lib winmm.lib wsock32.lib comsvcs.lib"
+            OutputFile="$(OutDir)/ImageMagickObject.dll"
+            LinkIncremental="1"
+            SuppressStartupBanner="true"
+            AdditionalLibraryDirectories="..\..\..\..\VisualMagick\lib"
+            ModuleDefinitionFile=""
+            MergedIDLBaseFileName="$(IntDir)\ImageMagickObject.idl"
+            ProgramDatabaseFile="$(OutDir)/ImageMagickObject.pdb"
+            SubSystem="2"
+            OptimizeReferences="2"
+            EnableCOMDATFolding="2"
+            SetChecksum="true"
+            ImportLibrary="$(OutDir)/ImageMagickObject.lib"
+            TargetMachine="1"
+         />
+         <Tool
+            Name="VCALinkTool"
+         />
+         <Tool
+            Name="VCManifestTool"
+         />
+         <Tool
+            Name="VCXDCMakeTool"
+         />
+         <Tool
+            Name="VCBscMakeTool"
+            SuppressStartupBanner="true"
+            OutputFile=".\ReleaseUMinDependency/ImageMagickObject.bsc"
+         />
+         <Tool
+            Name="VCFxCopTool"
+         />
+         <Tool
+            Name="VCAppVerifierTool"
+         />
+         <Tool
+            Name="VCWebDeploymentTool"
+         />
+         <Tool
+            Name="VCPostBuildEventTool"
+         />
+      </Configuration>
+   </Configurations>
+   <References>
+   </References>
+   <Files>
+      <Filter
+         Name="Source Files"
+         Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+         >
+         <File
+            RelativePath="ImageMagickObject.cpp"
+            >
+            <FileConfiguration
+               Name="Debug|Win32"
+               >
+               <Tool
+                  Name="VCCLCompilerTool"
+                  AdditionalIncludeDirectories=""
+                  PreprocessorDefinitions=""
+               />
+            </FileConfiguration>
+            <FileConfiguration
+               Name="Release|Win32"
+               >
+               <Tool
+                  Name="VCCLCompilerTool"
+                  AdditionalIncludeDirectories=""
+                  PreprocessorDefinitions=""
+               />
+            </FileConfiguration>
+            <FileConfiguration
+               Name="Unicode Debug|Win32"
+               >
+               <Tool
+                  Name="VCCLCompilerTool"
+                  AdditionalIncludeDirectories=""
+                  PreprocessorDefinitions=""
+               />
+            </FileConfiguration>
+            <FileConfiguration
+               Name="Unicode Release|Win32"
+               >
+               <Tool
+                  Name="VCCLCompilerTool"
+                  AdditionalIncludeDirectories=""
+                  PreprocessorDefinitions="_ATL_MIN_CRT"
+               />
+            </FileConfiguration>
+         </File>
+         <File
+            RelativePath="ImageMagickObject.rc"
+            >
+            <FileConfiguration
+               Name="Debug|Win32"
+               >
+               <Tool
+                  Name="VCResourceCompilerTool"
+                  PreprocessorDefinitions=""
+                  AdditionalIncludeDirectories="$(OUTDIR)"
+               />
+            </FileConfiguration>
+            <FileConfiguration
+               Name="Release|Win32"
+               >
+               <Tool
+                  Name="VCResourceCompilerTool"
+                  PreprocessorDefinitions=""
+                  AdditionalIncludeDirectories="$(OUTDIR)"
+               />
+            </FileConfiguration>
+            <FileConfiguration
+               Name="Unicode Debug|Win32"
+               >
+               <Tool
+                  Name="VCResourceCompilerTool"
+                  PreprocessorDefinitions=""
+                  AdditionalIncludeDirectories="$(OUTDIR)"
+               />
+            </FileConfiguration>
+            <FileConfiguration
+               Name="Unicode Release|Win32"
+               >
+               <Tool
+                  Name="VCResourceCompilerTool"
+                  PreprocessorDefinitions=""
+                  AdditionalIncludeDirectories="$(OUTDIR)"
+               />
+            </FileConfiguration>
+         </File>
+      </Filter>
+      <Filter
+         Name="Generated files"
+         >
+         <File
+            RelativePath=".\ImageMagickObject.idl"
+            >
+            <FileConfiguration
+               Name="Debug|Win32"
+               ExcludedFromBuild="true"
+               >
+               <Tool
+                  Name="VCMIDLTool"
+               />
+            </FileConfiguration>
+            <FileConfiguration
+               Name="Release|Win32"
+               ExcludedFromBuild="true"
+               >
+               <Tool
+                  Name="VCMIDLTool"
+               />
+            </FileConfiguration>
+            <FileConfiguration
+               Name="Unicode Debug|Win32"
+               ExcludedFromBuild="true"
+               >
+               <Tool
+                  Name="VCMIDLTool"
+               />
+            </FileConfiguration>
+            <FileConfiguration
+               Name="Unicode Release|Win32"
+               ExcludedFromBuild="true"
+               >
+               <Tool
+                  Name="VCMIDLTool"
+               />
+            </FileConfiguration>
+         </File>
+      </Filter>
+   </Files>
+   <Globals>
+   </Globals>
+</VisualStudioProject>
Index: MagickCMD.cpp
===================================================================
--- MagickCMD.cpp   (revision 7)
+++ MagickCMD.cpp   (working copy)
@@ -1,3 +1,7 @@
+/*
+   MagickCMD.cpp
+*/
+
 #include <iostream>
 #include <atlbase.h>
 #include <atlsafe.h>
@@ -2,3 +6,2 @@
 #import "ImageMagickObject.tlb" no_namespace
-using namespace std;
 
@@ -19,31 +22,28 @@
 static struct
   Commands
   {
-    char
-      *name;
-
-    CommandType
-      code;
+    LPCTSTR name;
+    CommandType code;
   } Commands[] =
   {
-    { "",          cmdUnknown   },
-    { "compare",   cmdCompare   },
-    { "composite", cmdComposite },
-    { "convert",   cmdConvert   },
-    { "identify",  cmdIdentify  },
-    { "mogrify",   cmdMogrify   },
-    { "montage",   cmdMontage   },
-    { "stream",    cmdStream   }
+    { _T(""),          cmdUnknown   },
+    { _T("compare"),   cmdCompare   },
+    { _T("composite"), cmdComposite },
+    { _T("convert"),   cmdConvert   },
+    { _T("identify"),  cmdIdentify  },
+    { _T("mogrify"),   cmdMogrify   },
+    { _T("montage"),   cmdMontage   },
+    { _T("stream"),    cmdStream   }
   };
 
-int main(int argc, char* argv[])
+int _tmain(int argc, TCHAR* argv[])
 {
   int
     index,
     status = 0;
 
-  char
-    *name;
+  LPCTSTR
+    name;
 
   CommandType
     code = cmdUnknown;
@@ -55,7 +55,7 @@
   index = 1;
   while ((name = Commands[index].name))
   {
-    if (stricmp(name,argv[1]) == 0)
+    if (_tcsicmp(name,argv[1]) == 0)
     {
       code = Commands[index].code;
       break;
@@ -77,7 +77,9 @@
 
     IMagickImagePtr pImageProc(__uuidof(MagickImage));
     if (pImageProc == NULL)
+    {
       status = 1;
+    }
     else
     {
       {
@@ -95,6 +97,7 @@
             CComVariant vt(argv[index]);
             HRESULT hr = vt.Detach(&args[index-2]);
           }
+         
           switch(code)
           {
             case cmdCompare:
@@ -126,13 +129,9 @@
   }
   catch(_com_error ex)
   {
-    HRESULT
-      res = ex.Error(); 
-
-    _bstr_t
-      desc = ex.Description(); 
-
-    printf("Error %s (0x%08x)\n",(char *)desc,res);
+    HRESULT res = ex.Error(); 
+    _bstr_t desc = ex.Description(); 
+    _ftprintf( stderr, _T("Error %ws (0x%08x)\n"), (wchar_t*)desc , res );
     status = 4;
   }
 
Index: MagickCMD.vcproj
===================================================================
--- MagickCMD.vcproj   (revision 0)
+++ MagickCMD.vcproj   (revision 0)
@@ -0,0 +1,345 @@
+<?xml version="1.0" encoding="windows-1250"?>
+<VisualStudioProject
+   ProjectType="Visual C++"
+   Version="8,00"
+   Name="MagickCMD"
+   ProjectGUID="{54639816-FC30-4351-BE6C-794ADD3C04DC}"
+   RootNamespace="MagickCMD"
+   Keyword="Win32Proj"
+   >
+   <Platforms>
+      <Platform
+         Name="Win32"
+      />
+   </Platforms>
+   <ToolFiles>
+   </ToolFiles>
+   <Configurations>
+      <Configuration
+         Name="Debug|Win32"
+         OutputDirectory="$(SolutionDir)bin\$(ConfigurationName)"
+         IntermediateDirectory="$(ConfigurationName)\$(ProjectName)"
+         ConfigurationType="1"
+         CharacterSet="2"
+         >
+         <Tool
+            Name="VCPreBuildEventTool"
+         />
+         <Tool
+            Name="VCCustomBuildTool"
+         />
+         <Tool
+            Name="VCXMLDataGeneratorTool"
+         />
+         <Tool
+            Name="VCWebServiceProxyGeneratorTool"
+         />
+         <Tool
+            Name="VCMIDLTool"
+         />
+         <Tool
+            Name="VCCLCompilerTool"
+            Optimization="0"
+            PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+            MinimalRebuild="true"
+            BasicRuntimeChecks="3"
+            RuntimeLibrary="3"
+            UsePrecompiledHeader="0"
+            WarningLevel="3"
+            Detect64BitPortabilityProblems="true"
+            DebugInformationFormat="4"
+         />
+         <Tool
+            Name="VCManagedResourceCompilerTool"
+         />
+         <Tool
+            Name="VCResourceCompilerTool"
+         />
+         <Tool
+            Name="VCPreLinkEventTool"
+         />
+         <Tool
+            Name="VCLinkerTool"
+            LinkIncremental="2"
+            GenerateDebugInformation="true"
+            SubSystem="1"
+            TargetMachine="1"
+         />
+         <Tool
+            Name="VCALinkTool"
+         />
+         <Tool
+            Name="VCManifestTool"
+         />
+         <Tool
+            Name="VCXDCMakeTool"
+         />
+         <Tool
+            Name="VCBscMakeTool"
+         />
+         <Tool
+            Name="VCFxCopTool"
+         />
+         <Tool
+            Name="VCAppVerifierTool"
+         />
+         <Tool
+            Name="VCWebDeploymentTool"
+         />
+         <Tool
+            Name="VCPostBuildEventTool"
+         />
+      </Configuration>
+      <Configuration
+         Name="Release|Win32"
+         OutputDirectory="$(SolutionDir)bin\$(ConfigurationName)"
+         IntermediateDirectory="$(ConfigurationName)\$(ProjectName)"
+         ConfigurationType="1"
+         CharacterSet="2"
+         WholeProgramOptimization="1"
+         >
+         <Tool
+            Name="VCPreBuildEventTool"
+         />
+         <Tool
+            Name="VCCustomBuildTool"
+         />
+         <Tool
+            Name="VCXMLDataGeneratorTool"
+         />
+         <Tool
+            Name="VCWebServiceProxyGeneratorTool"
+         />
+         <Tool
+            Name="VCMIDLTool"
+         />
+         <Tool
+            Name="VCCLCompilerTool"
+            Optimization="3"
+            InlineFunctionExpansion="2"
+            EnableIntrinsicFunctions="true"
+            FavorSizeOrSpeed="2"
+            PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+            RuntimeLibrary="0"
+            UsePrecompiledHeader="0"
+            WarningLevel="3"
+            Detect64BitPortabilityProblems="true"
+            DebugInformationFormat="3"
+         />
+         <Tool
+            Name="VCManagedResourceCompilerTool"
+         />
+         <Tool
+            Name="VCResourceCompilerTool"
+         />
+         <Tool
+            Name="VCPreLinkEventTool"
+         />
+         <Tool
+            Name="VCLinkerTool"
+            LinkIncremental="1"
+            GenerateDebugInformation="false"
+            SubSystem="1"
+            OptimizeReferences="2"
+            EnableCOMDATFolding="2"
+            SetChecksum="true"
+            TargetMachine="1"
+         />
+         <Tool
+            Name="VCALinkTool"
+         />
+         <Tool
+            Name="VCManifestTool"
+         />
+         <Tool
+            Name="VCXDCMakeTool"
+         />
+         <Tool
+            Name="VCBscMakeTool"
+         />
+         <Tool
+            Name="VCFxCopTool"
+         />
+         <Tool
+            Name="VCAppVerifierTool"
+         />
+         <Tool
+            Name="VCWebDeploymentTool"
+         />
+         <Tool
+            Name="VCPostBuildEventTool"
+         />
+      </Configuration>
+      <Configuration
+         Name="Unicode Debug|Win32"
+         OutputDirectory="$(SolutionDir)bin\$(ConfigurationName)"
+         IntermediateDirectory="$(ConfigurationName)\$(ProjectName)"
+         ConfigurationType="1"
+         CharacterSet="1"
+         >
+         <Tool
+            Name="VCPreBuildEventTool"
+         />
+         <Tool
+            Name="VCCustomBuildTool"
+         />
+         <Tool
+            Name="VCXMLDataGeneratorTool"
+         />
+         <Tool
+            Name="VCWebServiceProxyGeneratorTool"
+         />
+         <Tool
+            Name="VCMIDLTool"
+         />
+         <Tool
+            Name="VCCLCompilerTool"
+            Optimization="0"
+            PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+            MinimalRebuild="true"
+            BasicRuntimeChecks="3"
+            RuntimeLibrary="3"
+            UsePrecompiledHeader="0"
+            WarningLevel="3"
+            Detect64BitPortabilityProblems="true"
+            DebugInformationFormat="4"
+         />
+         <Tool
+            Name="VCManagedResourceCompilerTool"
+         />
+         <Tool
+            Name="VCResourceCompilerTool"
+         />
+         <Tool
+            Name="VCPreLinkEventTool"
+         />
+         <Tool
+            Name="VCLinkerTool"
+            LinkIncremental="2"
+            GenerateDebugInformation="true"
+            SubSystem="1"
+            TargetMachine="1"
+         />
+         <Tool
+            Name="VCALinkTool"
+         />
+         <Tool
+            Name="VCManifestTool"
+         />
+         <Tool
+            Name="VCXDCMakeTool"
+         />
+         <Tool
+            Name="VCBscMakeTool"
+         />
+         <Tool
+            Name="VCFxCopTool"
+         />
+         <Tool
+            Name="VCAppVerifierTool"
+         />
+         <Tool
+            Name="VCWebDeploymentTool"
+         />
+         <Tool
+            Name="VCPostBuildEventTool"
+         />
+      </Configuration>
+      <Configuration
+         Name="Unicode Release|Win32"
+         OutputDirectory="$(SolutionDir)bin\$(ConfigurationName)"
+         IntermediateDirectory="$(ConfigurationName)\$(ProjectName)"
+         ConfigurationType="1"
+         CharacterSet="1"
+         WholeProgramOptimization="1"
+         >
+         <Tool
+            Name="VCPreBuildEventTool"
+         />
+         <Tool
+            Name="VCCustomBuildTool"
+         />
+         <Tool
+            Name="VCXMLDataGeneratorTool"
+         />
+         <Tool
+            Name="VCWebServiceProxyGeneratorTool"
+         />
+         <Tool
+            Name="VCMIDLTool"
+         />
+         <Tool
+            Name="VCCLCompilerTool"
+            Optimization="3"
+            InlineFunctionExpansion="2"
+            EnableIntrinsicFunctions="true"
+            FavorSizeOrSpeed="2"
+            PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+            RuntimeLibrary="0"
+            UsePrecompiledHeader="0"
+            WarningLevel="3"
+            Detect64BitPortabilityProblems="true"
+            DebugInformationFormat="3"
+         />
+         <Tool
+            Name="VCManagedResourceCompilerTool"
+         />
+         <Tool
+            Name="VCResourceCompilerTool"
+         />
+         <Tool
+            Name="VCPreLinkEventTool"
+         />
+         <Tool
+            Name="VCLinkerTool"
+            LinkIncremental="1"
+            GenerateDebugInformation="false"
+            SubSystem="1"
+            OptimizeReferences="2"
+            EnableCOMDATFolding="2"
+            SetChecksum="true"
+            TargetMachine="1"
+         />
+         <Tool
+            Name="VCALinkTool"
+         />
+         <Tool
+            Name="VCManifestTool"
+         />
+         <Tool
+            Name="VCXDCMakeTool"
+         />
+         <Tool
+            Name="VCBscMakeTool"
+         />
+         <Tool
+            Name="VCFxCopTool"
+         />
+         <Tool
+            Name="VCAppVerifierTool"
+         />
+         <Tool
+            Name="VCWebDeploymentTool"
+         />
+         <Tool
+            Name="VCPostBuildEventTool"
+         />
+      </Configuration>
+   </Configurations>
+   <References>
+   </References>
+   <Files>
+      <Filter
+         Name="Source Files"
+         Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+         UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+         >
+         <File
+            RelativePath=".\MagickCMD.cpp"
+            >
+         </File>
+      </Filter>
+   </Files>
+   <Globals>
+   </Globals>
+</VisualStudioProject>

User avatar
magick
Site Admin
Posts: 9745
Joined: 2003-05-31T11:32:55-07:00
Contact:

Re: ImageMagicObject - non-ASCII characters

Postby magick » 2009-02-23T16:07:38-07:00

We added your patch to the Subversion repository. We will report any compile / use problems in the next few days.


Return to “Bugs”

Who is online

Users browsing this forum: No registered users and 7 guests