From raosanath at helixcommunity.org  Tue Sep  1 00:42:36 2009
From: raosanath at helixcommunity.org (raosanath@helixcommunity.org)
Date: Tue Sep  1 09:48:04 2009
Subject: [Common-cvs] netio/platform/symbian hxsymbianresolver.cpp, 1.1,
	1.1.14.1
Message-ID: 

Update of /cvsroot/common/netio/platform/symbian
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv22560

Modified Files:
      Tag: hxclient_2_2_3_cayennes
	hxsymbianresolver.cpp 
Log Message:
Modified by: sanath.rao@sonyericsson.com
Date: <08:27:09>
Project: 
Bug Number: 9452

Bug URL:  https://bugs.helixcommunity.org/show_bug.cgi?id=9452


Synopsis: 9452 - Helix passing a stack based descriptor into an asynchronous IPC call.

Overview: Bug Description in above links contains, detail description of the problem and the reason why fixes were done.

Files Added:
None


Files Modified:
\helix\source\common\netio\platform\symbian\hxsymbianresolver.cpp

Image Size and Heap Use impact (Client -Only):
N/A

Platforms and Profiles Affected:
BIF branch (hxclient_2_2_3_cayennes)
Target(s) (symbianMmf_wm)
Profile (helix-client-s60-50-mmf-mdf-dsp)
Platform (S60 5.0/ARMV5)

Distribution Libraries Affected:
netiolib.lib

Distribution library impact and planned action:
N/A

Platforms and Profiles Build Verified:
BIF branch (hxclient_2_2_3_cayennes)
Target(s) (symbianMmf_wm)
Profile (helix-client-s60-50-mmf-mdf-dsp)
Platform (S60 5.0/ARMV5)


Platforms and Profiles Functionality verified:
BIF branch (hxclient_2_2_3_cayennes)(hxclient_2_1_0_cayennes)(HEAD)
Target(s) (symbianMmf_wm)
Profile (helix-client-s60-50-mmf-mdf-dsp)
Platform (S60 5.0/ARMV5)

Branch: hxclient_2_2_3_cayennes

Copyright assignment: 
   


   3.      My company (Sony Ericsson Mobile Communication) submits this code under the terms
           of a commercial contribution agreement with RealNetworks,
           and I am authorized to contribute this code under said agreement. 

QA Instructions:
N/A







Index: hxsymbianresolver.cpp
===================================================================
RCS file: /cvsroot/common/netio/platform/symbian/hxsymbianresolver.cpp,v
retrieving revision 1.1
retrieving revision 1.1.14.1
diff -u -d -r1.1 -r1.1.14.1
--- hxsymbianresolver.cpp	29 Sep 2005 21:02:47 -0000	1.1
+++ hxsymbianresolver.cpp	1 Sep 2009 08:42:33 -0000	1.1.14.1
@@ -1,7 +1,7 @@
 /* ***** BEGIN LICENSE BLOCK *****
- * 
+ *
  * Portions Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.
- * 
+ *
  * The contents of this file, and the files included with this file,
  * are subject to the current version of the RealNetworks Public
  * Source License (the "RPSL") available at
@@ -15,7 +15,7 @@
  * to this file, the RCSL.  Please see the applicable RPSL or RCSL for
  * the rights, obligations and limitations governing use of the
  * contents of the file.
- * 
+ *
  * Alternatively, the contents of this file may be used under the
  * terms of the GNU General Public License Version 2 or later (the
  * "GPL") in which case the provisions of the GPL are applicable
@@ -27,23 +27,23 @@
  * the GPL. If you do not delete the provisions above, a recipient may
  * use your version of this file under the terms of any one of the
  * RPSL, the RCSL or the GPL.
- * 
+ *
  * This file is part of the Helix DNA Technology. RealNetworks is the
  * developer of the Original Code and owns the copyrights in the
  * portions it created.
- * 
+ *
  * This file, and the files included with this file, is distributed
  * and made available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY
  * KIND, EITHER EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS
  * ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES
  * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET
  * ENJOYMENT OR NON-INFRINGEMENT.
- * 
+ *
  * Technology Compatibility Kit Test Suite(s) Location:
  *    http://www.helixcommunity.org/content/tck
- * 
+ *
  * Contributor(s):
- * 
+ *
  * ***** END LICENSE BLOCK ***** */
 
 #include "hxcom.h"
@@ -197,7 +197,7 @@
     else
     {
         m_pRequest->m_pNode  = node;
-        m_pRequest->m_uPort  = port;		
+        m_pRequest->m_uPort  = port;
     }
 
     m_type = EResolvingByName;
@@ -257,8 +257,8 @@
             // XXXAG better to include in com i/f
             if(m_resolver.Open( ((HXSymbianAccessPointManager*)m_pAPManager)->
                                 GetRSocketServ(),
-                                KAfInet, 
-                                KProtocolInetUdp, 
+                                KAfInet,
+                                KProtocolInetUdp,
                                 ((HXSymbianAccessPointManager*)m_pAPManager)->
                                 GetRConnection()) == KErrNone)
             {
@@ -315,10 +315,10 @@
             }
             else
             {
-               status = hxr; 
+               status = hxr;
             }
         }
-        m_pResponse->GetAddrInfoDone(status, 1, &addr);		
+        m_pResponse->GetAddrInfoDone(status, 1, &addr);
         HX_RELEASE(addr);
         HX_DELETE(m_pRequest);
     }
@@ -342,9 +342,9 @@
                 status = HXR_OUTOFMEMORY;
             }
         }
-        m_pResponse->GetNameInfoDone(status, 
-                                    (const char *)hostStr, 
-                                    (const char *)portStr); 
+        m_pResponse->GetNameInfoDone(status,
+                                    (const char *)hostStr,
+                                    (const char *)portStr);
         delete hostName;
         HX_DELETE(m_pRequest);
     }
@@ -382,12 +382,12 @@
     // do nothing
 }
 
-void 
+void
 CHXResolver::StartResolve()
 {
     if(m_type == EResolvingByName)
     {
-        m_resolver.GetByName(m_pRequest->m_pNode->Des(), m_nameEntry, iStatus);
+        m_resolver.GetByName(*(m_pRequest->m_pNode), m_nameEntry, iStatus);
     }
     else if(m_type == EResolvingByAddress)
     {


From raosanath at helixcommunity.org  Tue Sep  1 00:42:36 2009
From: raosanath at helixcommunity.org (raosanath@helixcommunity.org)
Date: Tue Sep  1 09:48:05 2009
Subject: [Common-cvs] netio/platform/symbian hxsymbianresolver.cpp, 1.1,
	1.1.14.1
Message-ID: 

Update of /cvsroot/common/netio/platform/symbian
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv22560

Modified Files:
      Tag: hxclient_2_2_3_cayennes
	hxsymbianresolver.cpp 
Log Message:
Modified by: sanath.rao@sonyericsson.com
Date: <08:27:09>
Project: 
Bug Number: 9452

Bug URL:  https://bugs.helixcommunity.org/show_bug.cgi?id=9452


Synopsis: 9452 - Helix passing a stack based descriptor into an asynchronous IPC call.

Overview: Bug Description in above links contains, detail description of the problem and the reason why fixes were done.

Files Added:
None


Files Modified:
\helix\source\common\netio\platform\symbian\hxsymbianresolver.cpp

Image Size and Heap Use impact (Client -Only):
N/A

Platforms and Profiles Affected:
BIF branch (hxclient_2_2_3_cayennes)
Target(s) (symbianMmf_wm)
Profile (helix-client-s60-50-mmf-mdf-dsp)
Platform (S60 5.0/ARMV5)

Distribution Libraries Affected:
netiolib.lib

Distribution library impact and planned action:
N/A

Platforms and Profiles Build Verified:
BIF branch (hxclient_2_2_3_cayennes)
Target(s) (symbianMmf_wm)
Profile (helix-client-s60-50-mmf-mdf-dsp)
Platform (S60 5.0/ARMV5)


Platforms and Profiles Functionality verified:
BIF branch (hxclient_2_2_3_cayennes)(hxclient_2_1_0_cayennes)(HEAD)
Target(s) (symbianMmf_wm)
Profile (helix-client-s60-50-mmf-mdf-dsp)
Platform (S60 5.0/ARMV5)

Branch: hxclient_2_2_3_cayennes

Copyright assignment: 
   


   3.      My company (Sony Ericsson Mobile Communication) submits this code under the terms
           of a commercial contribution agreement with RealNetworks,
           and I am authorized to contribute this code under said agreement. 

QA Instructions:
N/A







Index: hxsymbianresolver.cpp
===================================================================
RCS file: /cvsroot/common/netio/platform/symbian/hxsymbianresolver.cpp,v
retrieving revision 1.1
retrieving revision 1.1.14.1
diff -u -d -r1.1 -r1.1.14.1
--- hxsymbianresolver.cpp	29 Sep 2005 21:02:47 -0000	1.1
+++ hxsymbianresolver.cpp	1 Sep 2009 08:42:33 -0000	1.1.14.1
@@ -1,7 +1,7 @@
 /* ***** BEGIN LICENSE BLOCK *****
- * 
+ *
  * Portions Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.
- * 
+ *
  * The contents of this file, and the files included with this file,
  * are subject to the current version of the RealNetworks Public
  * Source License (the "RPSL") available at
@@ -15,7 +15,7 @@
  * to this file, the RCSL.  Please see the applicable RPSL or RCSL for
  * the rights, obligations and limitations governing use of the
  * contents of the file.
- * 
+ *
  * Alternatively, the contents of this file may be used under the
  * terms of the GNU General Public License Version 2 or later (the
  * "GPL") in which case the provisions of the GPL are applicable
@@ -27,23 +27,23 @@
  * the GPL. If you do not delete the provisions above, a recipient may
  * use your version of this file under the terms of any one of the
  * RPSL, the RCSL or the GPL.
- * 
+ *
  * This file is part of the Helix DNA Technology. RealNetworks is the
  * developer of the Original Code and owns the copyrights in the
  * portions it created.
- * 
+ *
  * This file, and the files included with this file, is distributed
  * and made available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY
  * KIND, EITHER EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS
  * ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES
  * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET
  * ENJOYMENT OR NON-INFRINGEMENT.
- * 
+ *
  * Technology Compatibility Kit Test Suite(s) Location:
  *    http://www.helixcommunity.org/content/tck
- * 
+ *
  * Contributor(s):
- * 
+ *
  * ***** END LICENSE BLOCK ***** */
 
 #include "hxcom.h"
@@ -197,7 +197,7 @@
     else
     {
         m_pRequest->m_pNode  = node;
-        m_pRequest->m_uPort  = port;		
+        m_pRequest->m_uPort  = port;
     }
 
     m_type = EResolvingByName;
@@ -257,8 +257,8 @@
             // XXXAG better to include in com i/f
             if(m_resolver.Open( ((HXSymbianAccessPointManager*)m_pAPManager)->
                                 GetRSocketServ(),
-                                KAfInet, 
-                                KProtocolInetUdp, 
+                                KAfInet,
+                                KProtocolInetUdp,
                                 ((HXSymbianAccessPointManager*)m_pAPManager)->
                                 GetRConnection()) == KErrNone)
             {
@@ -315,10 +315,10 @@
             }
             else
             {
-               status = hxr; 
+               status = hxr;
             }
         }
-        m_pResponse->GetAddrInfoDone(status, 1, &addr);		
+        m_pResponse->GetAddrInfoDone(status, 1, &addr);
         HX_RELEASE(addr);
         HX_DELETE(m_pRequest);
     }
@@ -342,9 +342,9 @@
                 status = HXR_OUTOFMEMORY;
             }
         }
-        m_pResponse->GetNameInfoDone(status, 
-                                    (const char *)hostStr, 
-                                    (const char *)portStr); 
+        m_pResponse->GetNameInfoDone(status,
+                                    (const char *)hostStr,
+                                    (const char *)portStr);
         delete hostName;
         HX_DELETE(m_pRequest);
     }
@@ -382,12 +382,12 @@
     // do nothing
 }
 
-void 
+void
 CHXResolver::StartResolve()
 {
     if(m_type == EResolvingByName)
     {
-        m_resolver.GetByName(m_pRequest->m_pNode->Des(), m_nameEntry, iStatus);
+        m_resolver.GetByName(*(m_pRequest->m_pNode), m_nameEntry, iStatus);
     }
     else if(m_type == EResolvingByAddress)
     {


From raosanath at helixcommunity.org  Tue Sep  1 06:53:07 2009
From: raosanath at helixcommunity.org (raosanath@helixcommunity.org)
Date: Tue Sep  1 15:58:33 2009
Subject: [Common-cvs] netio/platform/symbian hxsymbianresolver.cpp, 1.1,
	1.1.2.1
Message-ID: 

Update of /cvsroot/common/netio/platform/symbian
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv7589

Modified Files:
      Tag: hxclient_2_1_0_cayennes
	hxsymbianresolver.cpp 
Log Message:
Modified by: sanath.rao@sonyericsson.com
Date: <08:27:09>
Project: 
Bug Number: 9452

Bug URL:  https://bugs.helixcommunity.org/show_bug.cgi?id=9452


Synopsis: 9452 - Helix passing a stack based descriptor into an asynchronous IPC call.

Overview: Bug Description in above links contains, detail description of the problem and the reason why fixes were done.

Files Added:
None


Files Modified:
\helix\source\common\netio\platform\symbian\hxsymbianresolver.cpp

Image Size and Heap Use impact (Client -Only):
N/A

Platforms and Profiles Affected:
BIF branch (hxclient_2_2_3_cayennes)
Target(s) (symbianMmf_wm)
Profile (helix-client-s60-50-mmf-mdf-dsp)
Platform (S60 5.0/ARMV5)

Distribution Libraries Affected:
netiolib.lib

Distribution library impact and planned action:
N/A

Platforms and Profiles Build Verified:
BIF branch (hxclient_2_2_3_cayennes)
Target(s) (symbianMmf_wm)
Profile (helix-client-s60-50-mmf-mdf-dsp)
Platform (S60 5.0/ARMV5)


Platforms and Profiles Functionality verified:
BIF branch (hxclient_2_2_3_cayennes)(hxclient_2_1_0_cayennes)(HEAD)
Target(s) (symbianMmf_wm)
Profile (helix-client-s60-50-mmf-mdf-dsp)
Platform (S60 5.0/ARMV5)

Branch: hxclient_2_2_3_cayennes

Copyright assignment: 
   


   3.      My company (Sony Ericsson Mobile Communication) submits this code under the terms
           of a commercial contribution agreement with RealNetworks,
           and I am authorized to contribute this code under said agreement. 

QA Instructions:
N/A







Index: hxsymbianresolver.cpp
===================================================================
RCS file: /cvsroot/common/netio/platform/symbian/hxsymbianresolver.cpp,v
retrieving revision 1.1
retrieving revision 1.1.2.1
diff -u -d -r1.1 -r1.1.2.1
--- hxsymbianresolver.cpp	29 Sep 2005 21:02:47 -0000	1.1
+++ hxsymbianresolver.cpp	1 Sep 2009 14:53:04 -0000	1.1.2.1
@@ -387,7 +387,7 @@
 {
     if(m_type == EResolvingByName)
     {
-        m_resolver.GetByName(m_pRequest->m_pNode->Des(), m_nameEntry, iStatus);
+        m_resolver.GetByName(*(m_pRequest->m_pNode), m_nameEntry, iStatus);
     }
     else if(m_type == EResolvingByAddress)
     {


From raosanath at helixcommunity.org  Tue Sep  1 06:53:07 2009
From: raosanath at helixcommunity.org (raosanath@helixcommunity.org)
Date: Tue Sep  1 15:58:34 2009
Subject: [Common-cvs] netio/platform/symbian hxsymbianresolver.cpp, 1.1,
	1.1.2.1
Message-ID: 

Update of /cvsroot/common/netio/platform/symbian
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv7589

Modified Files:
      Tag: hxclient_2_1_0_cayennes
	hxsymbianresolver.cpp 
Log Message:
Modified by: sanath.rao@sonyericsson.com
Date: <08:27:09>
Project: 
Bug Number: 9452

Bug URL:  https://bugs.helixcommunity.org/show_bug.cgi?id=9452


Synopsis: 9452 - Helix passing a stack based descriptor into an asynchronous IPC call.

Overview: Bug Description in above links contains, detail description of the problem and the reason why fixes were done.

Files Added:
None


Files Modified:
\helix\source\common\netio\platform\symbian\hxsymbianresolver.cpp

Image Size and Heap Use impact (Client -Only):
N/A

Platforms and Profiles Affected:
BIF branch (hxclient_2_2_3_cayennes)
Target(s) (symbianMmf_wm)
Profile (helix-client-s60-50-mmf-mdf-dsp)
Platform (S60 5.0/ARMV5)

Distribution Libraries Affected:
netiolib.lib

Distribution library impact and planned action:
N/A

Platforms and Profiles Build Verified:
BIF branch (hxclient_2_2_3_cayennes)
Target(s) (symbianMmf_wm)
Profile (helix-client-s60-50-mmf-mdf-dsp)
Platform (S60 5.0/ARMV5)


Platforms and Profiles Functionality verified:
BIF branch (hxclient_2_2_3_cayennes)(hxclient_2_1_0_cayennes)(HEAD)
Target(s) (symbianMmf_wm)
Profile (helix-client-s60-50-mmf-mdf-dsp)
Platform (S60 5.0/ARMV5)

Branch: hxclient_2_2_3_cayennes

Copyright assignment: 
   


   3.      My company (Sony Ericsson Mobile Communication) submits this code under the terms
           of a commercial contribution agreement with RealNetworks,
           and I am authorized to contribute this code under said agreement. 

QA Instructions:
N/A







Index: hxsymbianresolver.cpp
===================================================================
RCS file: /cvsroot/common/netio/platform/symbian/hxsymbianresolver.cpp,v
retrieving revision 1.1
retrieving revision 1.1.2.1
diff -u -d -r1.1 -r1.1.2.1
--- hxsymbianresolver.cpp	29 Sep 2005 21:02:47 -0000	1.1
+++ hxsymbianresolver.cpp	1 Sep 2009 14:53:04 -0000	1.1.2.1
@@ -387,7 +387,7 @@
 {
     if(m_type == EResolvingByName)
     {
-        m_resolver.GetByName(m_pRequest->m_pNode->Des(), m_nameEntry, iStatus);
+        m_resolver.GetByName(*(m_pRequest->m_pNode), m_nameEntry, iStatus);
     }
     else if(m_type == EResolvingByAddress)
     {


From amsaleem at helixcommunity.org  Tue Sep  1 12:09:00 2009
From: amsaleem at helixcommunity.org (amsaleem@helixcommunity.org)
Date: Tue Sep  1 21:14:21 2009
Subject: [Common-cvs] include hxcore.h,1.23,1.24 hxausvc.h,1.19,1.20
Message-ID: 

Update of /cvsroot/common/include
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv30948

Modified Files:
	hxcore.h hxausvc.h 
Log Message:
"Nokia submits this code under the terms of a commercial contribution agreement with Real Networks, and I am authorized to contribute this code under said agreement."

Modified by: saleem.adookkattil@nokia.com

Reviewed by:

Date: 08/26/2009

Project: phonon_backend
 
ErrorId: N/A 

Synopsis: Helix HEAD - Added CLSIDs to create instance of classes that implements IHXPlayer, and IXVolume interfaces in Phonon backend appframework;

Overview: Phonon backend application framework uses class factory to create instance of classes that implements IHXPlayer and IXVolume interfaces. Helix uses the interface ids of the interfaces that represent a class as CLSID. As phonon backend application framework uses its own class factory to create instance of these classess, it won't conflit with helix class factory. Again it hides object instance information from phonon backend. Added class ids CLSID_IHXPlayer and CLIS_IHXVolme to identify phonon common appframework classes CHXPlayerProxy and CHXVolumeProxy. 

Files modified: cvsroot\common\include\hxcore.h
                         cvsroot\common\include\hxausvc.h

Files added: None

Image Size and Heap Use impact: None.

Module Release testing (STIF) : N/A 

Test case(s) Added  : No
  
Memory leak check performed : N/A
  
Platforms and Profiles Build Verified: helix-client-s60-ng

Platforms and Profiles Functionality verified: armv5, winscw 
  
Branch: HEAD

Index: hxcore.h
===================================================================
RCS file: /cvsroot/common/include/hxcore.h,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -d -r1.23 -r1.24
--- hxcore.h	6 Jul 2007 20:43:41 -0000	1.23
+++ hxcore.h	1 Sep 2009 20:08:57 -0000	1.24
@@ -507,7 +507,7 @@
 
 #undef  INTERFACE
 #define INTERFACE   IHXPlayer
-
+#define CLSID_IHXPlayer IID_IHXPlayer
 DECLARE_INTERFACE_(IHXPlayer, IUnknown)
 {
     /*

Index: hxausvc.h
===================================================================
RCS file: /cvsroot/common/include/hxausvc.h,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -d -r1.19 -r1.20
--- hxausvc.h	6 Jul 2007 20:43:41 -0000	1.19
+++ hxausvc.h	1 Sep 2009 20:08:57 -0000	1.20
@@ -1021,6 +1021,8 @@
 DEFINE_GUID(IID_IHXVolume, 0x00000707, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
             0xa0, 0x24, 0x40, 0x6d, 0x59);
 
+#define CLSID_IHXVolume	IID_IHXVolume
+
 #undef  INTERFACE
 #define INTERFACE   IHXVolume
 


From amsaleem at helixcommunity.org  Tue Sep  1 12:09:00 2009
From: amsaleem at helixcommunity.org (amsaleem@helixcommunity.org)
Date: Tue Sep  1 21:14:22 2009
Subject: [Common-cvs] include hxcore.h,1.23,1.24 hxausvc.h,1.19,1.20
Message-ID: 

Update of /cvsroot/common/include
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv30948

Modified Files:
	hxcore.h hxausvc.h 
Log Message:
"Nokia submits this code under the terms of a commercial contribution agreement with Real Networks, and I am authorized to contribute this code under said agreement."

Modified by: saleem.adookkattil@nokia.com

Reviewed by:

Date: 08/26/2009

Project: phonon_backend
 
ErrorId: N/A 

Synopsis: Helix HEAD - Added CLSIDs to create instance of classes that implements IHXPlayer, and IXVolume interfaces in Phonon backend appframework;

Overview: Phonon backend application framework uses class factory to create instance of classes that implements IHXPlayer and IXVolume interfaces. Helix uses the interface ids of the interfaces that represent a class as CLSID. As phonon backend application framework uses its own class factory to create instance of these classess, it won't conflit with helix class factory. Again it hides object instance information from phonon backend. Added class ids CLSID_IHXPlayer and CLIS_IHXVolme to identify phonon common appframework classes CHXPlayerProxy and CHXVolumeProxy. 

Files modified: cvsroot\common\include\hxcore.h
                         cvsroot\common\include\hxausvc.h

Files added: None

Image Size and Heap Use impact: None.

Module Release testing (STIF) : N/A 

Test case(s) Added  : No
  
Memory leak check performed : N/A
  
Platforms and Profiles Build Verified: helix-client-s60-ng

Platforms and Profiles Functionality verified: armv5, winscw 
  
Branch: HEAD

Index: hxcore.h
===================================================================
RCS file: /cvsroot/common/include/hxcore.h,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -d -r1.23 -r1.24
--- hxcore.h	6 Jul 2007 20:43:41 -0000	1.23
+++ hxcore.h	1 Sep 2009 20:08:57 -0000	1.24
@@ -507,7 +507,7 @@
 
 #undef  INTERFACE
 #define INTERFACE   IHXPlayer
-
+#define CLSID_IHXPlayer IID_IHXPlayer
 DECLARE_INTERFACE_(IHXPlayer, IUnknown)
 {
     /*

Index: hxausvc.h
===================================================================
RCS file: /cvsroot/common/include/hxausvc.h,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -d -r1.19 -r1.20
--- hxausvc.h	6 Jul 2007 20:43:41 -0000	1.19
+++ hxausvc.h	1 Sep 2009 20:08:57 -0000	1.20
@@ -1021,6 +1021,8 @@
 DEFINE_GUID(IID_IHXVolume, 0x00000707, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
             0xa0, 0x24, 0x40, 0x6d, 0x59);
 
+#define CLSID_IHXVolume	IID_IHXVolume
+
 #undef  INTERFACE
 #define INTERFACE   IHXVolume
 


From amsaleem at helixcommunity.org  Tue Sep  1 13:02:05 2009
From: amsaleem at helixcommunity.org (amsaleem@helixcommunity.org)
Date: Tue Sep  1 22:07:25 2009
Subject: [Common-cvs] system/platform/symbian CHXSymbianServer.cpp,1.2,1.3
Message-ID: 

Update of /cvsroot/common/system/platform/symbian
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv3428

Modified Files:
	CHXSymbianServer.cpp 
Log Message:
"Nokia submits this code under the terms of a commercial contribution agreement with Real Networks, and I am authorized to contribute this code under said agreement."

Modified by: saleem.adookkattil@nokia.com

Reviewed by:

Date: 08/26/2009

Project: symbianMmf_wm
 
ErrorId: N/A 

Synopsis: Changes made to helix client source to use LIBC.DLL instead of ESTLIB.DLL on Symbian.

Overview:  Helix build system configuration flag HELIX_CONFIG_SYMBIAN_USE_STDAPIS enables usage of LIBC.DLL instead of ESTLIB.DLL on Symbian. Made the following changes to source to link with LIBC.DLL.

1) There is no need to call CloseSTDLIB() when using LIBC.DLL and removed this function call from the following files when HELIX_CONFIG_SYMBIAN_USE_STDAPIS flag is enabled.
    cvsroot/audio/device/platform/symbian/audiosvr/audio_svr_cntxt.cpp
    cvsroot/common/system/platform/symbian/CHXSymbianServer.cpp
    cvsroot/clientapps/symbianMmf/audiocontroller/hxmmfaudioctrl.cpp
    cvsroot/clientapps/symbianMmf/videocontroller/hxmmfctrlimpl.cpp
    cvsroot/datatype/tools/metadataeng/engine/platform/symbian/symbian_metadataeng.cpp
   
2) LIBC.DLL has supports for wide character implementation and removed implementation specific to this from the following file when HELIX_CONFIG_SYMBIAN_USE_STDAPIS flag is enabled.
     cvsroot/common/runtime/symbian.pcf
     cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/helix/helix_win32_functions.h
     cvsroot/common/runtime/pub/hlxclib/wchar.h

3) LIBC.DLL provides implementation for some standard functions/variables those were not available in estlib.dll and made changes to the following files to use those functions instead of the one provided in helix.
     cvsroot/common/include/hxtypes.h
     cvsroot/datatype/mp3/import/id3lib/id3_field_binary.cpp
     cvsroot/common/netio/pub/platform/symbian/nettypes.h
     cvsroot/common/runtime/pub/hlxclib/stdio.h
     cvsroot/common/fileio/platform/symbian/symbihxdataf.cpp

4) Removed estlib.lib, euser.lib and hal.lib from the following files as these files get added by default for symbian platform
     cvsroot/clientapps/symbianMmf/audiocontroller/controllerdll
     cvsroot/clientapps/symbianMmf/videocontroller/MmfCtrlDll
     cvsroot/clientapps/symbianMmf/wmvextcontroller/wmaextctrldll
     cvsroot/clientapps/symbianMmf/wmvextcontroller/WmvExtCtrlDll

5) offsetof marco implementation provided in stdapis\stddef.h, when it used inside existing helix template definition causing compilation failure. Libc\stddef.h has a different implementation from stdapis\stddef.h.  
     So added Libc\stddef.h offsetof macro definition to hlxclib/stddef.h to avoid this failure and use the one provided in Libc\stddef.h.

6) Made changes to the following files to use offsetof macro definition in hlxclib/stddef.h 
    cvsroot/common/import/expat/xmlparse/xmlparse.c
    cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/common/netbuffer.h

7) estlib.lib, euser.lib and hal.lib files get added by default for symbian platform. So there is no need to add these files and removed them from the following symbian.pcf files
    cvsroot/datatype/mp3/fileformat/symbian.pcf
    cvsroot/datatype/mp3/renderer/symbian.pcf

Files modified: 
    cvsroot/audio/device/platform/symbian/audiosvr/audio_svr_cntxt.cpp
    cvsroot/common/system/platform/symbian/CHXSymbianServer.cpp
    cvsroot/clientapps/symbianMmf/audiocontroller/hxmmfaudioctrl.cpp
    cvsroot/clientapps/symbianMmf/videocontroller/hxmmfctrlimpl.cpp
    cvsroot/datatype/tools/metadataeng/engine/platform/symbian/symbian_metadataeng.cpp
    cvsroot/common/runtime/symbian.pcf
    cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/helix/helix_win32_functions.h
    cvsroot/common/runtime/pub/hlxclib/wchar.h
    cvsroot/common/include/hxtypes.h
    cvsroot/datatype/mp3/import/id3lib/id3_field_binary.cpp
    cvsroot/common/netio/pub/platform/symbian/nettypes.h
    cvsroot/common/runtime/pub/hlxclib/stdio.h
    cvsroot/common/fileio/platform/symbian/symbihxdataf.cpp
    cvsroot/clientapps/symbianMmf/audiocontroller/controllerdll
    cvsroot/clientapps/symbianMmf/videocontroller/MmfCtrlDll
    cvsroot/clientapps/symbianMmf/wmvextcontroller/wmaextctrldll
    cvsroot/clientapps/symbianMmf/wmvextcontroller/WmvExtCtrlDll
    cvsroot/common/import/expat/xmlparse/xmlparse.c
    cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/common/netbuffer.h
    cvsroot/common/runtime/pub/hlxclib/stddef.h

Files removed:
    cvsroot/datatype/mp3/fileformat/symbian.pcf
    cvsroot/datatype/mp3/renderer/symbian.pcf
                        
Files added: None

Image Size and Heap Use impact: N/A

Module Release testing (STIF) : N/A 

Test case(s) Added  : N/A
  
Memory leak check performed : N/A
  
Platforms and Profiles Build Verified: helix-client-s60-52-ng

Platforms and Profiles verified: armv5, winscw 
  
Branch: HEAD


From amsaleem at helixcommunity.org  Tue Sep  1 13:02:03 2009
From: amsaleem at helixcommunity.org (amsaleem@helixcommunity.org)
Date: Tue Sep  1 22:07:54 2009
Subject: [Common-cvs] system/platform/symbian CHXSymbianServer.cpp,1.2,1.3
Message-ID: 

Update of /cvsroot/common/system/platform/symbian
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv3428

Modified Files:
	CHXSymbianServer.cpp 
Log Message:
"Nokia submits this code under the terms of a commercial contribution agreement with Real Networks, and I am authorized to contribute this code under said agreement."

Modified by: saleem.adookkattil@nokia.com

Reviewed by:

Date: 08/26/2009

Project: symbianMmf_wm
 
ErrorId: N/A 

Synopsis: Changes made to helix client source to use LIBC.DLL instead of ESTLIB.DLL on Symbian.

Overview:  Helix build system configuration flag HELIX_CONFIG_SYMBIAN_USE_STDAPIS enables usage of LIBC.DLL instead of ESTLIB.DLL on Symbian. Made the following changes to source to link with LIBC.DLL.

1) There is no need to call CloseSTDLIB() when using LIBC.DLL and removed this function call from the following files when HELIX_CONFIG_SYMBIAN_USE_STDAPIS flag is enabled.
    cvsroot/audio/device/platform/symbian/audiosvr/audio_svr_cntxt.cpp
    cvsroot/common/system/platform/symbian/CHXSymbianServer.cpp
    cvsroot/clientapps/symbianMmf/audiocontroller/hxmmfaudioctrl.cpp
    cvsroot/clientapps/symbianMmf/videocontroller/hxmmfctrlimpl.cpp
    cvsroot/datatype/tools/metadataeng/engine/platform/symbian/symbian_metadataeng.cpp
   
2) LIBC.DLL has supports for wide character implementation and removed implementation specific to this from the following file when HELIX_CONFIG_SYMBIAN_USE_STDAPIS flag is enabled.
     cvsroot/common/runtime/symbian.pcf
     cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/helix/helix_win32_functions.h
     cvsroot/common/runtime/pub/hlxclib/wchar.h

3) LIBC.DLL provides implementation for some standard functions/variables those were not available in estlib.dll and made changes to the following files to use those functions instead of the one provided in helix.
     cvsroot/common/include/hxtypes.h
     cvsroot/datatype/mp3/import/id3lib/id3_field_binary.cpp
     cvsroot/common/netio/pub/platform/symbian/nettypes.h
     cvsroot/common/runtime/pub/hlxclib/stdio.h
     cvsroot/common/fileio/platform/symbian/symbihxdataf.cpp

4) Removed estlib.lib, euser.lib and hal.lib from the following files as these files get added by default for symbian platform
     cvsroot/clientapps/symbianMmf/audiocontroller/controllerdll
     cvsroot/clientapps/symbianMmf/videocontroller/MmfCtrlDll
     cvsroot/clientapps/symbianMmf/wmvextcontroller/wmaextctrldll
     cvsroot/clientapps/symbianMmf/wmvextcontroller/WmvExtCtrlDll

5) offsetof marco implementation provided in stdapis\stddef.h, when it used inside existing helix template definition causing compilation failure. Libc\stddef.h has a different implementation from stdapis\stddef.h.  
     So added Libc\stddef.h offsetof macro definition to hlxclib/stddef.h to avoid this failure and use the one provided in Libc\stddef.h.

6) Made changes to the following files to use offsetof macro definition in hlxclib/stddef.h 
    cvsroot/common/import/expat/xmlparse/xmlparse.c
    cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/common/netbuffer.h

7) estlib.lib, euser.lib and hal.lib files get added by default for symbian platform. So there is no need to add these files and removed them from the following symbian.pcf files
    cvsroot/datatype/mp3/fileformat/symbian.pcf
    cvsroot/datatype/mp3/renderer/symbian.pcf

Files modified: 
    cvsroot/audio/device/platform/symbian/audiosvr/audio_svr_cntxt.cpp
    cvsroot/common/system/platform/symbian/CHXSymbianServer.cpp
    cvsroot/clientapps/symbianMmf/audiocontroller/hxmmfaudioctrl.cpp
    cvsroot/clientapps/symbianMmf/videocontroller/hxmmfctrlimpl.cpp
    cvsroot/datatype/tools/metadataeng/engine/platform/symbian/symbian_metadataeng.cpp
    cvsroot/common/runtime/symbian.pcf
    cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/helix/helix_win32_functions.h
    cvsroot/common/runtime/pub/hlxclib/wchar.h
    cvsroot/common/include/hxtypes.h
    cvsroot/datatype/mp3/import/id3lib/id3_field_binary.cpp
    cvsroot/common/netio/pub/platform/symbian/nettypes.h
    cvsroot/common/runtime/pub/hlxclib/stdio.h
    cvsroot/common/fileio/platform/symbian/symbihxdataf.cpp
    cvsroot/clientapps/symbianMmf/audiocontroller/controllerdll
    cvsroot/clientapps/symbianMmf/videocontroller/MmfCtrlDll
    cvsroot/clientapps/symbianMmf/wmvextcontroller/wmaextctrldll
    cvsroot/clientapps/symbianMmf/wmvextcontroller/WmvExtCtrlDll
    cvsroot/common/import/expat/xmlparse/xmlparse.c
    cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/common/netbuffer.h
    cvsroot/common/runtime/pub/hlxclib/stddef.h

Files removed:
    cvsroot/datatype/mp3/fileformat/symbian.pcf
    cvsroot/datatype/mp3/renderer/symbian.pcf
                        
Files added: None

Image Size and Heap Use impact: N/A

Module Release testing (STIF) : N/A 

Test case(s) Added  : N/A
  
Memory leak check performed : N/A
  
Platforms and Profiles Build Verified: helix-client-s60-52-ng

Platforms and Profiles verified: armv5, winscw 
  
Branch: HEAD

Index: CHXSymbianServer.cpp
===================================================================
RCS file: /cvsroot/common/system/platform/symbian/CHXSymbianServer.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- CHXSymbianServer.cpp	25 Jan 2008 22:07:14 -0000	1.2
+++ CHXSymbianServer.cpp	1 Sep 2009 21:02:00 -0000	1.3
@@ -254,9 +254,11 @@
     REComSession::FinalClose();
     
     // clean up memory allocated by stdlib functions
+#if !defined(HELIX_CONFIG_SYMBIAN_USE_STDAPIS)
     CloseSTDLIB();
-    
-    SERVER_LOG( (_L("CHXSymbianServerCtx[%x]::ThreadEntry --> Thread Death"), obj) ); 
+#endif
+
+    SERVER_LOG( (_L("CHXSymbianServerCtx[%x]::ThreadEntry --> Thread Death"), obj) );
     return KErrNone;
 }
 


From amsaleem at helixcommunity.org  Tue Sep  1 13:09:09 2009
From: amsaleem at helixcommunity.org (amsaleem@helixcommunity.org)
Date: Tue Sep  1 22:14:29 2009
Subject: [Common-cvs] runtime symbian.pcf,1.6,1.7
Message-ID: 

Update of /cvsroot/common/runtime
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv3731

Modified Files:
	symbian.pcf 
Log Message:
"Nokia submits this code under the terms of a commercial contribution agreement with Real Networks, and I am authorized to contribute this code under said agreement."

Modified by: saleem.adookkattil@nokia.com

Reviewed by:

Date: 08/26/2009

Project: symbianMmf_wm
 
ErrorId: N/A 

Synopsis: Changes made to helix client source to use LIBC.DLL instead of ESTLIB.DLL on Symbian.

Overview:  Helix build system configuration flag HELIX_CONFIG_SYMBIAN_USE_STDAPIS enables usage of LIBC.DLL instead of ESTLIB.DLL on Symbian. Made the following changes to source to link with LIBC.DLL.

1) There is no need to call CloseSTDLIB() when using LIBC.DLL and removed this function call from the following files when HELIX_CONFIG_SYMBIAN_USE_STDAPIS flag is enabled.
    cvsroot/audio/device/platform/symbian/audiosvr/audio_svr_cntxt.cpp
    cvsroot/common/system/platform/symbian/CHXSymbianServer.cpp
    cvsroot/clientapps/symbianMmf/audiocontroller/hxmmfaudioctrl.cpp
    cvsroot/clientapps/symbianMmf/videocontroller/hxmmfctrlimpl.cpp
    cvsroot/datatype/tools/metadataeng/engine/platform/symbian/symbian_metadataeng.cpp
   
2) LIBC.DLL has supports for wide character implementation and removed implementation specific to this from the following file when HELIX_CONFIG_SYMBIAN_USE_STDAPIS flag is enabled.
     cvsroot/common/runtime/symbian.pcf
     cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/helix/helix_win32_functions.h
     cvsroot/common/runtime/pub/hlxclib/wchar.h

3) LIBC.DLL provides implementation for some standard functions/variables those were not available in estlib.dll and made changes to the following files to use those functions instead of the one provided in helix.
     cvsroot/common/include/hxtypes.h
     cvsroot/datatype/mp3/import/id3lib/id3_field_binary.cpp
     cvsroot/common/netio/pub/platform/symbian/nettypes.h
     cvsroot/common/runtime/pub/hlxclib/stdio.h
     cvsroot/common/fileio/platform/symbian/symbihxdataf.cpp

4) Removed estlib.lib, euser.lib and hal.lib from the following files as these files get added by default for symbian platform
     cvsroot/clientapps/symbianMmf/audiocontroller/controllerdll
     cvsroot/clientapps/symbianMmf/videocontroller/MmfCtrlDll
     cvsroot/clientapps/symbianMmf/wmvextcontroller/wmaextctrldll
     cvsroot/clientapps/symbianMmf/wmvextcontroller/WmvExtCtrlDll

5) offsetof marco implementation provided in stdapis\stddef.h, when it used inside existing helix template definition causing compilation failure. Libc\stddef.h has a different implementation from stdapis\stddef.h.  
     So added Libc\stddef.h offsetof macro definition to hlxclib/stddef.h to avoid this failure and use the one provided in Libc\stddef.h.

6) Made changes to the following files to use offsetof macro definition in hlxclib/stddef.h 
    cvsroot/common/import/expat/xmlparse/xmlparse.c
    cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/common/netbuffer.h

7) estlib.lib, euser.lib and hal.lib files get added by default for symbian platform. So there is no need to add these files and removed them from the following symbian.pcf files
    cvsroot/datatype/mp3/fileformat/symbian.pcf
    cvsroot/datatype/mp3/renderer/symbian.pcf

Files modified: 
    cvsroot/audio/device/platform/symbian/audiosvr/audio_svr_cntxt.cpp
    cvsroot/common/system/platform/symbian/CHXSymbianServer.cpp
    cvsroot/clientapps/symbianMmf/audiocontroller/hxmmfaudioctrl.cpp
    cvsroot/clientapps/symbianMmf/videocontroller/hxmmfctrlimpl.cpp
    cvsroot/datatype/tools/metadataeng/engine/platform/symbian/symbian_metadataeng.cpp
    cvsroot/common/runtime/symbian.pcf
    cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/helix/helix_win32_functions.h
    cvsroot/common/runtime/pub/hlxclib/wchar.h
    cvsroot/common/include/hxtypes.h
    cvsroot/datatype/mp3/import/id3lib/id3_field_binary.cpp
    cvsroot/common/netio/pub/platform/symbian/nettypes.h
    cvsroot/common/runtime/pub/hlxclib/stdio.h
    cvsroot/common/fileio/platform/symbian/symbihxdataf.cpp
    cvsroot/clientapps/symbianMmf/audiocontroller/controllerdll
    cvsroot/clientapps/symbianMmf/videocontroller/MmfCtrlDll
    cvsroot/clientapps/symbianMmf/wmvextcontroller/wmaextctrldll
    cvsroot/clientapps/symbianMmf/wmvextcontroller/WmvExtCtrlDll
    cvsroot/common/import/expat/xmlparse/xmlparse.c
    cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/common/netbuffer.h
    cvsroot/common/runtime/pub/hlxclib/stddef.h

Files removed:
    cvsroot/datatype/mp3/fileformat/symbian.pcf
    cvsroot/datatype/mp3/renderer/symbian.pcf
                        
Files added: None

Image Size and Heap Use impact: N/A

Module Release testing (STIF) : N/A 

Test case(s) Added  : N/A
  
Memory leak check performed : N/A
  
Platforms and Profiles Build Verified: helix-client-s60-52-ng

Platforms and Profiles verified: armv5, winscw 
  
Branch: HEAD


From amsaleem at helixcommunity.org  Tue Sep  1 13:09:07 2009
From: amsaleem at helixcommunity.org (amsaleem@helixcommunity.org)
Date: Tue Sep  1 22:14:58 2009
Subject: [Common-cvs] runtime symbian.pcf,1.6,1.7
Message-ID: 

Update of /cvsroot/common/runtime
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv3731

Modified Files:
	symbian.pcf 
Log Message:
"Nokia submits this code under the terms of a commercial contribution agreement with Real Networks, and I am authorized to contribute this code under said agreement."

Modified by: saleem.adookkattil@nokia.com

Reviewed by:

Date: 08/26/2009

Project: symbianMmf_wm
 
ErrorId: N/A 

Synopsis: Changes made to helix client source to use LIBC.DLL instead of ESTLIB.DLL on Symbian.

Overview:  Helix build system configuration flag HELIX_CONFIG_SYMBIAN_USE_STDAPIS enables usage of LIBC.DLL instead of ESTLIB.DLL on Symbian. Made the following changes to source to link with LIBC.DLL.

1) There is no need to call CloseSTDLIB() when using LIBC.DLL and removed this function call from the following files when HELIX_CONFIG_SYMBIAN_USE_STDAPIS flag is enabled.
    cvsroot/audio/device/platform/symbian/audiosvr/audio_svr_cntxt.cpp
    cvsroot/common/system/platform/symbian/CHXSymbianServer.cpp
    cvsroot/clientapps/symbianMmf/audiocontroller/hxmmfaudioctrl.cpp
    cvsroot/clientapps/symbianMmf/videocontroller/hxmmfctrlimpl.cpp
    cvsroot/datatype/tools/metadataeng/engine/platform/symbian/symbian_metadataeng.cpp
   
2) LIBC.DLL has supports for wide character implementation and removed implementation specific to this from the following file when HELIX_CONFIG_SYMBIAN_USE_STDAPIS flag is enabled.
     cvsroot/common/runtime/symbian.pcf
     cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/helix/helix_win32_functions.h
     cvsroot/common/runtime/pub/hlxclib/wchar.h

3) LIBC.DLL provides implementation for some standard functions/variables those were not available in estlib.dll and made changes to the following files to use those functions instead of the one provided in helix.
     cvsroot/common/include/hxtypes.h
     cvsroot/datatype/mp3/import/id3lib/id3_field_binary.cpp
     cvsroot/common/netio/pub/platform/symbian/nettypes.h
     cvsroot/common/runtime/pub/hlxclib/stdio.h
     cvsroot/common/fileio/platform/symbian/symbihxdataf.cpp

4) Removed estlib.lib, euser.lib and hal.lib from the following files as these files get added by default for symbian platform
     cvsroot/clientapps/symbianMmf/audiocontroller/controllerdll
     cvsroot/clientapps/symbianMmf/videocontroller/MmfCtrlDll
     cvsroot/clientapps/symbianMmf/wmvextcontroller/wmaextctrldll
     cvsroot/clientapps/symbianMmf/wmvextcontroller/WmvExtCtrlDll

5) offsetof marco implementation provided in stdapis\stddef.h, when it used inside existing helix template definition causing compilation failure. Libc\stddef.h has a different implementation from stdapis\stddef.h.  
     So added Libc\stddef.h offsetof macro definition to hlxclib/stddef.h to avoid this failure and use the one provided in Libc\stddef.h.

6) Made changes to the following files to use offsetof macro definition in hlxclib/stddef.h 
    cvsroot/common/import/expat/xmlparse/xmlparse.c
    cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/common/netbuffer.h

7) estlib.lib, euser.lib and hal.lib files get added by default for symbian platform. So there is no need to add these files and removed them from the following symbian.pcf files
    cvsroot/datatype/mp3/fileformat/symbian.pcf
    cvsroot/datatype/mp3/renderer/symbian.pcf

Files modified: 
    cvsroot/audio/device/platform/symbian/audiosvr/audio_svr_cntxt.cpp
    cvsroot/common/system/platform/symbian/CHXSymbianServer.cpp
    cvsroot/clientapps/symbianMmf/audiocontroller/hxmmfaudioctrl.cpp
    cvsroot/clientapps/symbianMmf/videocontroller/hxmmfctrlimpl.cpp
    cvsroot/datatype/tools/metadataeng/engine/platform/symbian/symbian_metadataeng.cpp
    cvsroot/common/runtime/symbian.pcf
    cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/helix/helix_win32_functions.h
    cvsroot/common/runtime/pub/hlxclib/wchar.h
    cvsroot/common/include/hxtypes.h
    cvsroot/datatype/mp3/import/id3lib/id3_field_binary.cpp
    cvsroot/common/netio/pub/platform/symbian/nettypes.h
    cvsroot/common/runtime/pub/hlxclib/stdio.h
    cvsroot/common/fileio/platform/symbian/symbihxdataf.cpp
    cvsroot/clientapps/symbianMmf/audiocontroller/controllerdll
    cvsroot/clientapps/symbianMmf/videocontroller/MmfCtrlDll
    cvsroot/clientapps/symbianMmf/wmvextcontroller/wmaextctrldll
    cvsroot/clientapps/symbianMmf/wmvextcontroller/WmvExtCtrlDll
    cvsroot/common/import/expat/xmlparse/xmlparse.c
    cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/common/netbuffer.h
    cvsroot/common/runtime/pub/hlxclib/stddef.h

Files removed:
    cvsroot/datatype/mp3/fileformat/symbian.pcf
    cvsroot/datatype/mp3/renderer/symbian.pcf
                        
Files added: None

Image Size and Heap Use impact: N/A

Module Release testing (STIF) : N/A 

Test case(s) Added  : N/A
  
Memory leak check performed : N/A
  
Platforms and Profiles Build Verified: helix-client-s60-52-ng

Platforms and Profiles verified: armv5, winscw 
  
Branch: HEAD

Index: symbian.pcf
===================================================================
RCS file: /cvsroot/common/runtime/symbian.pcf,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- symbian.pcf	17 Oct 2007 23:04:07 -0000	1.6
+++ symbian.pcf	1 Sep 2009 21:09:04 -0000	1.7
@@ -49,5 +49,6 @@
 # ***** END LICENSE BLOCK *****
 # 
 
-project.AddSources("platform/symbian/process_events.cpp")	
-project.AddSources("platform/symbian/symbian_wchar_functions.cpp")	
+project.AddSources("platform/symbian/process_events.cpp")
+if not project.IsDefined('HELIX_CONFIG_SYMBIAN_USE_STDAPIS'):	
+    project.AddSources("platform/symbian/symbian_wchar_functions.cpp")	


From amsaleem at helixcommunity.org  Tue Sep  1 13:21:22 2009
From: amsaleem at helixcommunity.org (amsaleem@helixcommunity.org)
Date: Tue Sep  1 22:26:42 2009
Subject: [Common-cvs] include hxtypes.h,1.45,1.46
Message-ID: 

Update of /cvsroot/common/include
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv4109

Modified Files:
	hxtypes.h 
Log Message:
"Nokia submits this code under the terms of a commercial contribution agreement with Real Networks, and I am authorized to contribute this code under said agreement."

Modified by: saleem.adookkattil@nokia.com

Reviewed by:

Date: 08/26/2009

Project: symbianMmf_wm
 
ErrorId: N/A 

Synopsis: Changes made to helix client source to use LIBC.DLL instead of ESTLIB.DLL on Symbian.

Overview:  Helix build system configuration flag HELIX_CONFIG_SYMBIAN_USE_STDAPIS enables usage of LIBC.DLL instead of ESTLIB.DLL on Symbian. Made the following changes to source to link with LIBC.DLL.

1) There is no need to call CloseSTDLIB() when using LIBC.DLL and removed this function call from the following files when HELIX_CONFIG_SYMBIAN_USE_STDAPIS flag is enabled.
    cvsroot/audio/device/platform/symbian/audiosvr/audio_svr_cntxt.cpp
    cvsroot/common/system/platform/symbian/CHXSymbianServer.cpp
    cvsroot/clientapps/symbianMmf/audiocontroller/hxmmfaudioctrl.cpp
    cvsroot/clientapps/symbianMmf/videocontroller/hxmmfctrlimpl.cpp
    cvsroot/datatype/tools/metadataeng/engine/platform/symbian/symbian_metadataeng.cpp
   
2) LIBC.DLL has supports for wide character implementation and removed implementation specific to this from the following file when HELIX_CONFIG_SYMBIAN_USE_STDAPIS flag is enabled.
     cvsroot/common/runtime/symbian.pcf
     cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/helix/helix_win32_functions.h
     cvsroot/common/runtime/pub/hlxclib/wchar.h

3) LIBC.DLL provides implementation for some standard functions/variables those were not available in estlib.dll and made changes to the following files to use those functions instead of the one provided in helix.
     cvsroot/common/include/hxtypes.h
     cvsroot/datatype/mp3/import/id3lib/id3_field_binary.cpp
     cvsroot/common/netio/pub/platform/symbian/nettypes.h
     cvsroot/common/runtime/pub/hlxclib/stdio.h
     cvsroot/common/fileio/platform/symbian/symbihxdataf.cpp

4) Removed estlib.lib, euser.lib and hal.lib from the following files as these files get added by default for symbian platform
     cvsroot/clientapps/symbianMmf/audiocontroller/controllerdll
     cvsroot/clientapps/symbianMmf/videocontroller/MmfCtrlDll
     cvsroot/clientapps/symbianMmf/wmvextcontroller/wmaextctrldll
     cvsroot/clientapps/symbianMmf/wmvextcontroller/WmvExtCtrlDll

5) offsetof marco implementation provided in stdapis\stddef.h, when it used inside existing helix template definition causing compilation failure. Libc\stddef.h has a different implementation from stdapis\stddef.h.  
     So added Libc\stddef.h offsetof macro definition to hlxclib/stddef.h to avoid this failure and use the one provided in Libc\stddef.h.

6) Made changes to the following files to use offsetof macro definition in hlxclib/stddef.h 
    cvsroot/common/import/expat/xmlparse/xmlparse.c
    cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/common/netbuffer.h

7) estlib.lib, euser.lib and hal.lib files get added by default for symbian platform. So there is no need to add these files and removed them from the following symbian.pcf files
    cvsroot/datatype/mp3/fileformat/symbian.pcf
    cvsroot/datatype/mp3/renderer/symbian.pcf

Files modified: 
    cvsroot/audio/device/platform/symbian/audiosvr/audio_svr_cntxt.cpp
    cvsroot/common/system/platform/symbian/CHXSymbianServer.cpp
    cvsroot/clientapps/symbianMmf/audiocontroller/hxmmfaudioctrl.cpp
    cvsroot/clientapps/symbianMmf/videocontroller/hxmmfctrlimpl.cpp
    cvsroot/datatype/tools/metadataeng/engine/platform/symbian/symbian_metadataeng.cpp
    cvsroot/common/runtime/symbian.pcf
    cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/helix/helix_win32_functions.h
    cvsroot/common/runtime/pub/hlxclib/wchar.h
    cvsroot/common/include/hxtypes.h
    cvsroot/datatype/mp3/import/id3lib/id3_field_binary.cpp
    cvsroot/common/netio/pub/platform/symbian/nettypes.h
    cvsroot/common/runtime/pub/hlxclib/stdio.h
    cvsroot/common/fileio/platform/symbian/symbihxdataf.cpp
    cvsroot/clientapps/symbianMmf/audiocontroller/controllerdll
    cvsroot/clientapps/symbianMmf/videocontroller/MmfCtrlDll
    cvsroot/clientapps/symbianMmf/wmvextcontroller/wmaextctrldll
    cvsroot/clientapps/symbianMmf/wmvextcontroller/WmvExtCtrlDll
    cvsroot/common/import/expat/xmlparse/xmlparse.c
    cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/common/netbuffer.h
    cvsroot/common/runtime/pub/hlxclib/stddef.h

Files removed:
    cvsroot/datatype/mp3/fileformat/symbian.pcf
    cvsroot/datatype/mp3/renderer/symbian.pcf
                        
Files added: None

Image Size and Heap Use impact: N/A

Module Release testing (STIF) : N/A 

Test case(s) Added  : N/A
  
Memory leak check performed : N/A
  
Platforms and Profiles Build Verified: helix-client-s60-52-ng

Platforms and Profiles verified: armv5, winscw 
  
Branch: HEAD


From amsaleem at helixcommunity.org  Tue Sep  1 13:21:19 2009
From: amsaleem at helixcommunity.org (amsaleem@helixcommunity.org)
Date: Tue Sep  1 22:27:10 2009
Subject: [Common-cvs] include hxtypes.h,1.45,1.46
Message-ID: 

Update of /cvsroot/common/include
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv4109

Modified Files:
	hxtypes.h 
Log Message:
"Nokia submits this code under the terms of a commercial contribution agreement with Real Networks, and I am authorized to contribute this code under said agreement."

Modified by: saleem.adookkattil@nokia.com

Reviewed by:

Date: 08/26/2009

Project: symbianMmf_wm
 
ErrorId: N/A 

Synopsis: Changes made to helix client source to use LIBC.DLL instead of ESTLIB.DLL on Symbian.

Overview:  Helix build system configuration flag HELIX_CONFIG_SYMBIAN_USE_STDAPIS enables usage of LIBC.DLL instead of ESTLIB.DLL on Symbian. Made the following changes to source to link with LIBC.DLL.

1) There is no need to call CloseSTDLIB() when using LIBC.DLL and removed this function call from the following files when HELIX_CONFIG_SYMBIAN_USE_STDAPIS flag is enabled.
    cvsroot/audio/device/platform/symbian/audiosvr/audio_svr_cntxt.cpp
    cvsroot/common/system/platform/symbian/CHXSymbianServer.cpp
    cvsroot/clientapps/symbianMmf/audiocontroller/hxmmfaudioctrl.cpp
    cvsroot/clientapps/symbianMmf/videocontroller/hxmmfctrlimpl.cpp
    cvsroot/datatype/tools/metadataeng/engine/platform/symbian/symbian_metadataeng.cpp
   
2) LIBC.DLL has supports for wide character implementation and removed implementation specific to this from the following file when HELIX_CONFIG_SYMBIAN_USE_STDAPIS flag is enabled.
     cvsroot/common/runtime/symbian.pcf
     cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/helix/helix_win32_functions.h
     cvsroot/common/runtime/pub/hlxclib/wchar.h

3) LIBC.DLL provides implementation for some standard functions/variables those were not available in estlib.dll and made changes to the following files to use those functions instead of the one provided in helix.
     cvsroot/common/include/hxtypes.h
     cvsroot/datatype/mp3/import/id3lib/id3_field_binary.cpp
     cvsroot/common/netio/pub/platform/symbian/nettypes.h
     cvsroot/common/runtime/pub/hlxclib/stdio.h
     cvsroot/common/fileio/platform/symbian/symbihxdataf.cpp

4) Removed estlib.lib, euser.lib and hal.lib from the following files as these files get added by default for symbian platform
     cvsroot/clientapps/symbianMmf/audiocontroller/controllerdll
     cvsroot/clientapps/symbianMmf/videocontroller/MmfCtrlDll
     cvsroot/clientapps/symbianMmf/wmvextcontroller/wmaextctrldll
     cvsroot/clientapps/symbianMmf/wmvextcontroller/WmvExtCtrlDll

5) offsetof marco implementation provided in stdapis\stddef.h, when it used inside existing helix template definition causing compilation failure. Libc\stddef.h has a different implementation from stdapis\stddef.h.  
     So added Libc\stddef.h offsetof macro definition to hlxclib/stddef.h to avoid this failure and use the one provided in Libc\stddef.h.

6) Made changes to the following files to use offsetof macro definition in hlxclib/stddef.h 
    cvsroot/common/import/expat/xmlparse/xmlparse.c
    cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/common/netbuffer.h

7) estlib.lib, euser.lib and hal.lib files get added by default for symbian platform. So there is no need to add these files and removed them from the following symbian.pcf files
    cvsroot/datatype/mp3/fileformat/symbian.pcf
    cvsroot/datatype/mp3/renderer/symbian.pcf

Files modified: 
    cvsroot/audio/device/platform/symbian/audiosvr/audio_svr_cntxt.cpp
    cvsroot/common/system/platform/symbian/CHXSymbianServer.cpp
    cvsroot/clientapps/symbianMmf/audiocontroller/hxmmfaudioctrl.cpp
    cvsroot/clientapps/symbianMmf/videocontroller/hxmmfctrlimpl.cpp
    cvsroot/datatype/tools/metadataeng/engine/platform/symbian/symbian_metadataeng.cpp
    cvsroot/common/runtime/symbian.pcf
    cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/helix/helix_win32_functions.h
    cvsroot/common/runtime/pub/hlxclib/wchar.h
    cvsroot/common/include/hxtypes.h
    cvsroot/datatype/mp3/import/id3lib/id3_field_binary.cpp
    cvsroot/common/netio/pub/platform/symbian/nettypes.h
    cvsroot/common/runtime/pub/hlxclib/stdio.h
    cvsroot/common/fileio/platform/symbian/symbihxdataf.cpp
    cvsroot/clientapps/symbianMmf/audiocontroller/controllerdll
    cvsroot/clientapps/symbianMmf/videocontroller/MmfCtrlDll
    cvsroot/clientapps/symbianMmf/wmvextcontroller/wmaextctrldll
    cvsroot/clientapps/symbianMmf/wmvextcontroller/WmvExtCtrlDll
    cvsroot/common/import/expat/xmlparse/xmlparse.c
    cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/common/netbuffer.h
    cvsroot/common/runtime/pub/hlxclib/stddef.h

Files removed:
    cvsroot/datatype/mp3/fileformat/symbian.pcf
    cvsroot/datatype/mp3/renderer/symbian.pcf
                        
Files added: None

Image Size and Heap Use impact: N/A

Module Release testing (STIF) : N/A 

Test case(s) Added  : N/A
  
Memory leak check performed : N/A
  
Platforms and Profiles Build Verified: helix-client-s60-52-ng

Platforms and Profiles verified: armv5, winscw 
  
Branch: HEAD

Index: hxtypes.h
===================================================================
RCS file: /cvsroot/common/include/hxtypes.h,v
retrieving revision 1.45
retrieving revision 1.46
diff -u -d -r1.45 -r1.46
--- hxtypes.h	29 Jul 2009 16:19:15 -0000	1.45
+++ hxtypes.h	1 Sep 2009 21:21:17 -0000	1.46
@@ -221,8 +221,12 @@
 #endif
 
 #if defined(_SYMBIAN)
+#if defined(HELIX_CONFIG_SYMBIAN_USE_STDAPIS)
+#include 
+#else
 #define PATH_MAX      KMaxPath
 #endif
+#endif
 
 #ifdef __cplusplus
 extern "C" {            /* Assume C declarations for C++ */


From amsaleem at helixcommunity.org  Tue Sep  1 13:35:43 2009
From: amsaleem at helixcommunity.org (amsaleem@helixcommunity.org)
Date: Tue Sep  1 22:41:03 2009
Subject: [Common-cvs] netio/pub/platform/symbian nettypes.h,1.3,1.4
Message-ID: 

Update of /cvsroot/common/netio/pub/platform/symbian
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv4927

Modified Files:
	nettypes.h 
Log Message:
"Nokia submits this code under the terms of a commercial contribution agreement with Real Networks, and I am authorized to contribute this code under said agreement."

Modified by: saleem.adookkattil@nokia.com

Reviewed by:

Date: 08/26/2009

Project: symbianMmf_wm
 
ErrorId: N/A 

Synopsis: Changes made to helix client source to use LIBC.DLL instead of ESTLIB.DLL on Symbian.

Overview:  Helix build system configuration flag HELIX_CONFIG_SYMBIAN_USE_STDAPIS enables usage of LIBC.DLL instead of ESTLIB.DLL on Symbian. Made the following changes to source to link with LIBC.DLL.

1) There is no need to call CloseSTDLIB() when using LIBC.DLL and removed this function call from the following files when HELIX_CONFIG_SYMBIAN_USE_STDAPIS flag is enabled.
    cvsroot/audio/device/platform/symbian/audiosvr/audio_svr_cntxt.cpp
    cvsroot/common/system/platform/symbian/CHXSymbianServer.cpp
    cvsroot/clientapps/symbianMmf/audiocontroller/hxmmfaudioctrl.cpp
    cvsroot/clientapps/symbianMmf/videocontroller/hxmmfctrlimpl.cpp
    cvsroot/datatype/tools/metadataeng/engine/platform/symbian/symbian_metadataeng.cpp
   
2) LIBC.DLL has supports for wide character implementation and removed implementation specific to this from the following file when HELIX_CONFIG_SYMBIAN_USE_STDAPIS flag is enabled.
     cvsroot/common/runtime/symbian.pcf
     cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/helix/helix_win32_functions.h
     cvsroot/common/runtime/pub/hlxclib/wchar.h

3) LIBC.DLL provides implementation for some standard functions/variables those were not available in estlib.dll and made changes to the following files to use those functions instead of the one provided in helix.
     cvsroot/common/include/hxtypes.h
     cvsroot/datatype/mp3/import/id3lib/id3_field_binary.cpp
     cvsroot/common/netio/pub/platform/symbian/nettypes.h
     cvsroot/common/runtime/pub/hlxclib/stdio.h
     cvsroot/common/fileio/platform/symbian/symbihxdataf.cpp

4) Removed estlib.lib, euser.lib and hal.lib from the following files as these files get added by default for symbian platform
     cvsroot/clientapps/symbianMmf/audiocontroller/controllerdll
     cvsroot/clientapps/symbianMmf/videocontroller/MmfCtrlDll
     cvsroot/clientapps/symbianMmf/wmvextcontroller/wmaextctrldll
     cvsroot/clientapps/symbianMmf/wmvextcontroller/WmvExtCtrlDll

5) offsetof marco implementation provided in stdapis\stddef.h, when it used inside existing helix template definition causing compilation failure. Libc\stddef.h has a different implementation from stdapis\stddef.h.  
     So added Libc\stddef.h offsetof macro definition to hlxclib/stddef.h to avoid this failure and use the one provided in Libc\stddef.h.

6) Made changes to the following files to use offsetof macro definition in hlxclib/stddef.h 
    cvsroot/common/import/expat/xmlparse/xmlparse.c
    cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/common/netbuffer.h

7) estlib.lib, euser.lib and hal.lib files get added by default for symbian platform. So there is no need to add these files and removed them from the following symbian.pcf files
    cvsroot/datatype/mp3/fileformat/symbian.pcf
    cvsroot/datatype/mp3/renderer/symbian.pcf

Files modified: 
    cvsroot/audio/device/platform/symbian/audiosvr/audio_svr_cntxt.cpp
    cvsroot/common/system/platform/symbian/CHXSymbianServer.cpp
    cvsroot/clientapps/symbianMmf/audiocontroller/hxmmfaudioctrl.cpp
    cvsroot/clientapps/symbianMmf/videocontroller/hxmmfctrlimpl.cpp
    cvsroot/datatype/tools/metadataeng/engine/platform/symbian/symbian_metadataeng.cpp
    cvsroot/common/runtime/symbian.pcf
    cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/helix/helix_win32_functions.h
    cvsroot/common/runtime/pub/hlxclib/wchar.h
    cvsroot/common/include/hxtypes.h
    cvsroot/datatype/mp3/import/id3lib/id3_field_binary.cpp
    cvsroot/common/netio/pub/platform/symbian/nettypes.h
    cvsroot/common/runtime/pub/hlxclib/stdio.h
    cvsroot/common/fileio/platform/symbian/symbihxdataf.cpp
    cvsroot/clientapps/symbianMmf/audiocontroller/controllerdll
    cvsroot/clientapps/symbianMmf/videocontroller/MmfCtrlDll
    cvsroot/clientapps/symbianMmf/wmvextcontroller/wmaextctrldll
    cvsroot/clientapps/symbianMmf/wmvextcontroller/WmvExtCtrlDll
    cvsroot/common/import/expat/xmlparse/xmlparse.c
    cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/common/netbuffer.h
    cvsroot/common/runtime/pub/hlxclib/stddef.h

Files removed:
    cvsroot/datatype/mp3/fileformat/symbian.pcf
    cvsroot/datatype/mp3/renderer/symbian.pcf
                        
Files added: None

Image Size and Heap Use impact: N/A

Module Release testing (STIF) : N/A 

Test case(s) Added  : N/A
  
Memory leak check performed : N/A
  
Platforms and Profiles Build Verified: helix-client-s60-52-ng

Platforms and Profiles verified: armv5, winscw 
  
Branch: HEAD


From amsaleem at helixcommunity.org  Tue Sep  1 13:35:41 2009
From: amsaleem at helixcommunity.org (amsaleem@helixcommunity.org)
Date: Tue Sep  1 22:41:32 2009
Subject: [Common-cvs] netio/pub/platform/symbian nettypes.h,1.3,1.4
Message-ID: 

Update of /cvsroot/common/netio/pub/platform/symbian
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv4927

Modified Files:
	nettypes.h 
Log Message:
"Nokia submits this code under the terms of a commercial contribution agreement with Real Networks, and I am authorized to contribute this code under said agreement."

Modified by: saleem.adookkattil@nokia.com

Reviewed by:

Date: 08/26/2009

Project: symbianMmf_wm
 
ErrorId: N/A 

Synopsis: Changes made to helix client source to use LIBC.DLL instead of ESTLIB.DLL on Symbian.

Overview:  Helix build system configuration flag HELIX_CONFIG_SYMBIAN_USE_STDAPIS enables usage of LIBC.DLL instead of ESTLIB.DLL on Symbian. Made the following changes to source to link with LIBC.DLL.

1) There is no need to call CloseSTDLIB() when using LIBC.DLL and removed this function call from the following files when HELIX_CONFIG_SYMBIAN_USE_STDAPIS flag is enabled.
    cvsroot/audio/device/platform/symbian/audiosvr/audio_svr_cntxt.cpp
    cvsroot/common/system/platform/symbian/CHXSymbianServer.cpp
    cvsroot/clientapps/symbianMmf/audiocontroller/hxmmfaudioctrl.cpp
    cvsroot/clientapps/symbianMmf/videocontroller/hxmmfctrlimpl.cpp
    cvsroot/datatype/tools/metadataeng/engine/platform/symbian/symbian_metadataeng.cpp
   
2) LIBC.DLL has supports for wide character implementation and removed implementation specific to this from the following file when HELIX_CONFIG_SYMBIAN_USE_STDAPIS flag is enabled.
     cvsroot/common/runtime/symbian.pcf
     cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/helix/helix_win32_functions.h
     cvsroot/common/runtime/pub/hlxclib/wchar.h

3) LIBC.DLL provides implementation for some standard functions/variables those were not available in estlib.dll and made changes to the following files to use those functions instead of the one provided in helix.
     cvsroot/common/include/hxtypes.h
     cvsroot/datatype/mp3/import/id3lib/id3_field_binary.cpp
     cvsroot/common/netio/pub/platform/symbian/nettypes.h
     cvsroot/common/runtime/pub/hlxclib/stdio.h
     cvsroot/common/fileio/platform/symbian/symbihxdataf.cpp

4) Removed estlib.lib, euser.lib and hal.lib from the following files as these files get added by default for symbian platform
     cvsroot/clientapps/symbianMmf/audiocontroller/controllerdll
     cvsroot/clientapps/symbianMmf/videocontroller/MmfCtrlDll
     cvsroot/clientapps/symbianMmf/wmvextcontroller/wmaextctrldll
     cvsroot/clientapps/symbianMmf/wmvextcontroller/WmvExtCtrlDll

5) offsetof marco implementation provided in stdapis\stddef.h, when it used inside existing helix template definition causing compilation failure. Libc\stddef.h has a different implementation from stdapis\stddef.h.  
     So added Libc\stddef.h offsetof macro definition to hlxclib/stddef.h to avoid this failure and use the one provided in Libc\stddef.h.

6) Made changes to the following files to use offsetof macro definition in hlxclib/stddef.h 
    cvsroot/common/import/expat/xmlparse/xmlparse.c
    cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/common/netbuffer.h

7) estlib.lib, euser.lib and hal.lib files get added by default for symbian platform. So there is no need to add these files and removed them from the following symbian.pcf files
    cvsroot/datatype/mp3/fileformat/symbian.pcf
    cvsroot/datatype/mp3/renderer/symbian.pcf

Files modified: 
    cvsroot/audio/device/platform/symbian/audiosvr/audio_svr_cntxt.cpp
    cvsroot/common/system/platform/symbian/CHXSymbianServer.cpp
    cvsroot/clientapps/symbianMmf/audiocontroller/hxmmfaudioctrl.cpp
    cvsroot/clientapps/symbianMmf/videocontroller/hxmmfctrlimpl.cpp
    cvsroot/datatype/tools/metadataeng/engine/platform/symbian/symbian_metadataeng.cpp
    cvsroot/common/runtime/symbian.pcf
    cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/helix/helix_win32_functions.h
    cvsroot/common/runtime/pub/hlxclib/wchar.h
    cvsroot/common/include/hxtypes.h
    cvsroot/datatype/mp3/import/id3lib/id3_field_binary.cpp
    cvsroot/common/netio/pub/platform/symbian/nettypes.h
    cvsroot/common/runtime/pub/hlxclib/stdio.h
    cvsroot/common/fileio/platform/symbian/symbihxdataf.cpp
    cvsroot/clientapps/symbianMmf/audiocontroller/controllerdll
    cvsroot/clientapps/symbianMmf/videocontroller/MmfCtrlDll
    cvsroot/clientapps/symbianMmf/wmvextcontroller/wmaextctrldll
    cvsroot/clientapps/symbianMmf/wmvextcontroller/WmvExtCtrlDll
    cvsroot/common/import/expat/xmlparse/xmlparse.c
    cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/common/netbuffer.h
    cvsroot/common/runtime/pub/hlxclib/stddef.h

Files removed:
    cvsroot/datatype/mp3/fileformat/symbian.pcf
    cvsroot/datatype/mp3/renderer/symbian.pcf
                        
Files added: None

Image Size and Heap Use impact: N/A

Module Release testing (STIF) : N/A 

Test case(s) Added  : N/A
  
Memory leak check performed : N/A
  
Platforms and Profiles Build Verified: helix-client-s60-52-ng

Platforms and Profiles verified: armv5, winscw 
  
Branch: HEAD

Index: nettypes.h
===================================================================
RCS file: /cvsroot/common/netio/pub/platform/symbian/nettypes.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- nettypes.h	6 Jul 2007 20:43:59 -0000	1.3
+++ nettypes.h	1 Sep 2009 21:35:38 -0000	1.4
@@ -49,14 +49,17 @@
 
 #ifndef NETTYPES_H__
 #define NETTYPES_H__
-
+#if defined(HELIX_CONFIG_SYMBIAN_USE_STDAPIS)
+#include 
+#include 
+#endif
 #include 
 #include 
 #include 
 #include 
 #include  // memcmp
 #include "hxtypes.h"
-
+#if !defined(HELIX_CONFIG_SYMBIAN_USE_STDAPIS)
 // Provides posix data structures missing from standard Symbian headers. Even though
 // Symbian does not provide a posix socket API, these are useful for address representation
 // in generic cross-platfrom code.
@@ -224,7 +227,5 @@
     return ((a->sin6_family == AF_INET6) &&
             IN6_IS_ADDR_LOOPBACK(&a->sin6_addr));
 }
-
-
-
+#endif
 #endif /* NETTYPES_H__ */


From amsaleem at helixcommunity.org  Tue Sep  1 13:38:52 2009
From: amsaleem at helixcommunity.org (amsaleem@helixcommunity.org)
Date: Tue Sep  1 22:44:12 2009
Subject: [Common-cvs] runtime/pub/hlxclib stddef.h,1.4,1.5
Message-ID: 

Update of /cvsroot/common/runtime/pub/hlxclib
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv5002

Modified Files:
	stddef.h 
Log Message:
"Nokia submits this code under the terms of a commercial contribution agreement with Real Networks, and I am authorized to contribute this code under said agreement."

Modified by: saleem.adookkattil@nokia.com

Reviewed by:

Date: 08/26/2009

Project: symbianMmf_wm
 
ErrorId: N/A 

Synopsis: Changes made to helix client source to use LIBC.DLL instead of ESTLIB.DLL on Symbian.

Overview:  Helix build system configuration flag HELIX_CONFIG_SYMBIAN_USE_STDAPIS enables usage of LIBC.DLL instead of ESTLIB.DLL on Symbian. Made the following changes to source to link with LIBC.DLL.

1) There is no need to call CloseSTDLIB() when using LIBC.DLL and removed this function call from the following files when HELIX_CONFIG_SYMBIAN_USE_STDAPIS flag is enabled.
    cvsroot/audio/device/platform/symbian/audiosvr/audio_svr_cntxt.cpp
    cvsroot/common/system/platform/symbian/CHXSymbianServer.cpp
    cvsroot/clientapps/symbianMmf/audiocontroller/hxmmfaudioctrl.cpp
    cvsroot/clientapps/symbianMmf/videocontroller/hxmmfctrlimpl.cpp
    cvsroot/datatype/tools/metadataeng/engine/platform/symbian/symbian_metadataeng.cpp
   
2) LIBC.DLL has supports for wide character implementation and removed implementation specific to this from the following file when HELIX_CONFIG_SYMBIAN_USE_STDAPIS flag is enabled.
     cvsroot/common/runtime/symbian.pcf
     cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/helix/helix_win32_functions.h
     cvsroot/common/runtime/pub/hlxclib/wchar.h

3) LIBC.DLL provides implementation for some standard functions/variables those were not available in estlib.dll and made changes to the following files to use those functions instead of the one provided in helix.
     cvsroot/common/include/hxtypes.h
     cvsroot/datatype/mp3/import/id3lib/id3_field_binary.cpp
     cvsroot/common/netio/pub/platform/symbian/nettypes.h
     cvsroot/common/runtime/pub/hlxclib/stdio.h
     cvsroot/common/fileio/platform/symbian/symbihxdataf.cpp

4) Removed estlib.lib, euser.lib and hal.lib from the following files as these files get added by default for symbian platform
     cvsroot/clientapps/symbianMmf/audiocontroller/controllerdll
     cvsroot/clientapps/symbianMmf/videocontroller/MmfCtrlDll
     cvsroot/clientapps/symbianMmf/wmvextcontroller/wmaextctrldll
     cvsroot/clientapps/symbianMmf/wmvextcontroller/WmvExtCtrlDll

5) offsetof marco implementation provided in stdapis\stddef.h, when it used inside existing helix template definition causing compilation failure. Libc\stddef.h has a different implementation from stdapis\stddef.h.  
     So added Libc\stddef.h offsetof macro definition to hlxclib/stddef.h to avoid this failure and use the one provided in Libc\stddef.h.

6) Made changes to the following files to use offsetof macro definition in hlxclib/stddef.h 
    cvsroot/common/import/expat/xmlparse/xmlparse.c
    cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/common/netbuffer.h

7) estlib.lib, euser.lib and hal.lib files get added by default for symbian platform. So there is no need to add these files and removed them from the following symbian.pcf files
    cvsroot/datatype/mp3/fileformat/symbian.pcf
    cvsroot/datatype/mp3/renderer/symbian.pcf

Files modified: 
    cvsroot/audio/device/platform/symbian/audiosvr/audio_svr_cntxt.cpp
    cvsroot/common/system/platform/symbian/CHXSymbianServer.cpp
    cvsroot/clientapps/symbianMmf/audiocontroller/hxmmfaudioctrl.cpp
    cvsroot/clientapps/symbianMmf/videocontroller/hxmmfctrlimpl.cpp
    cvsroot/datatype/tools/metadataeng/engine/platform/symbian/symbian_metadataeng.cpp
    cvsroot/common/runtime/symbian.pcf
    cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/helix/helix_win32_functions.h
    cvsroot/common/runtime/pub/hlxclib/wchar.h
    cvsroot/common/include/hxtypes.h
    cvsroot/datatype/mp3/import/id3lib/id3_field_binary.cpp
    cvsroot/common/netio/pub/platform/symbian/nettypes.h
    cvsroot/common/runtime/pub/hlxclib/stdio.h
    cvsroot/common/fileio/platform/symbian/symbihxdataf.cpp
    cvsroot/clientapps/symbianMmf/audiocontroller/controllerdll
    cvsroot/clientapps/symbianMmf/videocontroller/MmfCtrlDll
    cvsroot/clientapps/symbianMmf/wmvextcontroller/wmaextctrldll
    cvsroot/clientapps/symbianMmf/wmvextcontroller/WmvExtCtrlDll
    cvsroot/common/import/expat/xmlparse/xmlparse.c
    cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/common/netbuffer.h
    cvsroot/common/runtime/pub/hlxclib/stddef.h

Files removed:
    cvsroot/datatype/mp3/fileformat/symbian.pcf
    cvsroot/datatype/mp3/renderer/symbian.pcf
                        
Files added: None

Image Size and Heap Use impact: N/A

Module Release testing (STIF) : N/A 

Test case(s) Added  : N/A
  
Memory leak check performed : N/A
  
Platforms and Profiles Build Verified: helix-client-s60-52-ng

Platforms and Profiles verified: armv5, winscw 
  
Branch: HEAD


From amsaleem at helixcommunity.org  Tue Sep  1 13:38:50 2009
From: amsaleem at helixcommunity.org (amsaleem@helixcommunity.org)
Date: Tue Sep  1 22:44:40 2009
Subject: [Common-cvs] runtime/pub/hlxclib stddef.h,1.4,1.5
Message-ID: 

Update of /cvsroot/common/runtime/pub/hlxclib
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv5002

Modified Files:
	stddef.h 
Log Message:
"Nokia submits this code under the terms of a commercial contribution agreement with Real Networks, and I am authorized to contribute this code under said agreement."

Modified by: saleem.adookkattil@nokia.com

Reviewed by:

Date: 08/26/2009

Project: symbianMmf_wm
 
ErrorId: N/A 

Synopsis: Changes made to helix client source to use LIBC.DLL instead of ESTLIB.DLL on Symbian.

Overview:  Helix build system configuration flag HELIX_CONFIG_SYMBIAN_USE_STDAPIS enables usage of LIBC.DLL instead of ESTLIB.DLL on Symbian. Made the following changes to source to link with LIBC.DLL.

1) There is no need to call CloseSTDLIB() when using LIBC.DLL and removed this function call from the following files when HELIX_CONFIG_SYMBIAN_USE_STDAPIS flag is enabled.
    cvsroot/audio/device/platform/symbian/audiosvr/audio_svr_cntxt.cpp
    cvsroot/common/system/platform/symbian/CHXSymbianServer.cpp
    cvsroot/clientapps/symbianMmf/audiocontroller/hxmmfaudioctrl.cpp
    cvsroot/clientapps/symbianMmf/videocontroller/hxmmfctrlimpl.cpp
    cvsroot/datatype/tools/metadataeng/engine/platform/symbian/symbian_metadataeng.cpp
   
2) LIBC.DLL has supports for wide character implementation and removed implementation specific to this from the following file when HELIX_CONFIG_SYMBIAN_USE_STDAPIS flag is enabled.
     cvsroot/common/runtime/symbian.pcf
     cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/helix/helix_win32_functions.h
     cvsroot/common/runtime/pub/hlxclib/wchar.h

3) LIBC.DLL provides implementation for some standard functions/variables those were not available in estlib.dll and made changes to the following files to use those functions instead of the one provided in helix.
     cvsroot/common/include/hxtypes.h
     cvsroot/datatype/mp3/import/id3lib/id3_field_binary.cpp
     cvsroot/common/netio/pub/platform/symbian/nettypes.h
     cvsroot/common/runtime/pub/hlxclib/stdio.h
     cvsroot/common/fileio/platform/symbian/symbihxdataf.cpp

4) Removed estlib.lib, euser.lib and hal.lib from the following files as these files get added by default for symbian platform
     cvsroot/clientapps/symbianMmf/audiocontroller/controllerdll
     cvsroot/clientapps/symbianMmf/videocontroller/MmfCtrlDll
     cvsroot/clientapps/symbianMmf/wmvextcontroller/wmaextctrldll
     cvsroot/clientapps/symbianMmf/wmvextcontroller/WmvExtCtrlDll

5) offsetof marco implementation provided in stdapis\stddef.h, when it used inside existing helix template definition causing compilation failure. Libc\stddef.h has a different implementation from stdapis\stddef.h.  
     So added Libc\stddef.h offsetof macro definition to hlxclib/stddef.h to avoid this failure and use the one provided in Libc\stddef.h.

6) Made changes to the following files to use offsetof macro definition in hlxclib/stddef.h 
    cvsroot/common/import/expat/xmlparse/xmlparse.c
    cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/common/netbuffer.h

7) estlib.lib, euser.lib and hal.lib files get added by default for symbian platform. So there is no need to add these files and removed them from the following symbian.pcf files
    cvsroot/datatype/mp3/fileformat/symbian.pcf
    cvsroot/datatype/mp3/renderer/symbian.pcf

Files modified: 
    cvsroot/audio/device/platform/symbian/audiosvr/audio_svr_cntxt.cpp
    cvsroot/common/system/platform/symbian/CHXSymbianServer.cpp
    cvsroot/clientapps/symbianMmf/audiocontroller/hxmmfaudioctrl.cpp
    cvsroot/clientapps/symbianMmf/videocontroller/hxmmfctrlimpl.cpp
    cvsroot/datatype/tools/metadataeng/engine/platform/symbian/symbian_metadataeng.cpp
    cvsroot/common/runtime/symbian.pcf
    cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/helix/helix_win32_functions.h
    cvsroot/common/runtime/pub/hlxclib/wchar.h
    cvsroot/common/include/hxtypes.h
    cvsroot/datatype/mp3/import/id3lib/id3_field_binary.cpp
    cvsroot/common/netio/pub/platform/symbian/nettypes.h
    cvsroot/common/runtime/pub/hlxclib/stdio.h
    cvsroot/common/fileio/platform/symbian/symbihxdataf.cpp
    cvsroot/clientapps/symbianMmf/audiocontroller/controllerdll
    cvsroot/clientapps/symbianMmf/videocontroller/MmfCtrlDll
    cvsroot/clientapps/symbianMmf/wmvextcontroller/wmaextctrldll
    cvsroot/clientapps/symbianMmf/wmvextcontroller/WmvExtCtrlDll
    cvsroot/common/import/expat/xmlparse/xmlparse.c
    cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/common/netbuffer.h
    cvsroot/common/runtime/pub/hlxclib/stddef.h

Files removed:
    cvsroot/datatype/mp3/fileformat/symbian.pcf
    cvsroot/datatype/mp3/renderer/symbian.pcf
                        
Files added: None

Image Size and Heap Use impact: N/A

Module Release testing (STIF) : N/A 

Test case(s) Added  : N/A
  
Memory leak check performed : N/A
  
Platforms and Profiles Build Verified: helix-client-s60-52-ng

Platforms and Profiles verified: armv5, winscw 
  
Branch: HEAD

Index: stddef.h
===================================================================
RCS file: /cvsroot/common/runtime/pub/hlxclib/stddef.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- stddef.h	6 Jul 2007 20:44:04 -0000	1.4
+++ stddef.h	1 Sep 2009 21:38:48 -0000	1.5
@@ -59,6 +59,10 @@
 
 #include 
 
+#if defined(HELIX_CONFIG_SYMBIAN_USE_STDAPIS)
+#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
+#endif
+
 #ifdef LIMITS_UNDEF_WIN32
 #undef _WIN32
 #undef LIMITS_UNDEF_WIN32


From amsaleem at helixcommunity.org  Tue Sep  1 13:40:30 2009
From: amsaleem at helixcommunity.org (amsaleem@helixcommunity.org)
Date: Tue Sep  1 22:45:50 2009
Subject: [Common-cvs] runtime/pub/hlxclib stdio.h,1.11,1.12
Message-ID: 

Update of /cvsroot/common/runtime/pub/hlxclib
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv5055

Modified Files:
	stdio.h 
Log Message:
"Nokia submits this code under the terms of a commercial contribution agreement with Real Networks, and I am authorized to contribute this code under said agreement."

Modified by: saleem.adookkattil@nokia.com

Reviewed by:

Date: 08/26/2009

Project: symbianMmf_wm
 
ErrorId: N/A 

Synopsis: Changes made to helix client source to use LIBC.DLL instead of ESTLIB.DLL on Symbian.

Overview:  Helix build system configuration flag HELIX_CONFIG_SYMBIAN_USE_STDAPIS enables usage of LIBC.DLL instead of ESTLIB.DLL on Symbian. Made the following changes to source to link with LIBC.DLL.

1) There is no need to call CloseSTDLIB() when using LIBC.DLL and removed this function call from the following files when HELIX_CONFIG_SYMBIAN_USE_STDAPIS flag is enabled.
    cvsroot/audio/device/platform/symbian/audiosvr/audio_svr_cntxt.cpp
    cvsroot/common/system/platform/symbian/CHXSymbianServer.cpp
    cvsroot/clientapps/symbianMmf/audiocontroller/hxmmfaudioctrl.cpp
    cvsroot/clientapps/symbianMmf/videocontroller/hxmmfctrlimpl.cpp
    cvsroot/datatype/tools/metadataeng/engine/platform/symbian/symbian_metadataeng.cpp
   
2) LIBC.DLL has supports for wide character implementation and removed implementation specific to this from the following file when HELIX_CONFIG_SYMBIAN_USE_STDAPIS flag is enabled.
     cvsroot/common/runtime/symbian.pcf
     cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/helix/helix_win32_functions.h
     cvsroot/common/runtime/pub/hlxclib/wchar.h

3) LIBC.DLL provides implementation for some standard functions/variables those were not available in estlib.dll and made changes to the following files to use those functions instead of the one provided in helix.
     cvsroot/common/include/hxtypes.h
     cvsroot/datatype/mp3/import/id3lib/id3_field_binary.cpp
     cvsroot/common/netio/pub/platform/symbian/nettypes.h
     cvsroot/common/runtime/pub/hlxclib/stdio.h
     cvsroot/common/fileio/platform/symbian/symbihxdataf.cpp

4) Removed estlib.lib, euser.lib and hal.lib from the following files as these files get added by default for symbian platform
     cvsroot/clientapps/symbianMmf/audiocontroller/controllerdll
     cvsroot/clientapps/symbianMmf/videocontroller/MmfCtrlDll
     cvsroot/clientapps/symbianMmf/wmvextcontroller/wmaextctrldll
     cvsroot/clientapps/symbianMmf/wmvextcontroller/WmvExtCtrlDll

5) offsetof marco implementation provided in stdapis\stddef.h, when it used inside existing helix template definition causing compilation failure. Libc\stddef.h has a different implementation from stdapis\stddef.h.  
     So added Libc\stddef.h offsetof macro definition to hlxclib/stddef.h to avoid this failure and use the one provided in Libc\stddef.h.

6) Made changes to the following files to use offsetof macro definition in hlxclib/stddef.h 
    cvsroot/common/import/expat/xmlparse/xmlparse.c
    cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/common/netbuffer.h

7) estlib.lib, euser.lib and hal.lib files get added by default for symbian platform. So there is no need to add these files and removed them from the following symbian.pcf files
    cvsroot/datatype/mp3/fileformat/symbian.pcf
    cvsroot/datatype/mp3/renderer/symbian.pcf

Files modified: 
    cvsroot/audio/device/platform/symbian/audiosvr/audio_svr_cntxt.cpp
    cvsroot/common/system/platform/symbian/CHXSymbianServer.cpp
    cvsroot/clientapps/symbianMmf/audiocontroller/hxmmfaudioctrl.cpp
    cvsroot/clientapps/symbianMmf/videocontroller/hxmmfctrlimpl.cpp
    cvsroot/datatype/tools/metadataeng/engine/platform/symbian/symbian_metadataeng.cpp
    cvsroot/common/runtime/symbian.pcf
    cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/helix/helix_win32_functions.h
    cvsroot/common/runtime/pub/hlxclib/wchar.h
    cvsroot/common/include/hxtypes.h
    cvsroot/datatype/mp3/import/id3lib/id3_field_binary.cpp
    cvsroot/common/netio/pub/platform/symbian/nettypes.h
    cvsroot/common/runtime/pub/hlxclib/stdio.h
    cvsroot/common/fileio/platform/symbian/symbihxdataf.cpp
    cvsroot/clientapps/symbianMmf/audiocontroller/controllerdll
    cvsroot/clientapps/symbianMmf/videocontroller/MmfCtrlDll
    cvsroot/clientapps/symbianMmf/wmvextcontroller/wmaextctrldll
    cvsroot/clientapps/symbianMmf/wmvextcontroller/WmvExtCtrlDll
    cvsroot/common/import/expat/xmlparse/xmlparse.c
    cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/common/netbuffer.h
    cvsroot/common/runtime/pub/hlxclib/stddef.h

Files removed:
    cvsroot/datatype/mp3/fileformat/symbian.pcf
    cvsroot/datatype/mp3/renderer/symbian.pcf
                        
Files added: None

Image Size and Heap Use impact: N/A

Module Release testing (STIF) : N/A 

Test case(s) Added  : N/A
  
Memory leak check performed : N/A
  
Platforms and Profiles Build Verified: helix-client-s60-52-ng

Platforms and Profiles verified: armv5, winscw 
  
Branch: HEAD


From amsaleem at helixcommunity.org  Tue Sep  1 13:40:28 2009
From: amsaleem at helixcommunity.org (amsaleem@helixcommunity.org)
Date: Tue Sep  1 22:46:18 2009
Subject: [Common-cvs] runtime/pub/hlxclib stdio.h,1.11,1.12
Message-ID: 

Update of /cvsroot/common/runtime/pub/hlxclib
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv5055

Modified Files:
	stdio.h 
Log Message:
"Nokia submits this code under the terms of a commercial contribution agreement with Real Networks, and I am authorized to contribute this code under said agreement."

Modified by: saleem.adookkattil@nokia.com

Reviewed by:

Date: 08/26/2009

Project: symbianMmf_wm
 
ErrorId: N/A 

Synopsis: Changes made to helix client source to use LIBC.DLL instead of ESTLIB.DLL on Symbian.

Overview:  Helix build system configuration flag HELIX_CONFIG_SYMBIAN_USE_STDAPIS enables usage of LIBC.DLL instead of ESTLIB.DLL on Symbian. Made the following changes to source to link with LIBC.DLL.

1) There is no need to call CloseSTDLIB() when using LIBC.DLL and removed this function call from the following files when HELIX_CONFIG_SYMBIAN_USE_STDAPIS flag is enabled.
    cvsroot/audio/device/platform/symbian/audiosvr/audio_svr_cntxt.cpp
    cvsroot/common/system/platform/symbian/CHXSymbianServer.cpp
    cvsroot/clientapps/symbianMmf/audiocontroller/hxmmfaudioctrl.cpp
    cvsroot/clientapps/symbianMmf/videocontroller/hxmmfctrlimpl.cpp
    cvsroot/datatype/tools/metadataeng/engine/platform/symbian/symbian_metadataeng.cpp
   
2) LIBC.DLL has supports for wide character implementation and removed implementation specific to this from the following file when HELIX_CONFIG_SYMBIAN_USE_STDAPIS flag is enabled.
     cvsroot/common/runtime/symbian.pcf
     cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/helix/helix_win32_functions.h
     cvsroot/common/runtime/pub/hlxclib/wchar.h

3) LIBC.DLL provides implementation for some standard functions/variables those were not available in estlib.dll and made changes to the following files to use those functions instead of the one provided in helix.
     cvsroot/common/include/hxtypes.h
     cvsroot/datatype/mp3/import/id3lib/id3_field_binary.cpp
     cvsroot/common/netio/pub/platform/symbian/nettypes.h
     cvsroot/common/runtime/pub/hlxclib/stdio.h
     cvsroot/common/fileio/platform/symbian/symbihxdataf.cpp

4) Removed estlib.lib, euser.lib and hal.lib from the following files as these files get added by default for symbian platform
     cvsroot/clientapps/symbianMmf/audiocontroller/controllerdll
     cvsroot/clientapps/symbianMmf/videocontroller/MmfCtrlDll
     cvsroot/clientapps/symbianMmf/wmvextcontroller/wmaextctrldll
     cvsroot/clientapps/symbianMmf/wmvextcontroller/WmvExtCtrlDll

5) offsetof marco implementation provided in stdapis\stddef.h, when it used inside existing helix template definition causing compilation failure. Libc\stddef.h has a different implementation from stdapis\stddef.h.  
     So added Libc\stddef.h offsetof macro definition to hlxclib/stddef.h to avoid this failure and use the one provided in Libc\stddef.h.

6) Made changes to the following files to use offsetof macro definition in hlxclib/stddef.h 
    cvsroot/common/import/expat/xmlparse/xmlparse.c
    cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/common/netbuffer.h

7) estlib.lib, euser.lib and hal.lib files get added by default for symbian platform. So there is no need to add these files and removed them from the following symbian.pcf files
    cvsroot/datatype/mp3/fileformat/symbian.pcf
    cvsroot/datatype/mp3/renderer/symbian.pcf

Files modified: 
    cvsroot/audio/device/platform/symbian/audiosvr/audio_svr_cntxt.cpp
    cvsroot/common/system/platform/symbian/CHXSymbianServer.cpp
    cvsroot/clientapps/symbianMmf/audiocontroller/hxmmfaudioctrl.cpp
    cvsroot/clientapps/symbianMmf/videocontroller/hxmmfctrlimpl.cpp
    cvsroot/datatype/tools/metadataeng/engine/platform/symbian/symbian_metadataeng.cpp
    cvsroot/common/runtime/symbian.pcf
    cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/helix/helix_win32_functions.h
    cvsroot/common/runtime/pub/hlxclib/wchar.h
    cvsroot/common/include/hxtypes.h
    cvsroot/datatype/mp3/import/id3lib/id3_field_binary.cpp
    cvsroot/common/netio/pub/platform/symbian/nettypes.h
    cvsroot/common/runtime/pub/hlxclib/stdio.h
    cvsroot/common/fileio/platform/symbian/symbihxdataf.cpp
    cvsroot/clientapps/symbianMmf/audiocontroller/controllerdll
    cvsroot/clientapps/symbianMmf/videocontroller/MmfCtrlDll
    cvsroot/clientapps/symbianMmf/wmvextcontroller/wmaextctrldll
    cvsroot/clientapps/symbianMmf/wmvextcontroller/WmvExtCtrlDll
    cvsroot/common/import/expat/xmlparse/xmlparse.c
    cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/common/netbuffer.h
    cvsroot/common/runtime/pub/hlxclib/stddef.h

Files removed:
    cvsroot/datatype/mp3/fileformat/symbian.pcf
    cvsroot/datatype/mp3/renderer/symbian.pcf
                        
Files added: None

Image Size and Heap Use impact: N/A

Module Release testing (STIF) : N/A 

Test case(s) Added  : N/A
  
Memory leak check performed : N/A
  
Platforms and Profiles Build Verified: helix-client-s60-52-ng

Platforms and Profiles verified: armv5, winscw 
  
Branch: HEAD

Index: stdio.h
===================================================================
RCS file: /cvsroot/common/runtime/pub/hlxclib/stdio.h,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -d -r1.11 -r1.12
--- stdio.h	18 Jan 2008 09:17:27 -0000	1.11
+++ stdio.h	1 Sep 2009 21:40:25 -0000	1.12
@@ -245,9 +245,11 @@
 #define vsnprintf _vsnprintf
 
 #elif defined(_SYMBIAN) || defined(_WINCE) || defined(_IRIX)
+#if !defined(HELIX_CONFIG_SYMBIAN_USE_STDAPIS)
 #define snprintf __helix_snprintf
 #define vsnprintf __helix_vsnprintf
 #endif
+#endif
 
 #if	__cplusplus
 }


From amsaleem at helixcommunity.org  Tue Sep  1 13:42:31 2009
From: amsaleem at helixcommunity.org (amsaleem@helixcommunity.org)
Date: Tue Sep  1 22:47:50 2009
Subject: [Common-cvs] runtime/pub/hlxclib wchar.h,1.8,1.9
Message-ID: 

Update of /cvsroot/common/runtime/pub/hlxclib
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv5101

Modified Files:
	wchar.h 
Log Message:
"Nokia submits this code under the terms of a commercial contribution agreement with Real Networks, and I am authorized to contribute this code under said agreement."

Modified by: saleem.adookkattil@nokia.com

Reviewed by:

Date: 08/26/2009

Project: symbianMmf_wm
 
ErrorId: N/A 

Synopsis: Changes made to helix client source to use LIBC.DLL instead of ESTLIB.DLL on Symbian.

Overview:  Helix build system configuration flag HELIX_CONFIG_SYMBIAN_USE_STDAPIS enables usage of LIBC.DLL instead of ESTLIB.DLL on Symbian. Made the following changes to source to link with LIBC.DLL.

1) There is no need to call CloseSTDLIB() when using LIBC.DLL and removed this function call from the following files when HELIX_CONFIG_SYMBIAN_USE_STDAPIS flag is enabled.
    cvsroot/audio/device/platform/symbian/audiosvr/audio_svr_cntxt.cpp
    cvsroot/common/system/platform/symbian/CHXSymbianServer.cpp
    cvsroot/clientapps/symbianMmf/audiocontroller/hxmmfaudioctrl.cpp
    cvsroot/clientapps/symbianMmf/videocontroller/hxmmfctrlimpl.cpp
    cvsroot/datatype/tools/metadataeng/engine/platform/symbian/symbian_metadataeng.cpp
   
2) LIBC.DLL has supports for wide character implementation and removed implementation specific to this from the following file when HELIX_CONFIG_SYMBIAN_USE_STDAPIS flag is enabled.
     cvsroot/common/runtime/symbian.pcf
     cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/helix/helix_win32_functions.h
     cvsroot/common/runtime/pub/hlxclib/wchar.h

3) LIBC.DLL provides implementation for some standard functions/variables those were not available in estlib.dll and made changes to the following files to use those functions instead of the one provided in helix.
     cvsroot/common/include/hxtypes.h
     cvsroot/datatype/mp3/import/id3lib/id3_field_binary.cpp
     cvsroot/common/netio/pub/platform/symbian/nettypes.h
     cvsroot/common/runtime/pub/hlxclib/stdio.h
     cvsroot/common/fileio/platform/symbian/symbihxdataf.cpp

4) Removed estlib.lib, euser.lib and hal.lib from the following files as these files get added by default for symbian platform
     cvsroot/clientapps/symbianMmf/audiocontroller/controllerdll
     cvsroot/clientapps/symbianMmf/videocontroller/MmfCtrlDll
     cvsroot/clientapps/symbianMmf/wmvextcontroller/wmaextctrldll
     cvsroot/clientapps/symbianMmf/wmvextcontroller/WmvExtCtrlDll

5) offsetof marco implementation provided in stdapis\stddef.h, when it used inside existing helix template definition causing compilation failure. Libc\stddef.h has a different implementation from stdapis\stddef.h.  
     So added Libc\stddef.h offsetof macro definition to hlxclib/stddef.h to avoid this failure and use the one provided in Libc\stddef.h.

6) Made changes to the following files to use offsetof macro definition in hlxclib/stddef.h 
    cvsroot/common/import/expat/xmlparse/xmlparse.c
    cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/common/netbuffer.h

7) estlib.lib, euser.lib and hal.lib files get added by default for symbian platform. So there is no need to add these files and removed them from the following symbian.pcf files
    cvsroot/datatype/mp3/fileformat/symbian.pcf
    cvsroot/datatype/mp3/renderer/symbian.pcf

Files modified: 
    cvsroot/audio/device/platform/symbian/audiosvr/audio_svr_cntxt.cpp
    cvsroot/common/system/platform/symbian/CHXSymbianServer.cpp
    cvsroot/clientapps/symbianMmf/audiocontroller/hxmmfaudioctrl.cpp
    cvsroot/clientapps/symbianMmf/videocontroller/hxmmfctrlimpl.cpp
    cvsroot/datatype/tools/metadataeng/engine/platform/symbian/symbian_metadataeng.cpp
    cvsroot/common/runtime/symbian.pcf
    cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/helix/helix_win32_functions.h
    cvsroot/common/runtime/pub/hlxclib/wchar.h
    cvsroot/common/include/hxtypes.h
    cvsroot/datatype/mp3/import/id3lib/id3_field_binary.cpp
    cvsroot/common/netio/pub/platform/symbian/nettypes.h
    cvsroot/common/runtime/pub/hlxclib/stdio.h
    cvsroot/common/fileio/platform/symbian/symbihxdataf.cpp
    cvsroot/clientapps/symbianMmf/audiocontroller/controllerdll
    cvsroot/clientapps/symbianMmf/videocontroller/MmfCtrlDll
    cvsroot/clientapps/symbianMmf/wmvextcontroller/wmaextctrldll
    cvsroot/clientapps/symbianMmf/wmvextcontroller/WmvExtCtrlDll
    cvsroot/common/import/expat/xmlparse/xmlparse.c
    cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/common/netbuffer.h
    cvsroot/common/runtime/pub/hlxclib/stddef.h

Files removed:
    cvsroot/datatype/mp3/fileformat/symbian.pcf
    cvsroot/datatype/mp3/renderer/symbian.pcf
                        
Files added: None

Image Size and Heap Use impact: N/A

Module Release testing (STIF) : N/A 

Test case(s) Added  : N/A
  
Memory leak check performed : N/A
  
Platforms and Profiles Build Verified: helix-client-s60-52-ng

Platforms and Profiles verified: armv5, winscw 
  
Branch: HEAD


From amsaleem at helixcommunity.org  Tue Sep  1 13:42:29 2009
From: amsaleem at helixcommunity.org (amsaleem@helixcommunity.org)
Date: Tue Sep  1 22:48:19 2009
Subject: [Common-cvs] runtime/pub/hlxclib wchar.h,1.8,1.9
Message-ID: 

Update of /cvsroot/common/runtime/pub/hlxclib
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv5101

Modified Files:
	wchar.h 
Log Message:
"Nokia submits this code under the terms of a commercial contribution agreement with Real Networks, and I am authorized to contribute this code under said agreement."

Modified by: saleem.adookkattil@nokia.com

Reviewed by:

Date: 08/26/2009

Project: symbianMmf_wm
 
ErrorId: N/A 

Synopsis: Changes made to helix client source to use LIBC.DLL instead of ESTLIB.DLL on Symbian.

Overview:  Helix build system configuration flag HELIX_CONFIG_SYMBIAN_USE_STDAPIS enables usage of LIBC.DLL instead of ESTLIB.DLL on Symbian. Made the following changes to source to link with LIBC.DLL.

1) There is no need to call CloseSTDLIB() when using LIBC.DLL and removed this function call from the following files when HELIX_CONFIG_SYMBIAN_USE_STDAPIS flag is enabled.
    cvsroot/audio/device/platform/symbian/audiosvr/audio_svr_cntxt.cpp
    cvsroot/common/system/platform/symbian/CHXSymbianServer.cpp
    cvsroot/clientapps/symbianMmf/audiocontroller/hxmmfaudioctrl.cpp
    cvsroot/clientapps/symbianMmf/videocontroller/hxmmfctrlimpl.cpp
    cvsroot/datatype/tools/metadataeng/engine/platform/symbian/symbian_metadataeng.cpp
   
2) LIBC.DLL has supports for wide character implementation and removed implementation specific to this from the following file when HELIX_CONFIG_SYMBIAN_USE_STDAPIS flag is enabled.
     cvsroot/common/runtime/symbian.pcf
     cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/helix/helix_win32_functions.h
     cvsroot/common/runtime/pub/hlxclib/wchar.h

3) LIBC.DLL provides implementation for some standard functions/variables those were not available in estlib.dll and made changes to the following files to use those functions instead of the one provided in helix.
     cvsroot/common/include/hxtypes.h
     cvsroot/datatype/mp3/import/id3lib/id3_field_binary.cpp
     cvsroot/common/netio/pub/platform/symbian/nettypes.h
     cvsroot/common/runtime/pub/hlxclib/stdio.h
     cvsroot/common/fileio/platform/symbian/symbihxdataf.cpp

4) Removed estlib.lib, euser.lib and hal.lib from the following files as these files get added by default for symbian platform
     cvsroot/clientapps/symbianMmf/audiocontroller/controllerdll
     cvsroot/clientapps/symbianMmf/videocontroller/MmfCtrlDll
     cvsroot/clientapps/symbianMmf/wmvextcontroller/wmaextctrldll
     cvsroot/clientapps/symbianMmf/wmvextcontroller/WmvExtCtrlDll

5) offsetof marco implementation provided in stdapis\stddef.h, when it used inside existing helix template definition causing compilation failure. Libc\stddef.h has a different implementation from stdapis\stddef.h.  
     So added Libc\stddef.h offsetof macro definition to hlxclib/stddef.h to avoid this failure and use the one provided in Libc\stddef.h.

6) Made changes to the following files to use offsetof macro definition in hlxclib/stddef.h 
    cvsroot/common/import/expat/xmlparse/xmlparse.c
    cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/common/netbuffer.h

7) estlib.lib, euser.lib and hal.lib files get added by default for symbian platform. So there is no need to add these files and removed them from the following symbian.pcf files
    cvsroot/datatype/mp3/fileformat/symbian.pcf
    cvsroot/datatype/mp3/renderer/symbian.pcf

Files modified: 
    cvsroot/audio/device/platform/symbian/audiosvr/audio_svr_cntxt.cpp
    cvsroot/common/system/platform/symbian/CHXSymbianServer.cpp
    cvsroot/clientapps/symbianMmf/audiocontroller/hxmmfaudioctrl.cpp
    cvsroot/clientapps/symbianMmf/videocontroller/hxmmfctrlimpl.cpp
    cvsroot/datatype/tools/metadataeng/engine/platform/symbian/symbian_metadataeng.cpp
    cvsroot/common/runtime/symbian.pcf
    cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/helix/helix_win32_functions.h
    cvsroot/common/runtime/pub/hlxclib/wchar.h
    cvsroot/common/include/hxtypes.h
    cvsroot/datatype/mp3/import/id3lib/id3_field_binary.cpp
    cvsroot/common/netio/pub/platform/symbian/nettypes.h
    cvsroot/common/runtime/pub/hlxclib/stdio.h
    cvsroot/common/fileio/platform/symbian/symbihxdataf.cpp
    cvsroot/clientapps/symbianMmf/audiocontroller/controllerdll
    cvsroot/clientapps/symbianMmf/videocontroller/MmfCtrlDll
    cvsroot/clientapps/symbianMmf/wmvextcontroller/wmaextctrldll
    cvsroot/clientapps/symbianMmf/wmvextcontroller/WmvExtCtrlDll
    cvsroot/common/import/expat/xmlparse/xmlparse.c
    cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/common/netbuffer.h
    cvsroot/common/runtime/pub/hlxclib/stddef.h

Files removed:
    cvsroot/datatype/mp3/fileformat/symbian.pcf
    cvsroot/datatype/mp3/renderer/symbian.pcf
                        
Files added: None

Image Size and Heap Use impact: N/A

Module Release testing (STIF) : N/A 

Test case(s) Added  : N/A
  
Memory leak check performed : N/A
  
Platforms and Profiles Build Verified: helix-client-s60-52-ng

Platforms and Profiles verified: armv5, winscw 
  
Branch: HEAD

Index: wchar.h
===================================================================
RCS file: /cvsroot/common/runtime/pub/hlxclib/wchar.h,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -d -r1.8 -r1.9
--- wchar.h	9 Apr 2009 23:01:40 -0000	1.8
+++ wchar.h	1 Sep 2009 21:42:26 -0000	1.9
@@ -67,8 +67,12 @@
 // the header has the inclusion for the wchar string operations
 
 #ifdef _SYMBIAN
+#if defined(HELIX_CONFIG_SYMBIAN_USE_STDAPIS)
+    #include 
+#else
     #include "platform/symbian/symbian_wchar_functions.h"
     #include 
+#endif
 #elif _BREW
 #elif ANDROID
     //Android has no wide-char support


From amsaleem at helixcommunity.org  Tue Sep  1 13:50:33 2009
From: amsaleem at helixcommunity.org (amsaleem@helixcommunity.org)
Date: Tue Sep  1 22:55:53 2009
Subject: [Common-cvs] fileio/platform/symbian symbihxdataf.cpp,1.15,1.16
Message-ID: 

Update of /cvsroot/common/fileio/platform/symbian
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv5317

Modified Files:
	symbihxdataf.cpp 
Log Message:
"Nokia submits this code under the terms of a commercial contribution agreement with Real Networks, and I am authorized to contribute this code under said agreement."

Modified by: saleem.adookkattil@nokia.com

Reviewed by:

Date: 08/26/2009

Project: symbianMmf_wm
 
ErrorId: N/A 

Synopsis: Changes made to helix client source to use LIBC.DLL instead of ESTLIB.DLL on Symbian.

Overview:  Helix build system configuration flag HELIX_CONFIG_SYMBIAN_USE_STDAPIS enables usage of LIBC.DLL instead of ESTLIB.DLL on Symbian. Made the following changes to source to link with LIBC.DLL.

1) There is no need to call CloseSTDLIB() when using LIBC.DLL and removed this function call from the following files when HELIX_CONFIG_SYMBIAN_USE_STDAPIS flag is enabled.
    cvsroot/audio/device/platform/symbian/audiosvr/audio_svr_cntxt.cpp
    cvsroot/common/system/platform/symbian/CHXSymbianServer.cpp
    cvsroot/clientapps/symbianMmf/audiocontroller/hxmmfaudioctrl.cpp
    cvsroot/clientapps/symbianMmf/videocontroller/hxmmfctrlimpl.cpp
    cvsroot/datatype/tools/metadataeng/engine/platform/symbian/symbian_metadataeng.cpp
   
2) LIBC.DLL has supports for wide character implementation and removed implementation specific to this from the following file when HELIX_CONFIG_SYMBIAN_USE_STDAPIS flag is enabled.
     cvsroot/common/runtime/symbian.pcf
     cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/helix/helix_win32_functions.h
     cvsroot/common/runtime/pub/hlxclib/wchar.h

3) LIBC.DLL provides implementation for some standard functions/variables those were not available in estlib.dll and made changes to the following files to use those functions instead of the one provided in helix.
     cvsroot/common/include/hxtypes.h
     cvsroot/datatype/mp3/import/id3lib/id3_field_binary.cpp
     cvsroot/common/netio/pub/platform/symbian/nettypes.h
     cvsroot/common/runtime/pub/hlxclib/stdio.h
     cvsroot/common/fileio/platform/symbian/symbihxdataf.cpp

4) Removed estlib.lib, euser.lib and hal.lib from the following files as these files get added by default for symbian platform
     cvsroot/clientapps/symbianMmf/audiocontroller/controllerdll
     cvsroot/clientapps/symbianMmf/videocontroller/MmfCtrlDll
     cvsroot/clientapps/symbianMmf/wmvextcontroller/wmaextctrldll
     cvsroot/clientapps/symbianMmf/wmvextcontroller/WmvExtCtrlDll

5) offsetof marco implementation provided in stdapis\stddef.h, when it used inside existing helix template definition causing compilation failure. Libc\stddef.h has a different implementation from stdapis\stddef.h.  
     So added Libc\stddef.h offsetof macro definition to hlxclib/stddef.h to avoid this failure and use the one provided in Libc\stddef.h.

6) Made changes to the following files to use offsetof macro definition in hlxclib/stddef.h 
    cvsroot/common/import/expat/xmlparse/xmlparse.c
    cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/common/netbuffer.h

7) estlib.lib, euser.lib and hal.lib files get added by default for symbian platform. So there is no need to add these files and removed them from the following symbian.pcf files
    cvsroot/datatype/mp3/fileformat/symbian.pcf
    cvsroot/datatype/mp3/renderer/symbian.pcf

Files modified: 
    cvsroot/audio/device/platform/symbian/audiosvr/audio_svr_cntxt.cpp
    cvsroot/common/system/platform/symbian/CHXSymbianServer.cpp
    cvsroot/clientapps/symbianMmf/audiocontroller/hxmmfaudioctrl.cpp
    cvsroot/clientapps/symbianMmf/videocontroller/hxmmfctrlimpl.cpp
    cvsroot/datatype/tools/metadataeng/engine/platform/symbian/symbian_metadataeng.cpp
    cvsroot/common/runtime/symbian.pcf
    cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/helix/helix_win32_functions.h
    cvsroot/common/runtime/pub/hlxclib/wchar.h
    cvsroot/common/include/hxtypes.h
    cvsroot/datatype/mp3/import/id3lib/id3_field_binary.cpp
    cvsroot/common/netio/pub/platform/symbian/nettypes.h
    cvsroot/common/runtime/pub/hlxclib/stdio.h
    cvsroot/common/fileio/platform/symbian/symbihxdataf.cpp
    cvsroot/clientapps/symbianMmf/audiocontroller/controllerdll
    cvsroot/clientapps/symbianMmf/videocontroller/MmfCtrlDll
    cvsroot/clientapps/symbianMmf/wmvextcontroller/wmaextctrldll
    cvsroot/clientapps/symbianMmf/wmvextcontroller/WmvExtCtrlDll
    cvsroot/common/import/expat/xmlparse/xmlparse.c
    cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/common/netbuffer.h
    cvsroot/common/runtime/pub/hlxclib/stddef.h

Files removed:
    cvsroot/datatype/mp3/fileformat/symbian.pcf
    cvsroot/datatype/mp3/renderer/symbian.pcf
                        
Files added: None

Image Size and Heap Use impact: N/A

Module Release testing (STIF) : N/A 

Test case(s) Added  : N/A
  
Memory leak check performed : N/A
  
Platforms and Profiles Build Verified: helix-client-s60-52-ng

Platforms and Profiles verified: armv5, winscw 
  
Branch: HEAD


From amsaleem at helixcommunity.org  Tue Sep  1 13:50:31 2009
From: amsaleem at helixcommunity.org (amsaleem@helixcommunity.org)
Date: Tue Sep  1 22:56:22 2009
Subject: [Common-cvs] fileio/platform/symbian symbihxdataf.cpp,1.15,1.16
Message-ID: 

Update of /cvsroot/common/fileio/platform/symbian
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv5317

Modified Files:
	symbihxdataf.cpp 
Log Message:
"Nokia submits this code under the terms of a commercial contribution agreement with Real Networks, and I am authorized to contribute this code under said agreement."

Modified by: saleem.adookkattil@nokia.com

Reviewed by:

Date: 08/26/2009

Project: symbianMmf_wm
 
ErrorId: N/A 

Synopsis: Changes made to helix client source to use LIBC.DLL instead of ESTLIB.DLL on Symbian.

Overview:  Helix build system configuration flag HELIX_CONFIG_SYMBIAN_USE_STDAPIS enables usage of LIBC.DLL instead of ESTLIB.DLL on Symbian. Made the following changes to source to link with LIBC.DLL.

1) There is no need to call CloseSTDLIB() when using LIBC.DLL and removed this function call from the following files when HELIX_CONFIG_SYMBIAN_USE_STDAPIS flag is enabled.
    cvsroot/audio/device/platform/symbian/audiosvr/audio_svr_cntxt.cpp
    cvsroot/common/system/platform/symbian/CHXSymbianServer.cpp
    cvsroot/clientapps/symbianMmf/audiocontroller/hxmmfaudioctrl.cpp
    cvsroot/clientapps/symbianMmf/videocontroller/hxmmfctrlimpl.cpp
    cvsroot/datatype/tools/metadataeng/engine/platform/symbian/symbian_metadataeng.cpp
   
2) LIBC.DLL has supports for wide character implementation and removed implementation specific to this from the following file when HELIX_CONFIG_SYMBIAN_USE_STDAPIS flag is enabled.
     cvsroot/common/runtime/symbian.pcf
     cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/helix/helix_win32_functions.h
     cvsroot/common/runtime/pub/hlxclib/wchar.h

3) LIBC.DLL provides implementation for some standard functions/variables those were not available in estlib.dll and made changes to the following files to use those functions instead of the one provided in helix.
     cvsroot/common/include/hxtypes.h
     cvsroot/datatype/mp3/import/id3lib/id3_field_binary.cpp
     cvsroot/common/netio/pub/platform/symbian/nettypes.h
     cvsroot/common/runtime/pub/hlxclib/stdio.h
     cvsroot/common/fileio/platform/symbian/symbihxdataf.cpp

4) Removed estlib.lib, euser.lib and hal.lib from the following files as these files get added by default for symbian platform
     cvsroot/clientapps/symbianMmf/audiocontroller/controllerdll
     cvsroot/clientapps/symbianMmf/videocontroller/MmfCtrlDll
     cvsroot/clientapps/symbianMmf/wmvextcontroller/wmaextctrldll
     cvsroot/clientapps/symbianMmf/wmvextcontroller/WmvExtCtrlDll

5) offsetof marco implementation provided in stdapis\stddef.h, when it used inside existing helix template definition causing compilation failure. Libc\stddef.h has a different implementation from stdapis\stddef.h.  
     So added Libc\stddef.h offsetof macro definition to hlxclib/stddef.h to avoid this failure and use the one provided in Libc\stddef.h.

6) Made changes to the following files to use offsetof macro definition in hlxclib/stddef.h 
    cvsroot/common/import/expat/xmlparse/xmlparse.c
    cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/common/netbuffer.h

7) estlib.lib, euser.lib and hal.lib files get added by default for symbian platform. So there is no need to add these files and removed them from the following symbian.pcf files
    cvsroot/datatype/mp3/fileformat/symbian.pcf
    cvsroot/datatype/mp3/renderer/symbian.pcf

Files modified: 
    cvsroot/audio/device/platform/symbian/audiosvr/audio_svr_cntxt.cpp
    cvsroot/common/system/platform/symbian/CHXSymbianServer.cpp
    cvsroot/clientapps/symbianMmf/audiocontroller/hxmmfaudioctrl.cpp
    cvsroot/clientapps/symbianMmf/videocontroller/hxmmfctrlimpl.cpp
    cvsroot/datatype/tools/metadataeng/engine/platform/symbian/symbian_metadataeng.cpp
    cvsroot/common/runtime/symbian.pcf
    cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/helix/helix_win32_functions.h
    cvsroot/common/runtime/pub/hlxclib/wchar.h
    cvsroot/common/include/hxtypes.h
    cvsroot/datatype/mp3/import/id3lib/id3_field_binary.cpp
    cvsroot/common/netio/pub/platform/symbian/nettypes.h
    cvsroot/common/runtime/pub/hlxclib/stdio.h
    cvsroot/common/fileio/platform/symbian/symbihxdataf.cpp
    cvsroot/clientapps/symbianMmf/audiocontroller/controllerdll
    cvsroot/clientapps/symbianMmf/videocontroller/MmfCtrlDll
    cvsroot/clientapps/symbianMmf/wmvextcontroller/wmaextctrldll
    cvsroot/clientapps/symbianMmf/wmvextcontroller/WmvExtCtrlDll
    cvsroot/common/import/expat/xmlparse/xmlparse.c
    cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/common/netbuffer.h
    cvsroot/common/runtime/pub/hlxclib/stddef.h

Files removed:
    cvsroot/datatype/mp3/fileformat/symbian.pcf
    cvsroot/datatype/mp3/renderer/symbian.pcf
                        
Files added: None

Image Size and Heap Use impact: N/A

Module Release testing (STIF) : N/A 

Test case(s) Added  : N/A
  
Memory leak check performed : N/A
  
Platforms and Profiles Build Verified: helix-client-s60-52-ng

Platforms and Profiles verified: armv5, winscw 
  
Branch: HEAD

Index: symbihxdataf.cpp
===================================================================
RCS file: /cvsroot/common/fileio/platform/symbian/symbihxdataf.cpp,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -d -r1.15 -r1.16
--- symbihxdataf.cpp	6 Jul 2007 20:35:15 -0000	1.15
+++ symbihxdataf.cpp	1 Sep 2009 21:50:29 -0000	1.16
@@ -50,6 +50,9 @@
 /****************************************************************************
  *  Includes
  */
+#if defined(HELIX_CONFIG_SYMBIAN_USE_STDAPIS)
+#include "hlxclib/sys/stat.h"
+#endif
 #include "hlxclib/string.h"
 #include "hlxclib/fcntl.h"
 


From amsaleem at helixcommunity.org  Tue Sep  1 13:55:39 2009
From: amsaleem at helixcommunity.org (amsaleem@helixcommunity.org)
Date: Tue Sep  1 23:00:58 2009
Subject: [Common-cvs] import/expat/xmlparse xmlparse.c,1.8,1.9
Message-ID: 

Update of /cvsroot/common/import/expat/xmlparse
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv5711

Modified Files:
	xmlparse.c 
Log Message:
"Nokia submits this code under the terms of a commercial contribution agreement with Real Networks, and I am authorized to contribute this code under said agreement."

Modified by: saleem.adookkattil@nokia.com

Reviewed by:

Date: 08/26/2009

Project: symbianMmf_wm
 
ErrorId: N/A 

Synopsis: Changes made to helix client source to use LIBC.DLL instead of ESTLIB.DLL on Symbian.

Overview:  Helix build system configuration flag HELIX_CONFIG_SYMBIAN_USE_STDAPIS enables usage of LIBC.DLL instead of ESTLIB.DLL on Symbian. Made the following changes to source to link with LIBC.DLL.

1) There is no need to call CloseSTDLIB() when using LIBC.DLL and removed this function call from the following files when HELIX_CONFIG_SYMBIAN_USE_STDAPIS flag is enabled.
    cvsroot/audio/device/platform/symbian/audiosvr/audio_svr_cntxt.cpp
    cvsroot/common/system/platform/symbian/CHXSymbianServer.cpp
    cvsroot/clientapps/symbianMmf/audiocontroller/hxmmfaudioctrl.cpp
    cvsroot/clientapps/symbianMmf/videocontroller/hxmmfctrlimpl.cpp
    cvsroot/datatype/tools/metadataeng/engine/platform/symbian/symbian_metadataeng.cpp
   
2) LIBC.DLL has supports for wide character implementation and removed implementation specific to this from the following file when HELIX_CONFIG_SYMBIAN_USE_STDAPIS flag is enabled.
     cvsroot/common/runtime/symbian.pcf
     cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/helix/helix_win32_functions.h
     cvsroot/common/runtime/pub/hlxclib/wchar.h

3) LIBC.DLL provides implementation for some standard functions/variables those were not available in estlib.dll and made changes to the following files to use those functions instead of the one provided in helix.
     cvsroot/common/include/hxtypes.h
     cvsroot/datatype/mp3/import/id3lib/id3_field_binary.cpp
     cvsroot/common/netio/pub/platform/symbian/nettypes.h
     cvsroot/common/runtime/pub/hlxclib/stdio.h
     cvsroot/common/fileio/platform/symbian/symbihxdataf.cpp

4) Removed estlib.lib, euser.lib and hal.lib from the following files as these files get added by default for symbian platform
     cvsroot/clientapps/symbianMmf/audiocontroller/controllerdll
     cvsroot/clientapps/symbianMmf/videocontroller/MmfCtrlDll
     cvsroot/clientapps/symbianMmf/wmvextcontroller/wmaextctrldll
     cvsroot/clientapps/symbianMmf/wmvextcontroller/WmvExtCtrlDll

5) offsetof marco implementation provided in stdapis\stddef.h, when it used inside existing helix template definition causing compilation failure. Libc\stddef.h has a different implementation from stdapis\stddef.h.  
     So added Libc\stddef.h offsetof macro definition to hlxclib/stddef.h to avoid this failure and use the one provided in Libc\stddef.h.

6) Made changes to the following files to use offsetof macro definition in hlxclib/stddef.h 
    cvsroot/common/import/expat/xmlparse/xmlparse.c
    cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/common/netbuffer.h

7) estlib.lib, euser.lib and hal.lib files get added by default for symbian platform. So there is no need to add these files and removed them from the following symbian.pcf files
    cvsroot/datatype/mp3/fileformat/symbian.pcf
    cvsroot/datatype/mp3/renderer/symbian.pcf

Files modified: 
    cvsroot/audio/device/platform/symbian/audiosvr/audio_svr_cntxt.cpp
    cvsroot/common/system/platform/symbian/CHXSymbianServer.cpp
    cvsroot/clientapps/symbianMmf/audiocontroller/hxmmfaudioctrl.cpp
    cvsroot/clientapps/symbianMmf/videocontroller/hxmmfctrlimpl.cpp
    cvsroot/datatype/tools/metadataeng/engine/platform/symbian/symbian_metadataeng.cpp
    cvsroot/common/runtime/symbian.pcf
    cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/helix/helix_win32_functions.h
    cvsroot/common/runtime/pub/hlxclib/wchar.h
    cvsroot/common/include/hxtypes.h
    cvsroot/datatype/mp3/import/id3lib/id3_field_binary.cpp
    cvsroot/common/netio/pub/platform/symbian/nettypes.h
    cvsroot/common/runtime/pub/hlxclib/stdio.h
    cvsroot/common/fileio/platform/symbian/symbihxdataf.cpp
    cvsroot/clientapps/symbianMmf/audiocontroller/controllerdll
    cvsroot/clientapps/symbianMmf/videocontroller/MmfCtrlDll
    cvsroot/clientapps/symbianMmf/wmvextcontroller/wmaextctrldll
    cvsroot/clientapps/symbianMmf/wmvextcontroller/WmvExtCtrlDll
    cvsroot/common/import/expat/xmlparse/xmlparse.c
    cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/common/netbuffer.h
    cvsroot/common/runtime/pub/hlxclib/stddef.h

Files removed:
    cvsroot/datatype/mp3/fileformat/symbian.pcf
    cvsroot/datatype/mp3/renderer/symbian.pcf
                        
Files added: None

Image Size and Heap Use impact: N/A

Module Release testing (STIF) : N/A 

Test case(s) Added  : N/A
  
Memory leak check performed : N/A
  
Platforms and Profiles Build Verified: helix-client-s60-52-ng

Platforms and Profiles verified: armv5, winscw 
  
Branch: HEAD


From amsaleem at helixcommunity.org  Tue Sep  1 13:55:37 2009
From: amsaleem at helixcommunity.org (amsaleem@helixcommunity.org)
Date: Tue Sep  1 23:01:27 2009
Subject: [Common-cvs] import/expat/xmlparse xmlparse.c,1.8,1.9
Message-ID: 

Update of /cvsroot/common/import/expat/xmlparse
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv5711

Modified Files:
	xmlparse.c 
Log Message:
"Nokia submits this code under the terms of a commercial contribution agreement with Real Networks, and I am authorized to contribute this code under said agreement."

Modified by: saleem.adookkattil@nokia.com

Reviewed by:

Date: 08/26/2009

Project: symbianMmf_wm
 
ErrorId: N/A 

Synopsis: Changes made to helix client source to use LIBC.DLL instead of ESTLIB.DLL on Symbian.

Overview:  Helix build system configuration flag HELIX_CONFIG_SYMBIAN_USE_STDAPIS enables usage of LIBC.DLL instead of ESTLIB.DLL on Symbian. Made the following changes to source to link with LIBC.DLL.

1) There is no need to call CloseSTDLIB() when using LIBC.DLL and removed this function call from the following files when HELIX_CONFIG_SYMBIAN_USE_STDAPIS flag is enabled.
    cvsroot/audio/device/platform/symbian/audiosvr/audio_svr_cntxt.cpp
    cvsroot/common/system/platform/symbian/CHXSymbianServer.cpp
    cvsroot/clientapps/symbianMmf/audiocontroller/hxmmfaudioctrl.cpp
    cvsroot/clientapps/symbianMmf/videocontroller/hxmmfctrlimpl.cpp
    cvsroot/datatype/tools/metadataeng/engine/platform/symbian/symbian_metadataeng.cpp
   
2) LIBC.DLL has supports for wide character implementation and removed implementation specific to this from the following file when HELIX_CONFIG_SYMBIAN_USE_STDAPIS flag is enabled.
     cvsroot/common/runtime/symbian.pcf
     cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/helix/helix_win32_functions.h
     cvsroot/common/runtime/pub/hlxclib/wchar.h

3) LIBC.DLL provides implementation for some standard functions/variables those were not available in estlib.dll and made changes to the following files to use those functions instead of the one provided in helix.
     cvsroot/common/include/hxtypes.h
     cvsroot/datatype/mp3/import/id3lib/id3_field_binary.cpp
     cvsroot/common/netio/pub/platform/symbian/nettypes.h
     cvsroot/common/runtime/pub/hlxclib/stdio.h
     cvsroot/common/fileio/platform/symbian/symbihxdataf.cpp

4) Removed estlib.lib, euser.lib and hal.lib from the following files as these files get added by default for symbian platform
     cvsroot/clientapps/symbianMmf/audiocontroller/controllerdll
     cvsroot/clientapps/symbianMmf/videocontroller/MmfCtrlDll
     cvsroot/clientapps/symbianMmf/wmvextcontroller/wmaextctrldll
     cvsroot/clientapps/symbianMmf/wmvextcontroller/WmvExtCtrlDll

5) offsetof marco implementation provided in stdapis\stddef.h, when it used inside existing helix template definition causing compilation failure. Libc\stddef.h has a different implementation from stdapis\stddef.h.  
     So added Libc\stddef.h offsetof macro definition to hlxclib/stddef.h to avoid this failure and use the one provided in Libc\stddef.h.

6) Made changes to the following files to use offsetof macro definition in hlxclib/stddef.h 
    cvsroot/common/import/expat/xmlparse/xmlparse.c
    cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/common/netbuffer.h

7) estlib.lib, euser.lib and hal.lib files get added by default for symbian platform. So there is no need to add these files and removed them from the following symbian.pcf files
    cvsroot/datatype/mp3/fileformat/symbian.pcf
    cvsroot/datatype/mp3/renderer/symbian.pcf

Files modified: 
    cvsroot/audio/device/platform/symbian/audiosvr/audio_svr_cntxt.cpp
    cvsroot/common/system/platform/symbian/CHXSymbianServer.cpp
    cvsroot/clientapps/symbianMmf/audiocontroller/hxmmfaudioctrl.cpp
    cvsroot/clientapps/symbianMmf/videocontroller/hxmmfctrlimpl.cpp
    cvsroot/datatype/tools/metadataeng/engine/platform/symbian/symbian_metadataeng.cpp
    cvsroot/common/runtime/symbian.pcf
    cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/helix/helix_win32_functions.h
    cvsroot/common/runtime/pub/hlxclib/wchar.h
    cvsroot/common/include/hxtypes.h
    cvsroot/datatype/mp3/import/id3lib/id3_field_binary.cpp
    cvsroot/common/netio/pub/platform/symbian/nettypes.h
    cvsroot/common/runtime/pub/hlxclib/stdio.h
    cvsroot/common/fileio/platform/symbian/symbihxdataf.cpp
    cvsroot/clientapps/symbianMmf/audiocontroller/controllerdll
    cvsroot/clientapps/symbianMmf/videocontroller/MmfCtrlDll
    cvsroot/clientapps/symbianMmf/wmvextcontroller/wmaextctrldll
    cvsroot/clientapps/symbianMmf/wmvextcontroller/WmvExtCtrlDll
    cvsroot/common/import/expat/xmlparse/xmlparse.c
    cvsroot/wmcode-protocol/rtsp/import/wmrtsp-porting-kit/network/client/common/netbuffer.h
    cvsroot/common/runtime/pub/hlxclib/stddef.h

Files removed:
    cvsroot/datatype/mp3/fileformat/symbian.pcf
    cvsroot/datatype/mp3/renderer/symbian.pcf
                        
Files added: None

Image Size and Heap Use impact: N/A

Module Release testing (STIF) : N/A 

Test case(s) Added  : N/A
  
Memory leak check performed : N/A
  
Platforms and Profiles Build Verified: helix-client-s60-52-ng

Platforms and Profiles verified: armv5, winscw 
  
Branch: HEAD

Index: xmlparse.c
===================================================================
RCS file: /cvsroot/common/import/expat/xmlparse/xmlparse.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -d -r1.8 -r1.9
--- xmlparse.c	24 Mar 2005 00:06:10 -0000	1.8
+++ xmlparse.c	1 Sep 2009 21:55:34 -0000	1.9
@@ -5,7 +5,7 @@
 
 #include "xmldef.h"
 #include "xmlparse.h"
-#include 
+#include "hlxclib/stddef.h"
 
 #ifdef _WINCE
 #ifndef _ABORT_DEFINED


From ping at helixcommunity.org  Fri Sep  4 08:21:46 2009
From: ping at helixcommunity.org (ping@helixcommunity.org)
Date: Fri Sep  4 17:25:44 2009
Subject: [Common-cvs] include hxdtdr.h,1.6,1.6.2.1
Message-ID: 

Update of /cvsroot/common/include
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv7739

Modified Files:
      Tag: hxclient_3_1_0_atlas
	hxdtdr.h 
Log Message:
Added new option for InProgressTimeout



Index: hxdtdr.h
===================================================================
RCS file: /cvsroot/common/include/hxdtdr.h,v
retrieving revision 1.6
retrieving revision 1.6.2.1
diff -u -d -r1.6 -r1.6.2.1
--- hxdtdr.h	6 Jul 2007 20:43:41 -0000	1.6
+++ hxdtdr.h	4 Sep 2009 16:21:44 -0000	1.6.2.1
@@ -84,11 +84,13 @@
 #define DECRYPT_OPTION_NAME	    "DecryptSource"
 #define DECODE_OPTION_NAME	    "DecodeSource"
 #define BLOCK_OPTION_NAME	    "BlockFilter"
-#define MUX_OPTION_NAME         "MuxAudioVideo"
+#define MUX_OPTION_NAME             "MuxAudioVideo"
+#define INPROGRESS_TIMEOUT_OPTION_NAME  "InProgressTimeout"
 
 #define SUPPRESS_WRITER_OPTION	    "SuppressWriter"
 #define OUTPUT_FILENAME_OPTION	    "OutputFileName"
 
+
 #define TRANSFER_CERTIFICATE_OPTION "TransferCertificate"
 
 //e1ec2c5f-7f0c-4348-b3b0c4af5eae9778


From ping at helixcommunity.org  Fri Sep  4 08:21:46 2009
From: ping at helixcommunity.org (ping@helixcommunity.org)
Date: Fri Sep  4 17:25:45 2009
Subject: [Common-cvs] include hxdtdr.h,1.6,1.6.2.1
Message-ID: 

Update of /cvsroot/common/include
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv7739

Modified Files:
      Tag: hxclient_3_1_0_atlas
	hxdtdr.h 
Log Message:
Added new option for InProgressTimeout



Index: hxdtdr.h
===================================================================
RCS file: /cvsroot/common/include/hxdtdr.h,v
retrieving revision 1.6
retrieving revision 1.6.2.1
diff -u -d -r1.6 -r1.6.2.1
--- hxdtdr.h	6 Jul 2007 20:43:41 -0000	1.6
+++ hxdtdr.h	4 Sep 2009 16:21:44 -0000	1.6.2.1
@@ -84,11 +84,13 @@
 #define DECRYPT_OPTION_NAME	    "DecryptSource"
 #define DECODE_OPTION_NAME	    "DecodeSource"
 #define BLOCK_OPTION_NAME	    "BlockFilter"
-#define MUX_OPTION_NAME         "MuxAudioVideo"
+#define MUX_OPTION_NAME             "MuxAudioVideo"
+#define INPROGRESS_TIMEOUT_OPTION_NAME  "InProgressTimeout"
 
 #define SUPPRESS_WRITER_OPTION	    "SuppressWriter"
 #define OUTPUT_FILENAME_OPTION	    "OutputFileName"
 
+
 #define TRANSFER_CERTIFICATE_OPTION "TransferCertificate"
 
 //e1ec2c5f-7f0c-4348-b3b0c4af5eae9778


From ping at helixcommunity.org  Fri Sep  4 08:23:13 2009
From: ping at helixcommunity.org (ping@helixcommunity.org)
Date: Fri Sep  4 17:27:11 2009
Subject: [Common-cvs] include hxdtdr.h,1.6,1.7
Message-ID: 

Update of /cvsroot/common/include
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv7929

Modified Files:
	hxdtdr.h 
Log Message:
Added new option for InProgressTimeout



Index: hxdtdr.h
===================================================================
RCS file: /cvsroot/common/include/hxdtdr.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- hxdtdr.h	6 Jul 2007 20:43:41 -0000	1.6
+++ hxdtdr.h	4 Sep 2009 16:23:11 -0000	1.7
@@ -85,6 +85,7 @@
 #define DECODE_OPTION_NAME	    "DecodeSource"
 #define BLOCK_OPTION_NAME	    "BlockFilter"
 #define MUX_OPTION_NAME         "MuxAudioVideo"
+#define INPROGRESS_TIMEOUT_OPTION_NAME  "InProgressTimeout"
 
 #define SUPPRESS_WRITER_OPTION	    "SuppressWriter"
 #define OUTPUT_FILENAME_OPTION	    "OutputFileName"


From ping at helixcommunity.org  Fri Sep  4 08:23:13 2009
From: ping at helixcommunity.org (ping@helixcommunity.org)
Date: Fri Sep  4 17:27:11 2009
Subject: [Common-cvs] include hxdtdr.h,1.6,1.7
Message-ID: 

Update of /cvsroot/common/include
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv7929

Modified Files:
	hxdtdr.h 
Log Message:
Added new option for InProgressTimeout



Index: hxdtdr.h
===================================================================
RCS file: /cvsroot/common/include/hxdtdr.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- hxdtdr.h	6 Jul 2007 20:43:41 -0000	1.6
+++ hxdtdr.h	4 Sep 2009 16:23:11 -0000	1.7
@@ -85,6 +85,7 @@
 #define DECODE_OPTION_NAME	    "DecodeSource"
 #define BLOCK_OPTION_NAME	    "BlockFilter"
 #define MUX_OPTION_NAME         "MuxAudioVideo"
+#define INPROGRESS_TIMEOUT_OPTION_NAME  "InProgressTimeout"
 
 #define SUPPRESS_WRITER_OPTION	    "SuppressWriter"
 #define OUTPUT_FILENAME_OPTION	    "OutputFileName"


From ehyche at helixcommunity.org  Fri Sep  4 08:51:03 2009
From: ehyche at helixcommunity.org (ehyche@helixcommunity.org)
Date: Fri Sep  4 17:55:01 2009
Subject: [Common-cvs] include hxiids.h,1.167,1.168
Message-ID: 

Update of /cvsroot/common/include
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv11886

Modified Files:
	hxiids.h 
Log Message:
Add IID_IHXPreferences3 GUID.


Index: hxiids.h
===================================================================
RCS file: /cvsroot/common/include/hxiids.h,v
retrieving revision 1.167
retrieving revision 1.168
diff -u -d -r1.167 -r1.168
--- hxiids.h	31 Aug 2009 23:53:10 -0000	1.167
+++ hxiids.h	4 Sep 2009 16:51:01 -0000	1.168
@@ -442,6 +442,8 @@
                         0xa0, 0x24, 0x40, 0x6d, 0x59)
 DEFINE_GUID_ENUM(IID_IHXPreferenceEnumerator, 0x00000504, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
                         0xa0, 0x24, 0x40, 0x6d, 0x59)
+DEFINE_GUID_ENUM(IID_IHXPreferences3, 0x00000505, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
+			0xa0, 0x24, 0x40, 0x6d, 0x59)
 #endif
 
 /*


From ehyche at helixcommunity.org  Fri Sep  4 08:51:03 2009
From: ehyche at helixcommunity.org (ehyche@helixcommunity.org)
Date: Fri Sep  4 17:55:01 2009
Subject: [Common-cvs] include hxiids.h,1.167,1.168
Message-ID: 

Update of /cvsroot/common/include
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv11886

Modified Files:
	hxiids.h 
Log Message:
Add IID_IHXPreferences3 GUID.


Index: hxiids.h
===================================================================
RCS file: /cvsroot/common/include/hxiids.h,v
retrieving revision 1.167
retrieving revision 1.168
diff -u -d -r1.167 -r1.168
--- hxiids.h	31 Aug 2009 23:53:10 -0000	1.167
+++ hxiids.h	4 Sep 2009 16:51:01 -0000	1.168
@@ -442,6 +442,8 @@
                         0xa0, 0x24, 0x40, 0x6d, 0x59)
 DEFINE_GUID_ENUM(IID_IHXPreferenceEnumerator, 0x00000504, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
                         0xa0, 0x24, 0x40, 0x6d, 0x59)
+DEFINE_GUID_ENUM(IID_IHXPreferences3, 0x00000505, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
+			0xa0, 0x24, 0x40, 0x6d, 0x59)
 #endif
 
 /*


From ehyche at helixcommunity.org  Fri Sep  4 08:51:39 2009
From: ehyche at helixcommunity.org (ehyche@helixcommunity.org)
Date: Fri Sep  4 17:55:37 2009
Subject: [Common-cvs] include hxiids.h,1.165,1.165.2.1
Message-ID: 

Update of /cvsroot/common/include
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv12223

Modified Files:
      Tag: PRODUCER_13_0_RN
	hxiids.h 
Log Message:
Merge to PRODUCER_13_0_RN. Add IID_IHXPreferences3 GUID.

Index: hxiids.h
===================================================================
RCS file: /cvsroot/common/include/hxiids.h,v
retrieving revision 1.165
retrieving revision 1.165.2.1
diff -u -d -r1.165 -r1.165.2.1
--- hxiids.h	5 May 2009 16:26:33 -0000	1.165
+++ hxiids.h	4 Sep 2009 16:51:36 -0000	1.165.2.1
@@ -442,6 +442,8 @@
                         0xa0, 0x24, 0x40, 0x6d, 0x59)
 DEFINE_GUID_ENUM(IID_IHXPreferenceEnumerator, 0x00000504, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
                         0xa0, 0x24, 0x40, 0x6d, 0x59)
+DEFINE_GUID_ENUM(IID_IHXPreferences3, 0x00000505, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
+			0xa0, 0x24, 0x40, 0x6d, 0x59)
 #endif
 
 /*


From ehyche at helixcommunity.org  Fri Sep  4 08:51:39 2009
From: ehyche at helixcommunity.org (ehyche@helixcommunity.org)
Date: Fri Sep  4 17:55:38 2009
Subject: [Common-cvs] include hxiids.h,1.165,1.165.2.1
Message-ID: 

Update of /cvsroot/common/include
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv12223

Modified Files:
      Tag: PRODUCER_13_0_RN
	hxiids.h 
Log Message:
Merge to PRODUCER_13_0_RN. Add IID_IHXPreferences3 GUID.

Index: hxiids.h
===================================================================
RCS file: /cvsroot/common/include/hxiids.h,v
retrieving revision 1.165
retrieving revision 1.165.2.1
diff -u -d -r1.165 -r1.165.2.1
--- hxiids.h	5 May 2009 16:26:33 -0000	1.165
+++ hxiids.h	4 Sep 2009 16:51:36 -0000	1.165.2.1
@@ -442,6 +442,8 @@
                         0xa0, 0x24, 0x40, 0x6d, 0x59)
 DEFINE_GUID_ENUM(IID_IHXPreferenceEnumerator, 0x00000504, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
                         0xa0, 0x24, 0x40, 0x6d, 0x59)
+DEFINE_GUID_ENUM(IID_IHXPreferences3, 0x00000505, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 
+			0xa0, 0x24, 0x40, 0x6d, 0x59)
 #endif
 
 /*


From ehyche at helixcommunity.org  Fri Sep  4 10:57:34 2009
From: ehyche at helixcommunity.org (ehyche@helixcommunity.org)
Date: Fri Sep  4 20:01:31 2009
Subject: [Common-cvs] include hxpiids.h,1.71,1.72
Message-ID: 

Update of /cvsroot/common/include
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv18924

Modified Files:
	hxpiids.h 
Log Message:
Remove IID_IHXPreferences3 from hxpiids.h since it is now in hxiids.h

Index: hxpiids.h
===================================================================
RCS file: /cvsroot/common/include/hxpiids.h,v
retrieving revision 1.71
retrieving revision 1.72
diff -u -d -r1.71 -r1.72
--- hxpiids.h	12 Aug 2009 17:35:11 -0000	1.71
+++ hxpiids.h	4 Sep 2009 18:57:30 -0000	1.72
@@ -167,19 +167,6 @@
 DEFINE_GUID_ENUM(IID_IHXUpdateRendererResponse, 0x00000502, 0xb4c8, 0x11d0, 0x99, 0x95, 0x0, 0xa0, 0x24, 0x8d, 0xa5, 0xf0)
 
 /*
- * File:
- *    hxprefs.h
- * Description:
- *    Interface for deleting prefernces
- * Interfaces:
- *    IID_IHXPreferences3: {0x00000505-9011-11d1-8b60-a024406d59}
- */
-
-#if ( !defined(_HXPREFS_H_) || !defined(HELIX_FEATURE_FULLGUID) )
-DEFINE_GUID_ENUM(IID_IHXPreferences3, 0x00000505, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59)
-#endif
-
-/*
  *  File:
  *      hxpnets.h
  *  Description:


From ehyche at helixcommunity.org  Fri Sep  4 10:57:34 2009
From: ehyche at helixcommunity.org (ehyche@helixcommunity.org)
Date: Fri Sep  4 20:01:31 2009
Subject: [Common-cvs] include hxpiids.h,1.71,1.72
Message-ID: 

Update of /cvsroot/common/include
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv18924

Modified Files:
	hxpiids.h 
Log Message:
Remove IID_IHXPreferences3 from hxpiids.h since it is now in hxiids.h

Index: hxpiids.h
===================================================================
RCS file: /cvsroot/common/include/hxpiids.h,v
retrieving revision 1.71
retrieving revision 1.72
diff -u -d -r1.71 -r1.72
--- hxpiids.h	12 Aug 2009 17:35:11 -0000	1.71
+++ hxpiids.h	4 Sep 2009 18:57:30 -0000	1.72
@@ -167,19 +167,6 @@
 DEFINE_GUID_ENUM(IID_IHXUpdateRendererResponse, 0x00000502, 0xb4c8, 0x11d0, 0x99, 0x95, 0x0, 0xa0, 0x24, 0x8d, 0xa5, 0xf0)
 
 /*
- * File:
- *    hxprefs.h
- * Description:
- *    Interface for deleting prefernces
- * Interfaces:
- *    IID_IHXPreferences3: {0x00000505-9011-11d1-8b60-a024406d59}
- */
-
-#if ( !defined(_HXPREFS_H_) || !defined(HELIX_FEATURE_FULLGUID) )
-DEFINE_GUID_ENUM(IID_IHXPreferences3, 0x00000505, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59)
-#endif
-
-/*
  *  File:
  *      hxpnets.h
  *  Description:


From ehyche at helixcommunity.org  Fri Sep  4 10:58:15 2009
From: ehyche at helixcommunity.org (ehyche@helixcommunity.org)
Date: Fri Sep  4 20:02:11 2009
Subject: [Common-cvs] include hxpiids.h,1.69.2.1,1.69.2.2
Message-ID: 

Update of /cvsroot/common/include
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv18973

Modified Files:
      Tag: PRODUCER_13_0_RN
	hxpiids.h 
Log Message:
Merge to PRODUCER_13_0_RN. Remove IID_IHXPreferences3 from hxpiids.h since it is now in hxiids.h.

Index: hxpiids.h
===================================================================
RCS file: /cvsroot/common/include/hxpiids.h,v
retrieving revision 1.69.2.1
retrieving revision 1.69.2.2
diff -u -d -r1.69.2.1 -r1.69.2.2
--- hxpiids.h	10 Aug 2009 23:48:04 -0000	1.69.2.1
+++ hxpiids.h	4 Sep 2009 18:58:12 -0000	1.69.2.2
@@ -167,19 +167,6 @@
 DEFINE_GUID_ENUM(IID_IHXUpdateRendererResponse, 0x00000502, 0xb4c8, 0x11d0, 0x99, 0x95, 0x0, 0xa0, 0x24, 0x8d, 0xa5, 0xf0)
 
 /*
- * File:
- *    hxprefs.h
- * Description:
- *    Interface for deleting prefernces
- * Interfaces:
- *    IID_IHXPreferences3: {0x00000505-9011-11d1-8b60-a024406d59}
- */
-
-#if ( !defined(_HXPREFS_H_) || !defined(HELIX_FEATURE_FULLGUID) )
-DEFINE_GUID_ENUM(IID_IHXPreferences3, 0x00000505, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59)
-#endif
-
-/*
  *  File:
  *      hxpnets.h
  *  Description:


From ehyche at helixcommunity.org  Fri Sep  4 10:58:15 2009
From: ehyche at helixcommunity.org (ehyche@helixcommunity.org)
Date: Fri Sep  4 20:02:11 2009
Subject: [Common-cvs] include hxpiids.h,1.69.2.1,1.69.2.2
Message-ID: 

Update of /cvsroot/common/include
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv18973

Modified Files:
      Tag: PRODUCER_13_0_RN
	hxpiids.h 
Log Message:
Merge to PRODUCER_13_0_RN. Remove IID_IHXPreferences3 from hxpiids.h since it is now in hxiids.h.

Index: hxpiids.h
===================================================================
RCS file: /cvsroot/common/include/hxpiids.h,v
retrieving revision 1.69.2.1
retrieving revision 1.69.2.2
diff -u -d -r1.69.2.1 -r1.69.2.2
--- hxpiids.h	10 Aug 2009 23:48:04 -0000	1.69.2.1
+++ hxpiids.h	4 Sep 2009 18:58:12 -0000	1.69.2.2
@@ -167,19 +167,6 @@
 DEFINE_GUID_ENUM(IID_IHXUpdateRendererResponse, 0x00000502, 0xb4c8, 0x11d0, 0x99, 0x95, 0x0, 0xa0, 0x24, 0x8d, 0xa5, 0xf0)
 
 /*
- * File:
- *    hxprefs.h
- * Description:
- *    Interface for deleting prefernces
- * Interfaces:
- *    IID_IHXPreferences3: {0x00000505-9011-11d1-8b60-a024406d59}
- */
-
-#if ( !defined(_HXPREFS_H_) || !defined(HELIX_FEATURE_FULLGUID) )
-DEFINE_GUID_ENUM(IID_IHXPreferences3, 0x00000505, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59)
-#endif
-
-/*
  *  File:
  *      hxpnets.h
  *  Description:


From mazimi at helixcommunity.org  Fri Sep  4 13:47:39 2009
From: mazimi at helixcommunity.org (mazimi@helixcommunity.org)
Date: Fri Sep  4 22:51:35 2009
Subject: [Common-cvs] include hxsharedmmf.h,1.1.2.1,1.1.2.2
Message-ID: 

Update of /cvsroot/common/include
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv8440/include

Modified Files:
      Tag: PRODUCER_13_0_RN
	hxsharedmmf.h 
Log Message:
Synopsis
========
Fixed Bug 249757:CLI crashes when GUI is open
 
Branches: PRODUCER_13_0_RN and HEAD

Description
===========
1-Fixed a bug in SharedMMF implementation.
    The memory mapped file object uses a MMFView, which is the header written at the beginning of each memory mapped file view. MMFView had a char * pData member which was initialized to point to the data buffer start. The culprit was to assume that shared MMview had the same mapped address on all processes, and so share the pData variable among all processes. this is not the case all the time. This is fixed now by moving out the pData from MMFView header structure and  initialize it the local process address when the map is opened. 
    
2- Replaced all uses of ULONG32 with UINT32 

Files Affected
==============
Changed files:
common/fileio/platform/win/sharedmmf.cpp
common/fileio/platform/win/sharedmmf.h
common/include/hxsharedmmf.h

     
 
Testing Performed
=================
* tested in producer application using the license manager implementation of floating license.

Performance Tests:
- None

Platforms Tested: win32-i386-vc7

QA Hints
========




Index: hxsharedmmf.h
===================================================================
RCS file: /cvsroot/common/include/hxsharedmmf.h,v
retrieving revision 1.1.2.1
retrieving revision 1.1.2.2
diff -u -d -r1.1.2.1 -r1.1.2.2
--- hxsharedmmf.h	10 Aug 2009 23:48:04 -0000	1.1.2.1
+++ hxsharedmmf.h	4 Sep 2009 21:47:36 -0000	1.1.2.2
@@ -90,9 +90,9 @@
         REFIID riid,
         void** ppvObj) PURE;
 
-    STDMETHOD_(ULONG32, AddRef)		(THIS) PURE;
+    STDMETHOD_(UINT32, AddRef)		(THIS) PURE;
 
-    STDMETHOD_(ULONG32, Release)	(THIS) PURE;
+    STDMETHOD_(UINT32, Release)	(THIS) PURE;
 
     /*
     *  IHXSharedMMFileFactory methods
@@ -137,32 +137,32 @@
      */
     STDMETHOD(QueryInterface) (THIS_ REFIID riid, void** ppvObj) PURE;
     
-    STDMETHOD_(ULONG32, AddRef) (THIS) PURE;
+    STDMETHOD_(UINT32, AddRef) (THIS) PURE;
     
-    STDMETHOD_(ULONG32, Release) (THIS) PURE;
+    STDMETHOD_(UINT32, Release) (THIS) PURE;
     
     /*
      *  IHXSharedMMFile methods
      */
 
     /*  */
-    STDMETHOD(OpenMap) (THIS_ const char* pszSharedName, ULONG32 ulSize) PURE;
+    STDMETHOD(OpenMap) (THIS_ const char* pszSharedName, UINT32 ulSize) PURE;
 
     /*  */
     STDMETHOD(CloseMap)	(THIS) PURE;
 
 
     /*  */
-    STDMETHOD(Read) (THIS_ REF(IHXBuffer*) pBuffer, ULONG32 count = 0) PURE;
+    STDMETHOD(Read) (THIS_ REF(IHXBuffer*) pBuffer, UINT32 count = 0) PURE;
 
     /*  */
     STDMETHOD(Write) (THIS_  IHXBuffer* pBuffer) PURE;
 
     /* */ 
-    STDMETHOD(GetDataSize) (THIS_ REF(ULONG32) size) PURE;
+    STDMETHOD(GetDataSize) (THIS_ REF(UINT32) size) PURE;
 
 	/* */ 
-	STDMETHOD(SetDataSize) (THIS_ ULONG32 size) PURE;
+	STDMETHOD(SetDataSize) (THIS_ UINT32 size) PURE;
 
     /*
     * IsOpen returns TRUE if file is open.  Otherwise FALSE.
@@ -174,10 +174,10 @@
      * fromWhere specifier returns current position of file or -1 on
      * error.
      */
-    STDMETHOD(Seek) (THIS_ ULONG32 ulOffset, ULONG32 ulFromWhere) PURE;
+    STDMETHOD(Seek) (THIS_ UINT32 ulOffset, UINT32 ulFromWhere) PURE;
 
     /* Tell returns the current file position in the file */
-    STDMETHOD_(ULONG32, Tell)       (THIS) PURE;
+    STDMETHOD_(UINT32, Tell)       (THIS) PURE;
   
     /* */
     STDMETHOD(LockMap) (THIS) PURE;


From mazimi at helixcommunity.org  Fri Sep  4 13:47:39 2009
From: mazimi at helixcommunity.org (mazimi@helixcommunity.org)
Date: Fri Sep  4 22:51:36 2009
Subject: [Common-cvs] include hxsharedmmf.h,1.1.2.1,1.1.2.2
Message-ID: 

Update of /cvsroot/common/include
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv8440/include

Modified Files:
      Tag: PRODUCER_13_0_RN
	hxsharedmmf.h 
Log Message:
Synopsis
========
Fixed Bug 249757:CLI crashes when GUI is open
 
Branches: PRODUCER_13_0_RN and HEAD

Description
===========
1-Fixed a bug in SharedMMF implementation.
    The memory mapped file object uses a MMFView, which is the header written at the beginning of each memory mapped file view. MMFView had a char * pData member which was initialized to point to the data buffer start. The culprit was to assume that shared MMview had the same mapped address on all processes, and so share the pData variable among all processes. this is not the case all the time. This is fixed now by moving out the pData from MMFView header structure and  initialize it the local process address when the map is opened. 
    
2- Replaced all uses of ULONG32 with UINT32 

Files Affected
==============
Changed files:
common/fileio/platform/win/sharedmmf.cpp
common/fileio/platform/win/sharedmmf.h
common/include/hxsharedmmf.h

     
 
Testing Performed
=================
* tested in producer application using the license manager implementation of floating license.

Performance Tests:
- None

Platforms Tested: win32-i386-vc7

QA Hints
========




Index: hxsharedmmf.h
===================================================================
RCS file: /cvsroot/common/include/hxsharedmmf.h,v
retrieving revision 1.1.2.1
retrieving revision 1.1.2.2
diff -u -d -r1.1.2.1 -r1.1.2.2
--- hxsharedmmf.h	10 Aug 2009 23:48:04 -0000	1.1.2.1
+++ hxsharedmmf.h	4 Sep 2009 21:47:36 -0000	1.1.2.2
@@ -90,9 +90,9 @@
         REFIID riid,
         void** ppvObj) PURE;
 
-    STDMETHOD_(ULONG32, AddRef)		(THIS) PURE;
+    STDMETHOD_(UINT32, AddRef)		(THIS) PURE;
 
-    STDMETHOD_(ULONG32, Release)	(THIS) PURE;
+    STDMETHOD_(UINT32, Release)	(THIS) PURE;
 
     /*
     *  IHXSharedMMFileFactory methods
@@ -137,32 +137,32 @@
      */
     STDMETHOD(QueryInterface) (THIS_ REFIID riid, void** ppvObj) PURE;
     
-    STDMETHOD_(ULONG32, AddRef) (THIS) PURE;
+    STDMETHOD_(UINT32, AddRef) (THIS) PURE;
     
-    STDMETHOD_(ULONG32, Release) (THIS) PURE;
+    STDMETHOD_(UINT32, Release) (THIS) PURE;
     
     /*
      *  IHXSharedMMFile methods
      */
 
     /*  */
-    STDMETHOD(OpenMap) (THIS_ const char* pszSharedName, ULONG32 ulSize) PURE;
+    STDMETHOD(OpenMap) (THIS_ const char* pszSharedName, UINT32 ulSize) PURE;
 
     /*  */
     STDMETHOD(CloseMap)	(THIS) PURE;
 
 
     /*  */
-    STDMETHOD(Read) (THIS_ REF(IHXBuffer*) pBuffer, ULONG32 count = 0) PURE;
+    STDMETHOD(Read) (THIS_ REF(IHXBuffer*) pBuffer, UINT32 count = 0) PURE;
 
     /*  */
     STDMETHOD(Write) (THIS_  IHXBuffer* pBuffer) PURE;
 
     /* */ 
-    STDMETHOD(GetDataSize) (THIS_ REF(ULONG32) size) PURE;
+    STDMETHOD(GetDataSize) (THIS_ REF(UINT32) size) PURE;
 
 	/* */ 
-	STDMETHOD(SetDataSize) (THIS_ ULONG32 size) PURE;
+	STDMETHOD(SetDataSize) (THIS_ UINT32 size) PURE;
 
     /*
     * IsOpen returns TRUE if file is open.  Otherwise FALSE.
@@ -174,10 +174,10 @@
      * fromWhere specifier returns current position of file or -1 on
      * error.
      */
-    STDMETHOD(Seek) (THIS_ ULONG32 ulOffset, ULONG32 ulFromWhere) PURE;
+    STDMETHOD(Seek) (THIS_ UINT32 ulOffset, UINT32 ulFromWhere) PURE;
 
     /* Tell returns the current file position in the file */
-    STDMETHOD_(ULONG32, Tell)       (THIS) PURE;
+    STDMETHOD_(UINT32, Tell)       (THIS) PURE;
   
     /* */
     STDMETHOD(LockMap) (THIS) PURE;


From mazimi at helixcommunity.org  Fri Sep  4 13:47:39 2009
From: mazimi at helixcommunity.org (mazimi@helixcommunity.org)
Date: Fri Sep  4 22:51:36 2009
Subject: [Common-cvs] fileio/platform/win sharedmmf.cpp, 1.1.2.1,
	1.1.2.2 sharedmmf.h, 1.1.2.1, 1.1.2.2
Message-ID: 

Update of /cvsroot/common/fileio/platform/win
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv8440/fileio/platform/win

Modified Files:
      Tag: PRODUCER_13_0_RN
	sharedmmf.cpp sharedmmf.h 
Log Message:
Synopsis
========
Fixed Bug 249757:CLI crashes when GUI is open
 
Branches: PRODUCER_13_0_RN and HEAD

Description
===========
1-Fixed a bug in SharedMMF implementation.
    The memory mapped file object uses a MMFView, which is the header written at the beginning of each memory mapped file view. MMFView had a char * pData member which was initialized to point to the data buffer start. The culprit was to assume that shared MMview had the same mapped address on all processes, and so share the pData variable among all processes. this is not the case all the time. This is fixed now by moving out the pData from MMFView header structure and  initialize it the local process address when the map is opened. 
    
2- Replaced all uses of ULONG32 with UINT32 

Files Affected
==============
Changed files:
common/fileio/platform/win/sharedmmf.cpp
common/fileio/platform/win/sharedmmf.h
common/include/hxsharedmmf.h

     
 
Testing Performed
=================
* tested in producer application using the license manager implementation of floating license.

Performance Tests:
- None

Platforms Tested: win32-i386-vc7

QA Hints
========




Index: sharedmmf.cpp
===================================================================
RCS file: /cvsroot/common/fileio/platform/win/sharedmmf.cpp,v
retrieving revision 1.1.2.1
retrieving revision 1.1.2.2
diff -u -d -r1.1.2.1 -r1.1.2.2
--- sharedmmf.cpp	10 Aug 2009 23:48:05 -0000	1.1.2.1
+++ sharedmmf.cpp	4 Sep 2009 21:47:37 -0000	1.1.2.2
@@ -62,9 +62,10 @@
 , m_MMFSharedName("")
 , m_SharedMutexName("")
 , m_pViewRaw(NULL)
-, m_pMMView(NULL)
+, m_pMMViewHeader(NULL)
 , m_bLock(FALSE)
 , m_fp(0)
+, m_pData(NULL)
 {
 
     m_pContext = pContext;
@@ -107,14 +108,14 @@
 }
 
 
-STDMETHODIMP_(ULONG32)
+STDMETHODIMP_(UINT32)
 CHXWinSharedMMFile::AddRef()
 {
     return InterlockedIncrement(&m_lRefCount);
 }
 
 
-STDMETHODIMP_(ULONG32)
+STDMETHODIMP_(UINT32)
 CHXWinSharedMMFile::Release()
 {
     if (InterlockedDecrement(&m_lRefCount) > 0)
@@ -127,7 +128,7 @@
 
 
 /*  */
-STDMETHODIMP CHXWinSharedMMFile::OpenMap(const char* pszSharedName, ULONG32 ulSize) 
+STDMETHODIMP CHXWinSharedMMFile::OpenMap(const char* pszSharedName, UINT32 ulSize) 
 {
     HX_RESULT res = HXR_OK;
     HXBOOL bMapExist = FALSE;
@@ -150,7 +151,7 @@
     {
         LockMap();
 
-        newFileMap = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, ulSize+sizeof(MMView), OS_STRING(pszSharedName));
+        newFileMap = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, ulSize+sizeof(MMViewHeader), OS_STRING(pszSharedName));
         if (newFileMap)
         {
             if (GetLastError() == ERROR_ALREADY_EXISTS)
@@ -180,24 +181,25 @@
             m_pViewRaw = MapViewOfFile(newFileMap, FILE_MAP_READ | FILE_MAP_WRITE, 0, 0, 0);
             if (m_pViewRaw)
             {
-                m_pMMView = reinterpret_cast(m_pViewRaw);
+                m_pMMViewHeader = reinterpret_cast(m_pViewRaw);
                 if (!bMapExist)
                 {
                     // We just created this map, set it up
-                    m_pMMView->sMagicID[0] = 'H';
-                    m_pMMView->sMagicID[1] = 'M';
-                    m_pMMView->sMagicID[2] = 'M';
-                    m_pMMView->sMagicID[3] = 'F';
-                    m_pMMView->ulMapSize = ulSize;
-                    m_pMMView->ulDataSize = 0;                    
-                    m_pMMView->pData = reinterpret_cast(m_pMMView + 1);
+                    m_pMMViewHeader->sMagicID[0] = 'H';
+                    m_pMMViewHeader->sMagicID[1] = 'M';
+                    m_pMMViewHeader->sMagicID[2] = 'M';
+                    m_pMMViewHeader->sMagicID[3] = 'F';
+                    m_pMMViewHeader->ulMapSize = ulSize;
+                    m_pMMViewHeader->ulDataSize = 0;                    
+                    m_pData = reinterpret_cast(m_pMMViewHeader + 1);
                 }
                 else
                 {
                     // Check if the view starts with a valid MMView signature
-                    HX_ASSERT((m_pMMView->sMagicID[0] == 'H') && (m_pMMView->sMagicID[1] == 'M') && (m_pMMView->sMagicID[2] == 'M') && (m_pMMView->sMagicID[3] == 'F'));
-                    HX_ASSERT(m_pMMView->ulMapSize == ulSize);
-                    HX_ASSERT(m_pMMView->ulDataSize <= m_pMMView->ulMapSize - sizeof(MMView));                     
+                    HX_ASSERT((m_pMMViewHeader->sMagicID[0] == 'H') && (m_pMMViewHeader->sMagicID[1] == 'M') && (m_pMMViewHeader->sMagicID[2] == 'M') && (m_pMMViewHeader->sMagicID[3] == 'F'));
+                    HX_ASSERT(m_pMMViewHeader->ulMapSize == ulSize);
+                    HX_ASSERT(m_pMMViewHeader->ulDataSize <= m_pMMViewHeader->ulMapSize - sizeof(MMViewHeader));                     
+                    m_pData = reinterpret_cast(m_pMMViewHeader + 1);
                 }
 
                 m_fp = 0;
@@ -276,26 +278,28 @@
 
 
 /*  */
-STDMETHODIMP CHXWinSharedMMFile::Read(REF(IHXBuffer*) pBuffer, ULONG32 count)
+STDMETHODIMP CHXWinSharedMMFile::Read(REF(IHXBuffer*) pBuffer, UINT32 count)
 {
     HX_RESULT res = HXR_OK;
 
     if (count == 0)
-        count = m_pMMView->ulDataSize - m_fp;
+        count = m_pMMViewHeader->ulDataSize - m_fp;
 
 
-    if (!IsOpen() || (count > m_pMMView->ulDataSize - m_fp) || (HXR_OK != CreateBufferCCF(pBuffer, m_pContext)))
+    if (!IsOpen() || (count > m_pMMViewHeader->ulDataSize - m_fp) || (HXR_OK != CreateBufferCCF(pBuffer, m_pContext)))
     {
         res = HXR_FAILED;
     }
     else
     {
+        HX_ASSERT(m_pData != NULL);
+        HX_ASSERT(m_pMMViewHeader);
         pBuffer->SetSize(count);
-        memcpy(pBuffer->GetBuffer(),  m_pMMView->pData + m_fp , count);
+        memcpy(pBuffer->GetBuffer(),  m_pData + m_fp , count);
         m_fp += count;
     }
 
-	HX_ASSERT(m_fp <= m_pMMView->ulDataSize);
+	HX_ASSERT(m_fp <= m_pMMViewHeader->ulDataSize);
 
     return res;
 }
@@ -307,28 +311,30 @@
 
 
 
-    if (!IsOpen() || (pBuffer->GetSize() > m_pMMView->ulMapSize - m_fp))
+    if (!IsOpen() || (pBuffer->GetSize() > m_pMMViewHeader->ulMapSize - m_fp))
     {
         res = HXR_FAILED;
     }
     else
     {
-        memcpy(m_pMMView->pData + m_fp, pBuffer->GetBuffer(),  pBuffer->GetSize()); 
+        HX_ASSERT(m_pData != NULL);
+        HX_ASSERT(m_pMMViewHeader);
+        memcpy(m_pData + m_fp, pBuffer->GetBuffer(),  pBuffer->GetSize()); 
         m_fp += pBuffer->GetSize();
 
-        if(m_pMMView->ulDataSize < m_fp)
+        if(m_pMMViewHeader->ulDataSize < m_fp)
         {
             // The view data size has expanded, set the new data size in header
-            m_pMMView->ulDataSize = m_fp;
+            m_pMMViewHeader->ulDataSize = m_fp;
 #ifdef _DEBUG
-            memset(m_pMMView->pData+m_fp, 0xCD, m_pMMView->ulMapSize - m_pMMView->ulDataSize);
+            memset(m_pData+m_fp, 0xCD, m_pMMViewHeader->ulMapSize - m_pMMViewHeader->ulDataSize);
 #endif
         }
 
     }
 
-	HX_ASSERT(m_pMMView->ulDataSize <= m_pMMView->ulMapSize);
-	HX_ASSERT(m_fp <= m_pMMView->ulDataSize);
+	HX_ASSERT(m_pMMViewHeader->ulDataSize <= m_pMMViewHeader->ulMapSize);
+	HX_ASSERT(m_fp <= m_pMMViewHeader->ulDataSize);
 
     return res;
 }
@@ -337,14 +343,14 @@
 
 */
 STDMETHODIMP 
-CHXWinSharedMMFile::GetDataSize(REF(ULONG32) size)
+CHXWinSharedMMFile::GetDataSize(REF(UINT32) size)
 {
 	HX_RESULT res = HXR_FAILED;
 
 	if(IsOpen())
 	{
-		HX_ASSERT(m_pMMView);
-		size = m_pMMView->ulDataSize;
+		HX_ASSERT(m_pMMViewHeader);
+		size = m_pMMViewHeader->ulDataSize;
 			res = HXR_OK;
 	}
 
@@ -352,24 +358,24 @@
 }
 
 
-STDMETHODIMP CHXWinSharedMMFile::SetDataSize(ULONG32 size)
+STDMETHODIMP CHXWinSharedMMFile::SetDataSize(UINT32 size)
 {
     HX_RESULT res = HXR_OK;
 
-    if (!IsOpen() || (m_pMMView->ulMapSize < size))
+    if (!IsOpen() || (m_pMMViewHeader->ulMapSize < size))
     {
         res = HXR_FAILED;
     }
     else
     {
 
-        m_pMMView->ulDataSize = size; 
+        m_pMMViewHeader->ulDataSize = size; 
 #ifdef _DEBUG
-        memset(m_pMMView->pData+m_pMMView->ulDataSize, 0xEF, m_pMMView->ulMapSize - m_pMMView->ulDataSize);
+        memset(m_pData+m_pMMViewHeader->ulDataSize, 0xEF, m_pMMViewHeader->ulMapSize - m_pMMViewHeader->ulDataSize);
 #endif
     }
 
-	HX_ASSERT(m_pMMView->ulDataSize <= m_pMMView->ulMapSize);
+	HX_ASSERT(m_pMMViewHeader->ulDataSize <= m_pMMViewHeader->ulMapSize);
 
     return res;
 }
@@ -389,7 +395,7 @@
 * fromWhere specifier returns current position of file or -1 on
 * error.
 */
-STDMETHODIMP CHXWinSharedMMFile::Seek(ULONG32 ulOffset, ULONG32 ulFromWhere) 
+STDMETHODIMP CHXWinSharedMMFile::Seek(UINT32 ulOffset, UINT32 ulFromWhere) 
 {
     HX_RESULT res = HXR_OK;
     if(!IsOpen())
@@ -399,11 +405,11 @@
     }
     else
     {
-        HX_ASSERT(m_pMMView);
+        HX_ASSERT(m_pMMViewHeader);
 
         if (ulFromWhere == SEEK_END)
         {
-            m_fp = m_pMMView->ulDataSize + ulOffset;
+            m_fp = m_pMMViewHeader->ulDataSize + ulOffset;
         }
         else if (ulFromWhere == SEEK_SET)
         {
@@ -420,13 +426,13 @@
         }
     }
 	
-	HX_ASSERT(m_fp <= m_pMMView->ulMapSize);
+	HX_ASSERT(m_fp <= m_pMMViewHeader->ulMapSize);
 
 	return res;
 }
 
 /* Tell returns the current file position in the file */
-STDMETHODIMP_(ULONG32) CHXWinSharedMMFile::Tell()
+STDMETHODIMP_(UINT32) CHXWinSharedMMFile::Tell()
 {
     if(!IsOpen())
     {
@@ -486,7 +492,8 @@
 /*  */
 void CHXWinSharedMMFile::ZeroFillMap()
 {
-    HX_ASSERT(m_pMMView);
-    memset(m_pMMView->pData, 0, m_pMMView->ulMapSize - sizeof (MMView));
+    HX_ASSERT(m_pMMViewHeader);
+    HX_ASSERT(m_pData != NULL);
+    memset(m_pData, 0, m_pMMViewHeader->ulMapSize - sizeof (MMViewHeader));
 }
 

Index: sharedmmf.h
===================================================================
RCS file: /cvsroot/common/fileio/platform/win/sharedmmf.h,v
retrieving revision 1.1.2.1
retrieving revision 1.1.2.2
diff -u -d -r1.1.2.1 -r1.1.2.2
--- sharedmmf.h	10 Aug 2009 23:48:05 -0000	1.1.2.1
+++ sharedmmf.h	4 Sep 2009 21:47:37 -0000	1.1.2.2
@@ -69,9 +69,9 @@
         REFIID riid,
         void** ppvObj);
 
-    STDMETHOD_(ULONG32, AddRef)		(THIS);
+    STDMETHOD_(UINT32, AddRef)		(THIS);
 
-    STDMETHOD_(ULONG32, Release)	(THIS);
+    STDMETHOD_(UINT32, Release)	(THIS);
 
 
     CHXWinSharedMMFile(IUnknown* pContext);
@@ -79,7 +79,7 @@
     ~CHXWinSharedMMFile();
     
     STDMETHOD(OpenMap) (THIS_ 
-        const char* pszSharedName, ULONG32 ulSize);
+        const char* pszSharedName, UINT32 ulSize);
 
     /*  */
     STDMETHOD(CloseMap) (THIS);
@@ -87,7 +87,7 @@
 
     /*  */
     STDMETHOD(Read) (THIS_ 
-        REF(IHXBuffer*) pBuffer, ULONG32 count = 0);
+        REF(IHXBuffer*) pBuffer, UINT32 count = 0);
 
     
     /*  */
@@ -96,11 +96,11 @@
 
     
     /* */ 
-	STDMETHOD(GetDataSize) (THIS_ REF(ULONG32) size);
+	STDMETHOD(GetDataSize) (THIS_ REF(UINT32) size);
     
     
     /* */ 
-    STDMETHOD(SetDataSize) (THIS_ ULONG32 size);
+    STDMETHOD(SetDataSize) (THIS_ UINT32 size);
 
 
     /*
@@ -114,10 +114,10 @@
     * error.
     */
     STDMETHOD(Seek) (THIS_
-        ULONG32 ulOffset, ULONG32 ulFromWhere);
+        UINT32 ulOffset, UINT32 ulFromWhere);
 
     /* Tell returns the current file position in the file */
-    STDMETHOD_(ULONG32, Tell)   (THIS);
+    STDMETHOD_(UINT32, Tell)   (THIS);
 
     /* */
     STDMETHOD(LockMap) (THIS);
@@ -135,12 +135,11 @@
     void ZeroFillMap();
 
 
-    typedef struct MMView
+    typedef struct MMViewHeader
     {
-        char        sMagicID[4];
-        ULONG32     ulMapSize;
-        ULONG32     ulDataSize;
-        char        *pData;
+        char       sMagicID[4];
+        UINT32     ulMapSize;
+        UINT32     ulDataSize;
     };
 
     IUnknown*			m_pContext;
@@ -150,9 +149,10 @@
     CHXString           m_MMFSharedName; 
     CHXString           m_SharedMutexName; 
     void                *m_pViewRaw;
-    MMView              *m_pMMView;
+    MMViewHeader        *m_pMMViewHeader;
     HXBOOL              m_bLock;
-    ULONG32             m_fp;
+    UINT32              m_fp;
+    char                *m_pData;
     
     
 };


From mazimi at helixcommunity.org  Fri Sep  4 13:47:39 2009
From: mazimi at helixcommunity.org (mazimi@helixcommunity.org)
Date: Fri Sep  4 22:51:37 2009
Subject: [Common-cvs] fileio/platform/win sharedmmf.cpp, 1.1.2.1,
	1.1.2.2 sharedmmf.h, 1.1.2.1, 1.1.2.2
Message-ID: 

Update of /cvsroot/common/fileio/platform/win
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv8440/fileio/platform/win

Modified Files:
      Tag: PRODUCER_13_0_RN
	sharedmmf.cpp sharedmmf.h 
Log Message:
Synopsis
========
Fixed Bug 249757:CLI crashes when GUI is open
 
Branches: PRODUCER_13_0_RN and HEAD

Description
===========
1-Fixed a bug in SharedMMF implementation.
    The memory mapped file object uses a MMFView, which is the header written at the beginning of each memory mapped file view. MMFView had a char * pData member which was initialized to point to the data buffer start. The culprit was to assume that shared MMview had the same mapped address on all processes, and so share the pData variable among all processes. this is not the case all the time. This is fixed now by moving out the pData from MMFView header structure and  initialize it the local process address when the map is opened. 
    
2- Replaced all uses of ULONG32 with UINT32 

Files Affected
==============
Changed files:
common/fileio/platform/win/sharedmmf.cpp
common/fileio/platform/win/sharedmmf.h
common/include/hxsharedmmf.h

     
 
Testing Performed
=================
* tested in producer application using the license manager implementation of floating license.

Performance Tests:
- None

Platforms Tested: win32-i386-vc7

QA Hints
========




Index: sharedmmf.cpp
===================================================================
RCS file: /cvsroot/common/fileio/platform/win/sharedmmf.cpp,v
retrieving revision 1.1.2.1
retrieving revision 1.1.2.2
diff -u -d -r1.1.2.1 -r1.1.2.2
--- sharedmmf.cpp	10 Aug 2009 23:48:05 -0000	1.1.2.1
+++ sharedmmf.cpp	4 Sep 2009 21:47:37 -0000	1.1.2.2
@@ -62,9 +62,10 @@
 , m_MMFSharedName("")
 , m_SharedMutexName("")
 , m_pViewRaw(NULL)
-, m_pMMView(NULL)
+, m_pMMViewHeader(NULL)
 , m_bLock(FALSE)
 , m_fp(0)
+, m_pData(NULL)
 {
 
     m_pContext = pContext;
@@ -107,14 +108,14 @@
 }
 
 
-STDMETHODIMP_(ULONG32)
+STDMETHODIMP_(UINT32)
 CHXWinSharedMMFile::AddRef()
 {
     return InterlockedIncrement(&m_lRefCount);
 }
 
 
-STDMETHODIMP_(ULONG32)
+STDMETHODIMP_(UINT32)
 CHXWinSharedMMFile::Release()
 {
     if (InterlockedDecrement(&m_lRefCount) > 0)
@@ -127,7 +128,7 @@
 
 
 /*  */
-STDMETHODIMP CHXWinSharedMMFile::OpenMap(const char* pszSharedName, ULONG32 ulSize) 
+STDMETHODIMP CHXWinSharedMMFile::OpenMap(const char* pszSharedName, UINT32 ulSize) 
 {
     HX_RESULT res = HXR_OK;
     HXBOOL bMapExist = FALSE;
@@ -150,7 +151,7 @@
     {
         LockMap();
 
-        newFileMap = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, ulSize+sizeof(MMView), OS_STRING(pszSharedName));
+        newFileMap = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, ulSize+sizeof(MMViewHeader), OS_STRING(pszSharedName));
         if (newFileMap)
         {
             if (GetLastError() == ERROR_ALREADY_EXISTS)
@@ -180,24 +181,25 @@
             m_pViewRaw = MapViewOfFile(newFileMap, FILE_MAP_READ | FILE_MAP_WRITE, 0, 0, 0);
             if (m_pViewRaw)
             {
-                m_pMMView = reinterpret_cast(m_pViewRaw);
+                m_pMMViewHeader = reinterpret_cast(m_pViewRaw);
                 if (!bMapExist)
                 {
                     // We just created this map, set it up
-                    m_pMMView->sMagicID[0] = 'H';
-                    m_pMMView->sMagicID[1] = 'M';
-                    m_pMMView->sMagicID[2] = 'M';
-                    m_pMMView->sMagicID[3] = 'F';
-                    m_pMMView->ulMapSize = ulSize;
-                    m_pMMView->ulDataSize = 0;                    
-                    m_pMMView->pData = reinterpret_cast(m_pMMView + 1);
+                    m_pMMViewHeader->sMagicID[0] = 'H';
+                    m_pMMViewHeader->sMagicID[1] = 'M';
+                    m_pMMViewHeader->sMagicID[2] = 'M';
+                    m_pMMViewHeader->sMagicID[3] = 'F';
+                    m_pMMViewHeader->ulMapSize = ulSize;
+                    m_pMMViewHeader->ulDataSize = 0;                    
+                    m_pData = reinterpret_cast(m_pMMViewHeader + 1);
                 }
                 else
                 {
                     // Check if the view starts with a valid MMView signature
-                    HX_ASSERT((m_pMMView->sMagicID[0] == 'H') && (m_pMMView->sMagicID[1] == 'M') && (m_pMMView->sMagicID[2] == 'M') && (m_pMMView->sMagicID[3] == 'F'));
-                    HX_ASSERT(m_pMMView->ulMapSize == ulSize);
-                    HX_ASSERT(m_pMMView->ulDataSize <= m_pMMView->ulMapSize - sizeof(MMView));                     
+                    HX_ASSERT((m_pMMViewHeader->sMagicID[0] == 'H') && (m_pMMViewHeader->sMagicID[1] == 'M') && (m_pMMViewHeader->sMagicID[2] == 'M') && (m_pMMViewHeader->sMagicID[3] == 'F'));
+                    HX_ASSERT(m_pMMViewHeader->ulMapSize == ulSize);
+                    HX_ASSERT(m_pMMViewHeader->ulDataSize <= m_pMMViewHeader->ulMapSize - sizeof(MMViewHeader));                     
+                    m_pData = reinterpret_cast(m_pMMViewHeader + 1);
                 }
 
                 m_fp = 0;
@@ -276,26 +278,28 @@
 
 
 /*  */
-STDMETHODIMP CHXWinSharedMMFile::Read(REF(IHXBuffer*) pBuffer, ULONG32 count)
+STDMETHODIMP CHXWinSharedMMFile::Read(REF(IHXBuffer*) pBuffer, UINT32 count)
 {
     HX_RESULT res = HXR_OK;
 
     if (count == 0)
-        count = m_pMMView->ulDataSize - m_fp;
+        count = m_pMMViewHeader->ulDataSize - m_fp;
 
 
-    if (!IsOpen() || (count > m_pMMView->ulDataSize - m_fp) || (HXR_OK != CreateBufferCCF(pBuffer, m_pContext)))
+    if (!IsOpen() || (count > m_pMMViewHeader->ulDataSize - m_fp) || (HXR_OK != CreateBufferCCF(pBuffer, m_pContext)))
     {
         res = HXR_FAILED;
     }
     else
     {
+        HX_ASSERT(m_pData != NULL);
+        HX_ASSERT(m_pMMViewHeader);
         pBuffer->SetSize(count);
-        memcpy(pBuffer->GetBuffer(),  m_pMMView->pData + m_fp , count);
+        memcpy(pBuffer->GetBuffer(),  m_pData + m_fp , count);
         m_fp += count;
     }
 
-	HX_ASSERT(m_fp <= m_pMMView->ulDataSize);
+	HX_ASSERT(m_fp <= m_pMMViewHeader->ulDataSize);
 
     return res;
 }
@@ -307,28 +311,30 @@
 
 
 
-    if (!IsOpen() || (pBuffer->GetSize() > m_pMMView->ulMapSize - m_fp))
+    if (!IsOpen() || (pBuffer->GetSize() > m_pMMViewHeader->ulMapSize - m_fp))
     {
         res = HXR_FAILED;
     }
     else
     {
-        memcpy(m_pMMView->pData + m_fp, pBuffer->GetBuffer(),  pBuffer->GetSize()); 
+        HX_ASSERT(m_pData != NULL);
+        HX_ASSERT(m_pMMViewHeader);
+        memcpy(m_pData + m_fp, pBuffer->GetBuffer(),  pBuffer->GetSize()); 
         m_fp += pBuffer->GetSize();
 
-        if(m_pMMView->ulDataSize < m_fp)
+        if(m_pMMViewHeader->ulDataSize < m_fp)
         {
             // The view data size has expanded, set the new data size in header
-            m_pMMView->ulDataSize = m_fp;
+            m_pMMViewHeader->ulDataSize = m_fp;
 #ifdef _DEBUG
-            memset(m_pMMView->pData+m_fp, 0xCD, m_pMMView->ulMapSize - m_pMMView->ulDataSize);
+            memset(m_pData+m_fp, 0xCD, m_pMMViewHeader->ulMapSize - m_pMMViewHeader->ulDataSize);
 #endif
         }
 
     }
 
-	HX_ASSERT(m_pMMView->ulDataSize <= m_pMMView->ulMapSize);
-	HX_ASSERT(m_fp <= m_pMMView->ulDataSize);
+	HX_ASSERT(m_pMMViewHeader->ulDataSize <= m_pMMViewHeader->ulMapSize);
+	HX_ASSERT(m_fp <= m_pMMViewHeader->ulDataSize);
 
     return res;
 }
@@ -337,14 +343,14 @@
 
 */
 STDMETHODIMP 
-CHXWinSharedMMFile::GetDataSize(REF(ULONG32) size)
+CHXWinSharedMMFile::GetDataSize(REF(UINT32) size)
 {
 	HX_RESULT res = HXR_FAILED;
 
 	if(IsOpen())
 	{
-		HX_ASSERT(m_pMMView);
-		size = m_pMMView->ulDataSize;
+		HX_ASSERT(m_pMMViewHeader);
+		size = m_pMMViewHeader->ulDataSize;
 			res = HXR_OK;
 	}
 
@@ -352,24 +358,24 @@
 }
 
 
-STDMETHODIMP CHXWinSharedMMFile::SetDataSize(ULONG32 size)
+STDMETHODIMP CHXWinSharedMMFile::SetDataSize(UINT32 size)
 {
     HX_RESULT res = HXR_OK;
 
-    if (!IsOpen() || (m_pMMView->ulMapSize < size))
+    if (!IsOpen() || (m_pMMViewHeader->ulMapSize < size))
     {
         res = HXR_FAILED;
     }
     else
     {
 
-        m_pMMView->ulDataSize = size; 
+        m_pMMViewHeader->ulDataSize = size; 
 #ifdef _DEBUG
-        memset(m_pMMView->pData+m_pMMView->ulDataSize, 0xEF, m_pMMView->ulMapSize - m_pMMView->ulDataSize);
+        memset(m_pData+m_pMMViewHeader->ulDataSize, 0xEF, m_pMMViewHeader->ulMapSize - m_pMMViewHeader->ulDataSize);
 #endif
     }
 
-	HX_ASSERT(m_pMMView->ulDataSize <= m_pMMView->ulMapSize);
+	HX_ASSERT(m_pMMViewHeader->ulDataSize <= m_pMMViewHeader->ulMapSize);
 
     return res;
 }
@@ -389,7 +395,7 @@
 * fromWhere specifier returns current position of file or -1 on
 * error.
 */
-STDMETHODIMP CHXWinSharedMMFile::Seek(ULONG32 ulOffset, ULONG32 ulFromWhere) 
+STDMETHODIMP CHXWinSharedMMFile::Seek(UINT32 ulOffset, UINT32 ulFromWhere) 
 {
     HX_RESULT res = HXR_OK;
     if(!IsOpen())
@@ -399,11 +405,11 @@
     }
     else
     {
-        HX_ASSERT(m_pMMView);
+        HX_ASSERT(m_pMMViewHeader);
 
         if (ulFromWhere == SEEK_END)
         {
-            m_fp = m_pMMView->ulDataSize + ulOffset;
+            m_fp = m_pMMViewHeader->ulDataSize + ulOffset;
         }
         else if (ulFromWhere == SEEK_SET)
         {
@@ -420,13 +426,13 @@
         }
     }
 	
-	HX_ASSERT(m_fp <= m_pMMView->ulMapSize);
+	HX_ASSERT(m_fp <= m_pMMViewHeader->ulMapSize);
 
 	return res;
 }
 
 /* Tell returns the current file position in the file */
-STDMETHODIMP_(ULONG32) CHXWinSharedMMFile::Tell()
+STDMETHODIMP_(UINT32) CHXWinSharedMMFile::Tell()
 {
     if(!IsOpen())
     {
@@ -486,7 +492,8 @@
 /*  */
 void CHXWinSharedMMFile::ZeroFillMap()
 {
-    HX_ASSERT(m_pMMView);
-    memset(m_pMMView->pData, 0, m_pMMView->ulMapSize - sizeof (MMView));
+    HX_ASSERT(m_pMMViewHeader);
+    HX_ASSERT(m_pData != NULL);
+    memset(m_pData, 0, m_pMMViewHeader->ulMapSize - sizeof (MMViewHeader));
 }
 

Index: sharedmmf.h
===================================================================
RCS file: /cvsroot/common/fileio/platform/win/sharedmmf.h,v
retrieving revision 1.1.2.1
retrieving revision 1.1.2.2
diff -u -d -r1.1.2.1 -r1.1.2.2
--- sharedmmf.h	10 Aug 2009 23:48:05 -0000	1.1.2.1
+++ sharedmmf.h	4 Sep 2009 21:47:37 -0000	1.1.2.2
@@ -69,9 +69,9 @@
         REFIID riid,
         void** ppvObj);
 
-    STDMETHOD_(ULONG32, AddRef)		(THIS);
+    STDMETHOD_(UINT32, AddRef)		(THIS);
 
-    STDMETHOD_(ULONG32, Release)	(THIS);
+    STDMETHOD_(UINT32, Release)	(THIS);
 
 
     CHXWinSharedMMFile(IUnknown* pContext);
@@ -79,7 +79,7 @@
     ~CHXWinSharedMMFile();
     
     STDMETHOD(OpenMap) (THIS_ 
-        const char* pszSharedName, ULONG32 ulSize);
+        const char* pszSharedName, UINT32 ulSize);
 
     /*  */
     STDMETHOD(CloseMap) (THIS);
@@ -87,7 +87,7 @@
 
     /*  */
     STDMETHOD(Read) (THIS_ 
-        REF(IHXBuffer*) pBuffer, ULONG32 count = 0);
+        REF(IHXBuffer*) pBuffer, UINT32 count = 0);
 
     
     /*  */
@@ -96,11 +96,11 @@
 
     
     /* */ 
-	STDMETHOD(GetDataSize) (THIS_ REF(ULONG32) size);
+	STDMETHOD(GetDataSize) (THIS_ REF(UINT32) size);
     
     
     /* */ 
-    STDMETHOD(SetDataSize) (THIS_ ULONG32 size);
+    STDMETHOD(SetDataSize) (THIS_ UINT32 size);
 
 
     /*
@@ -114,10 +114,10 @@
     * error.
     */
     STDMETHOD(Seek) (THIS_
-        ULONG32 ulOffset, ULONG32 ulFromWhere);
+        UINT32 ulOffset, UINT32 ulFromWhere);
 
     /* Tell returns the current file position in the file */
-    STDMETHOD_(ULONG32, Tell)   (THIS);
+    STDMETHOD_(UINT32, Tell)   (THIS);
 
     /* */
     STDMETHOD(LockMap) (THIS);
@@ -135,12 +135,11 @@
     void ZeroFillMap();
 
 
-    typedef struct MMView
+    typedef struct MMViewHeader
     {
-        char        sMagicID[4];
-        ULONG32     ulMapSize;
-        ULONG32     ulDataSize;
-        char        *pData;
+        char       sMagicID[4];
+        UINT32     ulMapSize;
+        UINT32     ulDataSize;
     };
 
     IUnknown*			m_pContext;
@@ -150,9 +149,10 @@
     CHXString           m_MMFSharedName; 
     CHXString           m_SharedMutexName; 
     void                *m_pViewRaw;
-    MMView              *m_pMMView;
+    MMViewHeader        *m_pMMViewHeader;
     HXBOOL              m_bLock;
-    ULONG32             m_fp;
+    UINT32              m_fp;
+    char                *m_pData;
     
     
 };


From mazimi at helixcommunity.org  Fri Sep  4 13:50:25 2009
From: mazimi at helixcommunity.org (mazimi@helixcommunity.org)
Date: Fri Sep  4 22:54:21 2009
Subject: [Common-cvs] include hxsharedmmf.h,1.2,1.3
Message-ID: 

Update of /cvsroot/common/include
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv8764/include

Modified Files:
	hxsharedmmf.h 
Log Message:
Synopsis
========
Fixed Bug 249757:CLI crashes when GUI is open
 
Branches: PRODUCER_13_0_RN and HEAD

Description
===========
1-Fixed a bug in SharedMMF implementation.
    The memory mapped file object uses a MMFView, which is the header written at the beginning of each memory mapped file view. MMFView had a char * pData member which was initialized to point to the data buffer start. The culprit was to assume that shared MMview had the same mapped address on all processes, and so share the pData variable among all processes. this is not the case all the time. This is fixed now by moving out the pData from MMFView header structure and  initialize it the local process address when the map is opened. 
    
2- Replaced all uses of ULONG32 with UINT32 

Files Affected
==============
Changed files:
common/fileio/platform/win/sharedmmf.cpp
common/fileio/platform/win/sharedmmf.h
common/include/hxsharedmmf.h

     
 
Testing Performed
=================
* tested in producer application using the license manager implementation of floating license.

Performance Tests:
- None

Platforms Tested: win32-i386-vc7

QA Hints
========


 



Index: hxsharedmmf.h
===================================================================
RCS file: /cvsroot/common/include/hxsharedmmf.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- hxsharedmmf.h	12 Aug 2009 17:35:11 -0000	1.2
+++ hxsharedmmf.h	4 Sep 2009 21:50:23 -0000	1.3
@@ -90,9 +90,9 @@
         REFIID riid,
         void** ppvObj) PURE;
 
-    STDMETHOD_(ULONG32, AddRef)		(THIS) PURE;
+    STDMETHOD_(UINT32, AddRef)		(THIS) PURE;
 
-    STDMETHOD_(ULONG32, Release)	(THIS) PURE;
+    STDMETHOD_(UINT32, Release)	(THIS) PURE;
 
     /*
     *  IHXSharedMMFileFactory methods
@@ -137,32 +137,32 @@
      */
     STDMETHOD(QueryInterface) (THIS_ REFIID riid, void** ppvObj) PURE;
     
-    STDMETHOD_(ULONG32, AddRef) (THIS) PURE;
+    STDMETHOD_(UINT32, AddRef) (THIS) PURE;
     
-    STDMETHOD_(ULONG32, Release) (THIS) PURE;
+    STDMETHOD_(UINT32, Release) (THIS) PURE;
     
     /*
      *  IHXSharedMMFile methods
      */
 
     /*  */
-    STDMETHOD(OpenMap) (THIS_ const char* pszSharedName, ULONG32 ulSize) PURE;
+    STDMETHOD(OpenMap) (THIS_ const char* pszSharedName, UINT32 ulSize) PURE;
 
     /*  */
     STDMETHOD(CloseMap)	(THIS) PURE;
 
 
     /*  */
-    STDMETHOD(Read) (THIS_ REF(IHXBuffer*) pBuffer, ULONG32 count = 0) PURE;
+    STDMETHOD(Read) (THIS_ REF(IHXBuffer*) pBuffer, UINT32 count = 0) PURE;
 
     /*  */
     STDMETHOD(Write) (THIS_  IHXBuffer* pBuffer) PURE;
 
     /* */ 
-    STDMETHOD(GetDataSize) (THIS_ REF(ULONG32) size) PURE;
+    STDMETHOD(GetDataSize) (THIS_ REF(UINT32) size) PURE;
 
 	/* */ 
-	STDMETHOD(SetDataSize) (THIS_ ULONG32 size) PURE;
+	STDMETHOD(SetDataSize) (THIS_ UINT32 size) PURE;
 
     /*
     * IsOpen returns TRUE if file is open.  Otherwise FALSE.
@@ -174,10 +174,10 @@
      * fromWhere specifier returns current position of file or -1 on
      * error.
      */
-    STDMETHOD(Seek) (THIS_ ULONG32 ulOffset, ULONG32 ulFromWhere) PURE;
+    STDMETHOD(Seek) (THIS_ UINT32 ulOffset, UINT32 ulFromWhere) PURE;
 
     /* Tell returns the current file position in the file */
-    STDMETHOD_(ULONG32, Tell)       (THIS) PURE;
+    STDMETHOD_(UINT32, Tell)       (THIS) PURE;
   
     /* */
     STDMETHOD(LockMap) (THIS) PURE;


From mazimi at helixcommunity.org  Fri Sep  4 13:50:25 2009
From: mazimi at helixcommunity.org (mazimi@helixcommunity.org)
Date: Fri Sep  4 22:54:22 2009
Subject: [Common-cvs] include hxsharedmmf.h,1.2,1.3
Message-ID: 

Update of /cvsroot/common/include
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv8764/include

Modified Files:
	hxsharedmmf.h 
Log Message:
Synopsis
========
Fixed Bug 249757:CLI crashes when GUI is open
 
Branches: PRODUCER_13_0_RN and HEAD

Description
===========
1-Fixed a bug in SharedMMF implementation.
    The memory mapped file object uses a MMFView, which is the header written at the beginning of each memory mapped file view. MMFView had a char * pData member which was initialized to point to the data buffer start. The culprit was to assume that shared MMview had the same mapped address on all processes, and so share the pData variable among all processes. this is not the case all the time. This is fixed now by moving out the pData from MMFView header structure and  initialize it the local process address when the map is opened. 
    
2- Replaced all uses of ULONG32 with UINT32 

Files Affected
==============
Changed files:
common/fileio/platform/win/sharedmmf.cpp
common/fileio/platform/win/sharedmmf.h
common/include/hxsharedmmf.h

     
 
Testing Performed
=================
* tested in producer application using the license manager implementation of floating license.

Performance Tests:
- None

Platforms Tested: win32-i386-vc7

QA Hints
========


 



Index: hxsharedmmf.h
===================================================================
RCS file: /cvsroot/common/include/hxsharedmmf.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- hxsharedmmf.h	12 Aug 2009 17:35:11 -0000	1.2
+++ hxsharedmmf.h	4 Sep 2009 21:50:23 -0000	1.3
@@ -90,9 +90,9 @@
         REFIID riid,
         void** ppvObj) PURE;
 
-    STDMETHOD_(ULONG32, AddRef)		(THIS) PURE;
+    STDMETHOD_(UINT32, AddRef)		(THIS) PURE;
 
-    STDMETHOD_(ULONG32, Release)	(THIS) PURE;
+    STDMETHOD_(UINT32, Release)	(THIS) PURE;
 
     /*
     *  IHXSharedMMFileFactory methods
@@ -137,32 +137,32 @@
      */
     STDMETHOD(QueryInterface) (THIS_ REFIID riid, void** ppvObj) PURE;
     
-    STDMETHOD_(ULONG32, AddRef) (THIS) PURE;
+    STDMETHOD_(UINT32, AddRef) (THIS) PURE;
     
-    STDMETHOD_(ULONG32, Release) (THIS) PURE;
+    STDMETHOD_(UINT32, Release) (THIS) PURE;
     
     /*
      *  IHXSharedMMFile methods
      */
 
     /*  */
-    STDMETHOD(OpenMap) (THIS_ const char* pszSharedName, ULONG32 ulSize) PURE;
+    STDMETHOD(OpenMap) (THIS_ const char* pszSharedName, UINT32 ulSize) PURE;
 
     /*  */
     STDMETHOD(CloseMap)	(THIS) PURE;
 
 
     /*  */
-    STDMETHOD(Read) (THIS_ REF(IHXBuffer*) pBuffer, ULONG32 count = 0) PURE;
+    STDMETHOD(Read) (THIS_ REF(IHXBuffer*) pBuffer, UINT32 count = 0) PURE;
 
     /*  */
     STDMETHOD(Write) (THIS_  IHXBuffer* pBuffer) PURE;
 
     /* */ 
-    STDMETHOD(GetDataSize) (THIS_ REF(ULONG32) size) PURE;
+    STDMETHOD(GetDataSize) (THIS_ REF(UINT32) size) PURE;
 
 	/* */ 
-	STDMETHOD(SetDataSize) (THIS_ ULONG32 size) PURE;
+	STDMETHOD(SetDataSize) (THIS_ UINT32 size) PURE;
 
     /*
     * IsOpen returns TRUE if file is open.  Otherwise FALSE.
@@ -174,10 +174,10 @@
      * fromWhere specifier returns current position of file or -1 on
      * error.
      */
-    STDMETHOD(Seek) (THIS_ ULONG32 ulOffset, ULONG32 ulFromWhere) PURE;
+    STDMETHOD(Seek) (THIS_ UINT32 ulOffset, UINT32 ulFromWhere) PURE;
 
     /* Tell returns the current file position in the file */
-    STDMETHOD_(ULONG32, Tell)       (THIS) PURE;
+    STDMETHOD_(UINT32, Tell)       (THIS) PURE;
   
     /* */
     STDMETHOD(LockMap) (THIS) PURE;


From mazimi at helixcommunity.org  Fri Sep  4 13:50:26 2009
From: mazimi at helixcommunity.org (mazimi@helixcommunity.org)
Date: Fri Sep  4 22:54:23 2009
Subject: [Common-cvs] 
	fileio/platform/win sharedmmf.cpp, 1.2, 1.3 sharedmmf.h, 1.2, 1.3
Message-ID: 

Update of /cvsroot/common/fileio/platform/win
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv8764/fileio/platform/win

Modified Files:
	sharedmmf.cpp sharedmmf.h 
Log Message:
Synopsis
========
Fixed Bug 249757:CLI crashes when GUI is open
 
Branches: PRODUCER_13_0_RN and HEAD

Description
===========
1-Fixed a bug in SharedMMF implementation.
    The memory mapped file object uses a MMFView, which is the header written at the beginning of each memory mapped file view. MMFView had a char * pData member which was initialized to point to the data buffer start. The culprit was to assume that shared MMview had the same mapped address on all processes, and so share the pData variable among all processes. this is not the case all the time. This is fixed now by moving out the pData from MMFView header structure and  initialize it the local process address when the map is opened. 
    
2- Replaced all uses of ULONG32 with UINT32 

Files Affected
==============
Changed files:
common/fileio/platform/win/sharedmmf.cpp
common/fileio/platform/win/sharedmmf.h
common/include/hxsharedmmf.h

     
 
Testing Performed
=================
* tested in producer application using the license manager implementation of floating license.

Performance Tests:
- None

Platforms Tested: win32-i386-vc7

QA Hints
========


 



Index: sharedmmf.cpp
===================================================================
RCS file: /cvsroot/common/fileio/platform/win/sharedmmf.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- sharedmmf.cpp	12 Aug 2009 17:35:12 -0000	1.2
+++ sharedmmf.cpp	4 Sep 2009 21:50:23 -0000	1.3
@@ -62,9 +62,10 @@
 , m_MMFSharedName("")
 , m_SharedMutexName("")
 , m_pViewRaw(NULL)
-, m_pMMView(NULL)
+, m_pMMViewHeader(NULL)
 , m_bLock(FALSE)
 , m_fp(0)
+, m_pData(NULL)
 {
 
     m_pContext = pContext;
@@ -107,14 +108,14 @@
 }
 
 
-STDMETHODIMP_(ULONG32)
+STDMETHODIMP_(UINT32)
 CHXWinSharedMMFile::AddRef()
 {
     return InterlockedIncrement(&m_lRefCount);
 }
 
 
-STDMETHODIMP_(ULONG32)
+STDMETHODIMP_(UINT32)
 CHXWinSharedMMFile::Release()
 {
     if (InterlockedDecrement(&m_lRefCount) > 0)
@@ -127,7 +128,7 @@
 
 
 /*  */
-STDMETHODIMP CHXWinSharedMMFile::OpenMap(const char* pszSharedName, ULONG32 ulSize) 
+STDMETHODIMP CHXWinSharedMMFile::OpenMap(const char* pszSharedName, UINT32 ulSize) 
 {
     HX_RESULT res = HXR_OK;
     HXBOOL bMapExist = FALSE;
@@ -150,7 +151,7 @@
     {
         LockMap();
 
-        newFileMap = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, ulSize+sizeof(MMView), OS_STRING(pszSharedName));
+        newFileMap = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, ulSize+sizeof(MMViewHeader), OS_STRING(pszSharedName));
         if (newFileMap)
         {
             if (GetLastError() == ERROR_ALREADY_EXISTS)
@@ -180,24 +181,25 @@
             m_pViewRaw = MapViewOfFile(newFileMap, FILE_MAP_READ | FILE_MAP_WRITE, 0, 0, 0);
             if (m_pViewRaw)
             {
-                m_pMMView = reinterpret_cast(m_pViewRaw);
+                m_pMMViewHeader = reinterpret_cast(m_pViewRaw);
                 if (!bMapExist)
                 {
                     // We just created this map, set it up
-                    m_pMMView->sMagicID[0] = 'H';
-                    m_pMMView->sMagicID[1] = 'M';
-                    m_pMMView->sMagicID[2] = 'M';
-                    m_pMMView->sMagicID[3] = 'F';
-                    m_pMMView->ulMapSize = ulSize;
-                    m_pMMView->ulDataSize = 0;                    
-                    m_pMMView->pData = reinterpret_cast(m_pMMView + 1);
+                    m_pMMViewHeader->sMagicID[0] = 'H';
+                    m_pMMViewHeader->sMagicID[1] = 'M';
+                    m_pMMViewHeader->sMagicID[2] = 'M';
+                    m_pMMViewHeader->sMagicID[3] = 'F';
+                    m_pMMViewHeader->ulMapSize = ulSize;
+                    m_pMMViewHeader->ulDataSize = 0;                    
+                    m_pData = reinterpret_cast(m_pMMViewHeader + 1);
                 }
                 else
                 {
                     // Check if the view starts with a valid MMView signature
-                    HX_ASSERT((m_pMMView->sMagicID[0] == 'H') && (m_pMMView->sMagicID[1] == 'M') && (m_pMMView->sMagicID[2] == 'M') && (m_pMMView->sMagicID[3] == 'F'));
-                    HX_ASSERT(m_pMMView->ulMapSize == ulSize);
-                    HX_ASSERT(m_pMMView->ulDataSize <= m_pMMView->ulMapSize - sizeof(MMView));                     
+                    HX_ASSERT((m_pMMViewHeader->sMagicID[0] == 'H') && (m_pMMViewHeader->sMagicID[1] == 'M') && (m_pMMViewHeader->sMagicID[2] == 'M') && (m_pMMViewHeader->sMagicID[3] == 'F'));
+                    HX_ASSERT(m_pMMViewHeader->ulMapSize == ulSize);
+                    HX_ASSERT(m_pMMViewHeader->ulDataSize <= m_pMMViewHeader->ulMapSize - sizeof(MMViewHeader));                     
+                    m_pData = reinterpret_cast(m_pMMViewHeader + 1);
                 }
 
                 m_fp = 0;
@@ -276,26 +278,28 @@
 
 
 /*  */
-STDMETHODIMP CHXWinSharedMMFile::Read(REF(IHXBuffer*) pBuffer, ULONG32 count)
+STDMETHODIMP CHXWinSharedMMFile::Read(REF(IHXBuffer*) pBuffer, UINT32 count)
 {
     HX_RESULT res = HXR_OK;
 
     if (count == 0)
-        count = m_pMMView->ulDataSize - m_fp;
+        count = m_pMMViewHeader->ulDataSize - m_fp;
 
 
-    if (!IsOpen() || (count > m_pMMView->ulDataSize - m_fp) || (HXR_OK != CreateBufferCCF(pBuffer, m_pContext)))
+    if (!IsOpen() || (count > m_pMMViewHeader->ulDataSize - m_fp) || (HXR_OK != CreateBufferCCF(pBuffer, m_pContext)))
     {
         res = HXR_FAILED;
     }
     else
     {
+        HX_ASSERT(m_pData != NULL);
+        HX_ASSERT(m_pMMViewHeader);
         pBuffer->SetSize(count);
-        memcpy(pBuffer->GetBuffer(),  m_pMMView->pData + m_fp , count);
+        memcpy(pBuffer->GetBuffer(),  m_pData + m_fp , count);
         m_fp += count;
     }
 
-	HX_ASSERT(m_fp <= m_pMMView->ulDataSize);
+	HX_ASSERT(m_fp <= m_pMMViewHeader->ulDataSize);
 
     return res;
 }
@@ -307,28 +311,30 @@
 
 
 
-    if (!IsOpen() || (pBuffer->GetSize() > m_pMMView->ulMapSize - m_fp))
+    if (!IsOpen() || (pBuffer->GetSize() > m_pMMViewHeader->ulMapSize - m_fp))
     {
         res = HXR_FAILED;
     }
     else
     {
-        memcpy(m_pMMView->pData + m_fp, pBuffer->GetBuffer(),  pBuffer->GetSize()); 
+        HX_ASSERT(m_pData != NULL);
+        HX_ASSERT(m_pMMViewHeader);
+        memcpy(m_pData + m_fp, pBuffer->GetBuffer(),  pBuffer->GetSize()); 
         m_fp += pBuffer->GetSize();
 
-        if(m_pMMView->ulDataSize < m_fp)
+        if(m_pMMViewHeader->ulDataSize < m_fp)
         {
             // The view data size has expanded, set the new data size in header
-            m_pMMView->ulDataSize = m_fp;
+            m_pMMViewHeader->ulDataSize = m_fp;
 #ifdef _DEBUG
-            memset(m_pMMView->pData+m_fp, 0xCD, m_pMMView->ulMapSize - m_pMMView->ulDataSize);
+            memset(m_pData+m_fp, 0xCD, m_pMMViewHeader->ulMapSize - m_pMMViewHeader->ulDataSize);
 #endif
         }
 
     }
 
-	HX_ASSERT(m_pMMView->ulDataSize <= m_pMMView->ulMapSize);
-	HX_ASSERT(m_fp <= m_pMMView->ulDataSize);
+	HX_ASSERT(m_pMMViewHeader->ulDataSize <= m_pMMViewHeader->ulMapSize);
+	HX_ASSERT(m_fp <= m_pMMViewHeader->ulDataSize);
 
     return res;
 }
@@ -337,14 +343,14 @@
 
 */
 STDMETHODIMP 
-CHXWinSharedMMFile::GetDataSize(REF(ULONG32) size)
+CHXWinSharedMMFile::GetDataSize(REF(UINT32) size)
 {
 	HX_RESULT res = HXR_FAILED;
 
 	if(IsOpen())
 	{
-		HX_ASSERT(m_pMMView);
-		size = m_pMMView->ulDataSize;
+		HX_ASSERT(m_pMMViewHeader);
+		size = m_pMMViewHeader->ulDataSize;
 			res = HXR_OK;
 	}
 
@@ -352,24 +358,24 @@
 }
 
 
-STDMETHODIMP CHXWinSharedMMFile::SetDataSize(ULONG32 size)
+STDMETHODIMP CHXWinSharedMMFile::SetDataSize(UINT32 size)
 {
     HX_RESULT res = HXR_OK;
 
-    if (!IsOpen() || (m_pMMView->ulMapSize < size))
+    if (!IsOpen() || (m_pMMViewHeader->ulMapSize < size))
     {
         res = HXR_FAILED;
     }
     else
     {
 
-        m_pMMView->ulDataSize = size; 
+        m_pMMViewHeader->ulDataSize = size; 
 #ifdef _DEBUG
-        memset(m_pMMView->pData+m_pMMView->ulDataSize, 0xEF, m_pMMView->ulMapSize - m_pMMView->ulDataSize);
+        memset(m_pData+m_pMMViewHeader->ulDataSize, 0xEF, m_pMMViewHeader->ulMapSize - m_pMMViewHeader->ulDataSize);
 #endif
     }
 
-	HX_ASSERT(m_pMMView->ulDataSize <= m_pMMView->ulMapSize);
+	HX_ASSERT(m_pMMViewHeader->ulDataSize <= m_pMMViewHeader->ulMapSize);
 
     return res;
 }
@@ -389,7 +395,7 @@
 * fromWhere specifier returns current position of file or -1 on
 * error.
 */
-STDMETHODIMP CHXWinSharedMMFile::Seek(ULONG32 ulOffset, ULONG32 ulFromWhere) 
+STDMETHODIMP CHXWinSharedMMFile::Seek(UINT32 ulOffset, UINT32 ulFromWhere) 
 {
     HX_RESULT res = HXR_OK;
     if(!IsOpen())
@@ -399,11 +405,11 @@
     }
     else
     {
-        HX_ASSERT(m_pMMView);
+        HX_ASSERT(m_pMMViewHeader);
 
         if (ulFromWhere == SEEK_END)
         {
-            m_fp = m_pMMView->ulDataSize + ulOffset;
+            m_fp = m_pMMViewHeader->ulDataSize + ulOffset;
         }
         else if (ulFromWhere == SEEK_SET)
         {
@@ -420,13 +426,13 @@
         }
     }
 	
-	HX_ASSERT(m_fp <= m_pMMView->ulMapSize);
+	HX_ASSERT(m_fp <= m_pMMViewHeader->ulMapSize);
 
 	return res;
 }
 
 /* Tell returns the current file position in the file */
-STDMETHODIMP_(ULONG32) CHXWinSharedMMFile::Tell()
+STDMETHODIMP_(UINT32) CHXWinSharedMMFile::Tell()
 {
     if(!IsOpen())
     {
@@ -486,7 +492,8 @@
 /*  */
 void CHXWinSharedMMFile::ZeroFillMap()
 {
-    HX_ASSERT(m_pMMView);
-    memset(m_pMMView->pData, 0, m_pMMView->ulMapSize - sizeof (MMView));
+    HX_ASSERT(m_pMMViewHeader);
+    HX_ASSERT(m_pData != NULL);
+    memset(m_pData, 0, m_pMMViewHeader->ulMapSize - sizeof (MMViewHeader));
 }
 

Index: sharedmmf.h
===================================================================
RCS file: /cvsroot/common/fileio/platform/win/sharedmmf.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- sharedmmf.h	12 Aug 2009 17:35:12 -0000	1.2
+++ sharedmmf.h	4 Sep 2009 21:50:23 -0000	1.3
@@ -69,9 +69,9 @@
         REFIID riid,
         void** ppvObj);
 
-    STDMETHOD_(ULONG32, AddRef)		(THIS);
+    STDMETHOD_(UINT32, AddRef)		(THIS);
 
-    STDMETHOD_(ULONG32, Release)	(THIS);
+    STDMETHOD_(UINT32, Release)	(THIS);
 
 
     CHXWinSharedMMFile(IUnknown* pContext);
@@ -79,7 +79,7 @@
     ~CHXWinSharedMMFile();
     
     STDMETHOD(OpenMap) (THIS_ 
-        const char* pszSharedName, ULONG32 ulSize);
+        const char* pszSharedName, UINT32 ulSize);
 
     /*  */
     STDMETHOD(CloseMap) (THIS);
@@ -87,7 +87,7 @@
 
     /*  */
     STDMETHOD(Read) (THIS_ 
-        REF(IHXBuffer*) pBuffer, ULONG32 count = 0);
+        REF(IHXBuffer*) pBuffer, UINT32 count = 0);
 
     
     /*  */
@@ -96,11 +96,11 @@
 
     
     /* */ 
-	STDMETHOD(GetDataSize) (THIS_ REF(ULONG32) size);
+	STDMETHOD(GetDataSize) (THIS_ REF(UINT32) size);
     
     
     /* */ 
-    STDMETHOD(SetDataSize) (THIS_ ULONG32 size);
+    STDMETHOD(SetDataSize) (THIS_ UINT32 size);
 
 
     /*
@@ -114,10 +114,10 @@
     * error.
     */
     STDMETHOD(Seek) (THIS_
-        ULONG32 ulOffset, ULONG32 ulFromWhere);
+        UINT32 ulOffset, UINT32 ulFromWhere);
 
     /* Tell returns the current file position in the file */
-    STDMETHOD_(ULONG32, Tell)   (THIS);
+    STDMETHOD_(UINT32, Tell)   (THIS);
 
     /* */
     STDMETHOD(LockMap) (THIS);
@@ -135,12 +135,11 @@
     void ZeroFillMap();
 
 
-    typedef struct MMView
+    typedef struct MMViewHeader
     {
-        char        sMagicID[4];
-        ULONG32     ulMapSize;
-        ULONG32     ulDataSize;
-        char        *pData;
+        char       sMagicID[4];
+        UINT32     ulMapSize;
+        UINT32     ulDataSize;
     };
 
     IUnknown*			m_pContext;
@@ -150,9 +149,10 @@
     CHXString           m_MMFSharedName; 
     CHXString           m_SharedMutexName; 
     void                *m_pViewRaw;
-    MMView              *m_pMMView;
+    MMViewHeader        *m_pMMViewHeader;
     HXBOOL              m_bLock;
-    ULONG32             m_fp;
+    UINT32              m_fp;
+    char                *m_pData;
     
     
 };


From mazimi at helixcommunity.org  Fri Sep  4 13:50:26 2009
From: mazimi at helixcommunity.org (mazimi@helixcommunity.org)
Date: Fri Sep  4 22:54:23 2009
Subject: [Common-cvs] 
	fileio/platform/win sharedmmf.cpp, 1.2, 1.3 sharedmmf.h, 1.2, 1.3
Message-ID: 

Update of /cvsroot/common/fileio/platform/win
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv8764/fileio/platform/win

Modified Files:
	sharedmmf.cpp sharedmmf.h 
Log Message:
Synopsis
========
Fixed Bug 249757:CLI crashes when GUI is open
 
Branches: PRODUCER_13_0_RN and HEAD

Description
===========
1-Fixed a bug in SharedMMF implementation.
    The memory mapped file object uses a MMFView, which is the header written at the beginning of each memory mapped file view. MMFView had a char * pData member which was initialized to point to the data buffer start. The culprit was to assume that shared MMview had the same mapped address on all processes, and so share the pData variable among all processes. this is not the case all the time. This is fixed now by moving out the pData from MMFView header structure and  initialize it the local process address when the map is opened. 
    
2- Replaced all uses of ULONG32 with UINT32 

Files Affected
==============
Changed files:
common/fileio/platform/win/sharedmmf.cpp
common/fileio/platform/win/sharedmmf.h
common/include/hxsharedmmf.h

     
 
Testing Performed
=================
* tested in producer application using the license manager implementation of floating license.

Performance Tests:
- None

Platforms Tested: win32-i386-vc7

QA Hints
========


 



Index: sharedmmf.cpp
===================================================================
RCS file: /cvsroot/common/fileio/platform/win/sharedmmf.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- sharedmmf.cpp	12 Aug 2009 17:35:12 -0000	1.2
+++ sharedmmf.cpp	4 Sep 2009 21:50:23 -0000	1.3
@@ -62,9 +62,10 @@
 , m_MMFSharedName("")
 , m_SharedMutexName("")
 , m_pViewRaw(NULL)
-, m_pMMView(NULL)
+, m_pMMViewHeader(NULL)
 , m_bLock(FALSE)
 , m_fp(0)
+, m_pData(NULL)
 {
 
     m_pContext = pContext;
@@ -107,14 +108,14 @@
 }
 
 
-STDMETHODIMP_(ULONG32)
+STDMETHODIMP_(UINT32)
 CHXWinSharedMMFile::AddRef()
 {
     return InterlockedIncrement(&m_lRefCount);
 }
 
 
-STDMETHODIMP_(ULONG32)
+STDMETHODIMP_(UINT32)
 CHXWinSharedMMFile::Release()
 {
     if (InterlockedDecrement(&m_lRefCount) > 0)
@@ -127,7 +128,7 @@
 
 
 /*  */
-STDMETHODIMP CHXWinSharedMMFile::OpenMap(const char* pszSharedName, ULONG32 ulSize) 
+STDMETHODIMP CHXWinSharedMMFile::OpenMap(const char* pszSharedName, UINT32 ulSize) 
 {
     HX_RESULT res = HXR_OK;
     HXBOOL bMapExist = FALSE;
@@ -150,7 +151,7 @@
     {
         LockMap();
 
-        newFileMap = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, ulSize+sizeof(MMView), OS_STRING(pszSharedName));
+        newFileMap = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, ulSize+sizeof(MMViewHeader), OS_STRING(pszSharedName));
         if (newFileMap)
         {
             if (GetLastError() == ERROR_ALREADY_EXISTS)
@@ -180,24 +181,25 @@
             m_pViewRaw = MapViewOfFile(newFileMap, FILE_MAP_READ | FILE_MAP_WRITE, 0, 0, 0);
             if (m_pViewRaw)
             {
-                m_pMMView = reinterpret_cast(m_pViewRaw);
+                m_pMMViewHeader = reinterpret_cast(m_pViewRaw);
                 if (!bMapExist)
                 {
                     // We just created this map, set it up
-                    m_pMMView->sMagicID[0] = 'H';
-                    m_pMMView->sMagicID[1] = 'M';
-                    m_pMMView->sMagicID[2] = 'M';
-                    m_pMMView->sMagicID[3] = 'F';
-                    m_pMMView->ulMapSize = ulSize;
-                    m_pMMView->ulDataSize = 0;                    
-                    m_pMMView->pData = reinterpret_cast(m_pMMView + 1);
+                    m_pMMViewHeader->sMagicID[0] = 'H';
+                    m_pMMViewHeader->sMagicID[1] = 'M';
+                    m_pMMViewHeader->sMagicID[2] = 'M';
+                    m_pMMViewHeader->sMagicID[3] = 'F';
+                    m_pMMViewHeader->ulMapSize = ulSize;
+                    m_pMMViewHeader->ulDataSize = 0;                    
+                    m_pData = reinterpret_cast(m_pMMViewHeader + 1);
                 }
                 else
                 {
                     // Check if the view starts with a valid MMView signature
-                    HX_ASSERT((m_pMMView->sMagicID[0] == 'H') && (m_pMMView->sMagicID[1] == 'M') && (m_pMMView->sMagicID[2] == 'M') && (m_pMMView->sMagicID[3] == 'F'));
-                    HX_ASSERT(m_pMMView->ulMapSize == ulSize);
-                    HX_ASSERT(m_pMMView->ulDataSize <= m_pMMView->ulMapSize - sizeof(MMView));                     
+                    HX_ASSERT((m_pMMViewHeader->sMagicID[0] == 'H') && (m_pMMViewHeader->sMagicID[1] == 'M') && (m_pMMViewHeader->sMagicID[2] == 'M') && (m_pMMViewHeader->sMagicID[3] == 'F'));
+                    HX_ASSERT(m_pMMViewHeader->ulMapSize == ulSize);
+                    HX_ASSERT(m_pMMViewHeader->ulDataSize <= m_pMMViewHeader->ulMapSize - sizeof(MMViewHeader));                     
+                    m_pData = reinterpret_cast(m_pMMViewHeader + 1);
                 }
 
                 m_fp = 0;
@@ -276,26 +278,28 @@
 
 
 /*  */
-STDMETHODIMP CHXWinSharedMMFile::Read(REF(IHXBuffer*) pBuffer, ULONG32 count)
+STDMETHODIMP CHXWinSharedMMFile::Read(REF(IHXBuffer*) pBuffer, UINT32 count)
 {
     HX_RESULT res = HXR_OK;
 
     if (count == 0)
-        count = m_pMMView->ulDataSize - m_fp;
+        count = m_pMMViewHeader->ulDataSize - m_fp;
 
 
-    if (!IsOpen() || (count > m_pMMView->ulDataSize - m_fp) || (HXR_OK != CreateBufferCCF(pBuffer, m_pContext)))
+    if (!IsOpen() || (count > m_pMMViewHeader->ulDataSize - m_fp) || (HXR_OK != CreateBufferCCF(pBuffer, m_pContext)))
     {
         res = HXR_FAILED;
     }
     else
     {
+        HX_ASSERT(m_pData != NULL);
+        HX_ASSERT(m_pMMViewHeader);
         pBuffer->SetSize(count);
-        memcpy(pBuffer->GetBuffer(),  m_pMMView->pData + m_fp , count);
+        memcpy(pBuffer->GetBuffer(),  m_pData + m_fp , count);
         m_fp += count;
     }
 
-	HX_ASSERT(m_fp <= m_pMMView->ulDataSize);
+	HX_ASSERT(m_fp <= m_pMMViewHeader->ulDataSize);
 
     return res;
 }
@@ -307,28 +311,30 @@
 
 
 
-    if (!IsOpen() || (pBuffer->GetSize() > m_pMMView->ulMapSize - m_fp))
+    if (!IsOpen() || (pBuffer->GetSize() > m_pMMViewHeader->ulMapSize - m_fp))
     {
         res = HXR_FAILED;
     }
     else
     {
-        memcpy(m_pMMView->pData + m_fp, pBuffer->GetBuffer(),  pBuffer->GetSize()); 
+        HX_ASSERT(m_pData != NULL);
+        HX_ASSERT(m_pMMViewHeader);
+        memcpy(m_pData + m_fp, pBuffer->GetBuffer(),  pBuffer->GetSize()); 
         m_fp += pBuffer->GetSize();
 
-        if(m_pMMView->ulDataSize < m_fp)
+        if(m_pMMViewHeader->ulDataSize < m_fp)
         {
             // The view data size has expanded, set the new data size in header
-            m_pMMView->ulDataSize = m_fp;
+            m_pMMViewHeader->ulDataSize = m_fp;
 #ifdef _DEBUG
-            memset(m_pMMView->pData+m_fp, 0xCD, m_pMMView->ulMapSize - m_pMMView->ulDataSize);
+            memset(m_pData+m_fp, 0xCD, m_pMMViewHeader->ulMapSize - m_pMMViewHeader->ulDataSize);
 #endif
         }
 
     }
 
-	HX_ASSERT(m_pMMView->ulDataSize <= m_pMMView->ulMapSize);
-	HX_ASSERT(m_fp <= m_pMMView->ulDataSize);
+	HX_ASSERT(m_pMMViewHeader->ulDataSize <= m_pMMViewHeader->ulMapSize);
+	HX_ASSERT(m_fp <= m_pMMViewHeader->ulDataSize);
 
     return res;
 }
@@ -337,14 +343,14 @@
 
 */
 STDMETHODIMP 
-CHXWinSharedMMFile::GetDataSize(REF(ULONG32) size)
+CHXWinSharedMMFile::GetDataSize(REF(UINT32) size)
 {
 	HX_RESULT res = HXR_FAILED;
 
 	if(IsOpen())
 	{
-		HX_ASSERT(m_pMMView);
-		size = m_pMMView->ulDataSize;
+		HX_ASSERT(m_pMMViewHeader);
+		size = m_pMMViewHeader->ulDataSize;
 			res = HXR_OK;
 	}
 
@@ -352,24 +358,24 @@
 }
 
 
-STDMETHODIMP CHXWinSharedMMFile::SetDataSize(ULONG32 size)
+STDMETHODIMP CHXWinSharedMMFile::SetDataSize(UINT32 size)
 {
     HX_RESULT res = HXR_OK;
 
-    if (!IsOpen() || (m_pMMView->ulMapSize < size))
+    if (!IsOpen() || (m_pMMViewHeader->ulMapSize < size))
     {
         res = HXR_FAILED;
     }
     else
     {
 
-        m_pMMView->ulDataSize = size; 
+        m_pMMViewHeader->ulDataSize = size; 
 #ifdef _DEBUG
-        memset(m_pMMView->pData+m_pMMView->ulDataSize, 0xEF, m_pMMView->ulMapSize - m_pMMView->ulDataSize);
+        memset(m_pData+m_pMMViewHeader->ulDataSize, 0xEF, m_pMMViewHeader->ulMapSize - m_pMMViewHeader->ulDataSize);
 #endif
     }
 
-	HX_ASSERT(m_pMMView->ulDataSize <= m_pMMView->ulMapSize);
+	HX_ASSERT(m_pMMViewHeader->ulDataSize <= m_pMMViewHeader->ulMapSize);
 
     return res;
 }
@@ -389,7 +395,7 @@
 * fromWhere specifier returns current position of file or -1 on
 * error.
 */
-STDMETHODIMP CHXWinSharedMMFile::Seek(ULONG32 ulOffset, ULONG32 ulFromWhere) 
+STDMETHODIMP CHXWinSharedMMFile::Seek(UINT32 ulOffset, UINT32 ulFromWhere) 
 {
     HX_RESULT res = HXR_OK;
     if(!IsOpen())
@@ -399,11 +405,11 @@
     }
     else
     {
-        HX_ASSERT(m_pMMView);
+        HX_ASSERT(m_pMMViewHeader);
 
         if (ulFromWhere == SEEK_END)
         {
-            m_fp = m_pMMView->ulDataSize + ulOffset;
+            m_fp = m_pMMViewHeader->ulDataSize + ulOffset;
         }
         else if (ulFromWhere == SEEK_SET)
         {
@@ -420,13 +426,13 @@
         }
     }
 	
-	HX_ASSERT(m_fp <= m_pMMView->ulMapSize);
+	HX_ASSERT(m_fp <= m_pMMViewHeader->ulMapSize);
 
 	return res;
 }
 
 /* Tell returns the current file position in the file */
-STDMETHODIMP_(ULONG32) CHXWinSharedMMFile::Tell()
+STDMETHODIMP_(UINT32) CHXWinSharedMMFile::Tell()
 {
     if(!IsOpen())
     {
@@ -486,7 +492,8 @@
 /*  */
 void CHXWinSharedMMFile::ZeroFillMap()
 {
-    HX_ASSERT(m_pMMView);
-    memset(m_pMMView->pData, 0, m_pMMView->ulMapSize - sizeof (MMView));
+    HX_ASSERT(m_pMMViewHeader);
+    HX_ASSERT(m_pData != NULL);
+    memset(m_pData, 0, m_pMMViewHeader->ulMapSize - sizeof (MMViewHeader));
 }
 

Index: sharedmmf.h
===================================================================
RCS file: /cvsroot/common/fileio/platform/win/sharedmmf.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- sharedmmf.h	12 Aug 2009 17:35:12 -0000	1.2
+++ sharedmmf.h	4 Sep 2009 21:50:23 -0000	1.3
@@ -69,9 +69,9 @@
         REFIID riid,
         void** ppvObj);
 
-    STDMETHOD_(ULONG32, AddRef)		(THIS);
+    STDMETHOD_(UINT32, AddRef)		(THIS);
 
-    STDMETHOD_(ULONG32, Release)	(THIS);
+    STDMETHOD_(UINT32, Release)	(THIS);
 
 
     CHXWinSharedMMFile(IUnknown* pContext);
@@ -79,7 +79,7 @@
     ~CHXWinSharedMMFile();
     
     STDMETHOD(OpenMap) (THIS_ 
-        const char* pszSharedName, ULONG32 ulSize);
+        const char* pszSharedName, UINT32 ulSize);
 
     /*  */
     STDMETHOD(CloseMap) (THIS);
@@ -87,7 +87,7 @@
 
     /*  */
     STDMETHOD(Read) (THIS_ 
-        REF(IHXBuffer*) pBuffer, ULONG32 count = 0);
+        REF(IHXBuffer*) pBuffer, UINT32 count = 0);
 
     
     /*  */
@@ -96,11 +96,11 @@
 
     
     /* */ 
-	STDMETHOD(GetDataSize) (THIS_ REF(ULONG32) size);
+	STDMETHOD(GetDataSize) (THIS_ REF(UINT32) size);
     
     
     /* */ 
-    STDMETHOD(SetDataSize) (THIS_ ULONG32 size);
+    STDMETHOD(SetDataSize) (THIS_ UINT32 size);
 
 
     /*
@@ -114,10 +114,10 @@
     * error.
     */
     STDMETHOD(Seek) (THIS_
-        ULONG32 ulOffset, ULONG32 ulFromWhere);
+        UINT32 ulOffset, UINT32 ulFromWhere);
 
     /* Tell returns the current file position in the file */
-    STDMETHOD_(ULONG32, Tell)   (THIS);
+    STDMETHOD_(UINT32, Tell)   (THIS);
 
     /* */
     STDMETHOD(LockMap) (THIS);
@@ -135,12 +135,11 @@
     void ZeroFillMap();
 
 
-    typedef struct MMView
+    typedef struct MMViewHeader
     {
-        char        sMagicID[4];
-        ULONG32     ulMapSize;
-        ULONG32     ulDataSize;
-        char        *pData;
+        char       sMagicID[4];
+        UINT32     ulMapSize;
+        UINT32     ulDataSize;
     };
 
     IUnknown*			m_pContext;
@@ -150,9 +149,10 @@
     CHXString           m_MMFSharedName; 
     CHXString           m_SharedMutexName; 
     void                *m_pViewRaw;
-    MMView              *m_pMMView;
+    MMViewHeader        *m_pMMViewHeader;
     HXBOOL              m_bLock;
-    ULONG32             m_fp;
+    UINT32              m_fp;
+    char                *m_pData;
     
     
 };


From jain_1982s at helixcommunity.org  Sun Sep  6 19:15:25 2009
From: jain_1982s at helixcommunity.org (jain_1982s@helixcommunity.org)
Date: Mon Sep  7 04:18:53 2009
Subject: [Common-cvs] build/BIF helix.bif,1.758,1.759
Message-ID: 

Update of /cvsroot/common/build/BIF
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv1144

Modified Files:
	helix.bif 
Log Message:
Fix for build buster on HEAD

Index: helix.bif
===================================================================
RCS file: /cvsroot/common/build/BIF/helix.bif,v
retrieving revision 1.758
retrieving revision 1.759
diff -u -d -r1.758 -r1.759
--- helix.bif	21 Aug 2009 19:04:18 -0000	1.758
+++ helix.bif	7 Sep 2009 03:15:23 -0000	1.759
@@ -14222,6 +14222,7 @@
         common_fileio
         common_log_logcommon
         common_log_logutil
+        common_log_logobserverfile
         common_runtime
         common_system
         common_util


From jain_1982s at helixcommunity.org  Sun Sep  6 19:15:25 2009
From: jain_1982s at helixcommunity.org (jain_1982s@helixcommunity.org)
Date: Mon Sep  7 04:18:54 2009
Subject: [Common-cvs] build/BIF helix.bif,1.758,1.759
Message-ID: 

Update of /cvsroot/common/build/BIF
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv1144

Modified Files:
	helix.bif 
Log Message:
Fix for build buster on HEAD

Index: helix.bif
===================================================================
RCS file: /cvsroot/common/build/BIF/helix.bif,v
retrieving revision 1.758
retrieving revision 1.759
diff -u -d -r1.758 -r1.759
--- helix.bif	21 Aug 2009 19:04:18 -0000	1.758
+++ helix.bif	7 Sep 2009 03:15:23 -0000	1.759
@@ -14222,6 +14222,7 @@
         common_fileio
         common_log_logcommon
         common_log_logutil
+        common_log_logobserverfile
         common_runtime
         common_system
         common_util


From ebala at helixcommunity.org  Thu Sep 10 11:31:37 2009
From: ebala at helixcommunity.org (ebala@helixcommunity.org)
Date: Thu Sep 10 20:34:21 2009
Subject: [Common-cvs] 
	import/xalan/platform/win32/rel32 Xalan-C_1_10.dll, 1.1,
	1.2 XalanMessages_1_10.dll, 1.1, 1.2 Xalan-C_1.lib, 1.1, 1.2
Message-ID: 

Update of /cvsroot/common/import/xalan/platform/win32/rel32
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv26871

Added Files:
	Xalan-C_1_10.dll XalanMessages_1_10.dll Xalan-C_1.lib 
Log Message:
Import of Xalan 1.10


--- NEW FILE: Xalan-C_1.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: Xalan-C_1_10.dll ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: XalanMessages_1_10.dll ---
(This appears to be a binary file; contents omitted.)


From ebala at helixcommunity.org  Thu Sep 10 11:31:37 2009
From: ebala at helixcommunity.org (ebala@helixcommunity.org)
Date: Thu Sep 10 20:34:22 2009
Subject: [Common-cvs] 
	import/xalan/platform/win32/rel32 Xalan-C_1_10.dll, 1.1,
	1.2 XalanMessages_1_10.dll, 1.1, 1.2 Xalan-C_1.lib, 1.1, 1.2
Message-ID: 

Update of /cvsroot/common/import/xalan/platform/win32/rel32
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv26871

Added Files:
	Xalan-C_1_10.dll XalanMessages_1_10.dll Xalan-C_1.lib 
Log Message:
Import of Xalan 1.10


--- NEW FILE: Xalan-C_1.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: Xalan-C_1_10.dll ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: XalanMessages_1_10.dll ---
(This appears to be a binary file; contents omitted.)


From ebala at helixcommunity.org  Thu Sep 10 11:34:11 2009
From: ebala at helixcommunity.org (ebala@helixcommunity.org)
Date: Thu Sep 10 20:36:58 2009
Subject: [Common-cvs] import/imagemagick/Magick++/demo Makefile.am, 1.1,
	1.2 analyze.cpp, 1.1, 1.2 button.cpp, 1.1, 1.2 demo.cpp, 1.1,
	1.2 detrans.cpp, 1.1, 1.2 flip.cpp, 1.1, 1.2 gravity.cpp, 1.1,
	1.2 piddle.cpp, 1.1, 1.2 shapes.cpp, 1.1, 1.2 zoom.cpp, 1.1,
	1.2 model.miff, 1.1, 1.2 smile.miff, 1.1, 1.2 smile_anim.miff,
	1.1, 1.2 tile.miff, 1.1, 1.2 analyze.sh, 1.1, 1.2 button.sh,
	1.1, 1.2 demo.sh, 1.1, 1.2 detrans.sh, 1.1, 1.2 flip.sh, 1.1,
	1.2 gravity.sh, 1.1, 1.2 piddle.sh, 1.1, 1.2 shapes.sh, 1.1,
	1.2 zoom_bessel.sh, 1.1, 1.2 zoom_blackman.sh, 1.1,
	1.2 zoom_box.sh, 1.1, 1.2 zoom_catrom.sh, 1.1,
	1.2 zoom_cubic.sh, 1.1, 1.2 zoom_gaussian.sh, 1.1,
	1.2 zoom_hamming.sh, 1.1, 1.2 zoom_hanning.sh, 1.1,
	1.2 zoom_hermite.sh, 1.1, 1.2 zoom_lanczos.sh, 1.1,
	1.2 zoom_mitchell.sh, 1.1, 1.2 zoom_point.sh, 1.1,
	1.2 zoom_quadratic.sh, 1.1, 1.2 zoom_sample.sh, 1.1,
	1.2 zoom_scale.sh, 1.1, 1.2 zoom_sinc.sh, 1.1,
	1.2 zoom_triangle.sh, 1.1, 1.2 .gdbinit, 1.1, 1.2
Message-ID: 

Update of /cvsroot/common/import/imagemagick/Magick++/demo
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv27219

Added Files:
	Makefile.am analyze.cpp button.cpp demo.cpp detrans.cpp 
	flip.cpp gravity.cpp piddle.cpp shapes.cpp zoom.cpp model.miff 
	smile.miff smile_anim.miff tile.miff analyze.sh button.sh 
	demo.sh detrans.sh flip.sh gravity.sh piddle.sh shapes.sh 
	zoom_bessel.sh zoom_blackman.sh zoom_box.sh zoom_catrom.sh 
	zoom_cubic.sh zoom_gaussian.sh zoom_hamming.sh zoom_hanning.sh 
	zoom_hermite.sh zoom_lanczos.sh zoom_mitchell.sh zoom_point.sh 
	zoom_quadratic.sh zoom_sample.sh zoom_scale.sh zoom_sinc.sh 
	zoom_triangle.sh .gdbinit 
Log Message:
Import of Imagemagick

--- NEW FILE: zoom_catrom.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/demo || exit 1

base_test=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`
executable=`echo $base_test | sed -e 's:_.*$::'`
filter=`echo $base_test | sed -e 's:.*_::'`

outfile="test_${base_test}.out"

rm -f $outfile
${MEMCHECK} ./$executable -filter $filter -geometry 600x600 ${SRCDIR}/model.miff  ${executable}_${filter}_out.miff 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: zoom_sinc.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/demo || exit 1

base_test=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`
executable=`echo $base_test | sed -e 's:_.*$::'`
filter=`echo $base_test | sed -e 's:.*_::'`

outfile="test_${base_test}.out"

rm -f $outfile
${MEMCHECK} ./$executable -filter $filter -geometry 600x600 ${SRCDIR}/model.miff  ${executable}_${filter}_out.miff 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: Makefile.am ---
#
# Makefile for Magick++ demo programs
#
# Copyright Bob Friesenhahn, 1999, 2000, 2001, 2002, 2003
#
AUTOMAKE_OPTIONS = 1.8 foreign nostdinc

AM_CPPFLAGS = -I$(top_builddir) -I$(top_srcdir)/Magick++/lib -I$(top_srcdir)

check_PROGRAMS = analyze button demo detrans flip gravity piddle shapes zoom

LDADD = ../lib/libMagick++.la

analyze_SOURCES = analyze.cpp
button_SOURCES  = button.cpp
demo_SOURCES    = demo.cpp
detrans_SOURCES = detrans.cpp
flip_SOURCES    = flip.cpp
gravity_SOURCES = gravity.cpp
piddle_SOURCES  = piddle.cpp
shapes_SOURCES  = shapes.cpp
zoom_SOURCES	= zoom.cpp

EXTRA_DIST = model.miff smile.miff smile_anim.miff tile.miff

CLEANFILES = *_out.* ir.out # SunWS_cache

ZOOM_FILTERS = bessel blackman box catrom cubic gaussian hamming hanning hermite \
 lanczos mitchell point quadratic sample scale sinc triangle
ZOOM_GEOMETRY = 600x600

if WIN32_NATIVE_BUILD
SRCDIR='$(shell @WinPathScript@ $(srcdir)/)'
else
SRCDIR='$(srcdir)/'
endif

MAGICK_ENV = $(SHELL) $(top_builddir)/magick.sh

# FIXME: MinGW needs Windows path form of srcdir here (or pass as command argument)
check:
	@$(MAGICK_ENV) SRCDIR=$(SRCDIR) $(MEMCHECK) ./analyze '$(srcdir)/model.miff'
	@$(MAGICK_ENV) SRCDIR=$(SRCDIR) $(MEMCHECK) ./button
	@$(MAGICK_ENV) SRCDIR=$(SRCDIR) $(MEMCHECK) ./demo
	@$(MAGICK_ENV) SRCDIR=$(SRCDIR) $(MEMCHECK) ./flip
	@$(MAGICK_ENV) SRCDIR=$(SRCDIR) $(MEMCHECK) ./gravity
	@$(MAGICK_ENV) SRCDIR=$(SRCDIR) $(MEMCHECK) ./piddle
	@$(MAGICK_ENV) SRCDIR=$(SRCDIR) $(MEMCHECK) ./shapes
	for filter in $(ZOOM_FILTERS) ; do  \
	  echo "$$filter ..." ; \
	  $(MAGICK_ENV) SRCDIR=$(SRCDIR) $(MEMCHECK) ./zoom -filter $$filter -geometry $(ZOOM_GEOMETRY) '$(srcdir)/model.miff' zoom_$${filter}_out.miff ; \
	done


--- NEW FILE: flip.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/demo || exit 1

executable=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`

outfile="test_${executable}.out"

rm -f $outfile
${MEMCHECK} "./${executable}" 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: analyze.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/demo || exit 1

executable=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`

outfile="test_${executable}.out"

rm -f $outfile
${MEMCHECK} ./analyze "$SRCDIR/model.miff" 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: zoom_gaussian.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/demo || exit 1

base_test=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`
executable=`echo $base_test | sed -e 's:_.*$::'`
filter=`echo $base_test | sed -e 's:.*_::'`

outfile="test_${base_test}.out"

rm -f $outfile
${MEMCHECK} ./$executable -filter $filter -geometry 600x600 ${SRCDIR}/model.miff  ${executable}_${filter}_out.miff 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: piddle.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2000, 2002, 2003
//
// PerlMagick "piddle" demo re-implemented using Magick++ methods.
// The PerlMagick "piddle" demo is written by John Cristy
//

#include 
#include 
#include 

using namespace std;

using namespace Magick;

int main( int /*argc*/, char ** argv)
{

  // Initialize ImageMagick install location for Windows
  InitializeMagick(*argv);

  try {

    string srcdir("");
    if(getenv("SRCDIR") != 0)
      srcdir = getenv("SRCDIR");

    //
    // Create a 300x300 white canvas.
    //
    Image image( "300x300", "white" );

    // Drawing list
    std::list drawList;

    // Start drawing by pushing a drawing context with specified
    // viewbox size
    drawList.push_back(DrawablePushGraphicContext());
    drawList.push_back(DrawableViewbox(0,0,image.columns(),image.rows()));

    //
    // Draw blue grid
    //
    drawList.push_back(DrawableStrokeColor("#ccf"));
    for ( int i=0; i < 300; i += 10 )
      {
        drawList.push_back(DrawableLine(i,0, i,300));
        drawList.push_back(DrawableLine(0,i, 300,i));
      }

    //
    // Draw rounded rectangle.
    //
    drawList.push_back(DrawableFillColor("blue"));
    drawList.push_back(DrawableStrokeColor("red"));
    drawList.push_back(DrawableRoundRectangle(15,15, 70,70, 10,10));

    drawList.push_back(DrawableFillColor("blue"));
    drawList.push_back(DrawableStrokeColor("maroon"));
    drawList.push_back(DrawableStrokeWidth(4));
    drawList.push_back(DrawableRoundRectangle(15,15, 70,70, 10,10));

    //
    // Draw curve.
    //
    {
      drawList.push_back(DrawableStrokeColor("black"));
      drawList.push_back(DrawableStrokeWidth(4));
      drawList.push_back(DrawableFillColor(Color()));

      std::list points;
      points.push_back(Coordinate(20,20));
      points.push_back(Coordinate(100,50));
      points.push_back(Coordinate(50,100));
      points.push_back(Coordinate(160,160));
      drawList.push_back(DrawableBezier(points));
    }

    //
    // Draw line
    //
    drawList.push_back(DrawableStrokeColor("red"));
    drawList.push_back(DrawableStrokeWidth(1));
    drawList.push_back(DrawableLine(10,200, 20,190));

    //
    // Draw arc within a circle.
    //
    drawList.push_back(DrawableStrokeColor("black"));
    drawList.push_back(DrawableFillColor("yellow"));
    drawList.push_back(DrawableStrokeWidth(4));
    drawList.push_back(DrawableCircle(160,70, 200,70));

    drawList.push_back(DrawableStrokeColor("black"));
    drawList.push_back(DrawableFillColor("blue"));
    drawList.push_back(DrawableStrokeWidth(4));
    {
      std::list path;
      path.push_back(PathMovetoAbs(Coordinate(160,70)));
      path.push_back(PathLinetoVerticalRel(-40));
      path.push_back(PathArcRel(PathArcArgs(40,40, 0, 0, 0, -40,40)));
      path.push_back(PathClosePath());
      drawList.push_back(DrawablePath(path));
    }

    //
    // Draw pentogram.
    //
    {
      drawList.push_back(DrawableStrokeColor("red"));
      drawList.push_back(DrawableFillColor("LimeGreen"));
      drawList.push_back(DrawableStrokeWidth(3));

      std::list points;
      points.push_back(Coordinate(160,120));
      points.push_back(Coordinate(130,190));
      points.push_back(Coordinate(210,145));
      points.push_back(Coordinate(110,145));
      points.push_back(Coordinate(190,190));
      points.push_back(Coordinate(160,120));
      drawList.push_back(DrawablePolygon(points));
    }

    //
    // Draw rectangle.
    //
    drawList.push_back(DrawableStrokeWidth(5));
    drawList.push_back(DrawableFillColor(Color())); // No fill
    drawList.push_back(DrawableStrokeColor("yellow"));
    drawList.push_back(DrawableLine(200,260, 200,200));
    drawList.push_back(DrawableLine(200,200, 260,200));
    drawList.push_back(DrawableStrokeColor("red"));
    drawList.push_back(DrawableLine(260,200, 260,260));
    drawList.push_back(DrawableStrokeColor("green"));
    drawList.push_back(DrawableLine(200,260, 260,260));

    //
    // Draw text.
    //
    drawList.push_back(DrawableFillColor("green"));
    drawList.push_back(DrawableStrokeColor(Color())); // unset color
    drawList.push_back(DrawablePointSize(24));
    drawList.push_back(DrawableTranslation(30,140));
    drawList.push_back(DrawableRotation(45.0));
    drawList.push_back(DrawableText(0,0,"This is a test!"));

    // Finish drawing by popping back to base context.
    drawList.push_back(DrawablePopGraphicContext());

    // Draw everything using completed drawing list
    //    image.debug(true);
    image.draw(drawList);

    //     image.write( "piddle.mvg" );

    cout << "Writing image \"piddle_out.miff\" ..." << endl;
    image.compressType( RLECompression );
    image.write( "piddle_out.miff" );
    cout << "Writing MVG metafile \"piddle_out.mvg\" ..." << endl;
    image.write( "piddle_out.mvg" );

    //     cout << "Display image..." << endl;
    //     image.display( );

  }
  catch( exception &error_ )
    {
      cout << "Caught exception: " << error_.what() << endl;
      return 1;
    }
  
  return 0;
}

--- NEW FILE: .gdbinit ---
dir $cwd
dir $cdir
dir ../../coders
dir ../../magick
dir ../lib/Magick++
dir ../lib

--- NEW FILE: zoom_hermite.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/demo || exit 1

base_test=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`
executable=`echo $base_test | sed -e 's:_.*$::'`
filter=`echo $base_test | sed -e 's:.*_::'`

outfile="test_${base_test}.out"

rm -f $outfile
${MEMCHECK} ./$executable -filter $filter -geometry 600x600 ${SRCDIR}/model.miff  ${executable}_${filter}_out.miff 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: gravity.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 2000, 2001, 2003
//
// Demo of text annotation with gravity.  Produces an animation showing
// the effect of rotated text along with various gravity specifications.
//
// After running demo program, run 'animate gravity_out.miff' if you
// are using X-Windows to see an animated result.
//
// Concept and algorithms lifted from PerlMagick demo script written
// by John Christy.
//

#include 
#include 
#include 
#include 

using namespace std;

using namespace Magick;

int main( int /*argc*/, char ** argv)
{

  // Initialize ImageMagick install location for Windows
  InitializeMagick(*argv);

  try {

    string srcdir("");
    if(getenv("SRCDIR") != 0)
      srcdir = getenv("SRCDIR");

    int x = 100;
    int y = 100;

    list animation;

    Image base( Geometry(600,600), Color("white") );
    base.strokeColor("#600");
    base.fillColor(Color());
    base.draw( DrawableLine( 300,100, 300,500 ) );
    base.draw( DrawableLine( 100,300, 500,300 ) );
    base.draw( DrawableRectangle( 100,100, 500,500 ) );
    base.density( Geometry(72,72) );
    base.strokeColor(Color());
    base.fillColor("#600");
    base.fontPointsize( 30 );
    base.boxColor( "red" );
    base.animationDelay( 20 );
    base.compressType( RLECompression );

    for ( int angle = 0; angle < 360; angle += 30 )
      {
        cout << "angle " << angle << endl;
        Image pic = base;
        pic.annotate( "NorthWest", Geometry(0,0,x,y), NorthWestGravity, angle );
        pic.annotate( "North", Geometry(0,0,0,y), NorthGravity, angle );
        pic.annotate( "NorthEast", Geometry(0,0,x,y), NorthEastGravity, angle );
        pic.annotate( "East", Geometry(0,0,x,0), EastGravity, angle );
        pic.annotate( "Center", Geometry(0,0,0,0), CenterGravity, angle );
        pic.annotate( "SouthEast", Geometry(0,0,x,y), SouthEastGravity, angle );
        pic.annotate( "South", Geometry(0,0,0,y), SouthGravity, angle );
        pic.annotate( "SouthWest", Geometry(0,0,x,y), SouthWestGravity, angle );
        pic.annotate( "West", Geometry(0,0,x,0), WestGravity, angle );
        animation.push_back( pic );
      }
    cout << "Writing image \"gravity_out.miff\" ..." << endl;
    writeImages( animation.begin(), animation.end(), "gravity_out.miff" );
    // system( "animate gravity_out.miff" );

  }
  catch( exception &error_ )
    {
      cout << "Caught exception: " << error_.what() << endl;
      return 1;
    }
  
  return 0;
}

--- NEW FILE: zoom_bessel.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/demo || exit 1

base_test=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`
executable=`echo $base_test | sed -e 's:_.*$::'`
filter=`echo $base_test | sed -e 's:.*_::'`

outfile="test_${base_test}.out"

rm -f $outfile
${MEMCHECK} ./$executable -filter $filter -geometry 600x600 ${SRCDIR}/model.miff  ${executable}_${filter}_out.miff 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: model.miff ---
Id=ImageMagick
Class=PseudoClass  Colors=256  Matte=False
Columns=128  Rows=192  Depth=8
Page=128x192+0+0
Background-color=gray100  Border-color=#dfdfdf  Matte-color=gray74
Signature=8ef00fddd9f2a02ba722de756c81cb42

:
--- NEW FILE: detrans.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/demo || exit 1

executable=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`

outfile="test_${executable}.out"

rm -f $outfile
${MEMCHECK} "./${executable}" 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: gravity.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/demo || exit 1

executable=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`

outfile="test_${executable}.out"

rm -f $outfile
${MEMCHECK} "./${executable}" 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: tile.miff ---
Id=ImageMagick
Class=PseudoClass  Colors=256  Matte=False
Columns=71  Rows=71  Depth=8
Page=71x71+0+0
Background-color=#cecece  Border-color=#dfdfdf  Matte-color=gray74
Signature=55c5554a36b25d1aa8280855398872e0

:
--- NEW FILE: demo.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2000, 2001, 2002, 2003
//
// Simple demo program for Magick++
//
// Concept and algorithms lifted from PerlMagick demo script written
// by John Christy.
//
// Max run-time size 60MB (as compared with 95MB for PerlMagick) under SPARC Solaris
//

#include 
#include 
#include 
#include 

using namespace std;

using namespace Magick;

int main( int /*argc*/, char ** argv)
{

  // Initialize ImageMagick install location for Windows
  InitializeMagick(*argv);
  
  try {
    
    string srcdir("");
    if(getenv("SRCDIR") != 0)
      srcdir = getenv("SRCDIR");
    
    // Common font to use.
    string font = "Helvetica";

    list montage;

    {
      //
      // Read model & smile image.
      //
      cout << "Read images ..." << endl;

      Image model( srcdir + "model.miff" );
      model.label( "Magick++" );
      model.borderColor( "black" );
      model.backgroundColor( "black" );
    
      Image smile( srcdir + "smile.miff" );
      smile.label( "Smile" );
      smile.borderColor( "black" );
    
      //
      // Create image stack.
      //
      cout << "Creating thumbnails..." << endl;
    
      // Construct initial list containing seven copies of a null image
      Image null;
      null.size( Geometry(70,70) );
      null.read( "NULL:black" );
      list images( 7, null );
    
      Image example = model;
    
      // Each of the following follow the pattern
      //  1. obtain reference to (own copy of) image
      //  2. apply label to image
      //  3. apply operation to image
      //  4. append image to container

      cout << "  add noise ..." << endl;
      example.label( "Add Noise" );
      example.addNoise( LaplacianNoise );
      images.push_back( example );

      cout << "  add noise (blue) ..." << endl;
      example.label( "Add Noise\n(Blue Channel)" );
      example.addNoiseChannel( BlueChannel, PoissonNoise );
      images.push_back( example );

      cout << "  annotate ..." << endl;
      example = model;
      example.label( "Annotate" );
      example.density( "72x72" );
      example.fontPointsize( 18 );
      example.font( font );
      example.strokeColor( Color() );
      example.fillColor( "gold" );
      example.annotate( "Magick++", "+0+20", NorthGravity );
      images.push_back( example );

      cout << "  blur ..." << endl;
      example = model;
      example.label( "Blur" );
      example.blur( 0, 1.5 );
      images.push_back( example );

      cout << "  blur red channel ..." << endl;
      example = model;
      example.label( "Blur Channel\n(Red Channel)" );
      example.blurChannel( RedChannel, 0, 3.0 );
      images.push_back( example );

      cout << "  border ..." << endl;
      example = model;
      example.label( "Border" );
      example.borderColor( "gold" );
      example.border( Geometry(6,6) );
      images.push_back( example );

      cout << "  channel ..." << endl;
      example = model;
      example.label( "Channel\n(Red Channel)" );
      example.channel( RedChannel );
      images.push_back( example );

      cout << "  charcoal ..." << endl;
      example = model;
      example.label( "Charcoal" );
      example.charcoal( );
      images.push_back( example );

      cout << "  composite ..." << endl;
      example = model;
      example.label( "Composite" );
      example.composite( smile, "+35+65", OverCompositeOp);
      images.push_back( example );

      cout << "  contrast ..." << endl;
      example = model;
      example.label( "Contrast" );
      example.contrast( false );
      images.push_back( example );

      cout << "  convolve ..." << endl;
      example = model;
      example.label( "Convolve" );
      {
        // 3x3 matrix
        const double kernel[] = { 1, 1, 1, 1, 4, 1, 1, 1, 1 };
        example.convolve( 3, kernel );
      }
      images.push_back( example );

      cout << "  crop ..." << endl;
      example = model;
      example.label( "Crop" );
      example.crop( "80x80+25+50" );
      images.push_back( example );

      cout << "  despeckle ..." << endl;
      example = model;
      example.label( "Despeckle" );
      example.despeckle( );
      images.push_back( example );

      cout << "  draw ..." << endl;
      example = model;
      example.label( "Draw" );
      example.fillColor(Color());
      example.strokeColor( "gold" );
      example.strokeWidth( 2 );
      example.draw( DrawableCircle( 60,90, 60,120 ) );
      images.push_back( example );

      cout << "  edge ..." << endl;
      example = model;
      example.label( "Detect Edges" );
      example.edge( );
      images.push_back( example );

      cout << "  emboss ..." << endl;
      example = model;
      example.label( "Emboss" );
      example.emboss( );
      images.push_back( example );

      cout << "  equalize ..." << endl;
      example = model;
      example.label( "Equalize" );
      example.equalize( );
      images.push_back( example );
    
      cout << "  explode ..." << endl;
      example = model;
      example.label( "Explode" );
      example.backgroundColor( "#000000FF" );
      example.implode( -1 );
      images.push_back( example );

      cout << "  flip ..." << endl;
      example = model;
      example.label( "Flip" );
      example.flip( );
      images.push_back( example );

      cout << "  flop ..." << endl;
      example = model;
      example.label( "Flop" );
      example.flop();
      images.push_back( example );

      cout << "  frame ..." << endl;
      example = model;
      example.label( "Frame" );
      example.frame( );
      images.push_back( example );

      cout << "  gamma ..." << endl;
      example = model;
      example.label( "Gamma" );
      example.gamma( 1.6 );
      images.push_back( example );

      cout << "  gaussian blur ..." << endl;
      example = model;
      example.label( "Gaussian Blur" );
      example.gaussianBlur( 0.0, 1.5 );
      images.push_back( example );

      cout << "  gaussian blur channel ..." << endl;
      example = model;
      example.label( "Gaussian Blur\n(Green Channel)" );
      example.gaussianBlurChannel( GreenChannel, 0.0, 1.5 );
      images.push_back( example );
    
      cout << "  gradient ..." << endl;
      Image gradient;
      gradient.size( "130x194" );
      gradient.read( "gradient:#20a0ff-#ffff00" );
      gradient.label( "Gradient" );
      images.push_back( gradient );
    
      cout << "  grayscale ..." << endl;
      example = model;
      example.label( "Grayscale" );
      example.quantizeColorSpace( GRAYColorspace );
      example.quantize( );
      images.push_back( example );
    
      cout << "  implode ..." << endl;
      example = model;
      example.label( "Implode" );
      example.implode( 0.5 );
      images.push_back( example );

      cout << "  level ..." << endl;
      example = model;
      example.label( "Level" );
      example.level( 0.20*QuantumRange, 0.90*QuantumRange, 1.20 );
      images.push_back( example );

      cout << "  level red channel ..." << endl;
      example = model;
      example.label( "Level Channel\n(Red Channel)" );
      example.levelChannel( RedChannel, 0.20*QuantumRange, 0.90*QuantumRange, 1.20 );
      images.push_back( example );

      cout << "  median filter ..." << endl;
      example = model;
      example.label( "Median Filter" );
      example.medianFilter( );
      images.push_back( example );

      cout << "  modulate ..." << endl;
      example = model;
      example.label( "Modulate" );
      example.modulate( 110, 110, 110 );
      images.push_back( example );

      cout << "  monochrome ..." << endl;
      example = model;
      example.label( "Monochrome" );
      example.quantizeColorSpace( GRAYColorspace );
      example.quantizeColors( 2 );
      example.quantizeDither( false );
      example.quantize( );
      images.push_back( example );

      cout << "  motion blur ..." << endl;
      example = model;
      example.label( "Motion Blur" );
      example.motionBlur( 0.0, 7.0,45 );
      images.push_back( example );
    
      cout << "  negate ..." << endl;
      example = model;
      example.label( "Negate" );
      example.negate( );
      images.push_back( example );
    
      cout << "  normalize ..." << endl;
      example = model;
      example.label( "Normalize" );
      example.normalize( );
      images.push_back( example );
    
      cout << "  oil paint ..." << endl;
      example = model;
      example.label( "Oil Paint" );
      example.oilPaint( );
      images.push_back( example );

      cout << "  ordered dither 2x2 ..." << endl;
      example = model;
      example.label( "Ordered Dither\n(2x2)" );
      example.randomThreshold( Geometry(2,2) );
      images.push_back( example );

      cout << "  ordered dither 3x3..." << endl;
      example = model;
      example.label( "Ordered Dither\n(3x3)" );
      example.randomThreshold( Geometry(3,3) );
      images.push_back( example );

      cout << "  ordered dither 4x4..." << endl;
      example = model;
      example.label( "Ordered Dither\n(4x4)" );
      example.randomThreshold( Geometry(4,4) );
      images.push_back( example );
    
      cout << "  ordered dither red 4x4..." << endl;
      example = model;
      example.label( "Ordered Dither\n(Red 4x4)" );
      example.randomThresholdChannel( Geometry(4,4), RedChannel);
      images.push_back( example );

      cout << "  plasma ..." << endl;
      Image plasma;
      plasma.size( "130x194" );
      plasma.read( "plasma:fractal" );
      plasma.label( "Plasma" );
      images.push_back( plasma );
    
      cout << "  quantize ..." << endl;
      example = model;
      example.label( "Quantize" );
      example.quantize( );
      images.push_back( example );

      cout << "  quantum operator ..." << endl;
      example = model;
      example.label( "Quantum Operator\nRed * 0.4" );
      example.quantumOperator( RedChannel,MultiplyEvaluateOperator,0.40 );
      images.push_back( example );

      cout << "  raise ..." << endl;
      example = model;
      example.label( "Raise" );
      example.raise( );
      images.push_back( example );
    
      cout << "  reduce noise ..." << endl;
      example = model;
      example.label( "Reduce Noise" );
      example.reduceNoise( 1.0 );
      images.push_back( example );
    
      cout << "  resize ..." << endl;
      example = model;
      example.label( "Resize" );
      example.zoom( "50%" );
      images.push_back( example );
    
      cout << "  roll ..." << endl;
      example = model;
      example.label( "Roll" );
      example.roll( "+20+10" );
      images.push_back( example );
    
      cout << "  rotate ..." << endl;
      example = model;
      example.label( "Rotate" );
      example.rotate( 45 );
      example.transparent( "black" );
      images.push_back( example );

      cout << "  scale ..." << endl;
      example = model;
      example.label( "Scale" );
      example.scale( "60%" );
      images.push_back( example );
    
      cout << "  segment ..." << endl;
      example = model;
      example.label( "Segment" );
      example.segment( 0.5, 0.25 );
      images.push_back( example );
    
      cout << "  shade ..." << endl;
      example = model;
      example.label( "Shade" );
      example.shade( 30, 30, false );
      images.push_back( example );
    
      cout << "  sharpen ..." << endl;
      example = model;
      example.label("Sharpen");
      example.sharpen( 0.0, 1.0 );
      images.push_back( example );
    
      cout << "  shave ..." << endl;
      example = model;
      example.label("Shave");
      example.shave( Geometry( 10, 10) );
      images.push_back( example );
    
      cout << "  shear ..." << endl;
      example = model;
      example.label( "Shear" );
      example.shear( 45, 45 );
      example.transparent( "black" );
      images.push_back( example );
    
      cout << "  spread ..." << endl;
      example = model;
      example.label( "Spread" );
      example.spread( 3 );
      images.push_back( example );
    
      cout << "  solarize ..." << endl;
      example = model;
      example.label( "Solarize" );
      example.solarize( );
      images.push_back( example );
    
      cout << "  swirl ..." << endl;
      example = model;
      example.backgroundColor( "#000000FF" );
      example.label( "Swirl" );
      example.swirl( 90 );
      images.push_back( example );

      cout << "  threshold ..." << endl;
      example = model;
      example.label( "Threshold" );
      example.threshold( QuantumRange/2.0 );
      images.push_back( example );

      cout << "  threshold random ..." << endl;
      example = model;
      example.label( "Random\nThreshold" );
      example.randomThreshold( Geometry((unsigned int) (0.3*QuantumRange),
        (unsigned int) (0.85*QuantumRange)) );
      images.push_back( example );
    
      cout << "  unsharp mask ..." << endl;
      example = model;
      example.label( "Unsharp Mask" );
      //           radius_, sigma_, amount_, threshold_
      example.unsharpmask( 0.0, 1.0, 1.0, 0.05);
      images.push_back( example );
    
      cout << "  wave ..." << endl;
      example = model;
      example.label( "Wave" );
      example.matte( true );
      example.backgroundColor( "#000000FF" );
      example.wave( 25, 150 );
      images.push_back( example );
    
      //
      // Create image montage.
      //
      cout <<  "Montage images..." << endl;

      for_each( images.begin(), images.end(), fontImage( font ) );
      for_each( images.begin(), images.end(), strokeColorImage( Color("#600") ) );

      MontageFramed montageOpts;
      montageOpts.geometry( "130x194+10+5>" );
      montageOpts.gravity( CenterGravity );
      montageOpts.borderColor( "green" );
      montageOpts.borderWidth( 1 );
      montageOpts.tile( "7x4" );
      montageOpts.compose( OverCompositeOp );
      montageOpts.backgroundColor( "#ffffff" );
      montageOpts.font( font );
      montageOpts.pointSize( 18 );
      montageOpts.fillColor( "#600" );
      montageOpts.strokeColor( Color() );
      montageOpts.compose(OverCompositeOp);
      montageOpts.fileName( "Magick++ Demo" );
      montageImages( &montage, images.begin(), images.end(), montageOpts );
    }

    Image& montage_image = montage.front();
    {
      // Create logo image
      cout << "Adding logo image ..." << endl;
      Image logo( "logo:" );
      logo.zoom( "45%" );

      // Composite logo into montage image
      Geometry placement(0,0,(montage_image.columns()/2)-(logo.columns()/2),0);
      montage_image.composite( logo, placement, OverCompositeOp );
    }

    cout << "Writing image \"demo_out.miff\" ..." << endl;
    montage_image.matte( false );
    montage_image.compressType( RLECompression );
    writeImages(montage.begin(),montage.end(),"demo_out.miff");

    // Uncomment following lines to display image to screen
    //    cout <<  "Display image..." << endl;
    //    montage_image.display();

  }
  catch( exception &error_ )
    {
      cout << "Caught exception: " << error_.what() << endl;
      return 1;
    }

  return 0;
}

--- NEW FILE: zoom_blackman.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/demo || exit 1

base_test=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`
executable=`echo $base_test | sed -e 's:_.*$::'`
filter=`echo $base_test | sed -e 's:.*_::'`

outfile="test_${base_test}.out"

rm -f $outfile
${MEMCHECK} ./$executable -filter $filter -geometry 600x600 ${SRCDIR}/model.miff  ${executable}_${filter}_out.miff 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: smile_anim.miff ---
Id=ImageMagick
Class=PseudoClass  Colors=2  Matte=False
Columns=48  Rows=48  Depth=8
Page=48x48+0+0
Background-color=gray100  Border-color=#dfdfdf  Matte-color=gray74
Scene=0  Iterations=0  Delay=10  Dispose=3
Comment={GifBuilder 0.2 by Yves Piguet}
Signature=7b72ce35b443b218e81337ad355496ad

:
--- NEW FILE: zoom_quadratic.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/demo || exit 1

base_test=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`
executable=`echo $base_test | sed -e 's:_.*$::'`
filter=`echo $base_test | sed -e 's:.*_::'`

outfile="test_${base_test}.out"

rm -f $outfile
${MEMCHECK} ./$executable -filter $filter -geometry 600x600 ${SRCDIR}/model.miff  ${executable}_${filter}_out.miff 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: smile.miff ---
id=ImageMagick
class=PseudoClass  colors=3  matte=True
columns=48  rows=48  depth=8
Resolution=89x89  units=undefined
page=1x1+0+0
delay=10
dispose=3
Signature=e479e50a6b2fd2ede083d65cfe4f844d

:
--- NEW FILE: zoom_sample.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/demo || exit 1

base_test=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`
executable=`echo $base_test | sed -e 's:_.*$::'`
filter=`echo $base_test | sed -e 's:.*_::'`

outfile="test_${base_test}.out"

rm -f $outfile
${MEMCHECK} ./$executable -filter $filter -geometry 600x600 ${SRCDIR}/model.miff  ${executable}_${filter}_out.miff 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: zoom_triangle.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/demo || exit 1

base_test=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`
executable=`echo $base_test | sed -e 's:_.*$::'`
filter=`echo $base_test | sed -e 's:.*_::'`

outfile="test_${base_test}.out"

rm -f $outfile
${MEMCHECK} ./$executable -filter $filter -geometry 600x600 ${SRCDIR}/model.miff  ${executable}_${filter}_out.miff 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: detrans.cpp ---
//
// Replace transparency in an image with a solid color using Magick++
//
// Useful to see how a transparent image looks on a particular
// background color, or to create a similar looking effect without
// transparency.
//
// Copyright Bob Friesenhahn, 2000
//
// Usage: detrans color file...
//

#include 
#include 
using namespace std; 
using namespace Magick;
int main(int argc,char **argv) 
{
  if ( argc < 3 )
    {
      cout << "Usage: " << argv[0] << " background_color file..." << endl;
      exit( 1 );
    }

  // Initialize ImageMagick install location for Windows
  InitializeMagick(*argv);

  {
    Color color;
    try {
      color = Color(argv[1]);
    }
    catch ( Exception error_ )
      {
        cout << error_.what() << endl;
        cout.flush();
        exit(1);
      }

    char **arg = &argv[2];
    while ( *arg )
      {
        string fname(*arg);
        try {
          Image overlay( fname );
          Image base( overlay.size(), color );
          base.composite( overlay, 0, 0, OverCompositeOp );
          base.matte( false );
          base.write( fname );
        }
        catch( Exception &error_ ) 
          { 
            cout << error_.what() << endl; 
          }
        ++arg;
      }
  }

  return 0; 
}

--- NEW FILE: button.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/demo || exit 1

executable=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`

outfile="test_${executable}.out"

rm -f $outfile
${MEMCHECK} "./${executable}" 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: piddle.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/demo || exit 1

executable=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`

outfile="test_${executable}.out"

rm -f $outfile
${MEMCHECK} "./${executable}" 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: zoom_hamming.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/demo || exit 1

base_test=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`
executable=`echo $base_test | sed -e 's:_.*$::'`
filter=`echo $base_test | sed -e 's:.*_::'`

outfile="test_${base_test}.out"

rm -f $outfile
${MEMCHECK} ./$executable -filter $filter -geometry 600x600 ${SRCDIR}/model.miff  ${executable}_${filter}_out.miff 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: zoom_cubic.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/demo || exit 1

base_test=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`
executable=`echo $base_test | sed -e 's:_.*$::'`
filter=`echo $base_test | sed -e 's:.*_::'`

outfile="test_${base_test}.out"

rm -f $outfile
${MEMCHECK} ./$executable -filter $filter -geometry 600x600 ${SRCDIR}/model.miff  ${executable}_${filter}_out.miff 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: zoom_scale.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/demo || exit 1

base_test=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`
executable=`echo $base_test | sed -e 's:_.*$::'`
filter=`echo $base_test | sed -e 's:.*_::'`

outfile="test_${base_test}.out"

rm -f $outfile
${MEMCHECK} ./$executable -filter $filter -geometry 600x600 ${SRCDIR}/model.miff  ${executable}_${filter}_out.miff 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: zoom_hanning.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/demo || exit 1

base_test=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`
executable=`echo $base_test | sed -e 's:_.*$::'`
filter=`echo $base_test | sed -e 's:.*_::'`

outfile="test_${base_test}.out"

rm -f $outfile
${MEMCHECK} ./$executable -filter $filter -geometry 600x600 ${SRCDIR}/model.miff  ${executable}_${filter}_out.miff 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: shapes.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2000, 2002, 2003
//
// GD/PerlMagick example using Magick++ methods.
//
// Concept and algorithms lifted from PerlMagick demo script
//

#include 
#include 
#include 

using namespace std;

using namespace Magick;

int main( int /*argc*/, char ** argv)
{

  // Initialize ImageMagick install location for Windows
  InitializeMagick(*argv);

  try {

    string srcdir("");
    if(getenv("SRCDIR") != 0)
      srcdir = getenv("SRCDIR");

    //
    // Create a 300x300 white canvas.
    //
    Image image( "300x300", "white" );

    //
    // Draw texture-filled polygon
    //
    // Polygon list
    std::list poly_coord;
    poly_coord.push_back( Coordinate(30,30) );
    poly_coord.push_back( Coordinate(100,10) );
    poly_coord.push_back( Coordinate(190,290) );
    poly_coord.push_back( Coordinate(30,290) );

    Image texture( srcdir + "tile.miff" );
    image.penTexture( texture );
    image.draw( DrawablePolygon( poly_coord ) );
    texture.isValid( false );
    image.penTexture( texture );  // Unset texture

    //
    // Draw filled ellipse with black border, and red fill color
    //
    image.strokeColor( "black" );
    image.fillColor( "red" );
    image.strokeWidth( 5 );
    image.draw( DrawableEllipse( 100,100, 50,75, 0,360 ) );
    image.fillColor( Color() ); // Clear out fill color

    //
    // Draw ellipse, and polygon, with black stroke, strokeWidth of 5
    //
    image.strokeColor( "black" );
    image.strokeWidth( 5 );
    list drawlist;

    // Add polygon to list
    poly_coord.clear();
    poly_coord.push_back( Coordinate(30,30) );
    poly_coord.push_back( Coordinate(100,10) );
    poly_coord.push_back( Coordinate(190,290) );
    poly_coord.push_back( Coordinate(30,290) );
    drawlist.push_back( DrawablePolygon( poly_coord ) );
    image.draw( drawlist );

    //
    // Floodfill object with blue
    //
    image.colorFuzz( 80 );
    image.floodFillColor( "+132+62", "blue" );

    //
    // Draw text
    //
    image.strokeColor(Color());
    image.fillColor( "red" );
    image.fontPointsize( 18 );
    image.annotate( "Hello world!", "+150+20" );

    image.fillColor( "blue" );
    image.fontPointsize( 14 );
    image.annotate( "Goodbye cruel world!", "+150+38" );

    image.fillColor( "black" );
    image.fontPointsize( 14 );
    image.annotate( "I'm climbing the wall!", "+280+120",
                    NorthWestGravity, 90.0 );
    //image.display();
    //
    // Write image.
    //

    cout << "Writing image \"shapes_out.miff\" ..." << endl;
    image.compressType( RLECompression );
    image.write( "shapes_out.miff" );

    // cout << "Display image..." << endl;
    // image.display( );

  }
  catch( exception &error_ )
    {
      cout << "Caught exception: " << error_.what() << endl;
      return 1;
    }
  
  return 0;
}

--- NEW FILE: demo.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/demo || exit 1

executable=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`

outfile="test_${executable}.out"

rm -f $outfile
${MEMCHECK} "./${executable}" 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: button.cpp ---
//
// Magick++ demo to generate a simple text button
//
// Copyright Bob Friesenhahn, 1999, 2000, 2001, 2003
// 

#include 
#include 
#include 

using namespace std;

using namespace Magick;

int main( int /*argc*/, char ** argv)
{

  // Initialize ImageMagick install location for Windows
  InitializeMagick(*argv);

  try {

    string srcdir("");
    if(getenv("SRCDIR") != 0)
      srcdir = getenv("SRCDIR");

    //
    // Options
    //

    string backGround = "xc:#CCCCCC"; // A solid color

    // Color to use for decorative border
    Color border = "#D4DCF3";

    // Button size
    string buttonSize = "120x20";

    // Button background texture
    string buttonTexture = "granite:";

    // Button text
    string text = "Button Text";

    // Button text color
    string textColor = "red";

    // Font point size
    int fontPointSize = 16;

    //
    // Magick++ operations
    //

    Image button;

    // Set button size
    button.size( buttonSize );

    // Read background image
    button.read( backGround );

    // Set background to buttonTexture
    Image backgroundTexture( buttonTexture );
    button.texture( backgroundTexture );

    // Add some text
    button.fillColor( textColor );
    button.fontPointsize( fontPointSize );
    button.annotate( text, CenterGravity );

    // Add a decorative frame
    button.borderColor( border );
    button.frame( "6x6+3+3" );

    // Quantize to desired colors
    // button.quantizeTreeDepth(8);
    button.quantizeDither(false);
    button.quantizeColors(64);
    button.quantize();

    // Save to file
    cout << "Writing to \"button_out.miff\" ..." << endl;
    button.compressType( RLECompression );
    button.write("button_out.miff");

    // Display on screen
    // button.display();

  }
  catch( exception &error_ )
    {
      cout << "Caught exception: " << error_.what() << endl;
      return 1;
    }

  return 0;
}

--- NEW FILE: flip.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2003
//
// Demonstration of unary function-object based operations
//
// Reads the multi-frame file "smile_anim.miff" and writes a
// flipped and morphed version to "flip_out.miff".
//

#include 
#include 
#include 
#include 
#include 

using namespace std;

using namespace Magick;

int main( int /*argc*/, char ** argv)
{

  // Initialize ImageMagick install location for Windows
  InitializeMagick(*argv);


  try {

    string srcdir("");
    if(getenv("SRCDIR") != 0)
      srcdir = getenv("SRCDIR");

    // Read images into STL list
    list imageList;
    readImages( &imageList, srcdir + "smile_anim.miff" );

    // cout << "Total scenes: " << imageList.size() << endl;

    // Flip images
    for_each( imageList.begin(), imageList.end(), flipImage() );

    // Create a morphed version, adding three frames between each
    // existing frame.
    list morphed;
    morphImages( &morphed, imageList.begin(), imageList.end(), 3 );

    // Write out images
    cout << "Writing image \"flip_out.miff\" ..." << endl;
    writeImages( morphed.begin(), morphed.end(), "flip_out.miff" );

  }
  catch( exception &error_ )
    {
      cout << "Caught exception: " << error_.what() << endl;
      return 1;
    }
  
  return 0;
}

--- NEW FILE: shapes.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/demo || exit 1

executable=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`

outfile="test_${executable}.out"

rm -f $outfile
${MEMCHECK} "./${executable}" 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: zoom_lanczos.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/demo || exit 1

base_test=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`
executable=`echo $base_test | sed -e 's:_.*$::'`
filter=`echo $base_test | sed -e 's:.*_::'`

outfile="test_${base_test}.out"

rm -f $outfile
${MEMCHECK} ./$executable -filter $filter -geometry 600x600 ${SRCDIR}/model.miff  ${executable}_${filter}_out.miff 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: analyze.cpp ---
//
// Demonstrate using the 'analyze' process module to compute
// image statistics.
//
// Copyright Bob Friesenhahn, 2003, 2004
//
// Usage: analyze file...
//

#include 
#include 
#include 
#include 
using namespace std; 
using namespace Magick;
int main(int argc,char **argv) 
{
  if ( argc < 2 )
    {
      cout << "Usage: " << argv[0] << " file..." << endl;
      exit( 1 );
    }

  // Initialize ImageMagick install location for Windows
  InitializeMagick(*argv);

  {
    std::list attributes;

    attributes.push_back("TopLeftColor");
    attributes.push_back("TopRightColor");
    attributes.push_back("BottomLeftColor");
    attributes.push_back("BottomRightColor");
    attributes.push_back("filter:brightness:mean");
    attributes.push_back("filter:brightness:standard-deviation");
    attributes.push_back("filter:brightness:kurtosis");
    attributes.push_back("filter:brightness:skewness");
    attributes.push_back("filter:saturation:mean");
    attributes.push_back("filter:saturation:standard-deviation");
    attributes.push_back("filter:saturation:kurtosis");
    attributes.push_back("filter:saturation:skewness");

    char **arg = &argv[1];
    while ( *arg )
      {
        string fname(*arg);
        try {
          cout << "File: " << fname << endl;
          Image image( fname );

          /* Analyze module does not require an argument list */
          image.process("analyze",0,0);

          list::iterator pos = attributes.begin();
          while(pos != attributes.end())
            {
              cout << "  " << setw(16) << setfill(' ') << setiosflags(ios::left)
                   << *pos << " = " << image.attribute(*pos) << endl;
              pos++;
            }
        }
        catch( Exception &error_ ) 
          { 
            cout << error_.what() << endl; 
          }
        ++arg;
      }
  }

  return 0; 
}

--- NEW FILE: zoom_point.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/demo || exit 1

base_test=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`
executable=`echo $base_test | sed -e 's:_.*$::'`
filter=`echo $base_test | sed -e 's:.*_::'`

outfile="test_${base_test}.out"

rm -f $outfile
${MEMCHECK} ./$executable -filter $filter -geometry 600x600 ${SRCDIR}/model.miff  ${executable}_${filter}_out.miff 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: zoom_mitchell.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/demo || exit 1

base_test=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`
executable=`echo $base_test | sed -e 's:_.*$::'`
filter=`echo $base_test | sed -e 's:.*_::'`

outfile="test_${base_test}.out"

rm -f $outfile
${MEMCHECK} ./$executable -filter $filter -geometry 600x600 ${SRCDIR}/model.miff  ${executable}_${filter}_out.miff 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: zoom.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 2001, 2002, 2003
//
// Resize image using specified resize algorithm with Magick++ API
//
// Usage: zoom [-density resolution] [-filter algorithm] [-geometry geometry]
//             [-resample resolution] input_file output_file
//

#include 
#include 
#include 
using namespace std; 
using namespace Magick;

static void Usage ( char **argv )
{
  cout << "Usage: " << argv[0]
       << " [-density resolution] [-filter algorithm] [-geometry geometry]"
       << " [-resample resolution] input_file output_file" << endl
       << "   algorithm - bessel blackman box catrom cubic gaussian hamming hanning" << endl
       << "     hermite lanczos mitchell point quadratic sample scale sinc triangle" << endl;
  exit(1);
}

static void ParseError (int position, char **argv)
{
  cout << "Argument \"" <<  argv[position] << "\" at position" << position
       << "incorrect" << endl;
  Usage(argv);
}

int main(int argc,char **argv) 
{
  // Initialize ImageMagick install location for Windows
  InitializeMagick(*argv);

  if ( argc < 2 )
    Usage(argv);

  enum ResizeAlgorithm
  {
    Zoom,
    Scale,
    Sample
  };

  {
    Geometry density;
    Geometry geometry;
    Geometry resample;
    Magick::FilterTypes filter(LanczosFilter);
    ResizeAlgorithm resize_algorithm=Zoom;

    int argv_index=1;
    while ((argv_index < argc - 2) && (*argv[argv_index] == '-'))
      {
        std::string command(argv[argv_index]);
        if (command.compare("-density") == 0)
          {
            argv_index++;
            try {
              density=Geometry(argv[argv_index]);
            }
            catch( exception &/* error_ */)
              {
                ParseError(argv_index,argv);
              }
            argv_index++;
            continue;
          }
        else if (command.compare("-filter") == 0)
          {
            argv_index++;
            std::string algorithm(argv[argv_index]);
            if (algorithm.compare("point") == 0)
              filter=PointFilter;
            else if (algorithm.compare("box") == 0)
              filter=BoxFilter;
            else if (algorithm.compare("triangle") == 0)
              filter=TriangleFilter;
            else if (algorithm.compare("hermite") == 0)
              filter=HermiteFilter;
            else if (algorithm.compare("hanning") == 0)
              filter=HanningFilter;
            else if (algorithm.compare("hamming") == 0)
              filter=HammingFilter;
            else if (algorithm.compare("blackman") == 0)
              filter=BlackmanFilter;
            else if (algorithm.compare("gaussian") == 0)
              filter=GaussianFilter;
            else if (algorithm.compare("quadratic") == 0)
              filter=QuadraticFilter;
            else if (algorithm.compare("cubic") == 0)
              filter=CubicFilter;
            else if (algorithm.compare("catrom") == 0)
              filter=CatromFilter;
            else if (algorithm.compare("mitchell") == 0)
              filter=MitchellFilter;
            else if (algorithm.compare("lanczos") == 0)
              filter=LanczosFilter;
            else if (algorithm.compare("bessel") == 0)
              filter=BesselFilter;
            else if (algorithm.compare("sinc") == 0)
              filter=SincFilter;
            else if (algorithm.compare("sample") == 0)
              resize_algorithm=Sample;
            else if (algorithm.compare("scale") == 0)
              resize_algorithm=Scale;
            else
              ParseError(argv_index,argv);
            argv_index++;
            continue;
          }
        else if (command.compare("-geometry") == 0)
          {
            argv_index++;
            try {
              geometry=Geometry(argv[argv_index]);
            }
            catch( exception &/* error_ */)
              {
                ParseError(argv_index,argv);
              }
            argv_index++;
            continue;
          }
        else if (command.compare("-resample") == 0)
          {
            argv_index++;
            try {
              resample=Geometry(argv[argv_index]);
            }
            catch( exception &/* error_ */)
              {
                ParseError(argv_index,argv);
              }
            argv_index++;
            continue;
          }
        ParseError(argv_index,argv);
      }

    if (argv_index>argc-1)
      ParseError(argv_index,argv);
    std::string input_file(argv[argv_index]);
    argv_index++;
    if (argv_index>argc)
      ParseError(argv_index,argv);
    std::string output_file(argv[argv_index]);

    try {
      Image image(input_file);
      if (density.isValid())
        image.density(density);
      density=image.density();

      if (resample.isValid())
        {
          geometry =
            Geometry(static_cast
                     (image.columns()*((double)resample.width()/density.width())+0.5),
                     static_cast
                     (image.rows()*((double)resample.height()/density.height())+0.5));
          image.density(resample);
        }
      switch (resize_algorithm)
        {
        case Sample:
          image.sample(geometry);
          break;
        case Scale:
          image.scale(geometry);
          break;
        case Zoom:
          image.filterType(filter);
          image.zoom(geometry);
          break;
        }
      image.write(output_file);
    }
    catch( exception &error_ )
      {
        cout << "Caught exception: " << error_.what() << endl;
        return 1;
      }
  }

  return 0;
}

--- NEW FILE: zoom_box.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/demo || exit 1

base_test=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`
executable=`echo $base_test | sed -e 's:_.*$::'`
filter=`echo $base_test | sed -e 's:.*_::'`

outfile="test_${base_test}.out"

rm -f $outfile
${MEMCHECK} ./$executable -filter $filter -geometry 600x600 ${SRCDIR}/model.miff  ${executable}_${filter}_out.miff 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status




From ebala at helixcommunity.org  Thu Sep 10 11:34:11 2009
From: ebala at helixcommunity.org (ebala@helixcommunity.org)
Date: Thu Sep 10 20:36:59 2009
Subject: [Common-cvs] import/imagemagick/Magick++/demo Makefile.am, 1.1,
	1.2 analyze.cpp, 1.1, 1.2 button.cpp, 1.1, 1.2 demo.cpp, 1.1,
	1.2 detrans.cpp, 1.1, 1.2 flip.cpp, 1.1, 1.2 gravity.cpp, 1.1,
	1.2 piddle.cpp, 1.1, 1.2 shapes.cpp, 1.1, 1.2 zoom.cpp, 1.1,
	1.2 model.miff, 1.1, 1.2 smile.miff, 1.1, 1.2 smile_anim.miff,
	1.1, 1.2 tile.miff, 1.1, 1.2 analyze.sh, 1.1, 1.2 button.sh,
	1.1, 1.2 demo.sh, 1.1, 1.2 detrans.sh, 1.1, 1.2 flip.sh, 1.1,
	1.2 gravity.sh, 1.1, 1.2 piddle.sh, 1.1, 1.2 shapes.sh, 1.1,
	1.2 zoom_bessel.sh, 1.1, 1.2 zoom_blackman.sh, 1.1,
	1.2 zoom_box.sh, 1.1, 1.2 zoom_catrom.sh, 1.1,
	1.2 zoom_cubic.sh, 1.1, 1.2 zoom_gaussian.sh, 1.1,
	1.2 zoom_hamming.sh, 1.1, 1.2 zoom_hanning.sh, 1.1,
	1.2 zoom_hermite.sh, 1.1, 1.2 zoom_lanczos.sh, 1.1,
	1.2 zoom_mitchell.sh, 1.1, 1.2 zoom_point.sh, 1.1,
	1.2 zoom_quadratic.sh, 1.1, 1.2 zoom_sample.sh, 1.1,
	1.2 zoom_scale.sh, 1.1, 1.2 zoom_sinc.sh, 1.1,
	1.2 zoom_triangle.sh, 1.1, 1.2 .gdbinit, 1.1, 1.2
Message-ID: 

Update of /cvsroot/common/import/imagemagick/Magick++/demo
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv27219

Added Files:
	Makefile.am analyze.cpp button.cpp demo.cpp detrans.cpp 
	flip.cpp gravity.cpp piddle.cpp shapes.cpp zoom.cpp model.miff 
	smile.miff smile_anim.miff tile.miff analyze.sh button.sh 
	demo.sh detrans.sh flip.sh gravity.sh piddle.sh shapes.sh 
	zoom_bessel.sh zoom_blackman.sh zoom_box.sh zoom_catrom.sh 
	zoom_cubic.sh zoom_gaussian.sh zoom_hamming.sh zoom_hanning.sh 
	zoom_hermite.sh zoom_lanczos.sh zoom_mitchell.sh zoom_point.sh 
	zoom_quadratic.sh zoom_sample.sh zoom_scale.sh zoom_sinc.sh 
	zoom_triangle.sh .gdbinit 
Log Message:
Import of Imagemagick

--- NEW FILE: zoom_catrom.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/demo || exit 1

base_test=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`
executable=`echo $base_test | sed -e 's:_.*$::'`
filter=`echo $base_test | sed -e 's:.*_::'`

outfile="test_${base_test}.out"

rm -f $outfile
${MEMCHECK} ./$executable -filter $filter -geometry 600x600 ${SRCDIR}/model.miff  ${executable}_${filter}_out.miff 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: zoom_sinc.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/demo || exit 1

base_test=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`
executable=`echo $base_test | sed -e 's:_.*$::'`
filter=`echo $base_test | sed -e 's:.*_::'`

outfile="test_${base_test}.out"

rm -f $outfile
${MEMCHECK} ./$executable -filter $filter -geometry 600x600 ${SRCDIR}/model.miff  ${executable}_${filter}_out.miff 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: Makefile.am ---
#
# Makefile for Magick++ demo programs
#
# Copyright Bob Friesenhahn, 1999, 2000, 2001, 2002, 2003
#
AUTOMAKE_OPTIONS = 1.8 foreign nostdinc

AM_CPPFLAGS = -I$(top_builddir) -I$(top_srcdir)/Magick++/lib -I$(top_srcdir)

check_PROGRAMS = analyze button demo detrans flip gravity piddle shapes zoom

LDADD = ../lib/libMagick++.la

analyze_SOURCES = analyze.cpp
button_SOURCES  = button.cpp
demo_SOURCES    = demo.cpp
detrans_SOURCES = detrans.cpp
flip_SOURCES    = flip.cpp
gravity_SOURCES = gravity.cpp
piddle_SOURCES  = piddle.cpp
shapes_SOURCES  = shapes.cpp
zoom_SOURCES	= zoom.cpp

EXTRA_DIST = model.miff smile.miff smile_anim.miff tile.miff

CLEANFILES = *_out.* ir.out # SunWS_cache

ZOOM_FILTERS = bessel blackman box catrom cubic gaussian hamming hanning hermite \
 lanczos mitchell point quadratic sample scale sinc triangle
ZOOM_GEOMETRY = 600x600

if WIN32_NATIVE_BUILD
SRCDIR='$(shell @WinPathScript@ $(srcdir)/)'
else
SRCDIR='$(srcdir)/'
endif

MAGICK_ENV = $(SHELL) $(top_builddir)/magick.sh

# FIXME: MinGW needs Windows path form of srcdir here (or pass as command argument)
check:
	@$(MAGICK_ENV) SRCDIR=$(SRCDIR) $(MEMCHECK) ./analyze '$(srcdir)/model.miff'
	@$(MAGICK_ENV) SRCDIR=$(SRCDIR) $(MEMCHECK) ./button
	@$(MAGICK_ENV) SRCDIR=$(SRCDIR) $(MEMCHECK) ./demo
	@$(MAGICK_ENV) SRCDIR=$(SRCDIR) $(MEMCHECK) ./flip
	@$(MAGICK_ENV) SRCDIR=$(SRCDIR) $(MEMCHECK) ./gravity
	@$(MAGICK_ENV) SRCDIR=$(SRCDIR) $(MEMCHECK) ./piddle
	@$(MAGICK_ENV) SRCDIR=$(SRCDIR) $(MEMCHECK) ./shapes
	for filter in $(ZOOM_FILTERS) ; do  \
	  echo "$$filter ..." ; \
	  $(MAGICK_ENV) SRCDIR=$(SRCDIR) $(MEMCHECK) ./zoom -filter $$filter -geometry $(ZOOM_GEOMETRY) '$(srcdir)/model.miff' zoom_$${filter}_out.miff ; \
	done


--- NEW FILE: flip.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/demo || exit 1

executable=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`

outfile="test_${executable}.out"

rm -f $outfile
${MEMCHECK} "./${executable}" 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: analyze.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/demo || exit 1

executable=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`

outfile="test_${executable}.out"

rm -f $outfile
${MEMCHECK} ./analyze "$SRCDIR/model.miff" 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: zoom_gaussian.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/demo || exit 1

base_test=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`
executable=`echo $base_test | sed -e 's:_.*$::'`
filter=`echo $base_test | sed -e 's:.*_::'`

outfile="test_${base_test}.out"

rm -f $outfile
${MEMCHECK} ./$executable -filter $filter -geometry 600x600 ${SRCDIR}/model.miff  ${executable}_${filter}_out.miff 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: piddle.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2000, 2002, 2003
//
// PerlMagick "piddle" demo re-implemented using Magick++ methods.
// The PerlMagick "piddle" demo is written by John Cristy
//

#include 
#include 
#include 

using namespace std;

using namespace Magick;

int main( int /*argc*/, char ** argv)
{

  // Initialize ImageMagick install location for Windows
  InitializeMagick(*argv);

  try {

    string srcdir("");
    if(getenv("SRCDIR") != 0)
      srcdir = getenv("SRCDIR");

    //
    // Create a 300x300 white canvas.
    //
    Image image( "300x300", "white" );

    // Drawing list
    std::list drawList;

    // Start drawing by pushing a drawing context with specified
    // viewbox size
    drawList.push_back(DrawablePushGraphicContext());
    drawList.push_back(DrawableViewbox(0,0,image.columns(),image.rows()));

    //
    // Draw blue grid
    //
    drawList.push_back(DrawableStrokeColor("#ccf"));
    for ( int i=0; i < 300; i += 10 )
      {
        drawList.push_back(DrawableLine(i,0, i,300));
        drawList.push_back(DrawableLine(0,i, 300,i));
      }

    //
    // Draw rounded rectangle.
    //
    drawList.push_back(DrawableFillColor("blue"));
    drawList.push_back(DrawableStrokeColor("red"));
    drawList.push_back(DrawableRoundRectangle(15,15, 70,70, 10,10));

    drawList.push_back(DrawableFillColor("blue"));
    drawList.push_back(DrawableStrokeColor("maroon"));
    drawList.push_back(DrawableStrokeWidth(4));
    drawList.push_back(DrawableRoundRectangle(15,15, 70,70, 10,10));

    //
    // Draw curve.
    //
    {
      drawList.push_back(DrawableStrokeColor("black"));
      drawList.push_back(DrawableStrokeWidth(4));
      drawList.push_back(DrawableFillColor(Color()));

      std::list points;
      points.push_back(Coordinate(20,20));
      points.push_back(Coordinate(100,50));
      points.push_back(Coordinate(50,100));
      points.push_back(Coordinate(160,160));
      drawList.push_back(DrawableBezier(points));
    }

    //
    // Draw line
    //
    drawList.push_back(DrawableStrokeColor("red"));
    drawList.push_back(DrawableStrokeWidth(1));
    drawList.push_back(DrawableLine(10,200, 20,190));

    //
    // Draw arc within a circle.
    //
    drawList.push_back(DrawableStrokeColor("black"));
    drawList.push_back(DrawableFillColor("yellow"));
    drawList.push_back(DrawableStrokeWidth(4));
    drawList.push_back(DrawableCircle(160,70, 200,70));

    drawList.push_back(DrawableStrokeColor("black"));
    drawList.push_back(DrawableFillColor("blue"));
    drawList.push_back(DrawableStrokeWidth(4));
    {
      std::list path;
      path.push_back(PathMovetoAbs(Coordinate(160,70)));
      path.push_back(PathLinetoVerticalRel(-40));
      path.push_back(PathArcRel(PathArcArgs(40,40, 0, 0, 0, -40,40)));
      path.push_back(PathClosePath());
      drawList.push_back(DrawablePath(path));
    }

    //
    // Draw pentogram.
    //
    {
      drawList.push_back(DrawableStrokeColor("red"));
      drawList.push_back(DrawableFillColor("LimeGreen"));
      drawList.push_back(DrawableStrokeWidth(3));

      std::list points;
      points.push_back(Coordinate(160,120));
      points.push_back(Coordinate(130,190));
      points.push_back(Coordinate(210,145));
      points.push_back(Coordinate(110,145));
      points.push_back(Coordinate(190,190));
      points.push_back(Coordinate(160,120));
      drawList.push_back(DrawablePolygon(points));
    }

    //
    // Draw rectangle.
    //
    drawList.push_back(DrawableStrokeWidth(5));
    drawList.push_back(DrawableFillColor(Color())); // No fill
    drawList.push_back(DrawableStrokeColor("yellow"));
    drawList.push_back(DrawableLine(200,260, 200,200));
    drawList.push_back(DrawableLine(200,200, 260,200));
    drawList.push_back(DrawableStrokeColor("red"));
    drawList.push_back(DrawableLine(260,200, 260,260));
    drawList.push_back(DrawableStrokeColor("green"));
    drawList.push_back(DrawableLine(200,260, 260,260));

    //
    // Draw text.
    //
    drawList.push_back(DrawableFillColor("green"));
    drawList.push_back(DrawableStrokeColor(Color())); // unset color
    drawList.push_back(DrawablePointSize(24));
    drawList.push_back(DrawableTranslation(30,140));
    drawList.push_back(DrawableRotation(45.0));
    drawList.push_back(DrawableText(0,0,"This is a test!"));

    // Finish drawing by popping back to base context.
    drawList.push_back(DrawablePopGraphicContext());

    // Draw everything using completed drawing list
    //    image.debug(true);
    image.draw(drawList);

    //     image.write( "piddle.mvg" );

    cout << "Writing image \"piddle_out.miff\" ..." << endl;
    image.compressType( RLECompression );
    image.write( "piddle_out.miff" );
    cout << "Writing MVG metafile \"piddle_out.mvg\" ..." << endl;
    image.write( "piddle_out.mvg" );

    //     cout << "Display image..." << endl;
    //     image.display( );

  }
  catch( exception &error_ )
    {
      cout << "Caught exception: " << error_.what() << endl;
      return 1;
    }
  
  return 0;
}

--- NEW FILE: .gdbinit ---
dir $cwd
dir $cdir
dir ../../coders
dir ../../magick
dir ../lib/Magick++
dir ../lib

--- NEW FILE: zoom_hermite.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/demo || exit 1

base_test=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`
executable=`echo $base_test | sed -e 's:_.*$::'`
filter=`echo $base_test | sed -e 's:.*_::'`

outfile="test_${base_test}.out"

rm -f $outfile
${MEMCHECK} ./$executable -filter $filter -geometry 600x600 ${SRCDIR}/model.miff  ${executable}_${filter}_out.miff 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: gravity.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 2000, 2001, 2003
//
// Demo of text annotation with gravity.  Produces an animation showing
// the effect of rotated text along with various gravity specifications.
//
// After running demo program, run 'animate gravity_out.miff' if you
// are using X-Windows to see an animated result.
//
// Concept and algorithms lifted from PerlMagick demo script written
// by John Christy.
//

#include 
#include 
#include 
#include 

using namespace std;

using namespace Magick;

int main( int /*argc*/, char ** argv)
{

  // Initialize ImageMagick install location for Windows
  InitializeMagick(*argv);

  try {

    string srcdir("");
    if(getenv("SRCDIR") != 0)
      srcdir = getenv("SRCDIR");

    int x = 100;
    int y = 100;

    list animation;

    Image base( Geometry(600,600), Color("white") );
    base.strokeColor("#600");
    base.fillColor(Color());
    base.draw( DrawableLine( 300,100, 300,500 ) );
    base.draw( DrawableLine( 100,300, 500,300 ) );
    base.draw( DrawableRectangle( 100,100, 500,500 ) );
    base.density( Geometry(72,72) );
    base.strokeColor(Color());
    base.fillColor("#600");
    base.fontPointsize( 30 );
    base.boxColor( "red" );
    base.animationDelay( 20 );
    base.compressType( RLECompression );

    for ( int angle = 0; angle < 360; angle += 30 )
      {
        cout << "angle " << angle << endl;
        Image pic = base;
        pic.annotate( "NorthWest", Geometry(0,0,x,y), NorthWestGravity, angle );
        pic.annotate( "North", Geometry(0,0,0,y), NorthGravity, angle );
        pic.annotate( "NorthEast", Geometry(0,0,x,y), NorthEastGravity, angle );
        pic.annotate( "East", Geometry(0,0,x,0), EastGravity, angle );
        pic.annotate( "Center", Geometry(0,0,0,0), CenterGravity, angle );
        pic.annotate( "SouthEast", Geometry(0,0,x,y), SouthEastGravity, angle );
        pic.annotate( "South", Geometry(0,0,0,y), SouthGravity, angle );
        pic.annotate( "SouthWest", Geometry(0,0,x,y), SouthWestGravity, angle );
        pic.annotate( "West", Geometry(0,0,x,0), WestGravity, angle );
        animation.push_back( pic );
      }
    cout << "Writing image \"gravity_out.miff\" ..." << endl;
    writeImages( animation.begin(), animation.end(), "gravity_out.miff" );
    // system( "animate gravity_out.miff" );

  }
  catch( exception &error_ )
    {
      cout << "Caught exception: " << error_.what() << endl;
      return 1;
    }
  
  return 0;
}

--- NEW FILE: zoom_bessel.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/demo || exit 1

base_test=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`
executable=`echo $base_test | sed -e 's:_.*$::'`
filter=`echo $base_test | sed -e 's:.*_::'`

outfile="test_${base_test}.out"

rm -f $outfile
${MEMCHECK} ./$executable -filter $filter -geometry 600x600 ${SRCDIR}/model.miff  ${executable}_${filter}_out.miff 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: model.miff ---
Id=ImageMagick
Class=PseudoClass  Colors=256  Matte=False
Columns=128  Rows=192  Depth=8
Page=128x192+0+0
Background-color=gray100  Border-color=#dfdfdf  Matte-color=gray74
Signature=8ef00fddd9f2a02ba722de756c81cb42

:
--- NEW FILE: detrans.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/demo || exit 1

executable=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`

outfile="test_${executable}.out"

rm -f $outfile
${MEMCHECK} "./${executable}" 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: gravity.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/demo || exit 1

executable=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`

outfile="test_${executable}.out"

rm -f $outfile
${MEMCHECK} "./${executable}" 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: tile.miff ---
Id=ImageMagick
Class=PseudoClass  Colors=256  Matte=False
Columns=71  Rows=71  Depth=8
Page=71x71+0+0
Background-color=#cecece  Border-color=#dfdfdf  Matte-color=gray74
Signature=55c5554a36b25d1aa8280855398872e0

:
--- NEW FILE: demo.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2000, 2001, 2002, 2003
//
// Simple demo program for Magick++
//
// Concept and algorithms lifted from PerlMagick demo script written
// by John Christy.
//
// Max run-time size 60MB (as compared with 95MB for PerlMagick) under SPARC Solaris
//

#include 
#include 
#include 
#include 

using namespace std;

using namespace Magick;

int main( int /*argc*/, char ** argv)
{

  // Initialize ImageMagick install location for Windows
  InitializeMagick(*argv);
  
  try {
    
    string srcdir("");
    if(getenv("SRCDIR") != 0)
      srcdir = getenv("SRCDIR");
    
    // Common font to use.
    string font = "Helvetica";

    list montage;

    {
      //
      // Read model & smile image.
      //
      cout << "Read images ..." << endl;

      Image model( srcdir + "model.miff" );
      model.label( "Magick++" );
      model.borderColor( "black" );
      model.backgroundColor( "black" );
    
      Image smile( srcdir + "smile.miff" );
      smile.label( "Smile" );
      smile.borderColor( "black" );
    
      //
      // Create image stack.
      //
      cout << "Creating thumbnails..." << endl;
    
      // Construct initial list containing seven copies of a null image
      Image null;
      null.size( Geometry(70,70) );
      null.read( "NULL:black" );
      list images( 7, null );
    
      Image example = model;
    
      // Each of the following follow the pattern
      //  1. obtain reference to (own copy of) image
      //  2. apply label to image
      //  3. apply operation to image
      //  4. append image to container

      cout << "  add noise ..." << endl;
      example.label( "Add Noise" );
      example.addNoise( LaplacianNoise );
      images.push_back( example );

      cout << "  add noise (blue) ..." << endl;
      example.label( "Add Noise\n(Blue Channel)" );
      example.addNoiseChannel( BlueChannel, PoissonNoise );
      images.push_back( example );

      cout << "  annotate ..." << endl;
      example = model;
      example.label( "Annotate" );
      example.density( "72x72" );
      example.fontPointsize( 18 );
      example.font( font );
      example.strokeColor( Color() );
      example.fillColor( "gold" );
      example.annotate( "Magick++", "+0+20", NorthGravity );
      images.push_back( example );

      cout << "  blur ..." << endl;
      example = model;
      example.label( "Blur" );
      example.blur( 0, 1.5 );
      images.push_back( example );

      cout << "  blur red channel ..." << endl;
      example = model;
      example.label( "Blur Channel\n(Red Channel)" );
      example.blurChannel( RedChannel, 0, 3.0 );
      images.push_back( example );

      cout << "  border ..." << endl;
      example = model;
      example.label( "Border" );
      example.borderColor( "gold" );
      example.border( Geometry(6,6) );
      images.push_back( example );

      cout << "  channel ..." << endl;
      example = model;
      example.label( "Channel\n(Red Channel)" );
      example.channel( RedChannel );
      images.push_back( example );

      cout << "  charcoal ..." << endl;
      example = model;
      example.label( "Charcoal" );
      example.charcoal( );
      images.push_back( example );

      cout << "  composite ..." << endl;
      example = model;
      example.label( "Composite" );
      example.composite( smile, "+35+65", OverCompositeOp);
      images.push_back( example );

      cout << "  contrast ..." << endl;
      example = model;
      example.label( "Contrast" );
      example.contrast( false );
      images.push_back( example );

      cout << "  convolve ..." << endl;
      example = model;
      example.label( "Convolve" );
      {
        // 3x3 matrix
        const double kernel[] = { 1, 1, 1, 1, 4, 1, 1, 1, 1 };
        example.convolve( 3, kernel );
      }
      images.push_back( example );

      cout << "  crop ..." << endl;
      example = model;
      example.label( "Crop" );
      example.crop( "80x80+25+50" );
      images.push_back( example );

      cout << "  despeckle ..." << endl;
      example = model;
      example.label( "Despeckle" );
      example.despeckle( );
      images.push_back( example );

      cout << "  draw ..." << endl;
      example = model;
      example.label( "Draw" );
      example.fillColor(Color());
      example.strokeColor( "gold" );
      example.strokeWidth( 2 );
      example.draw( DrawableCircle( 60,90, 60,120 ) );
      images.push_back( example );

      cout << "  edge ..." << endl;
      example = model;
      example.label( "Detect Edges" );
      example.edge( );
      images.push_back( example );

      cout << "  emboss ..." << endl;
      example = model;
      example.label( "Emboss" );
      example.emboss( );
      images.push_back( example );

      cout << "  equalize ..." << endl;
      example = model;
      example.label( "Equalize" );
      example.equalize( );
      images.push_back( example );
    
      cout << "  explode ..." << endl;
      example = model;
      example.label( "Explode" );
      example.backgroundColor( "#000000FF" );
      example.implode( -1 );
      images.push_back( example );

      cout << "  flip ..." << endl;
      example = model;
      example.label( "Flip" );
      example.flip( );
      images.push_back( example );

      cout << "  flop ..." << endl;
      example = model;
      example.label( "Flop" );
      example.flop();
      images.push_back( example );

      cout << "  frame ..." << endl;
      example = model;
      example.label( "Frame" );
      example.frame( );
      images.push_back( example );

      cout << "  gamma ..." << endl;
      example = model;
      example.label( "Gamma" );
      example.gamma( 1.6 );
      images.push_back( example );

      cout << "  gaussian blur ..." << endl;
      example = model;
      example.label( "Gaussian Blur" );
      example.gaussianBlur( 0.0, 1.5 );
      images.push_back( example );

      cout << "  gaussian blur channel ..." << endl;
      example = model;
      example.label( "Gaussian Blur\n(Green Channel)" );
      example.gaussianBlurChannel( GreenChannel, 0.0, 1.5 );
      images.push_back( example );
    
      cout << "  gradient ..." << endl;
      Image gradient;
      gradient.size( "130x194" );
      gradient.read( "gradient:#20a0ff-#ffff00" );
      gradient.label( "Gradient" );
      images.push_back( gradient );
    
      cout << "  grayscale ..." << endl;
      example = model;
      example.label( "Grayscale" );
      example.quantizeColorSpace( GRAYColorspace );
      example.quantize( );
      images.push_back( example );
    
      cout << "  implode ..." << endl;
      example = model;
      example.label( "Implode" );
      example.implode( 0.5 );
      images.push_back( example );

      cout << "  level ..." << endl;
      example = model;
      example.label( "Level" );
      example.level( 0.20*QuantumRange, 0.90*QuantumRange, 1.20 );
      images.push_back( example );

      cout << "  level red channel ..." << endl;
      example = model;
      example.label( "Level Channel\n(Red Channel)" );
      example.levelChannel( RedChannel, 0.20*QuantumRange, 0.90*QuantumRange, 1.20 );
      images.push_back( example );

      cout << "  median filter ..." << endl;
      example = model;
      example.label( "Median Filter" );
      example.medianFilter( );
      images.push_back( example );

      cout << "  modulate ..." << endl;
      example = model;
      example.label( "Modulate" );
      example.modulate( 110, 110, 110 );
      images.push_back( example );

      cout << "  monochrome ..." << endl;
      example = model;
      example.label( "Monochrome" );
      example.quantizeColorSpace( GRAYColorspace );
      example.quantizeColors( 2 );
      example.quantizeDither( false );
      example.quantize( );
      images.push_back( example );

      cout << "  motion blur ..." << endl;
      example = model;
      example.label( "Motion Blur" );
      example.motionBlur( 0.0, 7.0,45 );
      images.push_back( example );
    
      cout << "  negate ..." << endl;
      example = model;
      example.label( "Negate" );
      example.negate( );
      images.push_back( example );
    
      cout << "  normalize ..." << endl;
      example = model;
      example.label( "Normalize" );
      example.normalize( );
      images.push_back( example );
    
      cout << "  oil paint ..." << endl;
      example = model;
      example.label( "Oil Paint" );
      example.oilPaint( );
      images.push_back( example );

      cout << "  ordered dither 2x2 ..." << endl;
      example = model;
      example.label( "Ordered Dither\n(2x2)" );
      example.randomThreshold( Geometry(2,2) );
      images.push_back( example );

      cout << "  ordered dither 3x3..." << endl;
      example = model;
      example.label( "Ordered Dither\n(3x3)" );
      example.randomThreshold( Geometry(3,3) );
      images.push_back( example );

      cout << "  ordered dither 4x4..." << endl;
      example = model;
      example.label( "Ordered Dither\n(4x4)" );
      example.randomThreshold( Geometry(4,4) );
      images.push_back( example );
    
      cout << "  ordered dither red 4x4..." << endl;
      example = model;
      example.label( "Ordered Dither\n(Red 4x4)" );
      example.randomThresholdChannel( Geometry(4,4), RedChannel);
      images.push_back( example );

      cout << "  plasma ..." << endl;
      Image plasma;
      plasma.size( "130x194" );
      plasma.read( "plasma:fractal" );
      plasma.label( "Plasma" );
      images.push_back( plasma );
    
      cout << "  quantize ..." << endl;
      example = model;
      example.label( "Quantize" );
      example.quantize( );
      images.push_back( example );

      cout << "  quantum operator ..." << endl;
      example = model;
      example.label( "Quantum Operator\nRed * 0.4" );
      example.quantumOperator( RedChannel,MultiplyEvaluateOperator,0.40 );
      images.push_back( example );

      cout << "  raise ..." << endl;
      example = model;
      example.label( "Raise" );
      example.raise( );
      images.push_back( example );
    
      cout << "  reduce noise ..." << endl;
      example = model;
      example.label( "Reduce Noise" );
      example.reduceNoise( 1.0 );
      images.push_back( example );
    
      cout << "  resize ..." << endl;
      example = model;
      example.label( "Resize" );
      example.zoom( "50%" );
      images.push_back( example );
    
      cout << "  roll ..." << endl;
      example = model;
      example.label( "Roll" );
      example.roll( "+20+10" );
      images.push_back( example );
    
      cout << "  rotate ..." << endl;
      example = model;
      example.label( "Rotate" );
      example.rotate( 45 );
      example.transparent( "black" );
      images.push_back( example );

      cout << "  scale ..." << endl;
      example = model;
      example.label( "Scale" );
      example.scale( "60%" );
      images.push_back( example );
    
      cout << "  segment ..." << endl;
      example = model;
      example.label( "Segment" );
      example.segment( 0.5, 0.25 );
      images.push_back( example );
    
      cout << "  shade ..." << endl;
      example = model;
      example.label( "Shade" );
      example.shade( 30, 30, false );
      images.push_back( example );
    
      cout << "  sharpen ..." << endl;
      example = model;
      example.label("Sharpen");
      example.sharpen( 0.0, 1.0 );
      images.push_back( example );
    
      cout << "  shave ..." << endl;
      example = model;
      example.label("Shave");
      example.shave( Geometry( 10, 10) );
      images.push_back( example );
    
      cout << "  shear ..." << endl;
      example = model;
      example.label( "Shear" );
      example.shear( 45, 45 );
      example.transparent( "black" );
      images.push_back( example );
    
      cout << "  spread ..." << endl;
      example = model;
      example.label( "Spread" );
      example.spread( 3 );
      images.push_back( example );
    
      cout << "  solarize ..." << endl;
      example = model;
      example.label( "Solarize" );
      example.solarize( );
      images.push_back( example );
    
      cout << "  swirl ..." << endl;
      example = model;
      example.backgroundColor( "#000000FF" );
      example.label( "Swirl" );
      example.swirl( 90 );
      images.push_back( example );

      cout << "  threshold ..." << endl;
      example = model;
      example.label( "Threshold" );
      example.threshold( QuantumRange/2.0 );
      images.push_back( example );

      cout << "  threshold random ..." << endl;
      example = model;
      example.label( "Random\nThreshold" );
      example.randomThreshold( Geometry((unsigned int) (0.3*QuantumRange),
        (unsigned int) (0.85*QuantumRange)) );
      images.push_back( example );
    
      cout << "  unsharp mask ..." << endl;
      example = model;
      example.label( "Unsharp Mask" );
      //           radius_, sigma_, amount_, threshold_
      example.unsharpmask( 0.0, 1.0, 1.0, 0.05);
      images.push_back( example );
    
      cout << "  wave ..." << endl;
      example = model;
      example.label( "Wave" );
      example.matte( true );
      example.backgroundColor( "#000000FF" );
      example.wave( 25, 150 );
      images.push_back( example );
    
      //
      // Create image montage.
      //
      cout <<  "Montage images..." << endl;

      for_each( images.begin(), images.end(), fontImage( font ) );
      for_each( images.begin(), images.end(), strokeColorImage( Color("#600") ) );

      MontageFramed montageOpts;
      montageOpts.geometry( "130x194+10+5>" );
      montageOpts.gravity( CenterGravity );
      montageOpts.borderColor( "green" );
      montageOpts.borderWidth( 1 );
      montageOpts.tile( "7x4" );
      montageOpts.compose( OverCompositeOp );
      montageOpts.backgroundColor( "#ffffff" );
      montageOpts.font( font );
      montageOpts.pointSize( 18 );
      montageOpts.fillColor( "#600" );
      montageOpts.strokeColor( Color() );
      montageOpts.compose(OverCompositeOp);
      montageOpts.fileName( "Magick++ Demo" );
      montageImages( &montage, images.begin(), images.end(), montageOpts );
    }

    Image& montage_image = montage.front();
    {
      // Create logo image
      cout << "Adding logo image ..." << endl;
      Image logo( "logo:" );
      logo.zoom( "45%" );

      // Composite logo into montage image
      Geometry placement(0,0,(montage_image.columns()/2)-(logo.columns()/2),0);
      montage_image.composite( logo, placement, OverCompositeOp );
    }

    cout << "Writing image \"demo_out.miff\" ..." << endl;
    montage_image.matte( false );
    montage_image.compressType( RLECompression );
    writeImages(montage.begin(),montage.end(),"demo_out.miff");

    // Uncomment following lines to display image to screen
    //    cout <<  "Display image..." << endl;
    //    montage_image.display();

  }
  catch( exception &error_ )
    {
      cout << "Caught exception: " << error_.what() << endl;
      return 1;
    }

  return 0;
}

--- NEW FILE: zoom_blackman.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/demo || exit 1

base_test=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`
executable=`echo $base_test | sed -e 's:_.*$::'`
filter=`echo $base_test | sed -e 's:.*_::'`

outfile="test_${base_test}.out"

rm -f $outfile
${MEMCHECK} ./$executable -filter $filter -geometry 600x600 ${SRCDIR}/model.miff  ${executable}_${filter}_out.miff 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: smile_anim.miff ---
Id=ImageMagick
Class=PseudoClass  Colors=2  Matte=False
Columns=48  Rows=48  Depth=8
Page=48x48+0+0
Background-color=gray100  Border-color=#dfdfdf  Matte-color=gray74
Scene=0  Iterations=0  Delay=10  Dispose=3
Comment={GifBuilder 0.2 by Yves Piguet}
Signature=7b72ce35b443b218e81337ad355496ad

:
--- NEW FILE: zoom_quadratic.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/demo || exit 1

base_test=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`
executable=`echo $base_test | sed -e 's:_.*$::'`
filter=`echo $base_test | sed -e 's:.*_::'`

outfile="test_${base_test}.out"

rm -f $outfile
${MEMCHECK} ./$executable -filter $filter -geometry 600x600 ${SRCDIR}/model.miff  ${executable}_${filter}_out.miff 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: smile.miff ---
id=ImageMagick
class=PseudoClass  colors=3  matte=True
columns=48  rows=48  depth=8
Resolution=89x89  units=undefined
page=1x1+0+0
delay=10
dispose=3
Signature=e479e50a6b2fd2ede083d65cfe4f844d

:
--- NEW FILE: zoom_sample.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/demo || exit 1

base_test=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`
executable=`echo $base_test | sed -e 's:_.*$::'`
filter=`echo $base_test | sed -e 's:.*_::'`

outfile="test_${base_test}.out"

rm -f $outfile
${MEMCHECK} ./$executable -filter $filter -geometry 600x600 ${SRCDIR}/model.miff  ${executable}_${filter}_out.miff 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: zoom_triangle.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/demo || exit 1

base_test=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`
executable=`echo $base_test | sed -e 's:_.*$::'`
filter=`echo $base_test | sed -e 's:.*_::'`

outfile="test_${base_test}.out"

rm -f $outfile
${MEMCHECK} ./$executable -filter $filter -geometry 600x600 ${SRCDIR}/model.miff  ${executable}_${filter}_out.miff 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: detrans.cpp ---
//
// Replace transparency in an image with a solid color using Magick++
//
// Useful to see how a transparent image looks on a particular
// background color, or to create a similar looking effect without
// transparency.
//
// Copyright Bob Friesenhahn, 2000
//
// Usage: detrans color file...
//

#include 
#include 
using namespace std; 
using namespace Magick;
int main(int argc,char **argv) 
{
  if ( argc < 3 )
    {
      cout << "Usage: " << argv[0] << " background_color file..." << endl;
      exit( 1 );
    }

  // Initialize ImageMagick install location for Windows
  InitializeMagick(*argv);

  {
    Color color;
    try {
      color = Color(argv[1]);
    }
    catch ( Exception error_ )
      {
        cout << error_.what() << endl;
        cout.flush();
        exit(1);
      }

    char **arg = &argv[2];
    while ( *arg )
      {
        string fname(*arg);
        try {
          Image overlay( fname );
          Image base( overlay.size(), color );
          base.composite( overlay, 0, 0, OverCompositeOp );
          base.matte( false );
          base.write( fname );
        }
        catch( Exception &error_ ) 
          { 
            cout << error_.what() << endl; 
          }
        ++arg;
      }
  }

  return 0; 
}

--- NEW FILE: button.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/demo || exit 1

executable=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`

outfile="test_${executable}.out"

rm -f $outfile
${MEMCHECK} "./${executable}" 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: piddle.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/demo || exit 1

executable=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`

outfile="test_${executable}.out"

rm -f $outfile
${MEMCHECK} "./${executable}" 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: zoom_hamming.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/demo || exit 1

base_test=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`
executable=`echo $base_test | sed -e 's:_.*$::'`
filter=`echo $base_test | sed -e 's:.*_::'`

outfile="test_${base_test}.out"

rm -f $outfile
${MEMCHECK} ./$executable -filter $filter -geometry 600x600 ${SRCDIR}/model.miff  ${executable}_${filter}_out.miff 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: zoom_cubic.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/demo || exit 1

base_test=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`
executable=`echo $base_test | sed -e 's:_.*$::'`
filter=`echo $base_test | sed -e 's:.*_::'`

outfile="test_${base_test}.out"

rm -f $outfile
${MEMCHECK} ./$executable -filter $filter -geometry 600x600 ${SRCDIR}/model.miff  ${executable}_${filter}_out.miff 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: zoom_scale.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/demo || exit 1

base_test=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`
executable=`echo $base_test | sed -e 's:_.*$::'`
filter=`echo $base_test | sed -e 's:.*_::'`

outfile="test_${base_test}.out"

rm -f $outfile
${MEMCHECK} ./$executable -filter $filter -geometry 600x600 ${SRCDIR}/model.miff  ${executable}_${filter}_out.miff 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: zoom_hanning.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/demo || exit 1

base_test=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`
executable=`echo $base_test | sed -e 's:_.*$::'`
filter=`echo $base_test | sed -e 's:.*_::'`

outfile="test_${base_test}.out"

rm -f $outfile
${MEMCHECK} ./$executable -filter $filter -geometry 600x600 ${SRCDIR}/model.miff  ${executable}_${filter}_out.miff 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: shapes.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2000, 2002, 2003
//
// GD/PerlMagick example using Magick++ methods.
//
// Concept and algorithms lifted from PerlMagick demo script
//

#include 
#include 
#include 

using namespace std;

using namespace Magick;

int main( int /*argc*/, char ** argv)
{

  // Initialize ImageMagick install location for Windows
  InitializeMagick(*argv);

  try {

    string srcdir("");
    if(getenv("SRCDIR") != 0)
      srcdir = getenv("SRCDIR");

    //
    // Create a 300x300 white canvas.
    //
    Image image( "300x300", "white" );

    //
    // Draw texture-filled polygon
    //
    // Polygon list
    std::list poly_coord;
    poly_coord.push_back( Coordinate(30,30) );
    poly_coord.push_back( Coordinate(100,10) );
    poly_coord.push_back( Coordinate(190,290) );
    poly_coord.push_back( Coordinate(30,290) );

    Image texture( srcdir + "tile.miff" );
    image.penTexture( texture );
    image.draw( DrawablePolygon( poly_coord ) );
    texture.isValid( false );
    image.penTexture( texture );  // Unset texture

    //
    // Draw filled ellipse with black border, and red fill color
    //
    image.strokeColor( "black" );
    image.fillColor( "red" );
    image.strokeWidth( 5 );
    image.draw( DrawableEllipse( 100,100, 50,75, 0,360 ) );
    image.fillColor( Color() ); // Clear out fill color

    //
    // Draw ellipse, and polygon, with black stroke, strokeWidth of 5
    //
    image.strokeColor( "black" );
    image.strokeWidth( 5 );
    list drawlist;

    // Add polygon to list
    poly_coord.clear();
    poly_coord.push_back( Coordinate(30,30) );
    poly_coord.push_back( Coordinate(100,10) );
    poly_coord.push_back( Coordinate(190,290) );
    poly_coord.push_back( Coordinate(30,290) );
    drawlist.push_back( DrawablePolygon( poly_coord ) );
    image.draw( drawlist );

    //
    // Floodfill object with blue
    //
    image.colorFuzz( 80 );
    image.floodFillColor( "+132+62", "blue" );

    //
    // Draw text
    //
    image.strokeColor(Color());
    image.fillColor( "red" );
    image.fontPointsize( 18 );
    image.annotate( "Hello world!", "+150+20" );

    image.fillColor( "blue" );
    image.fontPointsize( 14 );
    image.annotate( "Goodbye cruel world!", "+150+38" );

    image.fillColor( "black" );
    image.fontPointsize( 14 );
    image.annotate( "I'm climbing the wall!", "+280+120",
                    NorthWestGravity, 90.0 );
    //image.display();
    //
    // Write image.
    //

    cout << "Writing image \"shapes_out.miff\" ..." << endl;
    image.compressType( RLECompression );
    image.write( "shapes_out.miff" );

    // cout << "Display image..." << endl;
    // image.display( );

  }
  catch( exception &error_ )
    {
      cout << "Caught exception: " << error_.what() << endl;
      return 1;
    }
  
  return 0;
}

--- NEW FILE: demo.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/demo || exit 1

executable=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`

outfile="test_${executable}.out"

rm -f $outfile
${MEMCHECK} "./${executable}" 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: button.cpp ---
//
// Magick++ demo to generate a simple text button
//
// Copyright Bob Friesenhahn, 1999, 2000, 2001, 2003
// 

#include 
#include 
#include 

using namespace std;

using namespace Magick;

int main( int /*argc*/, char ** argv)
{

  // Initialize ImageMagick install location for Windows
  InitializeMagick(*argv);

  try {

    string srcdir("");
    if(getenv("SRCDIR") != 0)
      srcdir = getenv("SRCDIR");

    //
    // Options
    //

    string backGround = "xc:#CCCCCC"; // A solid color

    // Color to use for decorative border
    Color border = "#D4DCF3";

    // Button size
    string buttonSize = "120x20";

    // Button background texture
    string buttonTexture = "granite:";

    // Button text
    string text = "Button Text";

    // Button text color
    string textColor = "red";

    // Font point size
    int fontPointSize = 16;

    //
    // Magick++ operations
    //

    Image button;

    // Set button size
    button.size( buttonSize );

    // Read background image
    button.read( backGround );

    // Set background to buttonTexture
    Image backgroundTexture( buttonTexture );
    button.texture( backgroundTexture );

    // Add some text
    button.fillColor( textColor );
    button.fontPointsize( fontPointSize );
    button.annotate( text, CenterGravity );

    // Add a decorative frame
    button.borderColor( border );
    button.frame( "6x6+3+3" );

    // Quantize to desired colors
    // button.quantizeTreeDepth(8);
    button.quantizeDither(false);
    button.quantizeColors(64);
    button.quantize();

    // Save to file
    cout << "Writing to \"button_out.miff\" ..." << endl;
    button.compressType( RLECompression );
    button.write("button_out.miff");

    // Display on screen
    // button.display();

  }
  catch( exception &error_ )
    {
      cout << "Caught exception: " << error_.what() << endl;
      return 1;
    }

  return 0;
}

--- NEW FILE: flip.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2003
//
// Demonstration of unary function-object based operations
//
// Reads the multi-frame file "smile_anim.miff" and writes a
// flipped and morphed version to "flip_out.miff".
//

#include 
#include 
#include 
#include 
#include 

using namespace std;

using namespace Magick;

int main( int /*argc*/, char ** argv)
{

  // Initialize ImageMagick install location for Windows
  InitializeMagick(*argv);


  try {

    string srcdir("");
    if(getenv("SRCDIR") != 0)
      srcdir = getenv("SRCDIR");

    // Read images into STL list
    list imageList;
    readImages( &imageList, srcdir + "smile_anim.miff" );

    // cout << "Total scenes: " << imageList.size() << endl;

    // Flip images
    for_each( imageList.begin(), imageList.end(), flipImage() );

    // Create a morphed version, adding three frames between each
    // existing frame.
    list morphed;
    morphImages( &morphed, imageList.begin(), imageList.end(), 3 );

    // Write out images
    cout << "Writing image \"flip_out.miff\" ..." << endl;
    writeImages( morphed.begin(), morphed.end(), "flip_out.miff" );

  }
  catch( exception &error_ )
    {
      cout << "Caught exception: " << error_.what() << endl;
      return 1;
    }
  
  return 0;
}

--- NEW FILE: shapes.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/demo || exit 1

executable=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`

outfile="test_${executable}.out"

rm -f $outfile
${MEMCHECK} "./${executable}" 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: zoom_lanczos.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/demo || exit 1

base_test=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`
executable=`echo $base_test | sed -e 's:_.*$::'`
filter=`echo $base_test | sed -e 's:.*_::'`

outfile="test_${base_test}.out"

rm -f $outfile
${MEMCHECK} ./$executable -filter $filter -geometry 600x600 ${SRCDIR}/model.miff  ${executable}_${filter}_out.miff 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: analyze.cpp ---
//
// Demonstrate using the 'analyze' process module to compute
// image statistics.
//
// Copyright Bob Friesenhahn, 2003, 2004
//
// Usage: analyze file...
//

#include 
#include 
#include 
#include 
using namespace std; 
using namespace Magick;
int main(int argc,char **argv) 
{
  if ( argc < 2 )
    {
      cout << "Usage: " << argv[0] << " file..." << endl;
      exit( 1 );
    }

  // Initialize ImageMagick install location for Windows
  InitializeMagick(*argv);

  {
    std::list attributes;

    attributes.push_back("TopLeftColor");
    attributes.push_back("TopRightColor");
    attributes.push_back("BottomLeftColor");
    attributes.push_back("BottomRightColor");
    attributes.push_back("filter:brightness:mean");
    attributes.push_back("filter:brightness:standard-deviation");
    attributes.push_back("filter:brightness:kurtosis");
    attributes.push_back("filter:brightness:skewness");
    attributes.push_back("filter:saturation:mean");
    attributes.push_back("filter:saturation:standard-deviation");
    attributes.push_back("filter:saturation:kurtosis");
    attributes.push_back("filter:saturation:skewness");

    char **arg = &argv[1];
    while ( *arg )
      {
        string fname(*arg);
        try {
          cout << "File: " << fname << endl;
          Image image( fname );

          /* Analyze module does not require an argument list */
          image.process("analyze",0,0);

          list::iterator pos = attributes.begin();
          while(pos != attributes.end())
            {
              cout << "  " << setw(16) << setfill(' ') << setiosflags(ios::left)
                   << *pos << " = " << image.attribute(*pos) << endl;
              pos++;
            }
        }
        catch( Exception &error_ ) 
          { 
            cout << error_.what() << endl; 
          }
        ++arg;
      }
  }

  return 0; 
}

--- NEW FILE: zoom_point.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/demo || exit 1

base_test=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`
executable=`echo $base_test | sed -e 's:_.*$::'`
filter=`echo $base_test | sed -e 's:.*_::'`

outfile="test_${base_test}.out"

rm -f $outfile
${MEMCHECK} ./$executable -filter $filter -geometry 600x600 ${SRCDIR}/model.miff  ${executable}_${filter}_out.miff 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: zoom_mitchell.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/demo || exit 1

base_test=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`
executable=`echo $base_test | sed -e 's:_.*$::'`
filter=`echo $base_test | sed -e 's:.*_::'`

outfile="test_${base_test}.out"

rm -f $outfile
${MEMCHECK} ./$executable -filter $filter -geometry 600x600 ${SRCDIR}/model.miff  ${executable}_${filter}_out.miff 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: zoom.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 2001, 2002, 2003
//
// Resize image using specified resize algorithm with Magick++ API
//
// Usage: zoom [-density resolution] [-filter algorithm] [-geometry geometry]
//             [-resample resolution] input_file output_file
//

#include 
#include 
#include 
using namespace std; 
using namespace Magick;

static void Usage ( char **argv )
{
  cout << "Usage: " << argv[0]
       << " [-density resolution] [-filter algorithm] [-geometry geometry]"
       << " [-resample resolution] input_file output_file" << endl
       << "   algorithm - bessel blackman box catrom cubic gaussian hamming hanning" << endl
       << "     hermite lanczos mitchell point quadratic sample scale sinc triangle" << endl;
  exit(1);
}

static void ParseError (int position, char **argv)
{
  cout << "Argument \"" <<  argv[position] << "\" at position" << position
       << "incorrect" << endl;
  Usage(argv);
}

int main(int argc,char **argv) 
{
  // Initialize ImageMagick install location for Windows
  InitializeMagick(*argv);

  if ( argc < 2 )
    Usage(argv);

  enum ResizeAlgorithm
  {
    Zoom,
    Scale,
    Sample
  };

  {
    Geometry density;
    Geometry geometry;
    Geometry resample;
    Magick::FilterTypes filter(LanczosFilter);
    ResizeAlgorithm resize_algorithm=Zoom;

    int argv_index=1;
    while ((argv_index < argc - 2) && (*argv[argv_index] == '-'))
      {
        std::string command(argv[argv_index]);
        if (command.compare("-density") == 0)
          {
            argv_index++;
            try {
              density=Geometry(argv[argv_index]);
            }
            catch( exception &/* error_ */)
              {
                ParseError(argv_index,argv);
              }
            argv_index++;
            continue;
          }
        else if (command.compare("-filter") == 0)
          {
            argv_index++;
            std::string algorithm(argv[argv_index]);
            if (algorithm.compare("point") == 0)
              filter=PointFilter;
            else if (algorithm.compare("box") == 0)
              filter=BoxFilter;
            else if (algorithm.compare("triangle") == 0)
              filter=TriangleFilter;
            else if (algorithm.compare("hermite") == 0)
              filter=HermiteFilter;
            else if (algorithm.compare("hanning") == 0)
              filter=HanningFilter;
            else if (algorithm.compare("hamming") == 0)
              filter=HammingFilter;
            else if (algorithm.compare("blackman") == 0)
              filter=BlackmanFilter;
            else if (algorithm.compare("gaussian") == 0)
              filter=GaussianFilter;
            else if (algorithm.compare("quadratic") == 0)
              filter=QuadraticFilter;
            else if (algorithm.compare("cubic") == 0)
              filter=CubicFilter;
            else if (algorithm.compare("catrom") == 0)
              filter=CatromFilter;
            else if (algorithm.compare("mitchell") == 0)
              filter=MitchellFilter;
            else if (algorithm.compare("lanczos") == 0)
              filter=LanczosFilter;
            else if (algorithm.compare("bessel") == 0)
              filter=BesselFilter;
            else if (algorithm.compare("sinc") == 0)
              filter=SincFilter;
            else if (algorithm.compare("sample") == 0)
              resize_algorithm=Sample;
            else if (algorithm.compare("scale") == 0)
              resize_algorithm=Scale;
            else
              ParseError(argv_index,argv);
            argv_index++;
            continue;
          }
        else if (command.compare("-geometry") == 0)
          {
            argv_index++;
            try {
              geometry=Geometry(argv[argv_index]);
            }
            catch( exception &/* error_ */)
              {
                ParseError(argv_index,argv);
              }
            argv_index++;
            continue;
          }
        else if (command.compare("-resample") == 0)
          {
            argv_index++;
            try {
              resample=Geometry(argv[argv_index]);
            }
            catch( exception &/* error_ */)
              {
                ParseError(argv_index,argv);
              }
            argv_index++;
            continue;
          }
        ParseError(argv_index,argv);
      }

    if (argv_index>argc-1)
      ParseError(argv_index,argv);
    std::string input_file(argv[argv_index]);
    argv_index++;
    if (argv_index>argc)
      ParseError(argv_index,argv);
    std::string output_file(argv[argv_index]);

    try {
      Image image(input_file);
      if (density.isValid())
        image.density(density);
      density=image.density();

      if (resample.isValid())
        {
          geometry =
            Geometry(static_cast
                     (image.columns()*((double)resample.width()/density.width())+0.5),
                     static_cast
                     (image.rows()*((double)resample.height()/density.height())+0.5));
          image.density(resample);
        }
      switch (resize_algorithm)
        {
        case Sample:
          image.sample(geometry);
          break;
        case Scale:
          image.scale(geometry);
          break;
        case Zoom:
          image.filterType(filter);
          image.zoom(geometry);
          break;
        }
      image.write(output_file);
    }
    catch( exception &error_ )
      {
        cout << "Caught exception: " << error_.what() << endl;
        return 1;
      }
  }

  return 0;
}

--- NEW FILE: zoom_box.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/demo || exit 1

base_test=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`
executable=`echo $base_test | sed -e 's:_.*$::'`
filter=`echo $base_test | sed -e 's:.*_::'`

outfile="test_${base_test}.out"

rm -f $outfile
${MEMCHECK} ./$executable -filter $filter -geometry 600x600 ${SRCDIR}/model.miff  ${executable}_${filter}_out.miff 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status




From ebala at helixcommunity.org  Thu Sep 10 11:34:19 2009
From: ebala at helixcommunity.org (ebala@helixcommunity.org)
Date: Thu Sep 10 20:37:11 2009
Subject: [Common-cvs] import/imagemagick/Magick++/lib Magick++.h, 1.1,
	1.2 ImageMagick++.pc.in, 1.1, 1.2 Magick++.pc.in, 1.1,
	1.2 ImageMagick++.pc, 1.1, 1.2 Makefile.am, 1.1, 1.2 Blob.cpp,
	1.1, 1.2 BlobRef.cpp, 1.1, 1.2 CoderInfo.cpp, 1.1,
	1.2 Color.cpp, 1.1, 1.2 Drawable.cpp, 1.1, 1.2 Exception.cpp,
	1.1, 1.2 Functions.cpp, 1.1, 1.2 Geometry.cpp, 1.1,
	1.2 Image.cpp, 1.1, 1.2 ImageRef.cpp, 1.1, 1.2 Montage.cpp,
	1.1, 1.2 Options.cpp, 1.1, 1.2 Pixels.cpp, 1.1, 1.2 STL.cpp,
	1.1, 1.2 Thread.cpp, 1.1, 1.2 TypeMetric.cpp, 1.1, 1.2
Message-ID: 

Update of /cvsroot/common/import/imagemagick/Magick++/lib
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv27291

Added Files:
	Magick++.h ImageMagick++.pc.in Magick++.pc.in ImageMagick++.pc 
	Makefile.am Blob.cpp BlobRef.cpp CoderInfo.cpp Color.cpp 
	Drawable.cpp Exception.cpp Functions.cpp Geometry.cpp 
	Image.cpp ImageRef.cpp Montage.cpp Options.cpp Pixels.cpp 
	STL.cpp Thread.cpp TypeMetric.cpp 
Log Message:
Import of Imagemagick

--- NEW FILE: ImageMagick++.pc.in ---
prefix=@prefix@
exec_prefix=@exec_prefix@
libdir=@libdir@
includedir=@includedir@/ImageMagick


Name: ImageMagick++
Version: @PACKAGE_VERSION@
Description: Magick++ - C++ API for ImageMagick
Requires: ImageMagick
Libs: -L${libdir} -lMagick++
Cflags: -I${includedir}

--- NEW FILE: TypeMetric.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 2001
//
// TypeMetric implementation
//

#define MAGICKCORE_IMPLEMENTATION  1
#define MAGICK_PLUSPLUS_IMPLEMENTATION 1

#include "Magick++/TypeMetric.h"
#include 

// Default constructor
Magick::TypeMetric::TypeMetric ( void )
{
  memset( &_typeMetric, 0, sizeof(_typeMetric));
}

Magick::TypeMetric::~TypeMetric ( void )
{
  // Nothing to do
}

// Ascent, expressed in pixels
double Magick::TypeMetric::ascent ( void ) const
{
  return _typeMetric.ascent;
}

// Descent, expressed in pixels
double Magick::TypeMetric::descent ( void ) const
{
  return _typeMetric.descent;
}

// Text width, expressed in pixels
double Magick::TypeMetric::textWidth ( void ) const
{
  return _typeMetric.width;
}

// Text height, expressed in pixels
double Magick::TypeMetric::textHeight ( void ) const
{
  return _typeMetric.height;
}

// Maximum horizontal advance, expressed in pixels
double Magick::TypeMetric::maxHorizontalAdvance ( void ) const
{
  return _typeMetric.max_advance;
}

--- NEW FILE: Pixels.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2000, 2001, 2002, 2003
//
// Pixels Implementation
//

#define MAGICKCORE_IMPLEMENTATION  1
#define MAGICK_PLUSPLUS_IMPLEMENTATION 1

#include "Magick++/Include.h"
#include  // This is here to compile with Visual C++
#include "Magick++/Thread.h"
#include "Magick++/Exception.h"
#include "Magick++/Pixels.h"

namespace Magick
{


}

// Construct pixel view using specified image.
Magick::Pixels::Pixels( Magick::Image &image_ )
  : _image(image_),
    _view(AcquireCacheView(_image.image())),
    _x(0),
    _y(0),
    _columns(0),
    _rows(0)
{
  GetExceptionInfo( &_exception );

  if (!_view)
    _image.throwImageException();
  (void) DestroyExceptionInfo( &_exception );
}

// Destroy pixel view
Magick::Pixels::~Pixels( void )
{
  if ( _view )
    _view = DestroyCacheView( _view );
  
}

// Transfer pixels from the image to the pixel view as defined by
// the specified region. Modified pixels may be subsequently
// transferred back to the image via sync.
Magick::PixelPacket* Magick::Pixels::get ( const int x_,
					   const int y_,
					   const unsigned int columns_,
					   const unsigned int rows_ )
{
  _x = x_;
  _y = y_;
  _columns = columns_;
  _rows = rows_;

  PixelPacket* pixels = GetCacheViewAuthenticPixels( _view, x_, y_, columns_, rows_,  &_exception);

  if ( !pixels )
    throwException( *GetCacheViewException(_view) );
  
  return pixels;
}

// Transfer read-only pixels from the image to the pixel view as
// defined by the specified region.
const Magick::PixelPacket* Magick::Pixels::getConst ( const int x_, const int y_,
                                                      const unsigned int columns_,
                                                      const unsigned int rows_ )
{
  _x = x_;
  _y = y_;
  _columns = columns_;
  _rows = rows_;

  const PixelPacket* pixels =
    GetCacheViewVirtualPixels(_view, x_, y_, columns_, rows_, &_exception );

  if ( !pixels )
    throwException( _exception );

    return pixels;
}

// Transfers the image view pixels to the image.
void Magick::Pixels::sync ( void )
{
  if( !SyncCacheViewAuthenticPixels( _view, &_exception ) )
    throwException(  _exception );
}
    
// Allocate a pixel view region to store image pixels as defined
// by the region rectangle.  This area is subsequently transferred
// from the pixel view to the image via 'sync'.
Magick::PixelPacket* Magick::Pixels::set ( const int x_,
					   const int y_,
					   const unsigned int columns_,
					   const unsigned int rows_ )
{
  _x = x_;
  _y = y_;
  _columns = columns_;
  _rows = rows_;

  PixelPacket* pixels = QueueCacheViewAuthenticPixels( _view, static_cast(x_), static_cast(y_),
                                      columns_, rows_,  &_exception );
  if ( !pixels )
    throwException( _exception );
  
  return pixels;
}

// Return pixel colormap index array
Magick::IndexPacket* Magick::Pixels::indexes ( void )
{
  IndexPacket* pixel_indexes = GetCacheViewAuthenticIndexQueue( _view );

  if ( !pixel_indexes )
    _image.throwImageException();

  return pixel_indexes;
}

--- NEW FILE: Makefile.am ---
#
# Makefile for Magick++ library
#
# Copyright Bob Friesenhahn, 1999, 2000, 2001, 2002, 2003
#
AUTOMAKE_OPTIONS = 1.8 nostdinc

SUBDIRS = Magick++

AM_CPPFLAGS = -I$(top_builddir) -I$(srcdir) -I$(top_srcdir)

includedir = @includedir@
pkgdatadir = $(datadir)/Magick++
pkglibdir = $(libdir)/Magick++
pkgincludedir = $(includedir)/Magick++

lib_LTLIBRARIES    = libMagick++.la

LIBRARY_CURRENT    = @LIBRARY_CURRENT@
LIBRARY_REVISION   = @LIBRARY_REVISION@
LIBRARY_AGE        = @LIBRARY_AGE@

libMagick___la_SOURCES = \
	Blob.cpp BlobRef.cpp CoderInfo.cpp Color.cpp Drawable.cpp \
	Exception.cpp Functions.cpp Geometry.cpp Image.cpp ImageRef.cpp \
	Montage.cpp Options.cpp Pixels.cpp STL.cpp Thread.cpp TypeMetric.cpp

libMagick___la_LDFLAGS = \
	-version-info $(LIBRARY_CURRENT):$(LIBRARY_REVISION):$(LIBRARY_AGE)

libMagick___la_LIBADD = $(top_builddir)/wand/libMagickWand.la $(top_builddir)/magick/libMagickCore.la

include_HEADERS = Magick++.h

EXTRA_DIST = ImageMagick++.pc.in

AM_LDFLAGS = @LDFLAGS@ $(LIBSTDCLDFLAGS)

# Pkgconfig directory
pkgconfigdir = $(libdir)/pkgconfig

# Files to install in Pkgconfig directory
pkgconfig_DATA = ImageMagick++.pc

--- NEW FILE: Color.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2000, 2001, 2002, 2003
//
// Color Implementation
//

#define MAGICKCORE_IMPLEMENTATION
#define MAGICK_PLUSPLUS_IMPLEMENTATION 1

#include "Magick++/Include.h"
#include 

using namespace std;

#include "Magick++/Color.h"
#include "Magick++/Exception.h"

//
// Color operator fuctions
//
int Magick::operator == ( const Magick::Color& left_,
			  const Magick::Color& right_ )
{
  return ( ( left_.isValid()      == right_.isValid() ) && 
	   ( left_.redQuantum()   == right_.redQuantum() ) &&
	   ( left_.greenQuantum() == right_.greenQuantum() ) &&
	   ( left_.blueQuantum()  == right_.blueQuantum() )
	  );
}
int Magick::operator != ( const Magick::Color& left_,
			  const Magick::Color& right_ )
{
  return ( ! (left_ == right_) );
}
int Magick::operator >  ( const Magick::Color& left_,
			  const Magick::Color& right_ )
{
  return ( !( left_ < right_ ) && ( left_ != right_ ) );
}
// Compare color intensities (similar to ImageMagick Intensity macro)
// If intensities match, discriminate based on priority green, red,
// & then blue.
int Magick::operator <  ( const Magick::Color& left_,
			  const Magick::Color& right_ )
{
  double left_intensity=left_.intensity();
  double right_intensity=right_.intensity();
  return (
          (left_intensity < right_intensity)
          || (
              (left_intensity == right_intensity)
              && (
                  (left_.greenQuantum() < right_.greenQuantum()) ||
                  (left_.redQuantum() < right_.redQuantum()) ||
                  (left_.blueQuantum() < right_.blueQuantum())
                  )
              )
	  );
}
int Magick::operator >= ( const Magick::Color& left_,
			  const Magick::Color& right_ )
{
  return ( ( left_ > right_ ) || ( left_ == right_ ) );
}
int Magick::operator <= ( const Magick::Color& left_,
			  const Magick::Color& right_ )
{
  return ( ( left_ < right_ ) || ( left_ == right_ ) );
}

//
// Color Implementation
//

// Default constructor
Magick::Color::Color ( void )
  : _pixel(new PixelPacket),
    _pixelOwn(true),
    _isValid(false),
    _pixelType(RGBPixel)
{
  initPixel();
}

// Construct from RGB
Magick::Color::Color ( Quantum red_,
                       Quantum green_,
                       Quantum blue_ )
  : _pixel(new PixelPacket),
    _pixelOwn(true),
    _isValid(true),
    _pixelType(RGBPixel)
{
  redQuantum   ( red_   );
  greenQuantum ( green_ );
  blueQuantum  ( blue_  );
  alphaQuantum ( OpaqueOpacity );
}

// Construct from RGBA
Magick::Color::Color ( Quantum red_,
                       Quantum green_,
                       Quantum blue_,
                       Quantum alpha_ )
  : _pixel(new PixelPacket),
    _pixelOwn(true),
    _isValid(true),
    _pixelType(RGBAPixel)
{
  redQuantum   ( red_   );
  greenQuantum ( green_ );
  blueQuantum  ( blue_  );
  alphaQuantum ( alpha_ );
}

// Copy constructor
Magick::Color::Color ( const Magick::Color & color_ )
  : _pixel( new PixelPacket ),
    _pixelOwn( true ),
    _isValid( color_._isValid ),
    _pixelType( color_._pixelType )
{
  *_pixel    = *color_._pixel;
}

// Construct from color expressed as C++ string
Magick::Color::Color ( const std::string &x11color_ )
  : _pixel(new PixelPacket),
    _pixelOwn(true),
    _isValid(true),
    _pixelType(RGBPixel)
{
  initPixel();

  // Use operator = implementation
  *this = x11color_;
}

// Construct from color expressed as C string
Magick::Color::Color ( const char * x11color_ )
  : _pixel(new PixelPacket),
    _pixelOwn(true),
    _isValid(true),
    _pixelType(RGBPixel)
{
  initPixel();

  // Use operator = implementation
  *this = x11color_;
}

// Construct color via ImageMagick PixelPacket
Magick::Color::Color ( const PixelPacket &color_ )
  : _pixel(new PixelPacket),
    _pixelOwn(true),	    // We allocated this pixel
    _isValid(true),
    _pixelType(RGBPixel)  // RGB pixel by default
{
  *_pixel = color_;

  if ( color_.opacity != OpaqueOpacity )
    _pixelType = RGBAPixel;
}

// Protected constructor to construct with PixelPacket*
// Used to point Color at a pixel.
Magick::Color::Color ( PixelPacket* rep_, PixelType pixelType_  )
  : _pixel(rep_),
    _pixelOwn(false),
    _isValid(true),
    _pixelType(pixelType_)
{
}

// Destructor
Magick::Color::~Color( void )
{
  if ( _pixelOwn )
    delete _pixel;
  _pixel=0;
}

// Assignment operator
Magick::Color& Magick::Color::operator = ( const Magick::Color& color_ )
{
  // If not being set to ourself
  if ( this != &color_ )
    {
      // Copy pixel value
      *_pixel = *color_._pixel;

      // Validity
      _isValid =  color_._isValid;

      // Copy pixel type
      _pixelType = color_._pixelType;
    }
  return *this;
}

// Set color via X11 color specification string
const Magick::Color& Magick::Color::operator = ( const std::string &x11color_ )
{
  initPixel();
  PixelPacket target_color;
  ExceptionInfo exception;
  GetExceptionInfo( &exception );
  if ( QueryColorDatabase( x11color_.c_str(), &target_color, &exception ) )
    {
      redQuantum( target_color.red );
      greenQuantum( target_color.green );
      blueQuantum( target_color.blue );
      alphaQuantum( target_color.opacity );

      if ( target_color.opacity > OpaqueOpacity )
	_pixelType = RGBAPixel;
      else
	_pixelType = RGBPixel;
    }
  else
    {
      _isValid = false;
      throwException(exception);
    }
  (void) DestroyExceptionInfo( &exception );

  return *this;
}

// Set color via X11 color specification C string
const Magick::Color& Magick::Color::operator = ( const char * x11color_ )
{
  *this = std::string(x11color_);
  return *this;
}

// Return X11 color specification string
Magick::Color::operator std::string() const
{
  if ( !isValid() )
    return std::string("none");

  char colorbuf[MaxTextExtent];

  MagickPixelPacket
    pixel;

  pixel.colorspace=RGBColorspace;
  pixel.matte=_pixelType == RGBAPixel ? MagickTrue : MagickFalse;
  pixel.depth=MAGICKCORE_QUANTUM_DEPTH;
  pixel.red=_pixel->red;
  pixel.green=_pixel->green;
  pixel.blue=_pixel->blue;
  pixel.opacity=_pixel->opacity;
  GetColorTuple( &pixel, MagickTrue, colorbuf );

  return std::string(colorbuf);
}

// Set color via ImageMagick PixelPacket
const Magick::Color& Magick::Color::operator= ( const MagickCore::PixelPacket &color_ )
{
  *_pixel = color_;
  if ( color_.opacity != OpaqueOpacity )
    _pixelType = RGBAPixel;
  else
    _pixelType = RGBPixel;
  return *this;
}

// Set pixel
// Used to point Color at a pixel in an image
void Magick::Color::pixel ( PixelPacket* rep_, PixelType pixelType_ )
{
  if ( _pixelOwn )
    delete _pixel;
  _pixel = rep_;
  _pixelOwn = false;
  _isValid = true;
  _pixelType = pixelType_;
}

// Does object contain valid color?
bool Magick::Color::isValid ( void ) const
{
  return( _isValid );
}
void Magick::Color::isValid ( bool valid_ )
{
  if ( (valid_ && isValid()) || (!valid_ && !isValid()) )
    return;

  if ( !_pixelOwn )
    {
      _pixel = new PixelPacket;
      _pixelOwn = true;
    }

  _isValid=valid_;

  initPixel();
}

//
// ColorHSL Implementation
//

Magick::ColorHSL::ColorHSL ( double hue_,
			     double saturation_,
			     double luminosity_ )
  : Color ()
{
  Quantum red, green, blue;

  ConvertHSLToRGB ( hue_,
		 saturation_,
		 luminosity_,
		 &red,
		 &green,
		 &blue );

  redQuantum   ( red );
  greenQuantum ( green );
  blueQuantum  ( blue );
  alphaQuantum ( OpaqueOpacity );
}

// Null constructor
Magick::ColorHSL::ColorHSL ( )
  : Color ()
{
}

// Copy constructor from base class
Magick::ColorHSL::ColorHSL ( const Magick::Color & color_ )
  : Color( color_ )
{
}

// Destructor
Magick::ColorHSL::~ColorHSL ( )
{
  // Nothing to do
}

void Magick::ColorHSL::hue ( double hue_ )
{
  double hue_val, saturation_val, luminosity_val;
  ConvertRGBToHSL ( redQuantum(),
		 greenQuantum(),
		 blueQuantum(),
		 &hue_val,
		 &saturation_val,
		 &luminosity_val );

  hue_val = hue_;

  Quantum red, green, blue;
  ConvertHSLToRGB ( hue_val,
		 saturation_val,
		 luminosity_val,
		 &red,
		 &green,
		 &blue
		 );

  redQuantum   ( red );
  greenQuantum ( green );
  blueQuantum  ( blue );
}

double Magick::ColorHSL::hue ( void ) const
{
  double hue_val, saturation_val, luminosity_val;
  ConvertRGBToHSL ( redQuantum(),
		 greenQuantum(),
		 blueQuantum(),
		 &hue_val,
		 &saturation_val,
		 &luminosity_val );
  return hue_val;
}

void Magick::ColorHSL::saturation ( double saturation_ )
{
  double hue_val, saturation_val, luminosity_val;
  ConvertRGBToHSL ( redQuantum(),
		 greenQuantum(),
		 blueQuantum(),
		 &hue_val,
		 &saturation_val,
		 &luminosity_val );
  
  saturation_val = saturation_;
  
  Quantum red, green, blue;
  ConvertHSLToRGB ( hue_val,
		 saturation_val,
		 luminosity_val,
		 &red,
		 &green,
		 &blue
		 );

  redQuantum   ( red );
  greenQuantum ( green );
  blueQuantum  ( blue );
}

double Magick::ColorHSL::saturation ( void ) const
{
  double hue_val, saturation_val, luminosity_val;
  ConvertRGBToHSL ( redQuantum(),
		 greenQuantum(),
		 blueQuantum(),
		 &hue_val,
		 &saturation_val,
		 &luminosity_val );
  return saturation_val;
}

void Magick::ColorHSL::luminosity ( double luminosity_ )
{
  double hue_val, saturation_val, luminosity_val;
  ConvertRGBToHSL ( redQuantum(),
		 greenQuantum(),
		 blueQuantum(),
		 &hue_val,
		 &saturation_val,
		 &luminosity_val );
  
  luminosity_val = luminosity_;
  
  Quantum red, green, blue;
  ConvertHSLToRGB ( hue_val,
		 saturation_val,
		 luminosity_val,
		 &red,
		 &green,
		 &blue
		 );
  
  redQuantum   ( red );
  greenQuantum ( green );
  blueQuantum  ( blue );
}

double Magick::ColorHSL::luminosity ( void ) const
{
  double hue_val, saturation_val, luminosity_val;
  ConvertRGBToHSL ( redQuantum(),
		 greenQuantum(),
		 blueQuantum(),
		 &hue_val,
		 &saturation_val,
		 &luminosity_val );
  return luminosity_val;
}

// Assignment from base class
Magick::ColorHSL& Magick::ColorHSL::operator = ( const Magick::Color& color_ )
{
  *static_cast(this) = color_;
  return *this;
}

//
// ColorGray Implementation
//
Magick::ColorGray::ColorGray ( double shade_ )
  : Color ( scaleDoubleToQuantum( shade_ ),
	    scaleDoubleToQuantum( shade_ ),
	    scaleDoubleToQuantum( shade_ ) )
{
  alphaQuantum ( OpaqueOpacity );
}

// Null constructor
Magick::ColorGray::ColorGray ( void )
  : Color ()
{
}

// Copy constructor from base class
Magick::ColorGray::ColorGray ( const Magick::Color & color_ )
  : Color( color_ )
{
}

// Destructor
Magick::ColorGray::~ColorGray ()
{
  // Nothing to do
}

void Magick::ColorGray::shade ( double shade_ )
{
  Quantum gray = scaleDoubleToQuantum( shade_ );
  redQuantum   ( gray );
  greenQuantum ( gray );
  blueQuantum  ( gray );
}

double Magick::ColorGray::shade ( void ) const
{
  return scaleQuantumToDouble ( greenQuantum() );
}

// Assignment from base class
Magick::ColorGray& Magick::ColorGray::operator = ( const Magick::Color& color_ )
{
  *static_cast(this) = color_;
  return *this;
}

//
// ColorMono Implementation
//
Magick::ColorMono::ColorMono ( bool mono_  )
  : Color ( ( mono_ ? QuantumRange : 0 ),
	    ( mono_ ? QuantumRange : 0 ),
	    ( mono_ ? QuantumRange : 0 ) )
{
  alphaQuantum ( OpaqueOpacity );
}

// Null constructor
Magick::ColorMono::ColorMono ( void )
  : Color ()
{
}

// Copy constructor from base class
Magick::ColorMono::ColorMono ( const Magick::Color & color_ )
  : Color( color_ )
{
}

// Destructor
Magick::ColorMono::~ColorMono ()
{
  // Nothing to do
}

void Magick::ColorMono::mono ( bool mono_ )
{
  redQuantum   ( mono_ ? QuantumRange : 0 );
  greenQuantum ( mono_ ? QuantumRange : 0 );
  blueQuantum  ( mono_ ? QuantumRange : 0 );
}

bool Magick::ColorMono::mono ( void ) const
{
  if ( greenQuantum() )
    return true;
  else
    return false;
}

// Assignment from base class
Magick::ColorMono& Magick::ColorMono::operator = ( const Magick::Color& color_ )
{
  *static_cast(this) = color_;
  return *this;
}

//
// ColorRGB Implementation
//

// Construct from red, green, and blue, components
Magick::ColorRGB::ColorRGB ( double red_,
			     double green_,
			     double blue_ )
  : Color ( scaleDoubleToQuantum(red_),
	    scaleDoubleToQuantum(green_),
	    scaleDoubleToQuantum(blue_) )
{
  alphaQuantum ( OpaqueOpacity );
}
// Null constructor
Magick::ColorRGB::ColorRGB ( void )
  : Color ()
{
}
// Copy constructor from base class
Magick::ColorRGB::ColorRGB ( const Magick::Color & color_ )
  : Color( color_ )
{
}
// Destructor
Magick::ColorRGB::~ColorRGB ( void )
{
  // Nothing to do
}

// Assignment from base class
Magick::ColorRGB& Magick::ColorRGB::operator = ( const Magick::Color& color_ )
{
  *static_cast(this) = color_;
  return *this;
}

//
// ColorYUV Implementation
//

//           R = Y          +1.13980*V
//           G = Y-0.39380*U-0.58050*V
//           B = Y+2.02790*U
//
//         U and V, normally -0.5 through 0.5, must be normalized to the range 0
//         through QuantumRange.
//
//           Y =  0.29900*R+0.58700*G+0.11400*B
//           U = -0.14740*R-0.28950*G+0.43690*B
//           V =  0.61500*R-0.51500*G-0.10000*B
//
//         U and V, normally -0.5 through 0.5, are normalized to the range 0
//         through QuantumRange.  Note that U = 0.493*(B-Y), V = 0.877*(R-Y).
//

// Construct from color components
Magick::ColorYUV::ColorYUV ( double y_,
			     double u_,
			     double v_ )
  : Color ( scaleDoubleToQuantum(y_ + 1.13980 * v_ ),
	    scaleDoubleToQuantum(y_ - (0.39380 * u_) - (0.58050 * v_) ),
	    scaleDoubleToQuantum(y_ + 2.02790 * u_ ) )
{
  alphaQuantum ( OpaqueOpacity );
}
// Null constructor
Magick::ColorYUV::ColorYUV ( void )
  : Color ()
{
}
// Copy constructor from base class
Magick::ColorYUV::ColorYUV ( const Magick::Color & color_ )
  : Color( color_ )
{
}
// Destructor
Magick::ColorYUV::~ColorYUV ( void )
{
  // Nothing to do
}

void Magick::ColorYUV::u ( double u_ )
{
  double V = v();
  double Y = y();

  redQuantum   ( scaleDoubleToQuantum( Y + 1.13980 * V ) );
  greenQuantum ( scaleDoubleToQuantum( Y - (0.39380 * u_) - (0.58050 * V) ) );
  blueQuantum  ( scaleDoubleToQuantum( Y + 2.02790 * u_ ) );
}

double Magick::ColorYUV::u ( void ) const
{
  return scaleQuantumToDouble( (-0.14740 * redQuantum()) - (0.28950 *
			       greenQuantum()) + (0.43690 * blueQuantum()) );
}

void Magick::ColorYUV::v ( double v_ )
{
  double U = u();
  double Y = y();

  redQuantum   ( scaleDoubleToQuantum( Y + 1.13980 * v_ ) );
  greenQuantum ( scaleDoubleToQuantum( Y - (0.39380 * U) - (0.58050 * v_) ) );
  blueQuantum  ( scaleDoubleToQuantum( Y + 2.02790 * U ) );
}

double Magick::ColorYUV::v ( void ) const
{
  return scaleQuantumToDouble((0.61500 * redQuantum()) -
                              (0.51500 * greenQuantum()) -
                              (0.10000 * blueQuantum()));
}

void Magick::ColorYUV::y ( double y_ )
{
  double U = u();
  double V = v();

  redQuantum   ( scaleDoubleToQuantum( y_ + 1.13980 * V ) );
  greenQuantum ( scaleDoubleToQuantum( y_ - (0.39380 * U) - (0.58050 * V) ) );
  blueQuantum  ( scaleDoubleToQuantum( y_ + 2.02790 * U ) );
}

double Magick::ColorYUV::y ( void ) const
{
  return scaleQuantumToDouble((0.29900 * redQuantum()) + 
                              (0.58700 * greenQuantum()) +
                              (0.11400 * blueQuantum()));
}

// Assignment from base class
Magick::ColorYUV& Magick::ColorYUV::operator = ( const Magick::Color& color_ )
{
  *static_cast(this) = color_;
  return *this;
}

--- NEW FILE: Magick++.h ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2000
//
// Simplified includes for Magick++.
// Inclusion of this header is sufficient to use all Magick++ APIs.
//
#ifndef MagickPlusPlus_Header
#include 
#include 
#include 
#include 
#define MagickPlusPlus_Header
#endif // MagickPlusPlus_Header

--- NEW FILE: ImageRef.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2000, 2001, 2002
//
// Implementation of ImageRef
//
// This is an internal implementation class.
//

#define MAGICKCORE_IMPLEMENTATION  1
#define MAGICK_PLUSPLUS_IMPLEMENTATION 1

#include "Magick++/ImageRef.h"
#include "Magick++/Exception.h"
#include "Magick++/Options.h"

// Construct with an image and default options
Magick::ImageRef::ImageRef ( MagickCore::Image * image_ )
  : _image(image_),
    _options(new Options),
    _id(-1),
    _refCount(1),
    _mutexLock()
{
}

// Construct with an image and options
// Inserts Image* in image, but copies Options into image.
Magick::ImageRef::ImageRef ( MagickCore::Image * image_,
			     const Options * options_ )
  : _image(image_),
    _options(0),
    _id(-1),
    _refCount(1),
    _mutexLock()
{
  _options = new Options( *options_ );
}

// Default constructor
Magick::ImageRef::ImageRef ( void )
  : _image(0),
    _options(new Options),
    _id(-1),
    _refCount(1),
    _mutexLock()
{
  // Allocate default image
  _image = AcquireImage( _options->imageInfo() );

  // Test for error and throw exception (like throwImageException())
  throwException(_image->exception);
}

// Destructor
Magick::ImageRef::~ImageRef( void )
{
  // Unregister image (if still registered)
  if( _id > -1 )
    {
      char id[MaxTextExtent];
      sprintf(id,"%ld",_id);
      DeleteImageRegistry( id );
      _id=-1;
    }

  // Deallocate image
  if ( _image )
    {
      DestroyImageList( _image );
      _image = 0;
    }

  // Deallocate image options
  delete _options;
  _options = 0;
}

// Assign image to reference
void Magick::ImageRef::image ( MagickCore::Image * image_ )
{
  if(_image)
    DestroyImageList( _image );
  _image = image_;
}

// Assign options to reference
void  Magick::ImageRef::options ( Magick::Options * options_ )
{
  delete _options;
  _options = options_;
}

// Assign registration id to reference
void Magick::ImageRef::id ( const long id_ )
{
  if( _id > -1 )
    {
      char id[MaxTextExtent];
      sprintf(id,"%ld",_id);
      DeleteImageRegistry( id );
    }
  _id = id_;
}

--- NEW FILE: Magick++.pc.in ---
prefix=@prefix@
exec_prefix=@exec_prefix@
libdir=@libdir@
includedir=@includedir@/ImageMagick


Name: Magick++
Version: @PACKAGE_VERSION@
Description: Magick++ - C++ API for ImageMagick
Requires: ImageMagick
Libs: -L${libdir} -lMagick++
Cflags: -I${includedir}

--- NEW FILE: ImageMagick++.pc ---
prefix=/usr/local
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include/ImageMagick


Name: ImageMagick++
Version: 6.5.4
Description: Magick++ - C++ API for ImageMagick
Requires: ImageMagick
Libs: -L${libdir} -lMagick++
Cflags: -I${includedir}

--- NEW FILE: Drawable.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2000, 2001, 2002, 2003
//
// Implementation of Drawable (Graphic objects)
//

#define MAGICKCORE_IMPLEMENTATION  1
#define MAGICK_PLUSPLUS_IMPLEMENTATION 1
#define MAGICK_DRAWABLE_IMPLEMENTATION

#include "Magick++/Include.h"
#include 
#include 

#include "Magick++/Drawable.h"
#include "Magick++/Image.h"

using namespace std;
[...2106 lines suppressed...]
{
  for( CoordinateList::const_iterator p = _coordinates.begin();
       p != _coordinates.end(); p++ )
    {
      DrawPathMoveToRelative( context_, p->x(), p->y() );
    }
}
Magick::VPathBase* Magick::PathMovetoRel::copy() const
{
  return new PathMovetoRel(*this);
}

#if defined(EXPLICIT_TEMPLATE_INSTANTIATION)
// template class std::list;
// template class std::list;
// template class std::list;
// template class std::list;
// template class std::list;
// template class std::list;
#endif

--- NEW FILE: Options.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2000, 2001, 2002, 2003
//
// Implementation of Options
//
// A wrapper around DrawInfo, ImageInfo, and QuantizeInfo
//

#define MAGICKCORE_IMPLEMENTATION  1
#define MAGICK_PLUSPLUS_IMPLEMENTATION 1

#include "Magick++/Include.h"
#include 
#include 
#include 
#include 
#include "Magick++/Options.h"
#include "Magick++/Functions.h"
#include "Magick++/Exception.h"

#define MagickPI  3.14159265358979323846264338327950288419716939937510
#define DegreesToRadians(x)  (MagickPI*(x)/180.0)

// Constructor
Magick::Options::Options( void )
  : _imageInfo(static_cast(AcquireMagickMemory(sizeof(ImageInfo)))),
    _quantizeInfo(static_cast(AcquireMagickMemory(sizeof(QuantizeInfo)))),
    _drawInfo(static_cast(AcquireMagickMemory( sizeof(DrawInfo))))
{
  // Initialize image info with defaults
  GetImageInfo( _imageInfo );
  
  // Initialize quantization info
  GetQuantizeInfo( _quantizeInfo );

  // Initialize drawing info
  GetDrawInfo( _imageInfo, _drawInfo );
}

// Copy constructor
Magick::Options::Options( const Magick::Options& options_ )
  : _imageInfo(CloneImageInfo( options_._imageInfo )),
    _quantizeInfo(CloneQuantizeInfo(options_._quantizeInfo)),
    _drawInfo(CloneDrawInfo(_imageInfo, options_._drawInfo))
{
}

// Construct using raw structures
Magick::Options::Options( const MagickCore::ImageInfo* imageInfo_,
                          const MagickCore::QuantizeInfo* quantizeInfo_,
                          const MagickCore::DrawInfo* drawInfo_ )
: _imageInfo(0),
  _quantizeInfo(0),
  _drawInfo(0)
{
  _imageInfo = CloneImageInfo(imageInfo_);
  _quantizeInfo = CloneQuantizeInfo(quantizeInfo_);
  _drawInfo = CloneDrawInfo(imageInfo_,drawInfo_);
}

// Destructor
Magick::Options::~Options()
{
  // Destroy image info
   _imageInfo =DestroyImageInfo( _imageInfo );
  _imageInfo=0;

  // Destroy quantization info
   _quantizeInfo =DestroyQuantizeInfo( _quantizeInfo );
  _quantizeInfo=0;

  // Destroy drawing info
   _drawInfo =DestroyDrawInfo( _drawInfo );
  _drawInfo=0;
}

/*
 * Methods for setting image attributes
 *
 */

// Anti-alias Postscript and TrueType fonts (default true)
void Magick::Options::antiAlias( bool flag_ )
{
  _drawInfo->text_antialias = static_cast
    (flag_ ? MagickTrue : MagickFalse);
}
bool Magick::Options::antiAlias( void ) const
{
  return static_cast(_drawInfo->text_antialias);
}

void Magick::Options::adjoin ( bool flag_ )
{
  _imageInfo->adjoin = static_cast
    (flag_ ? MagickTrue : MagickFalse);
}
bool Magick::Options::adjoin ( void ) const
{
  return static_cast(_imageInfo->adjoin);
}

void Magick::Options::backgroundColor ( const Magick::Color &color_ )
{
  _imageInfo->background_color = color_;
}
Magick::Color Magick::Options::backgroundColor ( void ) const
{
  return Magick::Color( _imageInfo->background_color );
}

void Magick::Options::backgroundTexture ( const std::string &backgroundTexture_ )
{
  if ( backgroundTexture_.length() == 0 )
    _imageInfo->texture=(char *) RelinquishMagickMemory(_imageInfo->texture);
  else
    Magick::CloneString( &_imageInfo->texture, backgroundTexture_ );
}
std::string Magick::Options::backgroundTexture ( void ) const
{
  if ( _imageInfo->texture )
    return std::string( _imageInfo->texture );
  else
    return std::string();
}

void Magick::Options::borderColor ( const Color &color_ )
{
  _imageInfo->border_color = color_;
  _drawInfo->border_color = color_;
}
Magick::Color Magick::Options::borderColor ( void ) const
{
  return Magick::Color( _imageInfo->border_color );
}

// Text bounding-box base color
void Magick::Options::boxColor ( const Magick::Color &boxColor_ )
{
  _drawInfo->undercolor = boxColor_;
}
Magick::Color Magick::Options::boxColor ( void ) const
{
  return Magick::Color( _drawInfo->undercolor );
}

void Magick::Options::colorspaceType ( Magick::ColorspaceType colorspace_ )
{
  _imageInfo->colorspace = colorspace_;
}
Magick::ColorspaceType Magick::Options::colorspaceType ( void ) const
{
  return static_cast(_imageInfo->colorspace);
}

void Magick::Options::compressType ( CompressionType compressType_ )
{
  _imageInfo->compression = compressType_;
}
Magick::CompressionType Magick::Options::compressType ( void ) const
{
  return static_cast(_imageInfo->compression);
}

void Magick::Options::colorFuzz ( double fuzz_ )
{
  _imageInfo->fuzz = fuzz_;
}
double Magick::Options::colorFuzz ( void ) const
{
  return _imageInfo->fuzz;
}

// Enable printing of debug messages from ImageMagick
void Magick::Options::debug ( bool flag_ )
{
  if(flag_)
    {
      SetLogEventMask("All");
    }
  else
    {
      SetLogEventMask("None");
    }
}
bool Magick::Options::debug ( void ) const
{
  if( IsEventLogging() )
    {
      return true;
    }
  return false;
}

void Magick::Options::density ( const Magick::Geometry &density_ )
{
  if ( !density_.isValid() )
    _imageInfo->density=(char *) RelinquishMagickMemory(_imageInfo->density);
  else
    Magick::CloneString( &_imageInfo->density, density_ );
}
Magick::Geometry Magick::Options::density ( void ) const
{
  if ( _imageInfo->density )
    return Geometry( _imageInfo->density );

  return Geometry();
}

void Magick::Options::depth ( unsigned int depth_ )
{
  _imageInfo->depth = depth_;
}
unsigned int Magick::Options::depth ( void ) const
{
  return _imageInfo->depth;
}

// Endianness (little like Intel or big like SPARC) for image
// formats which support endian-specific options.
void Magick::Options::endian ( Magick::EndianType endian_ )
{
  _imageInfo->endian = endian_;
}
Magick::EndianType Magick::Options::endian ( void ) const
{
  return _imageInfo->endian;
}

void Magick::Options::fileName ( const std::string &fileName_ )
{
  fileName_.copy( _imageInfo->filename, MaxTextExtent-1 );
  _imageInfo->filename[ fileName_.length() ] = 0;
}
std::string Magick::Options::fileName ( void ) const
{
  return std::string( _imageInfo->filename );
}

// Color to use when drawing inside an object
void Magick::Options::fillColor ( const Magick::Color &fillColor_ )
{
  _drawInfo->fill = fillColor_;
  if (fillColor_ == Magick::Color())
    fillPattern((const MagickCore::Image*) NULL);
}
Magick::Color Magick::Options::fillColor ( void ) const
{
  return _drawInfo->fill;
}
// Pattern image to use when filling objects
void Magick::Options::fillPattern ( const MagickCore::Image *fillPattern_ )
{
  if ( _drawInfo->fill_pattern )
    {
      DestroyImageList( _drawInfo->fill_pattern );
      _drawInfo->fill_pattern = 0;
    }
  if ( fillPattern_ )
    {
      ExceptionInfo exceptionInfo;
      GetExceptionInfo( &exceptionInfo );
      _drawInfo->fill_pattern =
	CloneImage( const_cast(fillPattern_),
		    0,
		    0,
		    static_cast(MagickTrue),
		    &exceptionInfo );
      throwException( exceptionInfo );
      (void) DestroyExceptionInfo( &exceptionInfo );
    }
}
const MagickCore::Image* Magick::Options::fillPattern ( void  ) const
{
  return _drawInfo->fill_pattern;
}

// Rule to use when filling drawn objects
void Magick::Options::fillRule ( const Magick::FillRule &fillRule_ )
{
  _drawInfo->fill_rule = fillRule_;
}
Magick::FillRule Magick::Options::fillRule ( void ) const
{
  return _drawInfo->fill_rule;
}

void Magick::Options::font ( const std::string &font_ )
{
  if ( font_.length() == 0 )
    {
      _imageInfo->font=(char *) RelinquishMagickMemory(_imageInfo->font);
      _drawInfo->font=(char *) RelinquishMagickMemory(_drawInfo->font);
    }
  else
    {
      Magick::CloneString( &_imageInfo->font, font_ );
      Magick::CloneString( &_drawInfo->font, font_ );
    }
}
std::string Magick::Options::font ( void ) const
{
  if ( _imageInfo->font )
    return std::string( _imageInfo->font );
  
  return std::string();
}

void Magick::Options::fontPointsize ( double pointSize_ )
{
  _imageInfo->pointsize = pointSize_;
  _drawInfo->pointsize = pointSize_;
}
double Magick::Options::fontPointsize ( void ) const
{
  return _imageInfo->pointsize;
}

std::string Magick::Options::format ( void ) const
{
  ExceptionInfo exception;

  const MagickInfo * magick_info = 0;
  GetExceptionInfo(&exception);
  if ( *_imageInfo->magick != '\0' )
    magick_info = GetMagickInfo( _imageInfo->magick , &exception);
  throwException( exception );
  (void) DestroyExceptionInfo( &exception );
  
  if (( magick_info != 0 ) && 
      ( *magick_info->description != '\0' ))
    return std::string( magick_info->description );
  
  return std::string();
}

void Magick::Options::interlaceType ( Magick::InterlaceType interlace_ )
{
  _imageInfo->interlace = interlace_;
}
Magick::InterlaceType Magick::Options::interlaceType ( void ) const
{
  return static_cast(_imageInfo->interlace);
}

void Magick::Options::magick ( const std::string &magick_ )
{
  ExceptionInfo exception;

  FormatMagickString( _imageInfo->filename, MaxTextExtent, "%.1024s:", magick_.c_str() );
  GetExceptionInfo(&exception);
  SetImageInfo( _imageInfo, MagickTrue, &exception);
  if ( *_imageInfo->magick == '\0' )
    throwExceptionExplicit( OptionWarning,
			    "Unrecognized image format",
			    magick_.c_str() );
  (void) DestroyExceptionInfo( &exception );
}
std::string Magick::Options::magick ( void ) const
{
  if ( _imageInfo->magick && *_imageInfo->magick )
    return std::string( _imageInfo->magick );
  
  return std::string();
}

void Magick::Options::matteColor ( const Magick::Color &matteColor_ )
{
  _imageInfo->matte_color = matteColor_;
}
Magick::Color Magick::Options::matteColor ( void ) const
{
  return Magick::Color( _imageInfo->matte_color );
}

void Magick::Options::monochrome ( bool monochromeFlag_ )
{
  _imageInfo->monochrome = (MagickBooleanType) monochromeFlag_;
}
bool Magick::Options::monochrome ( void ) const
{
  return static_cast(_imageInfo->monochrome);
}

void Magick::Options::page ( const Magick::Geometry &pageSize_ )
{
  if ( !pageSize_.isValid() )
    _imageInfo->page=(char *) RelinquishMagickMemory(_imageInfo->page);
  else
    Magick::CloneString( &_imageInfo->page, pageSize_ );
}
Magick::Geometry Magick::Options::page ( void ) const
{
  if ( _imageInfo->page )
    return Geometry( _imageInfo->page );

    return Geometry();
}

void Magick::Options::quality ( unsigned int quality_ )
{
  _imageInfo->quality = quality_;
}
unsigned int Magick::Options::quality ( void ) const
{
  return _imageInfo->quality;
}

void Magick::Options::quantizeColors ( unsigned int colors_ )
{
  _quantizeInfo->number_colors = colors_;
}
unsigned int Magick::Options::quantizeColors ( void ) const
{
  return _quantizeInfo->number_colors;
}

void Magick::Options::quantizeColorSpace ( Magick::ColorspaceType colorSpace_ )
{
  _quantizeInfo->colorspace = colorSpace_;
}
Magick::ColorspaceType Magick::Options::quantizeColorSpace ( void ) const
{
  return static_cast(_quantizeInfo->colorspace);
}

void Magick::Options::quantizeDither ( bool ditherFlag_ )
{
  _imageInfo->dither = (MagickBooleanType) ditherFlag_;
  _quantizeInfo->dither = (MagickBooleanType) ditherFlag_;
}
bool Magick::Options::quantizeDither ( void ) const
{
  return static_cast(_imageInfo->dither);
}

void Magick::Options::quantizeTreeDepth ( unsigned int treeDepth_ )
{
  _quantizeInfo->tree_depth = treeDepth_;
}
unsigned int Magick::Options::quantizeTreeDepth ( void ) const
{
  return _quantizeInfo->tree_depth;
}

void Magick::Options::resolutionUnits ( Magick::ResolutionType resolutionUnits_ )
{
  _imageInfo->units = resolutionUnits_;
}
Magick::ResolutionType Magick::Options::resolutionUnits ( void ) const
{
  return static_cast(_imageInfo->units);
}

void Magick::Options::samplingFactor ( const std::string &samplingFactor_ )
{
  if ( samplingFactor_.length() == 0 )
    _imageInfo->sampling_factor=(char *) RelinquishMagickMemory(_imageInfo->sampling_factor);
  else
    Magick::CloneString( &_imageInfo->sampling_factor, samplingFactor_ );
}
std::string Magick::Options::samplingFactor ( void ) const
{
  if ( _imageInfo->sampling_factor )
    return std::string( _imageInfo->sampling_factor );

  return std::string();
}

void Magick::Options::size ( const Geometry &geometry_ )
{
  _imageInfo->size=(char *) RelinquishMagickMemory(_imageInfo->size);

  if ( geometry_.isValid() )
    Magick::CloneString( &_imageInfo->size, geometry_ );
}
Magick::Geometry Magick::Options::size ( void ) const
{
  if ( _imageInfo->size )
    return Geometry( _imageInfo->size );

  return Geometry();
}

void Magick::Options::strokeAntiAlias( bool flag_ )
{
  flag_ ? _drawInfo->stroke_antialias=MagickTrue : _drawInfo->stroke_antialias=MagickFalse;
}
bool Magick::Options::strokeAntiAlias( void ) const
{
  return (_drawInfo->stroke_antialias != 0 ? true : false);
}

// Color to use when drawing object outlines
void Magick::Options::strokeColor ( const Magick::Color &strokeColor_ )
{
  _drawInfo->stroke = strokeColor_;
}
Magick::Color Magick::Options::strokeColor ( void ) const
{
  return _drawInfo->stroke;
}

void Magick::Options::strokeDashArray ( const double* strokeDashArray_ )
{
  _drawInfo->dash_pattern=(double *)
    RelinquishMagickMemory(_drawInfo->dash_pattern);

  if(strokeDashArray_)
    {
      // Count elements in dash array
      unsigned int x;
      for (x=0; strokeDashArray_[x]; x++) ;
      // Allocate elements
      _drawInfo->dash_pattern =
        static_cast(AcquireMagickMemory((x+1)*sizeof(double)));
      // Copy elements
      memcpy(_drawInfo->dash_pattern,strokeDashArray_,
             (x+1)*sizeof(double));
    }
}
const double* Magick::Options::strokeDashArray ( void ) const
{
  return _drawInfo->dash_pattern;
}

void Magick::Options::strokeDashOffset ( double strokeDashOffset_ )
{
  _drawInfo->dash_offset = strokeDashOffset_;
}
double Magick::Options::strokeDashOffset ( void ) const
{
  return _drawInfo->dash_offset;
}

// Specify the shape to be used at the end of open subpaths when they
// are stroked. Values of LineCap are ButtCap, RoundCap, and
// SquareCap.
void Magick::Options::strokeLineCap ( Magick::LineCap lineCap_ )
{
  _drawInfo->linecap = lineCap_;
}
Magick::LineCap Magick::Options::strokeLineCap ( void ) const
{
  return _drawInfo->linecap;
}

// Specify the shape to be used at the corners of paths (or other
// vector shapes) when they are stroked.
void Magick::Options::strokeLineJoin ( Magick::LineJoin lineJoin_ )
{
  _drawInfo->linejoin = lineJoin_;
}
Magick::LineJoin Magick::Options::strokeLineJoin ( void ) const
{
  return _drawInfo->linejoin;
}

// miterLimit for drawing lines, circles, ellipses, etc.
void Magick::Options::strokeMiterLimit ( unsigned int miterLimit_ )
{
  _drawInfo->miterlimit = miterLimit_;
}
unsigned int Magick::Options::strokeMiterLimit ( void ) const
{
  return _drawInfo->miterlimit;
}

// Pattern image to use for stroked outlines
void Magick::Options::strokePattern ( const MagickCore::Image *strokePattern_ )
{
  if ( _drawInfo->stroke_pattern )
    {
      DestroyImageList( _drawInfo->stroke_pattern );
      _drawInfo->stroke_pattern = 0;
    }

  if ( strokePattern_ )
    {
      ExceptionInfo exceptionInfo;
      GetExceptionInfo( &exceptionInfo );
      _drawInfo->stroke_pattern =
	CloneImage( const_cast(strokePattern_),
		    0,
		    0,
		    MagickTrue,
		    &exceptionInfo );
      throwException( exceptionInfo );
      (void) DestroyExceptionInfo( &exceptionInfo );
    }
}
const MagickCore::Image* Magick::Options::strokePattern ( void  ) const
{
  return _drawInfo->stroke_pattern;
}

// Stroke width for drawing lines, circles, ellipses, etc.
void Magick::Options::strokeWidth ( double strokeWidth_ )
{
  _drawInfo->stroke_width = strokeWidth_;
}
double Magick::Options::strokeWidth ( void ) const
{
  return _drawInfo->stroke_width;
}

void Magick::Options::subImage ( unsigned int subImage_ )
{
  _imageInfo->subimage = subImage_;
}
unsigned int Magick::Options::subImage ( void ) const
{
  return _imageInfo->subimage;
}

void Magick::Options::subRange ( unsigned int subRange_ )
{
  _imageInfo->subrange = subRange_;
}
unsigned int Magick::Options::subRange ( void ) const
{
  return _imageInfo->subrange;
}

// Annotation text encoding (e.g. "UTF-16")
void Magick::Options::textEncoding ( const std::string &encoding_ )
{
  CloneString(&_drawInfo->encoding, encoding_.c_str());
}
std::string Magick::Options::textEncoding ( void ) const
{
  if ( _drawInfo->encoding && *_drawInfo->encoding )
    return std::string( _drawInfo->encoding );
  
  return std::string();
}

void Magick::Options::tileName ( const std::string &tileName_ )
{
  if ( tileName_.length() == 0 )
    _imageInfo->tile=(char *) RelinquishMagickMemory(_imageInfo->tile);
  else
    Magick::CloneString( &_imageInfo->tile, tileName_ );
}
std::string Magick::Options::tileName ( void ) const
{
  if ( _imageInfo->tile )
    return std::string( _imageInfo->tile );
  return std::string();
}

// Image representation type
void Magick::Options::type ( const Magick::ImageType type_ )
{
  _imageInfo->type = type_;
}
Magick::ImageType Magick::Options::type ( void ) const
{
  return _imageInfo->type;
}

// Origin of coordinate system to use when annotating with text or drawing
void Magick::Options::transformOrigin ( double tx_, double ty_ )
{
  AffineMatrix current = _drawInfo->affine;
  AffineMatrix affine;
  affine.sx=1.0;
  affine.rx=0.0;
  affine.ry=0.0;
  affine.sy=1.0;
  affine.tx=0.0;
  affine.ty=0.0;

  affine.tx = tx_;
  affine.ty = ty_;

  _drawInfo->affine.sx=current.sx*affine.sx+current.ry*affine.rx;
  _drawInfo->affine.rx=current.rx*affine.sx+current.sy*affine.rx;
  _drawInfo->affine.ry=current.sx*affine.ry+current.ry*affine.sy;
  _drawInfo->affine.sy=current.rx*affine.ry+current.sy*affine.sy;
  _drawInfo->affine.tx=current.sx*affine.tx+current.ry*affine.ty+current.tx;
  _drawInfo->affine.ty=current.rx*affine.tx+current.sy*affine.ty+current.ty;
}

// Reset transformation parameters to default
void Magick::Options::transformReset ( void )
{
  _drawInfo->affine.sx=1.0;
  _drawInfo->affine.rx=0.0;
  _drawInfo->affine.ry=0.0;
  _drawInfo->affine.sy=1.0;
  _drawInfo->affine.tx=0.0;
  _drawInfo->affine.ty=0.0;
}

// Rotation to use when annotating with text or drawing
void Magick::Options::transformRotation ( double angle_ )
{
  AffineMatrix current = _drawInfo->affine;
  AffineMatrix affine;
  affine.sx=1.0;
  affine.rx=0.0;
  affine.ry=0.0;
  affine.sy=1.0;
  affine.tx=0.0;
  affine.ty=0.0;

  affine.sx=cos(DegreesToRadians(fmod(angle_,360.0)));
  affine.rx=(-sin(DegreesToRadians(fmod(angle_,360.0))));
  affine.ry=sin(DegreesToRadians(fmod(angle_,360.0)));
  affine.sy=cos(DegreesToRadians(fmod(angle_,360.0)));

  _drawInfo->affine.sx=current.sx*affine.sx+current.ry*affine.rx;
  _drawInfo->affine.rx=current.rx*affine.sx+current.sy*affine.rx;
  _drawInfo->affine.ry=current.sx*affine.ry+current.ry*affine.sy;
  _drawInfo->affine.sy=current.rx*affine.ry+current.sy*affine.sy;
  _drawInfo->affine.tx=current.sx*affine.tx+current.ry*affine.ty+current.tx;
  _drawInfo->affine.ty=current.rx*affine.tx+current.sy*affine.ty+current.ty;
}

// Scale to use when annotating with text or drawing
void Magick::Options::transformScale ( double sx_, double sy_ )
{
  AffineMatrix current = _drawInfo->affine;
  AffineMatrix affine;
  affine.sx=1.0;
  affine.rx=0.0;
  affine.ry=0.0;
  affine.sy=1.0;
  affine.tx=0.0;
  affine.ty=0.0;

  affine.sx = sx_;
  affine.sy = sy_;

  _drawInfo->affine.sx=current.sx*affine.sx+current.ry*affine.rx;
  _drawInfo->affine.rx=current.rx*affine.sx+current.sy*affine.rx;
  _drawInfo->affine.ry=current.sx*affine.ry+current.ry*affine.sy;
  _drawInfo->affine.sy=current.rx*affine.ry+current.sy*affine.sy;
  _drawInfo->affine.tx=current.sx*affine.tx+current.ry*affine.ty+current.tx;
  _drawInfo->affine.ty=current.rx*affine.tx+current.sy*affine.ty+current.ty;
}

// Skew to use in X axis when annotating with text or drawing
void Magick::Options::transformSkewX ( double skewx_ )
{
  AffineMatrix current = _drawInfo->affine;
  AffineMatrix affine;
  affine.sx=1.0;
  affine.rx=0.0;
  affine.ry=0.0;
  affine.sy=1.0;
  affine.tx=0.0;
  affine.ty=0.0;

  affine.sx=1.0;
  affine.ry=tan(DegreesToRadians(fmod(skewx_,360.0)));
  affine.sy=1.0;

  _drawInfo->affine.sx=current.sx*affine.sx+current.ry*affine.rx;
  _drawInfo->affine.rx=current.rx*affine.sx+current.sy*affine.rx;
  _drawInfo->affine.ry=current.sx*affine.ry+current.ry*affine.sy;
  _drawInfo->affine.sy=current.rx*affine.ry+current.sy*affine.sy;
  _drawInfo->affine.tx=current.sx*affine.tx+current.ry*affine.ty+current.tx;
  _drawInfo->affine.ty=current.rx*affine.tx+current.sy*affine.ty+current.ty;
}

// Skew to use in Y axis when annotating with text or drawing
void Magick::Options::transformSkewY ( double skewy_ )
{
  AffineMatrix current = _drawInfo->affine;
  AffineMatrix affine;
  affine.sx=1.0;
  affine.rx=0.0;
  affine.ry=0.0;
  affine.sy=1.0;
  affine.tx=0.0;
  affine.ty=0.0;

  affine.sx=1.0;
  affine.rx=tan(DegreesToRadians(fmod(skewy_,360.0)));
  affine.sy=1.0;

  _drawInfo->affine.sx=current.sx*affine.sx+current.ry*affine.rx;
  _drawInfo->affine.rx=current.rx*affine.sx+current.sy*affine.rx;
  _drawInfo->affine.ry=current.sx*affine.ry+current.ry*affine.sy;
  _drawInfo->affine.sy=current.rx*affine.ry+current.sy*affine.sy;
  _drawInfo->affine.tx=current.sx*affine.tx+current.ry*affine.ty+current.tx;
  _drawInfo->affine.ty=current.rx*affine.tx+current.sy*affine.ty+current.ty;
}

void Magick::Options::verbose ( bool verboseFlag_ )
{
  _imageInfo->verbose = (MagickBooleanType) verboseFlag_;
}
bool Magick::Options::verbose ( void ) const
{
  return static_cast(_imageInfo->verbose);
}

void Magick::Options::virtualPixelMethod ( VirtualPixelMethod virtual_pixel_method_ )
{
  _imageInfo->virtual_pixel_method = virtual_pixel_method_;
}
Magick::VirtualPixelMethod Magick::Options::virtualPixelMethod ( void ) const
{
  return static_cast(_imageInfo->virtual_pixel_method);
}

void Magick::Options::view ( const std::string &view_ )
{
  if ( view_.length() == 0 )
    _imageInfo->view=(char *) RelinquishMagickMemory(_imageInfo->view);
  else
    Magick::CloneString( &_imageInfo->view, view_ );
}
std::string Magick::Options::view ( void ) const
{
  if ( _imageInfo->view )
    return std::string( _imageInfo->view );

  return std::string();
}

void Magick::Options::x11Display ( const std::string &display_ )
{
  if ( display_.length() == 0 )
    _imageInfo->server_name=(char *) RelinquishMagickMemory(_imageInfo->server_name);
  else
    Magick::CloneString( &_imageInfo->server_name, display_ );
}
std::string Magick::Options::x11Display ( void ) const
{
  if ( _imageInfo->server_name )
    return std::string( _imageInfo->server_name );

  return std::string();
}

//
// Internal implementation methods.  Please do not use.
//

MagickCore::DrawInfo * Magick::Options::drawInfo( void )
{
  return _drawInfo;
}

MagickCore::ImageInfo * Magick::Options::imageInfo( void )
{
  return _imageInfo;
}

MagickCore::QuantizeInfo * Magick::Options::quantizeInfo( void )
{
  return _quantizeInfo;
}

--- NEW FILE: Montage.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2000, 2001, 2002, 2003
//
// Implementation of Montage
//

#define MAGICKCORE_IMPLEMENTATION  1
#define MAGICK_PLUSPLUS_IMPLEMENTATION 1

#include "Magick++/Include.h"
#include 
#include 

#include "Magick++/Montage.h"
#include "Magick++/Functions.h"

Magick::Montage::Montage ( void )
  : _backgroundColor("#ffffff"),
    _compose(OverCompositeOp),
    _fileName(),
    _fill("#000000ff"),
    _font(),
    _geometry("120x120+4+3>"),
    _gravity(CenterGravity),
    _label(),
    _pointSize(12),
    _shadow(false),
    _stroke(),
    _texture(),
    _tile("6x4"),
    _title(),
    _transparentColor()
{
}

Magick::Montage::~Montage( void )
{
  // Nothing to do
}

Magick::MontageFramed::MontageFramed ( void )
  : _borderColor("#dfdfdf"),
    _borderWidth(0),
    _frame(),
    _matteColor("#bdbdbd")
{
}

/* virtual */ Magick::MontageFramed::~MontageFramed ( void )
{
  // Nothing to do
}

void Magick::Montage::updateMontageInfo ( MontageInfo &montageInfo_ ) const
{

  memset(&montageInfo_,0,sizeof(MontageInfo));

  // background_color
  montageInfo_.background_color = _backgroundColor;
  // border_color
  montageInfo_.border_color = Color();
  // border_width
  montageInfo_.border_width = 0;
  // filename
  _fileName.copy( montageInfo_.filename, MaxTextExtent - 1 );
  montageInfo_.filename[ _fileName.length() ] = 0; // null terminate
  // fill
  montageInfo_.fill = _fill;
  // font
  if ( _font.length() != 0 )
    Magick::CloneString( &montageInfo_.font, _font );
  else
    montageInfo_.font=(char *) RelinquishMagickMemory(montageInfo_.font);
  // frame
  montageInfo_.frame=(char *) montageInfo_.frame;
  // geometry
  if ( _geometry.isValid() )
    Magick::CloneString( &montageInfo_.geometry, _geometry );
  else
    montageInfo_.geometry=(char *)
      RelinquishMagickMemory(montageInfo_.geometry);
  // gravity
  montageInfo_.gravity = _gravity;
  // matte_color
  montageInfo_.matte_color = Color();
  // pointsize
  montageInfo_.pointsize = _pointSize;
  // shadow
  montageInfo_.shadow = static_cast
    (_shadow ? MagickTrue : MagickFalse);
  // signature (validity stamp)
  montageInfo_.signature = MagickSignature;
  // stroke
  montageInfo_.stroke = _stroke;
  // texture
  if ( _texture.length() != 0 )
    Magick::CloneString( &montageInfo_.texture, _texture );
  else
    montageInfo_.texture=(char *) RelinquishMagickMemory(montageInfo_.texture);
  // tile
  if ( _tile.isValid() )
    Magick::CloneString( &montageInfo_.tile, _tile );
  else
    montageInfo_.tile=(char *) RelinquishMagickMemory(montageInfo_.tile);
  // title
  if ( _title.length() != 0 )
    Magick::CloneString( &montageInfo_.title, _title );
  else
    montageInfo_.title=(char *) RelinquishMagickMemory(montageInfo_.title);
}

//
// Implementation of MontageFramed
//

/* virtual */ void
Magick::MontageFramed::updateMontageInfo ( MontageInfo &montageInfo_ ) const
{
  // Do base updates
  Montage::updateMontageInfo ( montageInfo_ );

  // border_color
  montageInfo_.border_color = _borderColor;
  // border_width
  montageInfo_.border_width = _borderWidth;
  // frame
  if ( _frame.isValid() )
    Magick::CloneString( &montageInfo_.frame, _frame );
  else
    montageInfo_.frame=(char *) RelinquishMagickMemory(montageInfo_.frame);
  // matte_color
  montageInfo_.matte_color = _matteColor;
}

--- NEW FILE: Image.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2000, 2001, 2002, 2003
//
// Implementation of Image
//

#define MAGICKCORE_IMPLEMENTATION  1
#define MAGICK_PLUSPLUS_IMPLEMENTATION 1

#include "Magick++/Include.h"
#include 
#include 
#include 
#include 
#include 
#if !defined(__WINDOWS__)
#include 
#endif
[...4174 lines suppressed...]
  {
  public:
    MagickCleanUp( void );
    ~MagickCleanUp( void );
  };

  // The destructor for this object is invoked when the destructors for
  // static objects in this translation unit are invoked.
  static MagickCleanUp magickCleanUpGuard;
}

Magick::MagickCleanUp::MagickCleanUp ( void )
{
  // Don't even think about invoking InitializeMagick here!
}

Magick::MagickCleanUp::~MagickCleanUp ( void )
{
  MagickPlusPlusDestroyMagick();
}

--- NEW FILE: BlobRef.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2000, 2001, 2002, 2004
//
// Implementation of Blob
//

#define MAGICKCORE_IMPLEMENTATION  1
#define MAGICK_PLUSPLUS_IMPLEMENTATION 1

#include "Magick++/Include.h"
#include "Magick++/Thread.h"
#include "Magick++/BlobRef.h"

#include 

//
// Implementation of Magick::BlobRef
//

// Construct with data, making private copy of data
Magick::BlobRef::BlobRef ( const void* data_,
			   size_t length_ )
  : _data(0),
    _length(length_),
    _allocator(Magick::Blob::NewAllocator),
    _refCount(1),
    _mutexLock()
{
  if( data_ )
    {
      _data = new unsigned char[length_];
      memcpy( _data, data_, length_ );
    }
}

// Destructor (actually destroys data)
Magick::BlobRef::~BlobRef ( void )
{
  if ( _allocator == Magick::Blob::NewAllocator )
    {
      delete [] static_cast(_data);
      _data=0;
    }
  else if ( _allocator == Magick::Blob::MallocAllocator )
    {
      _data=(void *) RelinquishMagickMemory(_data);
    }
}

--- NEW FILE: Functions.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2002, 2003
//
// Simple C++ function wrappers for ImageMagick equivalents
//

#define MAGICKCORE_IMPLEMENTATION  1
#define MAGICK_PLUSPLUS_IMPLEMENTATION 1

#include "Magick++/Include.h"
#include 

using namespace std;

#include "Magick++/Functions.h"

// Clone C++ string as allocated C string, de-allocating any existing string
void Magick::CloneString( char **destination_, const std::string &source_ )
{
  MagickCore::CloneString( destination_, source_.c_str() );
}

--- NEW FILE: STL.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2002
//
// Implementation of STL classes and functions
//

#define MAGICKCORE_IMPLEMENTATION  1
#define MAGICK_PLUSPLUS_IMPLEMENTATION 1

#include 
#include 

// Adaptive-blur image with specified blur factor
Magick::adaptiveBlurImage::adaptiveBlurImage( const double radius_,
      const double sigma_  )
      : _radius( radius_ ),
        _sigma( sigma_ )
{
[...1490 lines suppressed...]

// FlashPix viewing parameters
Magick::viewImage::viewImage( const std::string &view_ )
  : _view( view_ ) { }

void Magick::viewImage::operator()( Magick::Image &image_ ) const
{
  image_.view( _view );
}

// X11 display to display to, obtain fonts from, or to capture image
// from
Magick::x11DisplayImage::x11DisplayImage( const std::string &display_ )
  : _display( display_ )
{
}
void Magick::x11DisplayImage::operator()( Magick::Image &image_ ) const
{
  image_.x11Display( _display );
}

--- NEW FILE: Exception.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2000, 2001, 2002, 2003
//
// Implementation of Exception and derived classes
//

#define MAGICKCORE_IMPLEMENTATION  1
#define MAGICK_PLUSPLUS_IMPLEMENTATION 1

#include "Magick++/Include.h"
#include 
#include 
#include 

using namespace std;

#include "Magick++/Exception.h"

// Construct with message string
Magick::Exception::Exception( const std::string& what_ )
  : _what(what_)
{
}

// Copy constructor
Magick::Exception::Exception( const Magick::Exception& original_ )
  : exception(original_), _what(original_._what)
{
}

// Assignment operator
Magick::Exception& Magick::Exception::operator= (const Magick::Exception& original_ )
{
  if(this != &original_)
    {
      this->_what = original_._what;
    }
  return *this;
}

// Return message string
/*virtual*/ const char* Magick::Exception::what( ) const throw()
{
  return _what.c_str();
}

/* Destructor */
/*virtual*/ Magick::Exception::~Exception ( ) throw ()
{
}

//
// Warnings
//

Magick::Warning::Warning ( const std::string& what_ )
  : Exception(what_)
{
}

Magick::WarningUndefined::WarningUndefined ( const std::string& what_ )
  : Warning(what_)
{
}

Magick::WarningBlob::WarningBlob ( const std::string& what_ )
  : Warning(what_)
{
}

Magick::WarningCache::WarningCache ( const std::string& what_ )
  : Warning(what_)
{
}

Magick::WarningCoder::WarningCoder ( const std::string& what_ )
  : Warning(what_)
{
}

Magick::WarningConfigure::WarningConfigure ( const std::string& what_ )
  : Warning(what_)
{
}

Magick::WarningCorruptImage::WarningCorruptImage ( const std::string& what_ )
  : Warning(what_)
{
}

Magick::WarningDelegate::WarningDelegate ( const std::string& what_ )
  : Warning(what_)
{
}

Magick::WarningDraw::WarningDraw ( const std::string& what_ )
  : Warning(what_)
{
}

Magick::WarningFileOpen::WarningFileOpen ( const std::string& what_ )
  : Warning(what_)
{
}

Magick::WarningImage::WarningImage ( const std::string& what_ )
  : Warning(what_)
{
}

Magick::WarningMissingDelegate::WarningMissingDelegate ( const std::string& what_ )
  : Warning(what_)
{
}

Magick::WarningModule::WarningModule ( const std::string& what_ )
  : Warning(what_)
{
}

Magick::WarningMonitor::WarningMonitor ( const std::string& what_ )
  : Warning(what_)
{
}

Magick::WarningOption::WarningOption ( const std::string& what_ )
  : Warning(what_)
{
}

Magick::WarningRegistry::WarningRegistry ( const std::string& what_ )
  : Warning(what_)
{
}

Magick::WarningResourceLimit::WarningResourceLimit ( const std::string& what_ )
  : Warning(what_)
{
}

Magick::WarningStream::WarningStream ( const std::string& what_ )
  : Warning(what_)
{
}

Magick::WarningType::WarningType ( const std::string& what_ )
  : Warning(what_)
{
}

Magick::WarningXServer::WarningXServer ( const std::string& what_ )
  : Warning(what_)
{
}

//
// Errors
//

Magick::Error::Error ( const std::string& what_ )
  : Exception(what_)
{
}

Magick::ErrorUndefined::ErrorUndefined ( const std::string& what_ )
  : Error(what_)
{
}

Magick::ErrorBlob::ErrorBlob ( const std::string& what_ )
  : Error(what_)
{
}

Magick::ErrorCache::ErrorCache ( const std::string& what_ )
  : Error(what_)
{
}

Magick::ErrorCoder::ErrorCoder ( const std::string& what_ )
  : Error(what_)
{
}

Magick::ErrorConfigure::ErrorConfigure ( const std::string& what_ )
  : Error(what_)
{
}

Magick::ErrorCorruptImage::ErrorCorruptImage ( const std::string& what_ )
  : Error(what_)
{
}

Magick::ErrorDelegate::ErrorDelegate ( const std::string& what_ )
  : Error(what_)
{
}

Magick::ErrorDraw::ErrorDraw ( const std::string& what_ )
  : Error(what_)
{
}

Magick::ErrorFileOpen::ErrorFileOpen ( const std::string& what_ )
  : Error(what_)
{
}

Magick::ErrorImage::ErrorImage ( const std::string& what_ )
  : Error(what_)
{
}

Magick::ErrorMissingDelegate::ErrorMissingDelegate ( const std::string& what_ )
  : Error(what_)
{
}

Magick::ErrorModule::ErrorModule ( const std::string& what_ )
  : Error(what_)
{
}

Magick::ErrorMonitor::ErrorMonitor ( const std::string& what_ )
  : Error(what_)
{
}

Magick::ErrorOption::ErrorOption ( const std::string& what_ )
  : Error(what_)
{
}

Magick::ErrorRegistry::ErrorRegistry ( const std::string& what_ )
  : Error(what_)
{
}

Magick::ErrorResourceLimit::ErrorResourceLimit ( const std::string& what_ )
  : Error(what_)
{
}

Magick::ErrorStream::ErrorStream ( const std::string& what_ )
  : Error(what_)
{
}

Magick::ErrorType::ErrorType ( const std::string& what_ )
  : Error(what_)
{
}

Magick::ErrorXServer::ErrorXServer ( const std::string& what_ )
  : Error(what_)
{
}

// Format and throw exception
MagickDLLDecl void Magick::throwExceptionExplicit( const ExceptionType severity_,
                                                   const char* reason_,
                                                   const char* description_)
{
  // Just return if there is no reported error
  if ( severity_ == UndefinedException )
    return;

  ExceptionInfo exception;

  GetExceptionInfo( &exception );
  ThrowException( &exception, severity_, reason_, description_ );
  throwException( exception );
  (void) DestroyExceptionInfo( &exception );
}

// Throw C++ exception
MagickDLLDecl void Magick::throwException( ExceptionInfo &exception_ )
{
  // Just return if there is no reported error
  if ( exception_.severity == UndefinedException )
    return;

  // Format error message ImageMagick-style
  std::string message = SetClientName(0);
  if ( exception_.reason != 0 )
    {
      message += std::string(": ");
      message += std::string(exception_.reason);
    }

  if ( exception_.description != 0 )
    message += " (" + std::string(exception_.description) + ")";

  ExceptionType severity = exception_.severity;
  MagickBooleanType relinquish = exception_.relinquish;
  DestroyExceptionInfo( &exception_ );
  if (relinquish)
    GetExceptionInfo( &exception_ );

  switch ( severity )
    {
      // Warnings
    case ResourceLimitWarning :
      throw WarningResourceLimit( message );
    case TypeWarning :
      throw WarningType( message );
    case OptionWarning :
      throw WarningOption( message );
    case DelegateWarning :
      throw WarningDelegate( message );
    case MissingDelegateWarning :
      throw WarningMissingDelegate( message );
    case CorruptImageWarning :
      throw WarningCorruptImage( message );
    case FileOpenWarning :
      throw WarningFileOpen( message );
    case BlobWarning :
      throw WarningBlob ( message );
    case StreamWarning :
      throw WarningStream ( message );
    case CacheWarning :
      throw WarningCache ( message );
    case CoderWarning :
      throw WarningCoder ( message );
    case ModuleWarning :
      throw WarningModule( message );
    case DrawWarning :
      throw WarningDraw( message );
    case ImageWarning :
      throw WarningImage( message );
    case XServerWarning :
      throw WarningXServer( message );
    case MonitorWarning :
      throw WarningMonitor( message );
    case RegistryWarning :
      throw WarningRegistry( message );
    case ConfigureWarning :
      throw WarningConfigure( message );
      // Errors
    case ResourceLimitError :
    case ResourceLimitFatalError :
      throw ErrorResourceLimit( message );
    case TypeError :
    case TypeFatalError :
      throw ErrorType( message );
    case OptionError :
    case OptionFatalError :
      throw ErrorOption( message );
    case DelegateError :
    case DelegateFatalError :
      throw ErrorDelegate( message );
    case MissingDelegateError :
    case MissingDelegateFatalError :
      throw ErrorMissingDelegate( message );
    case CorruptImageError :
    case CorruptImageFatalError :
      throw ErrorCorruptImage( message );
    case FileOpenError :
    case FileOpenFatalError :
      throw ErrorFileOpen( message );
    case BlobError :
    case BlobFatalError :
      throw ErrorBlob ( message );
    case StreamError :
    case StreamFatalError :
      throw ErrorStream ( message );
    case CacheError :
    case CacheFatalError :
      throw ErrorCache ( message );
    case CoderError :
    case CoderFatalError :
      throw ErrorCoder ( message );
    case ModuleError :
    case ModuleFatalError :
      throw ErrorModule ( message );
    case DrawError :
    case DrawFatalError :
      throw ErrorDraw ( message );
    case ImageError :
    case ImageFatalError :
      throw ErrorImage ( message );
    case XServerError :
    case XServerFatalError :
      throw ErrorXServer ( message );
    case MonitorError :
    case MonitorFatalError :
      throw ErrorMonitor ( message );
    case RegistryError :
    case RegistryFatalError :
      throw ErrorRegistry ( message );
    case ConfigureError :
    case ConfigureFatalError :
      throw ErrorConfigure ( message );
    case UndefinedException :
    default :
      throw ErrorUndefined( message );
    }

}

--- NEW FILE: Thread.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2000, 2001, 2002
//
// Implementation of thread support
//

#define MAGICKCORE_IMPLEMENTATION  1
#define MAGICK_PLUSPLUS_IMPLEMENTATION 1

#include "Magick++/Thread.h"
#include "Magick++/Exception.h"

#include 

// Default constructor
Magick::MutexLock::MutexLock(void)
#if defined(MAGICKCORE_HAVE_PTHREAD)
  // POSIX threads
  : _mutex()
{
  ::pthread_mutexattr_t attr;
  int sysError;
  if ( (sysError = ::pthread_mutexattr_init( &attr )) == 0 )
    if ( (sysError = ::pthread_mutex_init( &_mutex, &attr )) == 0 )
      {
        ::pthread_mutexattr_destroy( &attr );
        return;
      }
  throwExceptionExplicit( OptionError, "mutex initialization failed",
                          strerror(sysError) );
}
#else
#if defined(_VISUALC_) && defined(_MT)
// Win32 threads
  : _mutex()
{
  SECURITY_ATTRIBUTES security;

  /* Allow the semaphore to be inherited */
  security.nLength = sizeof(security);
  security.lpSecurityDescriptor = NULL;
  security.bInheritHandle = TRUE;

  /* Create the semaphore, with initial value signaled */
  _mutex.id = ::CreateSemaphore(&security, 1, MAXSEMLEN, NULL);
  if ( _mutex.id != NULL )
    return;
  throwExceptionExplicit( OptionError, "mutex initialization failed" );
}
#else
// Threads not supported
{
}
#endif
#endif

// Destructor
Magick::MutexLock::~MutexLock(void)
{
#if defined(MAGICKCORE_HAVE_PTHREAD)
  int sysError;
  if ( (sysError = ::pthread_mutex_destroy( &_mutex )) == 0 )
    return;
  throwExceptionExplicit( OptionError, "mutex destruction failed",
                          strerror(sysError) );
#endif
#if defined(_MT) && defined(_VISUALC_)
  if ( ::CloseHandle(_mutex.id) != 0 )
    return;
  throwExceptionExplicit( OptionError, "mutex destruction failed" );
#endif
}

// Lock mutex
void Magick::MutexLock::lock(void)
{
#if defined(MAGICKCORE_HAVE_PTHREAD)
  int sysError;
  if ( (sysError = ::pthread_mutex_lock( &_mutex )) == 0)
    return;
  throwExceptionExplicit( OptionError, "mutex lock failed",
                          strerror(sysError));
#endif
#if defined(_MT) && defined(_VISUALC_)
  if (WaitForSingleObject(_mutex.id,INFINITE) != WAIT_FAILED)
    return;
  throwExceptionExplicit( OptionError, "mutex lock failed" );
#endif
}

// Unlock mutex
void Magick::MutexLock::unlock(void)
{
#if defined(MAGICKCORE_HAVE_PTHREAD)
  int sysError;
  if ( (sysError = ::pthread_mutex_unlock( &_mutex )) == 0)
    return;
  throwExceptionExplicit( OptionError, "mutex unlock failed",
                          strerror(sysError) );
#endif
#if defined(_MT) && defined(_VISUALC_)
  if ( ReleaseSemaphore(_mutex.id, 1, NULL) == TRUE )
    return;
  throwExceptionExplicit( OptionError, "mutex unlock failed" );
#endif
}

--- NEW FILE: Blob.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2000, 2001, 2002, 2004
//
// Implementation of Blob
//

#define MAGICKCORE_IMPLEMENTATION  1
#define MAGICK_PLUSPLUS_IMPLEMENTATION 1

#include "Magick++/Include.h"
#include "Magick++/Blob.h"
#include "Magick++/BlobRef.h"

#include 

//
// Implementation of Magick::Blob
//

// Default constructor
Magick::Blob::Blob ( void )
  : _blobRef(new Magick::BlobRef( 0, 0 ))
{
}

// Construct with data
Magick::Blob::Blob ( const void* data_, size_t length_ )
  : _blobRef(new Magick::BlobRef( data_, length_ ))
{
}

// Copy constructor (reference counted)
Magick::Blob::Blob ( const Magick::Blob& blob_ )
  : _blobRef(blob_._blobRef)
{
  // Increase reference count
  Lock( &_blobRef->_mutexLock );
  ++_blobRef->_refCount;
}

// Destructor (reference counted)
Magick::Blob::~Blob ()
{
  bool doDelete = false;
  {
    Lock( &_blobRef->_mutexLock );
    if ( --_blobRef->_refCount == 0 )
      doDelete = true;
  }

  if ( doDelete )
    {
      // Delete old blob reference with associated data
      delete _blobRef;
    }
  _blobRef=0;
}

// Assignment operator (reference counted)
Magick::Blob& Magick::Blob::operator= ( const Magick::Blob& blob_ )
{
  if(this != &blob_)
    {
      {
        Lock( &blob_._blobRef->_mutexLock );
        ++blob_._blobRef->_refCount;
      }
      bool doDelete = false;
      {
        Lock( &_blobRef->_mutexLock );
        if ( --_blobRef->_refCount == 0 )
          doDelete = true;
      }
      if ( doDelete )
        {
          delete _blobRef;
        }
      _blobRef = blob_._blobRef;
    }
  return *this;
}

// Update object contents from Base64-encoded string representation.
void Magick::Blob::base64 ( const std::string base64_ )
{
  size_t length;

  unsigned char *decoded =
    Base64Decode( base64_.c_str(), &length );

  if(decoded)
    updateNoCopy( static_cast(decoded), length,
                  Magick::Blob::MallocAllocator );
}

// Return Base64-encoded string representation.
std::string Magick::Blob::base64 ( void )
{
  size_t encoded_length = 0;

  char *encoded =
    Base64Encode(static_cast(data()), length(), &encoded_length);

  if(encoded)
    {
      std::string result(encoded,encoded_length);
      encoded=(char *) RelinquishMagickMemory(encoded);
      return result;
    }

  return std::string();
}

// Update object contents, making a copy of the supplied data.
// Any existing data in the object is deallocated.
void Magick::Blob::update ( const void* data_, size_t length_ )
{
  bool doDelete = false;
  {
    Lock( &_blobRef->_mutexLock );
    if ( --_blobRef->_refCount == 0 )
      doDelete = true;
  }
  if ( doDelete )
    {
      // Delete old blob reference with associated data
      delete _blobRef;
    }

  _blobRef = new Magick::BlobRef( data_, length_ );
}

// Update object contents, using supplied pointer directly (no copy)
// Any existing data in the object is deallocated.  The user must
// ensure that the pointer supplied is not deleted or otherwise
// modified after it has been supplied to this method.
void Magick::Blob::updateNoCopy ( void* data_, size_t length_,
                                  Magick::Blob::Allocator allocator_  )
{
  bool doDelete = false;
  {
    Lock( &_blobRef->_mutexLock );
    if ( --_blobRef->_refCount == 0 )
      doDelete = true;
  }
  if ( doDelete )
    {
      // Delete old blob reference with associated data
      delete _blobRef;
    }
  _blobRef = new Magick::BlobRef( 0, 0 );
  _blobRef->_data   = data_;
  _blobRef->_length = length_;
  _blobRef->_allocator = allocator_;
}

// Obtain pointer to data
const void* Magick::Blob::data( void ) const
{
  return _blobRef->_data;
}

// Obtain data length
size_t Magick::Blob::length( void ) const
{
  return _blobRef->_length;
}


--- NEW FILE: Geometry.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2000, 2001, 2002, 2003
//
// Geometry implementation
//

#define MAGICKCORE_IMPLEMENTATION  1
#define MAGICK_PLUSPLUS_IMPLEMENTATION 1

#include "Magick++/Include.h"
#include 
#include  // for isdigit
#if !defined(__WINDOWS__)
#include 
#endif

using namespace std;

#include "Magick++/Geometry.h"
#include "Magick++/Exception.h"

#define AbsoluteValue(x)  ((x) < 0 ? -(x) : (x))

int Magick::operator == ( const Magick::Geometry& left_,
			  const Magick::Geometry& right_ )
{
  return (
	  ( left_.isValid()   == right_.isValid() ) &&
	  ( left_.width()     == right_.width() ) &&
	  ( left_.height()    == right_.height() ) &&
	  ( left_.xOff()      == right_.xOff() ) &&
	  ( left_.yOff()      == right_.yOff() ) &&
	  ( left_.xNegative() == right_.xNegative() ) &&
	  ( left_.yNegative() == right_.yNegative() ) &&
	  ( left_.percent()   == right_.percent() ) &&
	  ( left_.aspect()    == right_.aspect() ) &&
	  ( left_.greater()   == right_.greater() ) &&
	  ( left_.less()      == right_.less() )
	  );
}
int Magick::operator != ( const Magick::Geometry& left_,
			  const Magick::Geometry& right_ )
{
  return ( ! (left_ == right_) );
}
int Magick::operator >  ( const Magick::Geometry& left_,
			  const Magick::Geometry& right_ )
{
  return ( !( left_ < right_ ) && ( left_ != right_ ) );
}
int Magick::operator <  ( const Magick::Geometry& left_,
			  const Magick::Geometry& right_ )
{
  return (
	  ( left_.width() * left_.height() )
	  <
	  ( right_.width() * right_.height() )
	  );
}
int Magick::operator >= ( const Magick::Geometry& left_,
			  const Magick::Geometry& right_ )
{
  return ( ( left_ > right_ ) || ( left_ == right_ ) );
}
int Magick::operator <= ( const Magick::Geometry& left_,
			  const Magick::Geometry& right_ )
{
  return ( ( left_ < right_ ) || ( left_ == right_ ) );
}

// Construct using parameterized arguments
Magick::Geometry::Geometry ( unsigned int width_,
			     unsigned int height_,
			     unsigned int xOff_,
			     unsigned int yOff_,
			     bool xNegative_,
			     bool yNegative_ )
  : _width( width_ ),
    _height( height_ ),
    _xOff( xOff_ ),
    _yOff( yOff_ ),
    _xNegative( xNegative_ ),
    _yNegative( yNegative_ ),
    _isValid( true ),
    _percent( false ),
    _aspect( false ),
    _greater( false ),
    _less( false )
{
}

// Assignment from C++ string
Magick::Geometry::Geometry ( const std::string &geometry_ )
  : _width( 0 ),
    _height( 0 ),
    _xOff( 0 ),
    _yOff( 0 ),
    _xNegative( false ),
    _yNegative( false ),
    _isValid( false ),
    _percent( false ),
    _aspect( false ),
    _greater( false ),
    _less( false )
{
  *this = geometry_; // Use assignment operator
}


// Assignment from C character string
Magick::Geometry::Geometry ( const char *geometry_ )
  : _width( 0 ),
    _height( 0 ),
    _xOff( 0 ),
    _yOff( 0 ),
    _xNegative( false ),
    _yNegative( false ),
    _isValid( false ),
    _percent( false ),
    _aspect( false ),
    _greater( false ),
    _less( false )
{
  *this = geometry_; // Use assignment operator
}

// Copy constructor
Magick::Geometry::Geometry ( const Geometry &geometry_ )
  :  _width( geometry_._width ),
     _height( geometry_._height ),
     _xOff( geometry_._xOff ),
     _yOff( geometry_._yOff ),
     _xNegative( geometry_._xNegative ),
     _yNegative( geometry_._yNegative ),
     _isValid ( geometry_._isValid ),
     _percent( geometry_._percent ),
     _aspect( geometry_._aspect ),
     _greater( geometry_._greater ),
     _less( geometry_._less )
{
}

// Default constructor
Magick::Geometry::Geometry ( void )
  : _width( 0 ),
    _height( 0 ),
    _xOff( 0 ),
    _yOff( 0 ),
    _xNegative( false ),
    _yNegative( false ),
    _isValid ( false ),
    _percent( false ),
    _aspect( false ),
    _greater( false ),
    _less( false )
{
}

/* virtual */ Magick::Geometry::~Geometry ( void )
{
  // Nothing to do
}

Magick::Geometry& Magick::Geometry::operator = ( const Geometry& geometry_ )
{
  // If not being set to ourself
  if ( this != &geometry_ )
    {
      _width = geometry_._width;
      _height = geometry_._height;
      _xOff = geometry_._xOff;
      _yOff = geometry_._yOff;
      _xNegative = geometry_._xNegative;
      _yNegative = geometry_._yNegative;
      _isValid = geometry_._isValid;
      _percent = geometry_._percent;
      _aspect = geometry_._aspect;
      _greater = geometry_._greater;
      _less = geometry_._less;
    }
  return *this;
}

// Set value via geometry string
/* virtual */ const Magick::Geometry&
Magick::Geometry::operator = ( const std::string &geometry_ )
{
  char
    geom[MaxTextExtent];

  // If argument does not start with digit, presume that it is a
  // page-size specification that needs to be converted to an
  // equivalent geometry specification using PostscriptGeometry()
  (void) CopyMagickString(geom,geometry_.c_str(),MaxTextExtent);
  if ( geom[0] != '-' &&
       geom[0] != '+' &&
       geom[0] != 'x' &&
       !isdigit(static_cast(geom[0])))
    {
      char *pageptr = GetPageGeometry( geom );
      if ( pageptr != 0 )
        {
          (void) CopyMagickString(geom,pageptr,MaxTextExtent);
          pageptr=(char *) RelinquishMagickMemory( pageptr );
        }
    }

  long x = 0;
  long y = 0;
  unsigned long width_val = 0;
  unsigned long height_val = 0;
  int flags = GetGeometry (geom, &x, &y, &width_val, &height_val );

  if (flags == NoValue)
    {
      // Total failure!
      *this=Geometry();
      isValid( false );
      return *this;
    }

  if ( ( flags & WidthValue ) != 0 )
    {
      _width = width_val;
      isValid( true );
    }

  if ( ( flags & HeightValue ) != 0 )
    {
      _height = height_val;
      isValid( true );
    }

  if ( ( flags & XValue ) != 0 )
    {
      _xOff = static_cast(AbsoluteValue(x));
      isValid( true );
    }

  if ( ( flags & YValue ) != 0 )
    {
      _yOff = static_cast(AbsoluteValue(y));
      isValid( true );
    }

  if ( ( flags & XNegative ) != 0 )	
    _xNegative = true;

  if ( ( flags & YNegative ) != 0 )
    _yNegative = true;

  if ( ( flags & PercentValue ) != 0 )
    _percent = true;

  if ( ( flags & AspectValue ) != 0 )
    _aspect = true;

  if ( ( flags & LessValue ) != 0 )
    _less = true;

  if ( ( flags & GreaterValue ) != 0 )
    _greater = true;

  return *this;
}


// Set value via geometry C string
/* virtual */ const Magick::Geometry& Magick::Geometry::operator = ( const char * geometry_ )
{
  *this = std::string(geometry_);
  return *this;
}

// Return geometry string
Magick::Geometry::operator std::string() const
{
  if (!isValid())
    {
      throwExceptionExplicit( OptionError, "Invalid geometry argument" );
    }

  string geometry;
  char buffer[32];

  if ( _width )
    {
      FormatMagickString( buffer, MaxTextExtent, "%u", _width );
      geometry += buffer;
    }

  if ( _height )
    {
      FormatMagickString( buffer, MaxTextExtent, "%u",  _height);
      geometry += 'x';
      geometry +=  buffer;
    }

  if ( _xOff || _yOff )
    {
      if ( _xNegative )
        geometry += '-';
      else
        geometry += '+';

      FormatMagickString( buffer, MaxTextExtent, "%u", _xOff);
      geometry += buffer;

      if ( _yNegative )
        geometry += '-';
      else
        geometry += '+';

      FormatMagickString( buffer, MaxTextExtent, "%u", _yOff);
      geometry += buffer;
    }

  if ( _percent )
    geometry += '%';
  
  if ( _aspect )
    geometry += '!';

  if ( _greater )
    geometry += '>';

  if ( _less )
    geometry += '<';

  return geometry;
}

// Construct from RectangleInfo
Magick::Geometry::Geometry ( const MagickCore::RectangleInfo &rectangle_ )
  : _width(static_cast(rectangle_.width)),
    _height(static_cast(rectangle_.height)),
    _xOff(static_cast(AbsoluteValue(rectangle_.x))),
    _yOff(static_cast(AbsoluteValue(rectangle_.y))),
    _xNegative(rectangle_.x < 0 ? true : false),
    _yNegative(rectangle_.y < 0 ? true : false),
    _isValid(true),
    _percent(false),
    _aspect(false),
    _greater(false),
    _less(false)
{    
}

// Return an ImageMagick RectangleInfo struct
Magick::Geometry::operator MagickCore::RectangleInfo() const
{
  RectangleInfo rectangle;
  rectangle.width = _width;
  rectangle.height = _height;
  _xNegative ? rectangle.x = static_cast(0-_xOff) : rectangle.x = static_cast(_xOff);
  _yNegative ? rectangle.y = static_cast(0-_yOff) : rectangle.y = static_cast(_yOff);
  return rectangle;
}

--- NEW FILE: CoderInfo.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 2001, 2002
//
// CoderInfo implementation
//

#define MAGICKCORE_IMPLEMENTATION  1
#define MAGICK_PLUSPLUS_IMPLEMENTATION 1

#include "Magick++/Include.h"
#include "Magick++/CoderInfo.h"
#include "Magick++/Exception.h"

using namespace std;

Magick::CoderInfo::CoderInfo ( const std::string &name_ )
  : _name(),
    _description(),
    _isReadable(false),
    _isWritable(false),
    _isMultiFrame(false)
{
  ExceptionInfo exceptionInfo;
  GetExceptionInfo( &exceptionInfo );
  const Magick::MagickInfo *magickInfo = GetMagickInfo( name_.c_str(), &exceptionInfo );
  throwException( exceptionInfo );
  (void) DestroyExceptionInfo( &exceptionInfo );
  if( magickInfo == 0 )
    {
      throwExceptionExplicit(OptionError, "Coder not found", name_.c_str() );
    }
  else
    {
      _name         = string(magickInfo->name);
      _description  = string(magickInfo->description);
      _isReadable   = ((magickInfo->decoder == 0) ? false : true);
      _isWritable   = ((magickInfo->encoder == 0) ? false : true);
      _isMultiFrame = ((magickInfo->adjoin == 0) ? false : true);
    }
}

Magick::CoderInfo::~CoderInfo ( void )
{
  // Nothing to do
}

// Format name
std::string Magick::CoderInfo::name( void ) const
{
  return _name;
}

// Format description
std::string Magick::CoderInfo::description( void ) const
{
  return _description;
}

// Format is readable
bool Magick::CoderInfo::isReadable( void ) const
{
  return _isReadable;
}

// Format is writeable
bool Magick::CoderInfo::isWritable( void ) const
{
  return _isWritable;
}

// Format supports multiple frames
bool Magick::CoderInfo::isMultiFrame( void ) const
{
  return _isMultiFrame;
}

// Construct from MagickCore::MagickInfo*
Magick::CoderInfo::CoderInfo ( const MagickCore::MagickInfo *magickInfo_ )
  : _name(string(magickInfo_->name ? magickInfo_->name : "")),
    _description(string(magickInfo_->description ? magickInfo_->description : "")),
    _isReadable(magickInfo_->decoder ? true : false),
    _isWritable(magickInfo_->encoder ? true : false),
    _isMultiFrame(magickInfo_->adjoin ? true : false)
{
  // Nothing more to do
}



From ebala at helixcommunity.org  Thu Sep 10 11:34:19 2009
From: ebala at helixcommunity.org (ebala@helixcommunity.org)
Date: Thu Sep 10 20:37:12 2009
Subject: [Common-cvs] import/imagemagick/Magick++/lib Magick++.h, 1.1,
	1.2 ImageMagick++.pc.in, 1.1, 1.2 Magick++.pc.in, 1.1,
	1.2 ImageMagick++.pc, 1.1, 1.2 Makefile.am, 1.1, 1.2 Blob.cpp,
	1.1, 1.2 BlobRef.cpp, 1.1, 1.2 CoderInfo.cpp, 1.1,
	1.2 Color.cpp, 1.1, 1.2 Drawable.cpp, 1.1, 1.2 Exception.cpp,
	1.1, 1.2 Functions.cpp, 1.1, 1.2 Geometry.cpp, 1.1,
	1.2 Image.cpp, 1.1, 1.2 ImageRef.cpp, 1.1, 1.2 Montage.cpp,
	1.1, 1.2 Options.cpp, 1.1, 1.2 Pixels.cpp, 1.1, 1.2 STL.cpp,
	1.1, 1.2 Thread.cpp, 1.1, 1.2 TypeMetric.cpp, 1.1, 1.2
Message-ID: 

Update of /cvsroot/common/import/imagemagick/Magick++/lib
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv27291

Added Files:
	Magick++.h ImageMagick++.pc.in Magick++.pc.in ImageMagick++.pc 
	Makefile.am Blob.cpp BlobRef.cpp CoderInfo.cpp Color.cpp 
	Drawable.cpp Exception.cpp Functions.cpp Geometry.cpp 
	Image.cpp ImageRef.cpp Montage.cpp Options.cpp Pixels.cpp 
	STL.cpp Thread.cpp TypeMetric.cpp 
Log Message:
Import of Imagemagick

--- NEW FILE: ImageMagick++.pc.in ---
prefix=@prefix@
exec_prefix=@exec_prefix@
libdir=@libdir@
includedir=@includedir@/ImageMagick


Name: ImageMagick++
Version: @PACKAGE_VERSION@
Description: Magick++ - C++ API for ImageMagick
Requires: ImageMagick
Libs: -L${libdir} -lMagick++
Cflags: -I${includedir}

--- NEW FILE: TypeMetric.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 2001
//
// TypeMetric implementation
//

#define MAGICKCORE_IMPLEMENTATION  1
#define MAGICK_PLUSPLUS_IMPLEMENTATION 1

#include "Magick++/TypeMetric.h"
#include 

// Default constructor
Magick::TypeMetric::TypeMetric ( void )
{
  memset( &_typeMetric, 0, sizeof(_typeMetric));
}

Magick::TypeMetric::~TypeMetric ( void )
{
  // Nothing to do
}

// Ascent, expressed in pixels
double Magick::TypeMetric::ascent ( void ) const
{
  return _typeMetric.ascent;
}

// Descent, expressed in pixels
double Magick::TypeMetric::descent ( void ) const
{
  return _typeMetric.descent;
}

// Text width, expressed in pixels
double Magick::TypeMetric::textWidth ( void ) const
{
  return _typeMetric.width;
}

// Text height, expressed in pixels
double Magick::TypeMetric::textHeight ( void ) const
{
  return _typeMetric.height;
}

// Maximum horizontal advance, expressed in pixels
double Magick::TypeMetric::maxHorizontalAdvance ( void ) const
{
  return _typeMetric.max_advance;
}

--- NEW FILE: Pixels.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2000, 2001, 2002, 2003
//
// Pixels Implementation
//

#define MAGICKCORE_IMPLEMENTATION  1
#define MAGICK_PLUSPLUS_IMPLEMENTATION 1

#include "Magick++/Include.h"
#include  // This is here to compile with Visual C++
#include "Magick++/Thread.h"
#include "Magick++/Exception.h"
#include "Magick++/Pixels.h"

namespace Magick
{


}

// Construct pixel view using specified image.
Magick::Pixels::Pixels( Magick::Image &image_ )
  : _image(image_),
    _view(AcquireCacheView(_image.image())),
    _x(0),
    _y(0),
    _columns(0),
    _rows(0)
{
  GetExceptionInfo( &_exception );

  if (!_view)
    _image.throwImageException();
  (void) DestroyExceptionInfo( &_exception );
}

// Destroy pixel view
Magick::Pixels::~Pixels( void )
{
  if ( _view )
    _view = DestroyCacheView( _view );
  
}

// Transfer pixels from the image to the pixel view as defined by
// the specified region. Modified pixels may be subsequently
// transferred back to the image via sync.
Magick::PixelPacket* Magick::Pixels::get ( const int x_,
					   const int y_,
					   const unsigned int columns_,
					   const unsigned int rows_ )
{
  _x = x_;
  _y = y_;
  _columns = columns_;
  _rows = rows_;

  PixelPacket* pixels = GetCacheViewAuthenticPixels( _view, x_, y_, columns_, rows_,  &_exception);

  if ( !pixels )
    throwException( *GetCacheViewException(_view) );
  
  return pixels;
}

// Transfer read-only pixels from the image to the pixel view as
// defined by the specified region.
const Magick::PixelPacket* Magick::Pixels::getConst ( const int x_, const int y_,
                                                      const unsigned int columns_,
                                                      const unsigned int rows_ )
{
  _x = x_;
  _y = y_;
  _columns = columns_;
  _rows = rows_;

  const PixelPacket* pixels =
    GetCacheViewVirtualPixels(_view, x_, y_, columns_, rows_, &_exception );

  if ( !pixels )
    throwException( _exception );

    return pixels;
}

// Transfers the image view pixels to the image.
void Magick::Pixels::sync ( void )
{
  if( !SyncCacheViewAuthenticPixels( _view, &_exception ) )
    throwException(  _exception );
}
    
// Allocate a pixel view region to store image pixels as defined
// by the region rectangle.  This area is subsequently transferred
// from the pixel view to the image via 'sync'.
Magick::PixelPacket* Magick::Pixels::set ( const int x_,
					   const int y_,
					   const unsigned int columns_,
					   const unsigned int rows_ )
{
  _x = x_;
  _y = y_;
  _columns = columns_;
  _rows = rows_;

  PixelPacket* pixels = QueueCacheViewAuthenticPixels( _view, static_cast(x_), static_cast(y_),
                                      columns_, rows_,  &_exception );
  if ( !pixels )
    throwException( _exception );
  
  return pixels;
}

// Return pixel colormap index array
Magick::IndexPacket* Magick::Pixels::indexes ( void )
{
  IndexPacket* pixel_indexes = GetCacheViewAuthenticIndexQueue( _view );

  if ( !pixel_indexes )
    _image.throwImageException();

  return pixel_indexes;
}

--- NEW FILE: Makefile.am ---
#
# Makefile for Magick++ library
#
# Copyright Bob Friesenhahn, 1999, 2000, 2001, 2002, 2003
#
AUTOMAKE_OPTIONS = 1.8 nostdinc

SUBDIRS = Magick++

AM_CPPFLAGS = -I$(top_builddir) -I$(srcdir) -I$(top_srcdir)

includedir = @includedir@
pkgdatadir = $(datadir)/Magick++
pkglibdir = $(libdir)/Magick++
pkgincludedir = $(includedir)/Magick++

lib_LTLIBRARIES    = libMagick++.la

LIBRARY_CURRENT    = @LIBRARY_CURRENT@
LIBRARY_REVISION   = @LIBRARY_REVISION@
LIBRARY_AGE        = @LIBRARY_AGE@

libMagick___la_SOURCES = \
	Blob.cpp BlobRef.cpp CoderInfo.cpp Color.cpp Drawable.cpp \
	Exception.cpp Functions.cpp Geometry.cpp Image.cpp ImageRef.cpp \
	Montage.cpp Options.cpp Pixels.cpp STL.cpp Thread.cpp TypeMetric.cpp

libMagick___la_LDFLAGS = \
	-version-info $(LIBRARY_CURRENT):$(LIBRARY_REVISION):$(LIBRARY_AGE)

libMagick___la_LIBADD = $(top_builddir)/wand/libMagickWand.la $(top_builddir)/magick/libMagickCore.la

include_HEADERS = Magick++.h

EXTRA_DIST = ImageMagick++.pc.in

AM_LDFLAGS = @LDFLAGS@ $(LIBSTDCLDFLAGS)

# Pkgconfig directory
pkgconfigdir = $(libdir)/pkgconfig

# Files to install in Pkgconfig directory
pkgconfig_DATA = ImageMagick++.pc

--- NEW FILE: Color.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2000, 2001, 2002, 2003
//
// Color Implementation
//

#define MAGICKCORE_IMPLEMENTATION
#define MAGICK_PLUSPLUS_IMPLEMENTATION 1

#include "Magick++/Include.h"
#include 

using namespace std;

#include "Magick++/Color.h"
#include "Magick++/Exception.h"

//
// Color operator fuctions
//
int Magick::operator == ( const Magick::Color& left_,
			  const Magick::Color& right_ )
{
  return ( ( left_.isValid()      == right_.isValid() ) && 
	   ( left_.redQuantum()   == right_.redQuantum() ) &&
	   ( left_.greenQuantum() == right_.greenQuantum() ) &&
	   ( left_.blueQuantum()  == right_.blueQuantum() )
	  );
}
int Magick::operator != ( const Magick::Color& left_,
			  const Magick::Color& right_ )
{
  return ( ! (left_ == right_) );
}
int Magick::operator >  ( const Magick::Color& left_,
			  const Magick::Color& right_ )
{
  return ( !( left_ < right_ ) && ( left_ != right_ ) );
}
// Compare color intensities (similar to ImageMagick Intensity macro)
// If intensities match, discriminate based on priority green, red,
// & then blue.
int Magick::operator <  ( const Magick::Color& left_,
			  const Magick::Color& right_ )
{
  double left_intensity=left_.intensity();
  double right_intensity=right_.intensity();
  return (
          (left_intensity < right_intensity)
          || (
              (left_intensity == right_intensity)
              && (
                  (left_.greenQuantum() < right_.greenQuantum()) ||
                  (left_.redQuantum() < right_.redQuantum()) ||
                  (left_.blueQuantum() < right_.blueQuantum())
                  )
              )
	  );
}
int Magick::operator >= ( const Magick::Color& left_,
			  const Magick::Color& right_ )
{
  return ( ( left_ > right_ ) || ( left_ == right_ ) );
}
int Magick::operator <= ( const Magick::Color& left_,
			  const Magick::Color& right_ )
{
  return ( ( left_ < right_ ) || ( left_ == right_ ) );
}

//
// Color Implementation
//

// Default constructor
Magick::Color::Color ( void )
  : _pixel(new PixelPacket),
    _pixelOwn(true),
    _isValid(false),
    _pixelType(RGBPixel)
{
  initPixel();
}

// Construct from RGB
Magick::Color::Color ( Quantum red_,
                       Quantum green_,
                       Quantum blue_ )
  : _pixel(new PixelPacket),
    _pixelOwn(true),
    _isValid(true),
    _pixelType(RGBPixel)
{
  redQuantum   ( red_   );
  greenQuantum ( green_ );
  blueQuantum  ( blue_  );
  alphaQuantum ( OpaqueOpacity );
}

// Construct from RGBA
Magick::Color::Color ( Quantum red_,
                       Quantum green_,
                       Quantum blue_,
                       Quantum alpha_ )
  : _pixel(new PixelPacket),
    _pixelOwn(true),
    _isValid(true),
    _pixelType(RGBAPixel)
{
  redQuantum   ( red_   );
  greenQuantum ( green_ );
  blueQuantum  ( blue_  );
  alphaQuantum ( alpha_ );
}

// Copy constructor
Magick::Color::Color ( const Magick::Color & color_ )
  : _pixel( new PixelPacket ),
    _pixelOwn( true ),
    _isValid( color_._isValid ),
    _pixelType( color_._pixelType )
{
  *_pixel    = *color_._pixel;
}

// Construct from color expressed as C++ string
Magick::Color::Color ( const std::string &x11color_ )
  : _pixel(new PixelPacket),
    _pixelOwn(true),
    _isValid(true),
    _pixelType(RGBPixel)
{
  initPixel();

  // Use operator = implementation
  *this = x11color_;
}

// Construct from color expressed as C string
Magick::Color::Color ( const char * x11color_ )
  : _pixel(new PixelPacket),
    _pixelOwn(true),
    _isValid(true),
    _pixelType(RGBPixel)
{
  initPixel();

  // Use operator = implementation
  *this = x11color_;
}

// Construct color via ImageMagick PixelPacket
Magick::Color::Color ( const PixelPacket &color_ )
  : _pixel(new PixelPacket),
    _pixelOwn(true),	    // We allocated this pixel
    _isValid(true),
    _pixelType(RGBPixel)  // RGB pixel by default
{
  *_pixel = color_;

  if ( color_.opacity != OpaqueOpacity )
    _pixelType = RGBAPixel;
}

// Protected constructor to construct with PixelPacket*
// Used to point Color at a pixel.
Magick::Color::Color ( PixelPacket* rep_, PixelType pixelType_  )
  : _pixel(rep_),
    _pixelOwn(false),
    _isValid(true),
    _pixelType(pixelType_)
{
}

// Destructor
Magick::Color::~Color( void )
{
  if ( _pixelOwn )
    delete _pixel;
  _pixel=0;
}

// Assignment operator
Magick::Color& Magick::Color::operator = ( const Magick::Color& color_ )
{
  // If not being set to ourself
  if ( this != &color_ )
    {
      // Copy pixel value
      *_pixel = *color_._pixel;

      // Validity
      _isValid =  color_._isValid;

      // Copy pixel type
      _pixelType = color_._pixelType;
    }
  return *this;
}

// Set color via X11 color specification string
const Magick::Color& Magick::Color::operator = ( const std::string &x11color_ )
{
  initPixel();
  PixelPacket target_color;
  ExceptionInfo exception;
  GetExceptionInfo( &exception );
  if ( QueryColorDatabase( x11color_.c_str(), &target_color, &exception ) )
    {
      redQuantum( target_color.red );
      greenQuantum( target_color.green );
      blueQuantum( target_color.blue );
      alphaQuantum( target_color.opacity );

      if ( target_color.opacity > OpaqueOpacity )
	_pixelType = RGBAPixel;
      else
	_pixelType = RGBPixel;
    }
  else
    {
      _isValid = false;
      throwException(exception);
    }
  (void) DestroyExceptionInfo( &exception );

  return *this;
}

// Set color via X11 color specification C string
const Magick::Color& Magick::Color::operator = ( const char * x11color_ )
{
  *this = std::string(x11color_);
  return *this;
}

// Return X11 color specification string
Magick::Color::operator std::string() const
{
  if ( !isValid() )
    return std::string("none");

  char colorbuf[MaxTextExtent];

  MagickPixelPacket
    pixel;

  pixel.colorspace=RGBColorspace;
  pixel.matte=_pixelType == RGBAPixel ? MagickTrue : MagickFalse;
  pixel.depth=MAGICKCORE_QUANTUM_DEPTH;
  pixel.red=_pixel->red;
  pixel.green=_pixel->green;
  pixel.blue=_pixel->blue;
  pixel.opacity=_pixel->opacity;
  GetColorTuple( &pixel, MagickTrue, colorbuf );

  return std::string(colorbuf);
}

// Set color via ImageMagick PixelPacket
const Magick::Color& Magick::Color::operator= ( const MagickCore::PixelPacket &color_ )
{
  *_pixel = color_;
  if ( color_.opacity != OpaqueOpacity )
    _pixelType = RGBAPixel;
  else
    _pixelType = RGBPixel;
  return *this;
}

// Set pixel
// Used to point Color at a pixel in an image
void Magick::Color::pixel ( PixelPacket* rep_, PixelType pixelType_ )
{
  if ( _pixelOwn )
    delete _pixel;
  _pixel = rep_;
  _pixelOwn = false;
  _isValid = true;
  _pixelType = pixelType_;
}

// Does object contain valid color?
bool Magick::Color::isValid ( void ) const
{
  return( _isValid );
}
void Magick::Color::isValid ( bool valid_ )
{
  if ( (valid_ && isValid()) || (!valid_ && !isValid()) )
    return;

  if ( !_pixelOwn )
    {
      _pixel = new PixelPacket;
      _pixelOwn = true;
    }

  _isValid=valid_;

  initPixel();
}

//
// ColorHSL Implementation
//

Magick::ColorHSL::ColorHSL ( double hue_,
			     double saturation_,
			     double luminosity_ )
  : Color ()
{
  Quantum red, green, blue;

  ConvertHSLToRGB ( hue_,
		 saturation_,
		 luminosity_,
		 &red,
		 &green,
		 &blue );

  redQuantum   ( red );
  greenQuantum ( green );
  blueQuantum  ( blue );
  alphaQuantum ( OpaqueOpacity );
}

// Null constructor
Magick::ColorHSL::ColorHSL ( )
  : Color ()
{
}

// Copy constructor from base class
Magick::ColorHSL::ColorHSL ( const Magick::Color & color_ )
  : Color( color_ )
{
}

// Destructor
Magick::ColorHSL::~ColorHSL ( )
{
  // Nothing to do
}

void Magick::ColorHSL::hue ( double hue_ )
{
  double hue_val, saturation_val, luminosity_val;
  ConvertRGBToHSL ( redQuantum(),
		 greenQuantum(),
		 blueQuantum(),
		 &hue_val,
		 &saturation_val,
		 &luminosity_val );

  hue_val = hue_;

  Quantum red, green, blue;
  ConvertHSLToRGB ( hue_val,
		 saturation_val,
		 luminosity_val,
		 &red,
		 &green,
		 &blue
		 );

  redQuantum   ( red );
  greenQuantum ( green );
  blueQuantum  ( blue );
}

double Magick::ColorHSL::hue ( void ) const
{
  double hue_val, saturation_val, luminosity_val;
  ConvertRGBToHSL ( redQuantum(),
		 greenQuantum(),
		 blueQuantum(),
		 &hue_val,
		 &saturation_val,
		 &luminosity_val );
  return hue_val;
}

void Magick::ColorHSL::saturation ( double saturation_ )
{
  double hue_val, saturation_val, luminosity_val;
  ConvertRGBToHSL ( redQuantum(),
		 greenQuantum(),
		 blueQuantum(),
		 &hue_val,
		 &saturation_val,
		 &luminosity_val );
  
  saturation_val = saturation_;
  
  Quantum red, green, blue;
  ConvertHSLToRGB ( hue_val,
		 saturation_val,
		 luminosity_val,
		 &red,
		 &green,
		 &blue
		 );

  redQuantum   ( red );
  greenQuantum ( green );
  blueQuantum  ( blue );
}

double Magick::ColorHSL::saturation ( void ) const
{
  double hue_val, saturation_val, luminosity_val;
  ConvertRGBToHSL ( redQuantum(),
		 greenQuantum(),
		 blueQuantum(),
		 &hue_val,
		 &saturation_val,
		 &luminosity_val );
  return saturation_val;
}

void Magick::ColorHSL::luminosity ( double luminosity_ )
{
  double hue_val, saturation_val, luminosity_val;
  ConvertRGBToHSL ( redQuantum(),
		 greenQuantum(),
		 blueQuantum(),
		 &hue_val,
		 &saturation_val,
		 &luminosity_val );
  
  luminosity_val = luminosity_;
  
  Quantum red, green, blue;
  ConvertHSLToRGB ( hue_val,
		 saturation_val,
		 luminosity_val,
		 &red,
		 &green,
		 &blue
		 );
  
  redQuantum   ( red );
  greenQuantum ( green );
  blueQuantum  ( blue );
}

double Magick::ColorHSL::luminosity ( void ) const
{
  double hue_val, saturation_val, luminosity_val;
  ConvertRGBToHSL ( redQuantum(),
		 greenQuantum(),
		 blueQuantum(),
		 &hue_val,
		 &saturation_val,
		 &luminosity_val );
  return luminosity_val;
}

// Assignment from base class
Magick::ColorHSL& Magick::ColorHSL::operator = ( const Magick::Color& color_ )
{
  *static_cast(this) = color_;
  return *this;
}

//
// ColorGray Implementation
//
Magick::ColorGray::ColorGray ( double shade_ )
  : Color ( scaleDoubleToQuantum( shade_ ),
	    scaleDoubleToQuantum( shade_ ),
	    scaleDoubleToQuantum( shade_ ) )
{
  alphaQuantum ( OpaqueOpacity );
}

// Null constructor
Magick::ColorGray::ColorGray ( void )
  : Color ()
{
}

// Copy constructor from base class
Magick::ColorGray::ColorGray ( const Magick::Color & color_ )
  : Color( color_ )
{
}

// Destructor
Magick::ColorGray::~ColorGray ()
{
  // Nothing to do
}

void Magick::ColorGray::shade ( double shade_ )
{
  Quantum gray = scaleDoubleToQuantum( shade_ );
  redQuantum   ( gray );
  greenQuantum ( gray );
  blueQuantum  ( gray );
}

double Magick::ColorGray::shade ( void ) const
{
  return scaleQuantumToDouble ( greenQuantum() );
}

// Assignment from base class
Magick::ColorGray& Magick::ColorGray::operator = ( const Magick::Color& color_ )
{
  *static_cast(this) = color_;
  return *this;
}

//
// ColorMono Implementation
//
Magick::ColorMono::ColorMono ( bool mono_  )
  : Color ( ( mono_ ? QuantumRange : 0 ),
	    ( mono_ ? QuantumRange : 0 ),
	    ( mono_ ? QuantumRange : 0 ) )
{
  alphaQuantum ( OpaqueOpacity );
}

// Null constructor
Magick::ColorMono::ColorMono ( void )
  : Color ()
{
}

// Copy constructor from base class
Magick::ColorMono::ColorMono ( const Magick::Color & color_ )
  : Color( color_ )
{
}

// Destructor
Magick::ColorMono::~ColorMono ()
{
  // Nothing to do
}

void Magick::ColorMono::mono ( bool mono_ )
{
  redQuantum   ( mono_ ? QuantumRange : 0 );
  greenQuantum ( mono_ ? QuantumRange : 0 );
  blueQuantum  ( mono_ ? QuantumRange : 0 );
}

bool Magick::ColorMono::mono ( void ) const
{
  if ( greenQuantum() )
    return true;
  else
    return false;
}

// Assignment from base class
Magick::ColorMono& Magick::ColorMono::operator = ( const Magick::Color& color_ )
{
  *static_cast(this) = color_;
  return *this;
}

//
// ColorRGB Implementation
//

// Construct from red, green, and blue, components
Magick::ColorRGB::ColorRGB ( double red_,
			     double green_,
			     double blue_ )
  : Color ( scaleDoubleToQuantum(red_),
	    scaleDoubleToQuantum(green_),
	    scaleDoubleToQuantum(blue_) )
{
  alphaQuantum ( OpaqueOpacity );
}
// Null constructor
Magick::ColorRGB::ColorRGB ( void )
  : Color ()
{
}
// Copy constructor from base class
Magick::ColorRGB::ColorRGB ( const Magick::Color & color_ )
  : Color( color_ )
{
}
// Destructor
Magick::ColorRGB::~ColorRGB ( void )
{
  // Nothing to do
}

// Assignment from base class
Magick::ColorRGB& Magick::ColorRGB::operator = ( const Magick::Color& color_ )
{
  *static_cast(this) = color_;
  return *this;
}

//
// ColorYUV Implementation
//

//           R = Y          +1.13980*V
//           G = Y-0.39380*U-0.58050*V
//           B = Y+2.02790*U
//
//         U and V, normally -0.5 through 0.5, must be normalized to the range 0
//         through QuantumRange.
//
//           Y =  0.29900*R+0.58700*G+0.11400*B
//           U = -0.14740*R-0.28950*G+0.43690*B
//           V =  0.61500*R-0.51500*G-0.10000*B
//
//         U and V, normally -0.5 through 0.5, are normalized to the range 0
//         through QuantumRange.  Note that U = 0.493*(B-Y), V = 0.877*(R-Y).
//

// Construct from color components
Magick::ColorYUV::ColorYUV ( double y_,
			     double u_,
			     double v_ )
  : Color ( scaleDoubleToQuantum(y_ + 1.13980 * v_ ),
	    scaleDoubleToQuantum(y_ - (0.39380 * u_) - (0.58050 * v_) ),
	    scaleDoubleToQuantum(y_ + 2.02790 * u_ ) )
{
  alphaQuantum ( OpaqueOpacity );
}
// Null constructor
Magick::ColorYUV::ColorYUV ( void )
  : Color ()
{
}
// Copy constructor from base class
Magick::ColorYUV::ColorYUV ( const Magick::Color & color_ )
  : Color( color_ )
{
}
// Destructor
Magick::ColorYUV::~ColorYUV ( void )
{
  // Nothing to do
}

void Magick::ColorYUV::u ( double u_ )
{
  double V = v();
  double Y = y();

  redQuantum   ( scaleDoubleToQuantum( Y + 1.13980 * V ) );
  greenQuantum ( scaleDoubleToQuantum( Y - (0.39380 * u_) - (0.58050 * V) ) );
  blueQuantum  ( scaleDoubleToQuantum( Y + 2.02790 * u_ ) );
}

double Magick::ColorYUV::u ( void ) const
{
  return scaleQuantumToDouble( (-0.14740 * redQuantum()) - (0.28950 *
			       greenQuantum()) + (0.43690 * blueQuantum()) );
}

void Magick::ColorYUV::v ( double v_ )
{
  double U = u();
  double Y = y();

  redQuantum   ( scaleDoubleToQuantum( Y + 1.13980 * v_ ) );
  greenQuantum ( scaleDoubleToQuantum( Y - (0.39380 * U) - (0.58050 * v_) ) );
  blueQuantum  ( scaleDoubleToQuantum( Y + 2.02790 * U ) );
}

double Magick::ColorYUV::v ( void ) const
{
  return scaleQuantumToDouble((0.61500 * redQuantum()) -
                              (0.51500 * greenQuantum()) -
                              (0.10000 * blueQuantum()));
}

void Magick::ColorYUV::y ( double y_ )
{
  double U = u();
  double V = v();

  redQuantum   ( scaleDoubleToQuantum( y_ + 1.13980 * V ) );
  greenQuantum ( scaleDoubleToQuantum( y_ - (0.39380 * U) - (0.58050 * V) ) );
  blueQuantum  ( scaleDoubleToQuantum( y_ + 2.02790 * U ) );
}

double Magick::ColorYUV::y ( void ) const
{
  return scaleQuantumToDouble((0.29900 * redQuantum()) + 
                              (0.58700 * greenQuantum()) +
                              (0.11400 * blueQuantum()));
}

// Assignment from base class
Magick::ColorYUV& Magick::ColorYUV::operator = ( const Magick::Color& color_ )
{
  *static_cast(this) = color_;
  return *this;
}

--- NEW FILE: Magick++.h ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2000
//
// Simplified includes for Magick++.
// Inclusion of this header is sufficient to use all Magick++ APIs.
//
#ifndef MagickPlusPlus_Header
#include 
#include 
#include 
#include 
#define MagickPlusPlus_Header
#endif // MagickPlusPlus_Header

--- NEW FILE: ImageRef.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2000, 2001, 2002
//
// Implementation of ImageRef
//
// This is an internal implementation class.
//

#define MAGICKCORE_IMPLEMENTATION  1
#define MAGICK_PLUSPLUS_IMPLEMENTATION 1

#include "Magick++/ImageRef.h"
#include "Magick++/Exception.h"
#include "Magick++/Options.h"

// Construct with an image and default options
Magick::ImageRef::ImageRef ( MagickCore::Image * image_ )
  : _image(image_),
    _options(new Options),
    _id(-1),
    _refCount(1),
    _mutexLock()
{
}

// Construct with an image and options
// Inserts Image* in image, but copies Options into image.
Magick::ImageRef::ImageRef ( MagickCore::Image * image_,
			     const Options * options_ )
  : _image(image_),
    _options(0),
    _id(-1),
    _refCount(1),
    _mutexLock()
{
  _options = new Options( *options_ );
}

// Default constructor
Magick::ImageRef::ImageRef ( void )
  : _image(0),
    _options(new Options),
    _id(-1),
    _refCount(1),
    _mutexLock()
{
  // Allocate default image
  _image = AcquireImage( _options->imageInfo() );

  // Test for error and throw exception (like throwImageException())
  throwException(_image->exception);
}

// Destructor
Magick::ImageRef::~ImageRef( void )
{
  // Unregister image (if still registered)
  if( _id > -1 )
    {
      char id[MaxTextExtent];
      sprintf(id,"%ld",_id);
      DeleteImageRegistry( id );
      _id=-1;
    }

  // Deallocate image
  if ( _image )
    {
      DestroyImageList( _image );
      _image = 0;
    }

  // Deallocate image options
  delete _options;
  _options = 0;
}

// Assign image to reference
void Magick::ImageRef::image ( MagickCore::Image * image_ )
{
  if(_image)
    DestroyImageList( _image );
  _image = image_;
}

// Assign options to reference
void  Magick::ImageRef::options ( Magick::Options * options_ )
{
  delete _options;
  _options = options_;
}

// Assign registration id to reference
void Magick::ImageRef::id ( const long id_ )
{
  if( _id > -1 )
    {
      char id[MaxTextExtent];
      sprintf(id,"%ld",_id);
      DeleteImageRegistry( id );
    }
  _id = id_;
}

--- NEW FILE: Magick++.pc.in ---
prefix=@prefix@
exec_prefix=@exec_prefix@
libdir=@libdir@
includedir=@includedir@/ImageMagick


Name: Magick++
Version: @PACKAGE_VERSION@
Description: Magick++ - C++ API for ImageMagick
Requires: ImageMagick
Libs: -L${libdir} -lMagick++
Cflags: -I${includedir}

--- NEW FILE: ImageMagick++.pc ---
prefix=/usr/local
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include/ImageMagick


Name: ImageMagick++
Version: 6.5.4
Description: Magick++ - C++ API for ImageMagick
Requires: ImageMagick
Libs: -L${libdir} -lMagick++
Cflags: -I${includedir}

--- NEW FILE: Drawable.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2000, 2001, 2002, 2003
//
// Implementation of Drawable (Graphic objects)
//

#define MAGICKCORE_IMPLEMENTATION  1
#define MAGICK_PLUSPLUS_IMPLEMENTATION 1
#define MAGICK_DRAWABLE_IMPLEMENTATION

#include "Magick++/Include.h"
#include 
#include 

#include "Magick++/Drawable.h"
#include "Magick++/Image.h"

using namespace std;
[...2106 lines suppressed...]
{
  for( CoordinateList::const_iterator p = _coordinates.begin();
       p != _coordinates.end(); p++ )
    {
      DrawPathMoveToRelative( context_, p->x(), p->y() );
    }
}
Magick::VPathBase* Magick::PathMovetoRel::copy() const
{
  return new PathMovetoRel(*this);
}

#if defined(EXPLICIT_TEMPLATE_INSTANTIATION)
// template class std::list;
// template class std::list;
// template class std::list;
// template class std::list;
// template class std::list;
// template class std::list;
#endif

--- NEW FILE: Options.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2000, 2001, 2002, 2003
//
// Implementation of Options
//
// A wrapper around DrawInfo, ImageInfo, and QuantizeInfo
//

#define MAGICKCORE_IMPLEMENTATION  1
#define MAGICK_PLUSPLUS_IMPLEMENTATION 1

#include "Magick++/Include.h"
#include 
#include 
#include 
#include 
#include "Magick++/Options.h"
#include "Magick++/Functions.h"
#include "Magick++/Exception.h"

#define MagickPI  3.14159265358979323846264338327950288419716939937510
#define DegreesToRadians(x)  (MagickPI*(x)/180.0)

// Constructor
Magick::Options::Options( void )
  : _imageInfo(static_cast(AcquireMagickMemory(sizeof(ImageInfo)))),
    _quantizeInfo(static_cast(AcquireMagickMemory(sizeof(QuantizeInfo)))),
    _drawInfo(static_cast(AcquireMagickMemory( sizeof(DrawInfo))))
{
  // Initialize image info with defaults
  GetImageInfo( _imageInfo );
  
  // Initialize quantization info
  GetQuantizeInfo( _quantizeInfo );

  // Initialize drawing info
  GetDrawInfo( _imageInfo, _drawInfo );
}

// Copy constructor
Magick::Options::Options( const Magick::Options& options_ )
  : _imageInfo(CloneImageInfo( options_._imageInfo )),
    _quantizeInfo(CloneQuantizeInfo(options_._quantizeInfo)),
    _drawInfo(CloneDrawInfo(_imageInfo, options_._drawInfo))
{
}

// Construct using raw structures
Magick::Options::Options( const MagickCore::ImageInfo* imageInfo_,
                          const MagickCore::QuantizeInfo* quantizeInfo_,
                          const MagickCore::DrawInfo* drawInfo_ )
: _imageInfo(0),
  _quantizeInfo(0),
  _drawInfo(0)
{
  _imageInfo = CloneImageInfo(imageInfo_);
  _quantizeInfo = CloneQuantizeInfo(quantizeInfo_);
  _drawInfo = CloneDrawInfo(imageInfo_,drawInfo_);
}

// Destructor
Magick::Options::~Options()
{
  // Destroy image info
   _imageInfo =DestroyImageInfo( _imageInfo );
  _imageInfo=0;

  // Destroy quantization info
   _quantizeInfo =DestroyQuantizeInfo( _quantizeInfo );
  _quantizeInfo=0;

  // Destroy drawing info
   _drawInfo =DestroyDrawInfo( _drawInfo );
  _drawInfo=0;
}

/*
 * Methods for setting image attributes
 *
 */

// Anti-alias Postscript and TrueType fonts (default true)
void Magick::Options::antiAlias( bool flag_ )
{
  _drawInfo->text_antialias = static_cast
    (flag_ ? MagickTrue : MagickFalse);
}
bool Magick::Options::antiAlias( void ) const
{
  return static_cast(_drawInfo->text_antialias);
}

void Magick::Options::adjoin ( bool flag_ )
{
  _imageInfo->adjoin = static_cast
    (flag_ ? MagickTrue : MagickFalse);
}
bool Magick::Options::adjoin ( void ) const
{
  return static_cast(_imageInfo->adjoin);
}

void Magick::Options::backgroundColor ( const Magick::Color &color_ )
{
  _imageInfo->background_color = color_;
}
Magick::Color Magick::Options::backgroundColor ( void ) const
{
  return Magick::Color( _imageInfo->background_color );
}

void Magick::Options::backgroundTexture ( const std::string &backgroundTexture_ )
{
  if ( backgroundTexture_.length() == 0 )
    _imageInfo->texture=(char *) RelinquishMagickMemory(_imageInfo->texture);
  else
    Magick::CloneString( &_imageInfo->texture, backgroundTexture_ );
}
std::string Magick::Options::backgroundTexture ( void ) const
{
  if ( _imageInfo->texture )
    return std::string( _imageInfo->texture );
  else
    return std::string();
}

void Magick::Options::borderColor ( const Color &color_ )
{
  _imageInfo->border_color = color_;
  _drawInfo->border_color = color_;
}
Magick::Color Magick::Options::borderColor ( void ) const
{
  return Magick::Color( _imageInfo->border_color );
}

// Text bounding-box base color
void Magick::Options::boxColor ( const Magick::Color &boxColor_ )
{
  _drawInfo->undercolor = boxColor_;
}
Magick::Color Magick::Options::boxColor ( void ) const
{
  return Magick::Color( _drawInfo->undercolor );
}

void Magick::Options::colorspaceType ( Magick::ColorspaceType colorspace_ )
{
  _imageInfo->colorspace = colorspace_;
}
Magick::ColorspaceType Magick::Options::colorspaceType ( void ) const
{
  return static_cast(_imageInfo->colorspace);
}

void Magick::Options::compressType ( CompressionType compressType_ )
{
  _imageInfo->compression = compressType_;
}
Magick::CompressionType Magick::Options::compressType ( void ) const
{
  return static_cast(_imageInfo->compression);
}

void Magick::Options::colorFuzz ( double fuzz_ )
{
  _imageInfo->fuzz = fuzz_;
}
double Magick::Options::colorFuzz ( void ) const
{
  return _imageInfo->fuzz;
}

// Enable printing of debug messages from ImageMagick
void Magick::Options::debug ( bool flag_ )
{
  if(flag_)
    {
      SetLogEventMask("All");
    }
  else
    {
      SetLogEventMask("None");
    }
}
bool Magick::Options::debug ( void ) const
{
  if( IsEventLogging() )
    {
      return true;
    }
  return false;
}

void Magick::Options::density ( const Magick::Geometry &density_ )
{
  if ( !density_.isValid() )
    _imageInfo->density=(char *) RelinquishMagickMemory(_imageInfo->density);
  else
    Magick::CloneString( &_imageInfo->density, density_ );
}
Magick::Geometry Magick::Options::density ( void ) const
{
  if ( _imageInfo->density )
    return Geometry( _imageInfo->density );

  return Geometry();
}

void Magick::Options::depth ( unsigned int depth_ )
{
  _imageInfo->depth = depth_;
}
unsigned int Magick::Options::depth ( void ) const
{
  return _imageInfo->depth;
}

// Endianness (little like Intel or big like SPARC) for image
// formats which support endian-specific options.
void Magick::Options::endian ( Magick::EndianType endian_ )
{
  _imageInfo->endian = endian_;
}
Magick::EndianType Magick::Options::endian ( void ) const
{
  return _imageInfo->endian;
}

void Magick::Options::fileName ( const std::string &fileName_ )
{
  fileName_.copy( _imageInfo->filename, MaxTextExtent-1 );
  _imageInfo->filename[ fileName_.length() ] = 0;
}
std::string Magick::Options::fileName ( void ) const
{
  return std::string( _imageInfo->filename );
}

// Color to use when drawing inside an object
void Magick::Options::fillColor ( const Magick::Color &fillColor_ )
{
  _drawInfo->fill = fillColor_;
  if (fillColor_ == Magick::Color())
    fillPattern((const MagickCore::Image*) NULL);
}
Magick::Color Magick::Options::fillColor ( void ) const
{
  return _drawInfo->fill;
}
// Pattern image to use when filling objects
void Magick::Options::fillPattern ( const MagickCore::Image *fillPattern_ )
{
  if ( _drawInfo->fill_pattern )
    {
      DestroyImageList( _drawInfo->fill_pattern );
      _drawInfo->fill_pattern = 0;
    }
  if ( fillPattern_ )
    {
      ExceptionInfo exceptionInfo;
      GetExceptionInfo( &exceptionInfo );
      _drawInfo->fill_pattern =
	CloneImage( const_cast(fillPattern_),
		    0,
		    0,
		    static_cast(MagickTrue),
		    &exceptionInfo );
      throwException( exceptionInfo );
      (void) DestroyExceptionInfo( &exceptionInfo );
    }
}
const MagickCore::Image* Magick::Options::fillPattern ( void  ) const
{
  return _drawInfo->fill_pattern;
}

// Rule to use when filling drawn objects
void Magick::Options::fillRule ( const Magick::FillRule &fillRule_ )
{
  _drawInfo->fill_rule = fillRule_;
}
Magick::FillRule Magick::Options::fillRule ( void ) const
{
  return _drawInfo->fill_rule;
}

void Magick::Options::font ( const std::string &font_ )
{
  if ( font_.length() == 0 )
    {
      _imageInfo->font=(char *) RelinquishMagickMemory(_imageInfo->font);
      _drawInfo->font=(char *) RelinquishMagickMemory(_drawInfo->font);
    }
  else
    {
      Magick::CloneString( &_imageInfo->font, font_ );
      Magick::CloneString( &_drawInfo->font, font_ );
    }
}
std::string Magick::Options::font ( void ) const
{
  if ( _imageInfo->font )
    return std::string( _imageInfo->font );
  
  return std::string();
}

void Magick::Options::fontPointsize ( double pointSize_ )
{
  _imageInfo->pointsize = pointSize_;
  _drawInfo->pointsize = pointSize_;
}
double Magick::Options::fontPointsize ( void ) const
{
  return _imageInfo->pointsize;
}

std::string Magick::Options::format ( void ) const
{
  ExceptionInfo exception;

  const MagickInfo * magick_info = 0;
  GetExceptionInfo(&exception);
  if ( *_imageInfo->magick != '\0' )
    magick_info = GetMagickInfo( _imageInfo->magick , &exception);
  throwException( exception );
  (void) DestroyExceptionInfo( &exception );
  
  if (( magick_info != 0 ) && 
      ( *magick_info->description != '\0' ))
    return std::string( magick_info->description );
  
  return std::string();
}

void Magick::Options::interlaceType ( Magick::InterlaceType interlace_ )
{
  _imageInfo->interlace = interlace_;
}
Magick::InterlaceType Magick::Options::interlaceType ( void ) const
{
  return static_cast(_imageInfo->interlace);
}

void Magick::Options::magick ( const std::string &magick_ )
{
  ExceptionInfo exception;

  FormatMagickString( _imageInfo->filename, MaxTextExtent, "%.1024s:", magick_.c_str() );
  GetExceptionInfo(&exception);
  SetImageInfo( _imageInfo, MagickTrue, &exception);
  if ( *_imageInfo->magick == '\0' )
    throwExceptionExplicit( OptionWarning,
			    "Unrecognized image format",
			    magick_.c_str() );
  (void) DestroyExceptionInfo( &exception );
}
std::string Magick::Options::magick ( void ) const
{
  if ( _imageInfo->magick && *_imageInfo->magick )
    return std::string( _imageInfo->magick );
  
  return std::string();
}

void Magick::Options::matteColor ( const Magick::Color &matteColor_ )
{
  _imageInfo->matte_color = matteColor_;
}
Magick::Color Magick::Options::matteColor ( void ) const
{
  return Magick::Color( _imageInfo->matte_color );
}

void Magick::Options::monochrome ( bool monochromeFlag_ )
{
  _imageInfo->monochrome = (MagickBooleanType) monochromeFlag_;
}
bool Magick::Options::monochrome ( void ) const
{
  return static_cast(_imageInfo->monochrome);
}

void Magick::Options::page ( const Magick::Geometry &pageSize_ )
{
  if ( !pageSize_.isValid() )
    _imageInfo->page=(char *) RelinquishMagickMemory(_imageInfo->page);
  else
    Magick::CloneString( &_imageInfo->page, pageSize_ );
}
Magick::Geometry Magick::Options::page ( void ) const
{
  if ( _imageInfo->page )
    return Geometry( _imageInfo->page );

    return Geometry();
}

void Magick::Options::quality ( unsigned int quality_ )
{
  _imageInfo->quality = quality_;
}
unsigned int Magick::Options::quality ( void ) const
{
  return _imageInfo->quality;
}

void Magick::Options::quantizeColors ( unsigned int colors_ )
{
  _quantizeInfo->number_colors = colors_;
}
unsigned int Magick::Options::quantizeColors ( void ) const
{
  return _quantizeInfo->number_colors;
}

void Magick::Options::quantizeColorSpace ( Magick::ColorspaceType colorSpace_ )
{
  _quantizeInfo->colorspace = colorSpace_;
}
Magick::ColorspaceType Magick::Options::quantizeColorSpace ( void ) const
{
  return static_cast(_quantizeInfo->colorspace);
}

void Magick::Options::quantizeDither ( bool ditherFlag_ )
{
  _imageInfo->dither = (MagickBooleanType) ditherFlag_;
  _quantizeInfo->dither = (MagickBooleanType) ditherFlag_;
}
bool Magick::Options::quantizeDither ( void ) const
{
  return static_cast(_imageInfo->dither);
}

void Magick::Options::quantizeTreeDepth ( unsigned int treeDepth_ )
{
  _quantizeInfo->tree_depth = treeDepth_;
}
unsigned int Magick::Options::quantizeTreeDepth ( void ) const
{
  return _quantizeInfo->tree_depth;
}

void Magick::Options::resolutionUnits ( Magick::ResolutionType resolutionUnits_ )
{
  _imageInfo->units = resolutionUnits_;
}
Magick::ResolutionType Magick::Options::resolutionUnits ( void ) const
{
  return static_cast(_imageInfo->units);
}

void Magick::Options::samplingFactor ( const std::string &samplingFactor_ )
{
  if ( samplingFactor_.length() == 0 )
    _imageInfo->sampling_factor=(char *) RelinquishMagickMemory(_imageInfo->sampling_factor);
  else
    Magick::CloneString( &_imageInfo->sampling_factor, samplingFactor_ );
}
std::string Magick::Options::samplingFactor ( void ) const
{
  if ( _imageInfo->sampling_factor )
    return std::string( _imageInfo->sampling_factor );

  return std::string();
}

void Magick::Options::size ( const Geometry &geometry_ )
{
  _imageInfo->size=(char *) RelinquishMagickMemory(_imageInfo->size);

  if ( geometry_.isValid() )
    Magick::CloneString( &_imageInfo->size, geometry_ );
}
Magick::Geometry Magick::Options::size ( void ) const
{
  if ( _imageInfo->size )
    return Geometry( _imageInfo->size );

  return Geometry();
}

void Magick::Options::strokeAntiAlias( bool flag_ )
{
  flag_ ? _drawInfo->stroke_antialias=MagickTrue : _drawInfo->stroke_antialias=MagickFalse;
}
bool Magick::Options::strokeAntiAlias( void ) const
{
  return (_drawInfo->stroke_antialias != 0 ? true : false);
}

// Color to use when drawing object outlines
void Magick::Options::strokeColor ( const Magick::Color &strokeColor_ )
{
  _drawInfo->stroke = strokeColor_;
}
Magick::Color Magick::Options::strokeColor ( void ) const
{
  return _drawInfo->stroke;
}

void Magick::Options::strokeDashArray ( const double* strokeDashArray_ )
{
  _drawInfo->dash_pattern=(double *)
    RelinquishMagickMemory(_drawInfo->dash_pattern);

  if(strokeDashArray_)
    {
      // Count elements in dash array
      unsigned int x;
      for (x=0; strokeDashArray_[x]; x++) ;
      // Allocate elements
      _drawInfo->dash_pattern =
        static_cast(AcquireMagickMemory((x+1)*sizeof(double)));
      // Copy elements
      memcpy(_drawInfo->dash_pattern,strokeDashArray_,
             (x+1)*sizeof(double));
    }
}
const double* Magick::Options::strokeDashArray ( void ) const
{
  return _drawInfo->dash_pattern;
}

void Magick::Options::strokeDashOffset ( double strokeDashOffset_ )
{
  _drawInfo->dash_offset = strokeDashOffset_;
}
double Magick::Options::strokeDashOffset ( void ) const
{
  return _drawInfo->dash_offset;
}

// Specify the shape to be used at the end of open subpaths when they
// are stroked. Values of LineCap are ButtCap, RoundCap, and
// SquareCap.
void Magick::Options::strokeLineCap ( Magick::LineCap lineCap_ )
{
  _drawInfo->linecap = lineCap_;
}
Magick::LineCap Magick::Options::strokeLineCap ( void ) const
{
  return _drawInfo->linecap;
}

// Specify the shape to be used at the corners of paths (or other
// vector shapes) when they are stroked.
void Magick::Options::strokeLineJoin ( Magick::LineJoin lineJoin_ )
{
  _drawInfo->linejoin = lineJoin_;
}
Magick::LineJoin Magick::Options::strokeLineJoin ( void ) const
{
  return _drawInfo->linejoin;
}

// miterLimit for drawing lines, circles, ellipses, etc.
void Magick::Options::strokeMiterLimit ( unsigned int miterLimit_ )
{
  _drawInfo->miterlimit = miterLimit_;
}
unsigned int Magick::Options::strokeMiterLimit ( void ) const
{
  return _drawInfo->miterlimit;
}

// Pattern image to use for stroked outlines
void Magick::Options::strokePattern ( const MagickCore::Image *strokePattern_ )
{
  if ( _drawInfo->stroke_pattern )
    {
      DestroyImageList( _drawInfo->stroke_pattern );
      _drawInfo->stroke_pattern = 0;
    }

  if ( strokePattern_ )
    {
      ExceptionInfo exceptionInfo;
      GetExceptionInfo( &exceptionInfo );
      _drawInfo->stroke_pattern =
	CloneImage( const_cast(strokePattern_),
		    0,
		    0,
		    MagickTrue,
		    &exceptionInfo );
      throwException( exceptionInfo );
      (void) DestroyExceptionInfo( &exceptionInfo );
    }
}
const MagickCore::Image* Magick::Options::strokePattern ( void  ) const
{
  return _drawInfo->stroke_pattern;
}

// Stroke width for drawing lines, circles, ellipses, etc.
void Magick::Options::strokeWidth ( double strokeWidth_ )
{
  _drawInfo->stroke_width = strokeWidth_;
}
double Magick::Options::strokeWidth ( void ) const
{
  return _drawInfo->stroke_width;
}

void Magick::Options::subImage ( unsigned int subImage_ )
{
  _imageInfo->subimage = subImage_;
}
unsigned int Magick::Options::subImage ( void ) const
{
  return _imageInfo->subimage;
}

void Magick::Options::subRange ( unsigned int subRange_ )
{
  _imageInfo->subrange = subRange_;
}
unsigned int Magick::Options::subRange ( void ) const
{
  return _imageInfo->subrange;
}

// Annotation text encoding (e.g. "UTF-16")
void Magick::Options::textEncoding ( const std::string &encoding_ )
{
  CloneString(&_drawInfo->encoding, encoding_.c_str());
}
std::string Magick::Options::textEncoding ( void ) const
{
  if ( _drawInfo->encoding && *_drawInfo->encoding )
    return std::string( _drawInfo->encoding );
  
  return std::string();
}

void Magick::Options::tileName ( const std::string &tileName_ )
{
  if ( tileName_.length() == 0 )
    _imageInfo->tile=(char *) RelinquishMagickMemory(_imageInfo->tile);
  else
    Magick::CloneString( &_imageInfo->tile, tileName_ );
}
std::string Magick::Options::tileName ( void ) const
{
  if ( _imageInfo->tile )
    return std::string( _imageInfo->tile );
  return std::string();
}

// Image representation type
void Magick::Options::type ( const Magick::ImageType type_ )
{
  _imageInfo->type = type_;
}
Magick::ImageType Magick::Options::type ( void ) const
{
  return _imageInfo->type;
}

// Origin of coordinate system to use when annotating with text or drawing
void Magick::Options::transformOrigin ( double tx_, double ty_ )
{
  AffineMatrix current = _drawInfo->affine;
  AffineMatrix affine;
  affine.sx=1.0;
  affine.rx=0.0;
  affine.ry=0.0;
  affine.sy=1.0;
  affine.tx=0.0;
  affine.ty=0.0;

  affine.tx = tx_;
  affine.ty = ty_;

  _drawInfo->affine.sx=current.sx*affine.sx+current.ry*affine.rx;
  _drawInfo->affine.rx=current.rx*affine.sx+current.sy*affine.rx;
  _drawInfo->affine.ry=current.sx*affine.ry+current.ry*affine.sy;
  _drawInfo->affine.sy=current.rx*affine.ry+current.sy*affine.sy;
  _drawInfo->affine.tx=current.sx*affine.tx+current.ry*affine.ty+current.tx;
  _drawInfo->affine.ty=current.rx*affine.tx+current.sy*affine.ty+current.ty;
}

// Reset transformation parameters to default
void Magick::Options::transformReset ( void )
{
  _drawInfo->affine.sx=1.0;
  _drawInfo->affine.rx=0.0;
  _drawInfo->affine.ry=0.0;
  _drawInfo->affine.sy=1.0;
  _drawInfo->affine.tx=0.0;
  _drawInfo->affine.ty=0.0;
}

// Rotation to use when annotating with text or drawing
void Magick::Options::transformRotation ( double angle_ )
{
  AffineMatrix current = _drawInfo->affine;
  AffineMatrix affine;
  affine.sx=1.0;
  affine.rx=0.0;
  affine.ry=0.0;
  affine.sy=1.0;
  affine.tx=0.0;
  affine.ty=0.0;

  affine.sx=cos(DegreesToRadians(fmod(angle_,360.0)));
  affine.rx=(-sin(DegreesToRadians(fmod(angle_,360.0))));
  affine.ry=sin(DegreesToRadians(fmod(angle_,360.0)));
  affine.sy=cos(DegreesToRadians(fmod(angle_,360.0)));

  _drawInfo->affine.sx=current.sx*affine.sx+current.ry*affine.rx;
  _drawInfo->affine.rx=current.rx*affine.sx+current.sy*affine.rx;
  _drawInfo->affine.ry=current.sx*affine.ry+current.ry*affine.sy;
  _drawInfo->affine.sy=current.rx*affine.ry+current.sy*affine.sy;
  _drawInfo->affine.tx=current.sx*affine.tx+current.ry*affine.ty+current.tx;
  _drawInfo->affine.ty=current.rx*affine.tx+current.sy*affine.ty+current.ty;
}

// Scale to use when annotating with text or drawing
void Magick::Options::transformScale ( double sx_, double sy_ )
{
  AffineMatrix current = _drawInfo->affine;
  AffineMatrix affine;
  affine.sx=1.0;
  affine.rx=0.0;
  affine.ry=0.0;
  affine.sy=1.0;
  affine.tx=0.0;
  affine.ty=0.0;

  affine.sx = sx_;
  affine.sy = sy_;

  _drawInfo->affine.sx=current.sx*affine.sx+current.ry*affine.rx;
  _drawInfo->affine.rx=current.rx*affine.sx+current.sy*affine.rx;
  _drawInfo->affine.ry=current.sx*affine.ry+current.ry*affine.sy;
  _drawInfo->affine.sy=current.rx*affine.ry+current.sy*affine.sy;
  _drawInfo->affine.tx=current.sx*affine.tx+current.ry*affine.ty+current.tx;
  _drawInfo->affine.ty=current.rx*affine.tx+current.sy*affine.ty+current.ty;
}

// Skew to use in X axis when annotating with text or drawing
void Magick::Options::transformSkewX ( double skewx_ )
{
  AffineMatrix current = _drawInfo->affine;
  AffineMatrix affine;
  affine.sx=1.0;
  affine.rx=0.0;
  affine.ry=0.0;
  affine.sy=1.0;
  affine.tx=0.0;
  affine.ty=0.0;

  affine.sx=1.0;
  affine.ry=tan(DegreesToRadians(fmod(skewx_,360.0)));
  affine.sy=1.0;

  _drawInfo->affine.sx=current.sx*affine.sx+current.ry*affine.rx;
  _drawInfo->affine.rx=current.rx*affine.sx+current.sy*affine.rx;
  _drawInfo->affine.ry=current.sx*affine.ry+current.ry*affine.sy;
  _drawInfo->affine.sy=current.rx*affine.ry+current.sy*affine.sy;
  _drawInfo->affine.tx=current.sx*affine.tx+current.ry*affine.ty+current.tx;
  _drawInfo->affine.ty=current.rx*affine.tx+current.sy*affine.ty+current.ty;
}

// Skew to use in Y axis when annotating with text or drawing
void Magick::Options::transformSkewY ( double skewy_ )
{
  AffineMatrix current = _drawInfo->affine;
  AffineMatrix affine;
  affine.sx=1.0;
  affine.rx=0.0;
  affine.ry=0.0;
  affine.sy=1.0;
  affine.tx=0.0;
  affine.ty=0.0;

  affine.sx=1.0;
  affine.rx=tan(DegreesToRadians(fmod(skewy_,360.0)));
  affine.sy=1.0;

  _drawInfo->affine.sx=current.sx*affine.sx+current.ry*affine.rx;
  _drawInfo->affine.rx=current.rx*affine.sx+current.sy*affine.rx;
  _drawInfo->affine.ry=current.sx*affine.ry+current.ry*affine.sy;
  _drawInfo->affine.sy=current.rx*affine.ry+current.sy*affine.sy;
  _drawInfo->affine.tx=current.sx*affine.tx+current.ry*affine.ty+current.tx;
  _drawInfo->affine.ty=current.rx*affine.tx+current.sy*affine.ty+current.ty;
}

void Magick::Options::verbose ( bool verboseFlag_ )
{
  _imageInfo->verbose = (MagickBooleanType) verboseFlag_;
}
bool Magick::Options::verbose ( void ) const
{
  return static_cast(_imageInfo->verbose);
}

void Magick::Options::virtualPixelMethod ( VirtualPixelMethod virtual_pixel_method_ )
{
  _imageInfo->virtual_pixel_method = virtual_pixel_method_;
}
Magick::VirtualPixelMethod Magick::Options::virtualPixelMethod ( void ) const
{
  return static_cast(_imageInfo->virtual_pixel_method);
}

void Magick::Options::view ( const std::string &view_ )
{
  if ( view_.length() == 0 )
    _imageInfo->view=(char *) RelinquishMagickMemory(_imageInfo->view);
  else
    Magick::CloneString( &_imageInfo->view, view_ );
}
std::string Magick::Options::view ( void ) const
{
  if ( _imageInfo->view )
    return std::string( _imageInfo->view );

  return std::string();
}

void Magick::Options::x11Display ( const std::string &display_ )
{
  if ( display_.length() == 0 )
    _imageInfo->server_name=(char *) RelinquishMagickMemory(_imageInfo->server_name);
  else
    Magick::CloneString( &_imageInfo->server_name, display_ );
}
std::string Magick::Options::x11Display ( void ) const
{
  if ( _imageInfo->server_name )
    return std::string( _imageInfo->server_name );

  return std::string();
}

//
// Internal implementation methods.  Please do not use.
//

MagickCore::DrawInfo * Magick::Options::drawInfo( void )
{
  return _drawInfo;
}

MagickCore::ImageInfo * Magick::Options::imageInfo( void )
{
  return _imageInfo;
}

MagickCore::QuantizeInfo * Magick::Options::quantizeInfo( void )
{
  return _quantizeInfo;
}

--- NEW FILE: Montage.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2000, 2001, 2002, 2003
//
// Implementation of Montage
//

#define MAGICKCORE_IMPLEMENTATION  1
#define MAGICK_PLUSPLUS_IMPLEMENTATION 1

#include "Magick++/Include.h"
#include 
#include 

#include "Magick++/Montage.h"
#include "Magick++/Functions.h"

Magick::Montage::Montage ( void )
  : _backgroundColor("#ffffff"),
    _compose(OverCompositeOp),
    _fileName(),
    _fill("#000000ff"),
    _font(),
    _geometry("120x120+4+3>"),
    _gravity(CenterGravity),
    _label(),
    _pointSize(12),
    _shadow(false),
    _stroke(),
    _texture(),
    _tile("6x4"),
    _title(),
    _transparentColor()
{
}

Magick::Montage::~Montage( void )
{
  // Nothing to do
}

Magick::MontageFramed::MontageFramed ( void )
  : _borderColor("#dfdfdf"),
    _borderWidth(0),
    _frame(),
    _matteColor("#bdbdbd")
{
}

/* virtual */ Magick::MontageFramed::~MontageFramed ( void )
{
  // Nothing to do
}

void Magick::Montage::updateMontageInfo ( MontageInfo &montageInfo_ ) const
{

  memset(&montageInfo_,0,sizeof(MontageInfo));

  // background_color
  montageInfo_.background_color = _backgroundColor;
  // border_color
  montageInfo_.border_color = Color();
  // border_width
  montageInfo_.border_width = 0;
  // filename
  _fileName.copy( montageInfo_.filename, MaxTextExtent - 1 );
  montageInfo_.filename[ _fileName.length() ] = 0; // null terminate
  // fill
  montageInfo_.fill = _fill;
  // font
  if ( _font.length() != 0 )
    Magick::CloneString( &montageInfo_.font, _font );
  else
    montageInfo_.font=(char *) RelinquishMagickMemory(montageInfo_.font);
  // frame
  montageInfo_.frame=(char *) montageInfo_.frame;
  // geometry
  if ( _geometry.isValid() )
    Magick::CloneString( &montageInfo_.geometry, _geometry );
  else
    montageInfo_.geometry=(char *)
      RelinquishMagickMemory(montageInfo_.geometry);
  // gravity
  montageInfo_.gravity = _gravity;
  // matte_color
  montageInfo_.matte_color = Color();
  // pointsize
  montageInfo_.pointsize = _pointSize;
  // shadow
  montageInfo_.shadow = static_cast
    (_shadow ? MagickTrue : MagickFalse);
  // signature (validity stamp)
  montageInfo_.signature = MagickSignature;
  // stroke
  montageInfo_.stroke = _stroke;
  // texture
  if ( _texture.length() != 0 )
    Magick::CloneString( &montageInfo_.texture, _texture );
  else
    montageInfo_.texture=(char *) RelinquishMagickMemory(montageInfo_.texture);
  // tile
  if ( _tile.isValid() )
    Magick::CloneString( &montageInfo_.tile, _tile );
  else
    montageInfo_.tile=(char *) RelinquishMagickMemory(montageInfo_.tile);
  // title
  if ( _title.length() != 0 )
    Magick::CloneString( &montageInfo_.title, _title );
  else
    montageInfo_.title=(char *) RelinquishMagickMemory(montageInfo_.title);
}

//
// Implementation of MontageFramed
//

/* virtual */ void
Magick::MontageFramed::updateMontageInfo ( MontageInfo &montageInfo_ ) const
{
  // Do base updates
  Montage::updateMontageInfo ( montageInfo_ );

  // border_color
  montageInfo_.border_color = _borderColor;
  // border_width
  montageInfo_.border_width = _borderWidth;
  // frame
  if ( _frame.isValid() )
    Magick::CloneString( &montageInfo_.frame, _frame );
  else
    montageInfo_.frame=(char *) RelinquishMagickMemory(montageInfo_.frame);
  // matte_color
  montageInfo_.matte_color = _matteColor;
}

--- NEW FILE: Image.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2000, 2001, 2002, 2003
//
// Implementation of Image
//

#define MAGICKCORE_IMPLEMENTATION  1
#define MAGICK_PLUSPLUS_IMPLEMENTATION 1

#include "Magick++/Include.h"
#include 
#include 
#include 
#include 
#include 
#if !defined(__WINDOWS__)
#include 
#endif
[...4174 lines suppressed...]
  {
  public:
    MagickCleanUp( void );
    ~MagickCleanUp( void );
  };

  // The destructor for this object is invoked when the destructors for
  // static objects in this translation unit are invoked.
  static MagickCleanUp magickCleanUpGuard;
}

Magick::MagickCleanUp::MagickCleanUp ( void )
{
  // Don't even think about invoking InitializeMagick here!
}

Magick::MagickCleanUp::~MagickCleanUp ( void )
{
  MagickPlusPlusDestroyMagick();
}

--- NEW FILE: BlobRef.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2000, 2001, 2002, 2004
//
// Implementation of Blob
//

#define MAGICKCORE_IMPLEMENTATION  1
#define MAGICK_PLUSPLUS_IMPLEMENTATION 1

#include "Magick++/Include.h"
#include "Magick++/Thread.h"
#include "Magick++/BlobRef.h"

#include 

//
// Implementation of Magick::BlobRef
//

// Construct with data, making private copy of data
Magick::BlobRef::BlobRef ( const void* data_,
			   size_t length_ )
  : _data(0),
    _length(length_),
    _allocator(Magick::Blob::NewAllocator),
    _refCount(1),
    _mutexLock()
{
  if( data_ )
    {
      _data = new unsigned char[length_];
      memcpy( _data, data_, length_ );
    }
}

// Destructor (actually destroys data)
Magick::BlobRef::~BlobRef ( void )
{
  if ( _allocator == Magick::Blob::NewAllocator )
    {
      delete [] static_cast(_data);
      _data=0;
    }
  else if ( _allocator == Magick::Blob::MallocAllocator )
    {
      _data=(void *) RelinquishMagickMemory(_data);
    }
}

--- NEW FILE: Functions.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2002, 2003
//
// Simple C++ function wrappers for ImageMagick equivalents
//

#define MAGICKCORE_IMPLEMENTATION  1
#define MAGICK_PLUSPLUS_IMPLEMENTATION 1

#include "Magick++/Include.h"
#include 

using namespace std;

#include "Magick++/Functions.h"

// Clone C++ string as allocated C string, de-allocating any existing string
void Magick::CloneString( char **destination_, const std::string &source_ )
{
  MagickCore::CloneString( destination_, source_.c_str() );
}

--- NEW FILE: STL.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2002
//
// Implementation of STL classes and functions
//

#define MAGICKCORE_IMPLEMENTATION  1
#define MAGICK_PLUSPLUS_IMPLEMENTATION 1

#include 
#include 

// Adaptive-blur image with specified blur factor
Magick::adaptiveBlurImage::adaptiveBlurImage( const double radius_,
      const double sigma_  )
      : _radius( radius_ ),
        _sigma( sigma_ )
{
[...1490 lines suppressed...]

// FlashPix viewing parameters
Magick::viewImage::viewImage( const std::string &view_ )
  : _view( view_ ) { }

void Magick::viewImage::operator()( Magick::Image &image_ ) const
{
  image_.view( _view );
}

// X11 display to display to, obtain fonts from, or to capture image
// from
Magick::x11DisplayImage::x11DisplayImage( const std::string &display_ )
  : _display( display_ )
{
}
void Magick::x11DisplayImage::operator()( Magick::Image &image_ ) const
{
  image_.x11Display( _display );
}

--- NEW FILE: Exception.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2000, 2001, 2002, 2003
//
// Implementation of Exception and derived classes
//

#define MAGICKCORE_IMPLEMENTATION  1
#define MAGICK_PLUSPLUS_IMPLEMENTATION 1

#include "Magick++/Include.h"
#include 
#include 
#include 

using namespace std;

#include "Magick++/Exception.h"

// Construct with message string
Magick::Exception::Exception( const std::string& what_ )
  : _what(what_)
{
}

// Copy constructor
Magick::Exception::Exception( const Magick::Exception& original_ )
  : exception(original_), _what(original_._what)
{
}

// Assignment operator
Magick::Exception& Magick::Exception::operator= (const Magick::Exception& original_ )
{
  if(this != &original_)
    {
      this->_what = original_._what;
    }
  return *this;
}

// Return message string
/*virtual*/ const char* Magick::Exception::what( ) const throw()
{
  return _what.c_str();
}

/* Destructor */
/*virtual*/ Magick::Exception::~Exception ( ) throw ()
{
}

//
// Warnings
//

Magick::Warning::Warning ( const std::string& what_ )
  : Exception(what_)
{
}

Magick::WarningUndefined::WarningUndefined ( const std::string& what_ )
  : Warning(what_)
{
}

Magick::WarningBlob::WarningBlob ( const std::string& what_ )
  : Warning(what_)
{
}

Magick::WarningCache::WarningCache ( const std::string& what_ )
  : Warning(what_)
{
}

Magick::WarningCoder::WarningCoder ( const std::string& what_ )
  : Warning(what_)
{
}

Magick::WarningConfigure::WarningConfigure ( const std::string& what_ )
  : Warning(what_)
{
}

Magick::WarningCorruptImage::WarningCorruptImage ( const std::string& what_ )
  : Warning(what_)
{
}

Magick::WarningDelegate::WarningDelegate ( const std::string& what_ )
  : Warning(what_)
{
}

Magick::WarningDraw::WarningDraw ( const std::string& what_ )
  : Warning(what_)
{
}

Magick::WarningFileOpen::WarningFileOpen ( const std::string& what_ )
  : Warning(what_)
{
}

Magick::WarningImage::WarningImage ( const std::string& what_ )
  : Warning(what_)
{
}

Magick::WarningMissingDelegate::WarningMissingDelegate ( const std::string& what_ )
  : Warning(what_)
{
}

Magick::WarningModule::WarningModule ( const std::string& what_ )
  : Warning(what_)
{
}

Magick::WarningMonitor::WarningMonitor ( const std::string& what_ )
  : Warning(what_)
{
}

Magick::WarningOption::WarningOption ( const std::string& what_ )
  : Warning(what_)
{
}

Magick::WarningRegistry::WarningRegistry ( const std::string& what_ )
  : Warning(what_)
{
}

Magick::WarningResourceLimit::WarningResourceLimit ( const std::string& what_ )
  : Warning(what_)
{
}

Magick::WarningStream::WarningStream ( const std::string& what_ )
  : Warning(what_)
{
}

Magick::WarningType::WarningType ( const std::string& what_ )
  : Warning(what_)
{
}

Magick::WarningXServer::WarningXServer ( const std::string& what_ )
  : Warning(what_)
{
}

//
// Errors
//

Magick::Error::Error ( const std::string& what_ )
  : Exception(what_)
{
}

Magick::ErrorUndefined::ErrorUndefined ( const std::string& what_ )
  : Error(what_)
{
}

Magick::ErrorBlob::ErrorBlob ( const std::string& what_ )
  : Error(what_)
{
}

Magick::ErrorCache::ErrorCache ( const std::string& what_ )
  : Error(what_)
{
}

Magick::ErrorCoder::ErrorCoder ( const std::string& what_ )
  : Error(what_)
{
}

Magick::ErrorConfigure::ErrorConfigure ( const std::string& what_ )
  : Error(what_)
{
}

Magick::ErrorCorruptImage::ErrorCorruptImage ( const std::string& what_ )
  : Error(what_)
{
}

Magick::ErrorDelegate::ErrorDelegate ( const std::string& what_ )
  : Error(what_)
{
}

Magick::ErrorDraw::ErrorDraw ( const std::string& what_ )
  : Error(what_)
{
}

Magick::ErrorFileOpen::ErrorFileOpen ( const std::string& what_ )
  : Error(what_)
{
}

Magick::ErrorImage::ErrorImage ( const std::string& what_ )
  : Error(what_)
{
}

Magick::ErrorMissingDelegate::ErrorMissingDelegate ( const std::string& what_ )
  : Error(what_)
{
}

Magick::ErrorModule::ErrorModule ( const std::string& what_ )
  : Error(what_)
{
}

Magick::ErrorMonitor::ErrorMonitor ( const std::string& what_ )
  : Error(what_)
{
}

Magick::ErrorOption::ErrorOption ( const std::string& what_ )
  : Error(what_)
{
}

Magick::ErrorRegistry::ErrorRegistry ( const std::string& what_ )
  : Error(what_)
{
}

Magick::ErrorResourceLimit::ErrorResourceLimit ( const std::string& what_ )
  : Error(what_)
{
}

Magick::ErrorStream::ErrorStream ( const std::string& what_ )
  : Error(what_)
{
}

Magick::ErrorType::ErrorType ( const std::string& what_ )
  : Error(what_)
{
}

Magick::ErrorXServer::ErrorXServer ( const std::string& what_ )
  : Error(what_)
{
}

// Format and throw exception
MagickDLLDecl void Magick::throwExceptionExplicit( const ExceptionType severity_,
                                                   const char* reason_,
                                                   const char* description_)
{
  // Just return if there is no reported error
  if ( severity_ == UndefinedException )
    return;

  ExceptionInfo exception;

  GetExceptionInfo( &exception );
  ThrowException( &exception, severity_, reason_, description_ );
  throwException( exception );
  (void) DestroyExceptionInfo( &exception );
}

// Throw C++ exception
MagickDLLDecl void Magick::throwException( ExceptionInfo &exception_ )
{
  // Just return if there is no reported error
  if ( exception_.severity == UndefinedException )
    return;

  // Format error message ImageMagick-style
  std::string message = SetClientName(0);
  if ( exception_.reason != 0 )
    {
      message += std::string(": ");
      message += std::string(exception_.reason);
    }

  if ( exception_.description != 0 )
    message += " (" + std::string(exception_.description) + ")";

  ExceptionType severity = exception_.severity;
  MagickBooleanType relinquish = exception_.relinquish;
  DestroyExceptionInfo( &exception_ );
  if (relinquish)
    GetExceptionInfo( &exception_ );

  switch ( severity )
    {
      // Warnings
    case ResourceLimitWarning :
      throw WarningResourceLimit( message );
    case TypeWarning :
      throw WarningType( message );
    case OptionWarning :
      throw WarningOption( message );
    case DelegateWarning :
      throw WarningDelegate( message );
    case MissingDelegateWarning :
      throw WarningMissingDelegate( message );
    case CorruptImageWarning :
      throw WarningCorruptImage( message );
    case FileOpenWarning :
      throw WarningFileOpen( message );
    case BlobWarning :
      throw WarningBlob ( message );
    case StreamWarning :
      throw WarningStream ( message );
    case CacheWarning :
      throw WarningCache ( message );
    case CoderWarning :
      throw WarningCoder ( message );
    case ModuleWarning :
      throw WarningModule( message );
    case DrawWarning :
      throw WarningDraw( message );
    case ImageWarning :
      throw WarningImage( message );
    case XServerWarning :
      throw WarningXServer( message );
    case MonitorWarning :
      throw WarningMonitor( message );
    case RegistryWarning :
      throw WarningRegistry( message );
    case ConfigureWarning :
      throw WarningConfigure( message );
      // Errors
    case ResourceLimitError :
    case ResourceLimitFatalError :
      throw ErrorResourceLimit( message );
    case TypeError :
    case TypeFatalError :
      throw ErrorType( message );
    case OptionError :
    case OptionFatalError :
      throw ErrorOption( message );
    case DelegateError :
    case DelegateFatalError :
      throw ErrorDelegate( message );
    case MissingDelegateError :
    case MissingDelegateFatalError :
      throw ErrorMissingDelegate( message );
    case CorruptImageError :
    case CorruptImageFatalError :
      throw ErrorCorruptImage( message );
    case FileOpenError :
    case FileOpenFatalError :
      throw ErrorFileOpen( message );
    case BlobError :
    case BlobFatalError :
      throw ErrorBlob ( message );
    case StreamError :
    case StreamFatalError :
      throw ErrorStream ( message );
    case CacheError :
    case CacheFatalError :
      throw ErrorCache ( message );
    case CoderError :
    case CoderFatalError :
      throw ErrorCoder ( message );
    case ModuleError :
    case ModuleFatalError :
      throw ErrorModule ( message );
    case DrawError :
    case DrawFatalError :
      throw ErrorDraw ( message );
    case ImageError :
    case ImageFatalError :
      throw ErrorImage ( message );
    case XServerError :
    case XServerFatalError :
      throw ErrorXServer ( message );
    case MonitorError :
    case MonitorFatalError :
      throw ErrorMonitor ( message );
    case RegistryError :
    case RegistryFatalError :
      throw ErrorRegistry ( message );
    case ConfigureError :
    case ConfigureFatalError :
      throw ErrorConfigure ( message );
    case UndefinedException :
    default :
      throw ErrorUndefined( message );
    }

}

--- NEW FILE: Thread.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2000, 2001, 2002
//
// Implementation of thread support
//

#define MAGICKCORE_IMPLEMENTATION  1
#define MAGICK_PLUSPLUS_IMPLEMENTATION 1

#include "Magick++/Thread.h"
#include "Magick++/Exception.h"

#include 

// Default constructor
Magick::MutexLock::MutexLock(void)
#if defined(MAGICKCORE_HAVE_PTHREAD)
  // POSIX threads
  : _mutex()
{
  ::pthread_mutexattr_t attr;
  int sysError;
  if ( (sysError = ::pthread_mutexattr_init( &attr )) == 0 )
    if ( (sysError = ::pthread_mutex_init( &_mutex, &attr )) == 0 )
      {
        ::pthread_mutexattr_destroy( &attr );
        return;
      }
  throwExceptionExplicit( OptionError, "mutex initialization failed",
                          strerror(sysError) );
}
#else
#if defined(_VISUALC_) && defined(_MT)
// Win32 threads
  : _mutex()
{
  SECURITY_ATTRIBUTES security;

  /* Allow the semaphore to be inherited */
  security.nLength = sizeof(security);
  security.lpSecurityDescriptor = NULL;
  security.bInheritHandle = TRUE;

  /* Create the semaphore, with initial value signaled */
  _mutex.id = ::CreateSemaphore(&security, 1, MAXSEMLEN, NULL);
  if ( _mutex.id != NULL )
    return;
  throwExceptionExplicit( OptionError, "mutex initialization failed" );
}
#else
// Threads not supported
{
}
#endif
#endif

// Destructor
Magick::MutexLock::~MutexLock(void)
{
#if defined(MAGICKCORE_HAVE_PTHREAD)
  int sysError;
  if ( (sysError = ::pthread_mutex_destroy( &_mutex )) == 0 )
    return;
  throwExceptionExplicit( OptionError, "mutex destruction failed",
                          strerror(sysError) );
#endif
#if defined(_MT) && defined(_VISUALC_)
  if ( ::CloseHandle(_mutex.id) != 0 )
    return;
  throwExceptionExplicit( OptionError, "mutex destruction failed" );
#endif
}

// Lock mutex
void Magick::MutexLock::lock(void)
{
#if defined(MAGICKCORE_HAVE_PTHREAD)
  int sysError;
  if ( (sysError = ::pthread_mutex_lock( &_mutex )) == 0)
    return;
  throwExceptionExplicit( OptionError, "mutex lock failed",
                          strerror(sysError));
#endif
#if defined(_MT) && defined(_VISUALC_)
  if (WaitForSingleObject(_mutex.id,INFINITE) != WAIT_FAILED)
    return;
  throwExceptionExplicit( OptionError, "mutex lock failed" );
#endif
}

// Unlock mutex
void Magick::MutexLock::unlock(void)
{
#if defined(MAGICKCORE_HAVE_PTHREAD)
  int sysError;
  if ( (sysError = ::pthread_mutex_unlock( &_mutex )) == 0)
    return;
  throwExceptionExplicit( OptionError, "mutex unlock failed",
                          strerror(sysError) );
#endif
#if defined(_MT) && defined(_VISUALC_)
  if ( ReleaseSemaphore(_mutex.id, 1, NULL) == TRUE )
    return;
  throwExceptionExplicit( OptionError, "mutex unlock failed" );
#endif
}

--- NEW FILE: Blob.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2000, 2001, 2002, 2004
//
// Implementation of Blob
//

#define MAGICKCORE_IMPLEMENTATION  1
#define MAGICK_PLUSPLUS_IMPLEMENTATION 1

#include "Magick++/Include.h"
#include "Magick++/Blob.h"
#include "Magick++/BlobRef.h"

#include 

//
// Implementation of Magick::Blob
//

// Default constructor
Magick::Blob::Blob ( void )
  : _blobRef(new Magick::BlobRef( 0, 0 ))
{
}

// Construct with data
Magick::Blob::Blob ( const void* data_, size_t length_ )
  : _blobRef(new Magick::BlobRef( data_, length_ ))
{
}

// Copy constructor (reference counted)
Magick::Blob::Blob ( const Magick::Blob& blob_ )
  : _blobRef(blob_._blobRef)
{
  // Increase reference count
  Lock( &_blobRef->_mutexLock );
  ++_blobRef->_refCount;
}

// Destructor (reference counted)
Magick::Blob::~Blob ()
{
  bool doDelete = false;
  {
    Lock( &_blobRef->_mutexLock );
    if ( --_blobRef->_refCount == 0 )
      doDelete = true;
  }

  if ( doDelete )
    {
      // Delete old blob reference with associated data
      delete _blobRef;
    }
  _blobRef=0;
}

// Assignment operator (reference counted)
Magick::Blob& Magick::Blob::operator= ( const Magick::Blob& blob_ )
{
  if(this != &blob_)
    {
      {
        Lock( &blob_._blobRef->_mutexLock );
        ++blob_._blobRef->_refCount;
      }
      bool doDelete = false;
      {
        Lock( &_blobRef->_mutexLock );
        if ( --_blobRef->_refCount == 0 )
          doDelete = true;
      }
      if ( doDelete )
        {
          delete _blobRef;
        }
      _blobRef = blob_._blobRef;
    }
  return *this;
}

// Update object contents from Base64-encoded string representation.
void Magick::Blob::base64 ( const std::string base64_ )
{
  size_t length;

  unsigned char *decoded =
    Base64Decode( base64_.c_str(), &length );

  if(decoded)
    updateNoCopy( static_cast(decoded), length,
                  Magick::Blob::MallocAllocator );
}

// Return Base64-encoded string representation.
std::string Magick::Blob::base64 ( void )
{
  size_t encoded_length = 0;

  char *encoded =
    Base64Encode(static_cast(data()), length(), &encoded_length);

  if(encoded)
    {
      std::string result(encoded,encoded_length);
      encoded=(char *) RelinquishMagickMemory(encoded);
      return result;
    }

  return std::string();
}

// Update object contents, making a copy of the supplied data.
// Any existing data in the object is deallocated.
void Magick::Blob::update ( const void* data_, size_t length_ )
{
  bool doDelete = false;
  {
    Lock( &_blobRef->_mutexLock );
    if ( --_blobRef->_refCount == 0 )
      doDelete = true;
  }
  if ( doDelete )
    {
      // Delete old blob reference with associated data
      delete _blobRef;
    }

  _blobRef = new Magick::BlobRef( data_, length_ );
}

// Update object contents, using supplied pointer directly (no copy)
// Any existing data in the object is deallocated.  The user must
// ensure that the pointer supplied is not deleted or otherwise
// modified after it has been supplied to this method.
void Magick::Blob::updateNoCopy ( void* data_, size_t length_,
                                  Magick::Blob::Allocator allocator_  )
{
  bool doDelete = false;
  {
    Lock( &_blobRef->_mutexLock );
    if ( --_blobRef->_refCount == 0 )
      doDelete = true;
  }
  if ( doDelete )
    {
      // Delete old blob reference with associated data
      delete _blobRef;
    }
  _blobRef = new Magick::BlobRef( 0, 0 );
  _blobRef->_data   = data_;
  _blobRef->_length = length_;
  _blobRef->_allocator = allocator_;
}

// Obtain pointer to data
const void* Magick::Blob::data( void ) const
{
  return _blobRef->_data;
}

// Obtain data length
size_t Magick::Blob::length( void ) const
{
  return _blobRef->_length;
}


--- NEW FILE: Geometry.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2000, 2001, 2002, 2003
//
// Geometry implementation
//

#define MAGICKCORE_IMPLEMENTATION  1
#define MAGICK_PLUSPLUS_IMPLEMENTATION 1

#include "Magick++/Include.h"
#include 
#include  // for isdigit
#if !defined(__WINDOWS__)
#include 
#endif

using namespace std;

#include "Magick++/Geometry.h"
#include "Magick++/Exception.h"

#define AbsoluteValue(x)  ((x) < 0 ? -(x) : (x))

int Magick::operator == ( const Magick::Geometry& left_,
			  const Magick::Geometry& right_ )
{
  return (
	  ( left_.isValid()   == right_.isValid() ) &&
	  ( left_.width()     == right_.width() ) &&
	  ( left_.height()    == right_.height() ) &&
	  ( left_.xOff()      == right_.xOff() ) &&
	  ( left_.yOff()      == right_.yOff() ) &&
	  ( left_.xNegative() == right_.xNegative() ) &&
	  ( left_.yNegative() == right_.yNegative() ) &&
	  ( left_.percent()   == right_.percent() ) &&
	  ( left_.aspect()    == right_.aspect() ) &&
	  ( left_.greater()   == right_.greater() ) &&
	  ( left_.less()      == right_.less() )
	  );
}
int Magick::operator != ( const Magick::Geometry& left_,
			  const Magick::Geometry& right_ )
{
  return ( ! (left_ == right_) );
}
int Magick::operator >  ( const Magick::Geometry& left_,
			  const Magick::Geometry& right_ )
{
  return ( !( left_ < right_ ) && ( left_ != right_ ) );
}
int Magick::operator <  ( const Magick::Geometry& left_,
			  const Magick::Geometry& right_ )
{
  return (
	  ( left_.width() * left_.height() )
	  <
	  ( right_.width() * right_.height() )
	  );
}
int Magick::operator >= ( const Magick::Geometry& left_,
			  const Magick::Geometry& right_ )
{
  return ( ( left_ > right_ ) || ( left_ == right_ ) );
}
int Magick::operator <= ( const Magick::Geometry& left_,
			  const Magick::Geometry& right_ )
{
  return ( ( left_ < right_ ) || ( left_ == right_ ) );
}

// Construct using parameterized arguments
Magick::Geometry::Geometry ( unsigned int width_,
			     unsigned int height_,
			     unsigned int xOff_,
			     unsigned int yOff_,
			     bool xNegative_,
			     bool yNegative_ )
  : _width( width_ ),
    _height( height_ ),
    _xOff( xOff_ ),
    _yOff( yOff_ ),
    _xNegative( xNegative_ ),
    _yNegative( yNegative_ ),
    _isValid( true ),
    _percent( false ),
    _aspect( false ),
    _greater( false ),
    _less( false )
{
}

// Assignment from C++ string
Magick::Geometry::Geometry ( const std::string &geometry_ )
  : _width( 0 ),
    _height( 0 ),
    _xOff( 0 ),
    _yOff( 0 ),
    _xNegative( false ),
    _yNegative( false ),
    _isValid( false ),
    _percent( false ),
    _aspect( false ),
    _greater( false ),
    _less( false )
{
  *this = geometry_; // Use assignment operator
}


// Assignment from C character string
Magick::Geometry::Geometry ( const char *geometry_ )
  : _width( 0 ),
    _height( 0 ),
    _xOff( 0 ),
    _yOff( 0 ),
    _xNegative( false ),
    _yNegative( false ),
    _isValid( false ),
    _percent( false ),
    _aspect( false ),
    _greater( false ),
    _less( false )
{
  *this = geometry_; // Use assignment operator
}

// Copy constructor
Magick::Geometry::Geometry ( const Geometry &geometry_ )
  :  _width( geometry_._width ),
     _height( geometry_._height ),
     _xOff( geometry_._xOff ),
     _yOff( geometry_._yOff ),
     _xNegative( geometry_._xNegative ),
     _yNegative( geometry_._yNegative ),
     _isValid ( geometry_._isValid ),
     _percent( geometry_._percent ),
     _aspect( geometry_._aspect ),
     _greater( geometry_._greater ),
     _less( geometry_._less )
{
}

// Default constructor
Magick::Geometry::Geometry ( void )
  : _width( 0 ),
    _height( 0 ),
    _xOff( 0 ),
    _yOff( 0 ),
    _xNegative( false ),
    _yNegative( false ),
    _isValid ( false ),
    _percent( false ),
    _aspect( false ),
    _greater( false ),
    _less( false )
{
}

/* virtual */ Magick::Geometry::~Geometry ( void )
{
  // Nothing to do
}

Magick::Geometry& Magick::Geometry::operator = ( const Geometry& geometry_ )
{
  // If not being set to ourself
  if ( this != &geometry_ )
    {
      _width = geometry_._width;
      _height = geometry_._height;
      _xOff = geometry_._xOff;
      _yOff = geometry_._yOff;
      _xNegative = geometry_._xNegative;
      _yNegative = geometry_._yNegative;
      _isValid = geometry_._isValid;
      _percent = geometry_._percent;
      _aspect = geometry_._aspect;
      _greater = geometry_._greater;
      _less = geometry_._less;
    }
  return *this;
}

// Set value via geometry string
/* virtual */ const Magick::Geometry&
Magick::Geometry::operator = ( const std::string &geometry_ )
{
  char
    geom[MaxTextExtent];

  // If argument does not start with digit, presume that it is a
  // page-size specification that needs to be converted to an
  // equivalent geometry specification using PostscriptGeometry()
  (void) CopyMagickString(geom,geometry_.c_str(),MaxTextExtent);
  if ( geom[0] != '-' &&
       geom[0] != '+' &&
       geom[0] != 'x' &&
       !isdigit(static_cast(geom[0])))
    {
      char *pageptr = GetPageGeometry( geom );
      if ( pageptr != 0 )
        {
          (void) CopyMagickString(geom,pageptr,MaxTextExtent);
          pageptr=(char *) RelinquishMagickMemory( pageptr );
        }
    }

  long x = 0;
  long y = 0;
  unsigned long width_val = 0;
  unsigned long height_val = 0;
  int flags = GetGeometry (geom, &x, &y, &width_val, &height_val );

  if (flags == NoValue)
    {
      // Total failure!
      *this=Geometry();
      isValid( false );
      return *this;
    }

  if ( ( flags & WidthValue ) != 0 )
    {
      _width = width_val;
      isValid( true );
    }

  if ( ( flags & HeightValue ) != 0 )
    {
      _height = height_val;
      isValid( true );
    }

  if ( ( flags & XValue ) != 0 )
    {
      _xOff = static_cast(AbsoluteValue(x));
      isValid( true );
    }

  if ( ( flags & YValue ) != 0 )
    {
      _yOff = static_cast(AbsoluteValue(y));
      isValid( true );
    }

  if ( ( flags & XNegative ) != 0 )	
    _xNegative = true;

  if ( ( flags & YNegative ) != 0 )
    _yNegative = true;

  if ( ( flags & PercentValue ) != 0 )
    _percent = true;

  if ( ( flags & AspectValue ) != 0 )
    _aspect = true;

  if ( ( flags & LessValue ) != 0 )
    _less = true;

  if ( ( flags & GreaterValue ) != 0 )
    _greater = true;

  return *this;
}


// Set value via geometry C string
/* virtual */ const Magick::Geometry& Magick::Geometry::operator = ( const char * geometry_ )
{
  *this = std::string(geometry_);
  return *this;
}

// Return geometry string
Magick::Geometry::operator std::string() const
{
  if (!isValid())
    {
      throwExceptionExplicit( OptionError, "Invalid geometry argument" );
    }

  string geometry;
  char buffer[32];

  if ( _width )
    {
      FormatMagickString( buffer, MaxTextExtent, "%u", _width );
      geometry += buffer;
    }

  if ( _height )
    {
      FormatMagickString( buffer, MaxTextExtent, "%u",  _height);
      geometry += 'x';
      geometry +=  buffer;
    }

  if ( _xOff || _yOff )
    {
      if ( _xNegative )
        geometry += '-';
      else
        geometry += '+';

      FormatMagickString( buffer, MaxTextExtent, "%u", _xOff);
      geometry += buffer;

      if ( _yNegative )
        geometry += '-';
      else
        geometry += '+';

      FormatMagickString( buffer, MaxTextExtent, "%u", _yOff);
      geometry += buffer;
    }

  if ( _percent )
    geometry += '%';
  
  if ( _aspect )
    geometry += '!';

  if ( _greater )
    geometry += '>';

  if ( _less )
    geometry += '<';

  return geometry;
}

// Construct from RectangleInfo
Magick::Geometry::Geometry ( const MagickCore::RectangleInfo &rectangle_ )
  : _width(static_cast(rectangle_.width)),
    _height(static_cast(rectangle_.height)),
    _xOff(static_cast(AbsoluteValue(rectangle_.x))),
    _yOff(static_cast(AbsoluteValue(rectangle_.y))),
    _xNegative(rectangle_.x < 0 ? true : false),
    _yNegative(rectangle_.y < 0 ? true : false),
    _isValid(true),
    _percent(false),
    _aspect(false),
    _greater(false),
    _less(false)
{    
}

// Return an ImageMagick RectangleInfo struct
Magick::Geometry::operator MagickCore::RectangleInfo() const
{
  RectangleInfo rectangle;
  rectangle.width = _width;
  rectangle.height = _height;
  _xNegative ? rectangle.x = static_cast(0-_xOff) : rectangle.x = static_cast(_xOff);
  _yNegative ? rectangle.y = static_cast(0-_yOff) : rectangle.y = static_cast(_yOff);
  return rectangle;
}

--- NEW FILE: CoderInfo.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 2001, 2002
//
// CoderInfo implementation
//

#define MAGICKCORE_IMPLEMENTATION  1
#define MAGICK_PLUSPLUS_IMPLEMENTATION 1

#include "Magick++/Include.h"
#include "Magick++/CoderInfo.h"
#include "Magick++/Exception.h"

using namespace std;

Magick::CoderInfo::CoderInfo ( const std::string &name_ )
  : _name(),
    _description(),
    _isReadable(false),
    _isWritable(false),
    _isMultiFrame(false)
{
  ExceptionInfo exceptionInfo;
  GetExceptionInfo( &exceptionInfo );
  const Magick::MagickInfo *magickInfo = GetMagickInfo( name_.c_str(), &exceptionInfo );
  throwException( exceptionInfo );
  (void) DestroyExceptionInfo( &exceptionInfo );
  if( magickInfo == 0 )
    {
      throwExceptionExplicit(OptionError, "Coder not found", name_.c_str() );
    }
  else
    {
      _name         = string(magickInfo->name);
      _description  = string(magickInfo->description);
      _isReadable   = ((magickInfo->decoder == 0) ? false : true);
      _isWritable   = ((magickInfo->encoder == 0) ? false : true);
      _isMultiFrame = ((magickInfo->adjoin == 0) ? false : true);
    }
}

Magick::CoderInfo::~CoderInfo ( void )
{
  // Nothing to do
}

// Format name
std::string Magick::CoderInfo::name( void ) const
{
  return _name;
}

// Format description
std::string Magick::CoderInfo::description( void ) const
{
  return _description;
}

// Format is readable
bool Magick::CoderInfo::isReadable( void ) const
{
  return _isReadable;
}

// Format is writeable
bool Magick::CoderInfo::isWritable( void ) const
{
  return _isWritable;
}

// Format supports multiple frames
bool Magick::CoderInfo::isMultiFrame( void ) const
{
  return _isMultiFrame;
}

// Construct from MagickCore::MagickInfo*
Magick::CoderInfo::CoderInfo ( const MagickCore::MagickInfo *magickInfo_ )
  : _name(string(magickInfo_->name ? magickInfo_->name : "")),
    _description(string(magickInfo_->description ? magickInfo_->description : "")),
    _isReadable(magickInfo_->decoder ? true : false),
    _isWritable(magickInfo_->encoder ? true : false),
    _isMultiFrame(magickInfo_->adjoin ? true : false)
{
  // Nothing more to do
}



From ebala at helixcommunity.org  Thu Sep 10 11:34:29 2009
From: ebala at helixcommunity.org (ebala@helixcommunity.org)
Date: Thu Sep 10 20:37:15 2009
Subject: [Common-cvs] import/imagemagick/Magick++/bin Magick++-config, 1.1,
	1.2 Magick++-config.in, 1.1, 1.2 Magick++-config.1, 1.1, 1.2
Message-ID: 

Update of /cvsroot/common/import/imagemagick/Magick++/bin
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv27344

Added Files:
	Magick++-config Magick++-config.in Magick++-config.1 
Log Message:
Import of Imagemagick

--- NEW FILE: Magick++-config ---
#!/bin/sh
#
# Configure options script for re-calling Magick+ compilation options
# required to use the Magick++ library.
#
#

prefix=/usr/local
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include

usage='Usage: Magick++-config [--cppflags] [--cxxflags] [--exec-prefix] [--ldflags] [--libs] [--prefix] [--version]

 For example, "magick.cpp" may be compiled to produce "magick" as follows:

  "c++ -o magick magick.cpp `Magick++-config --cppflags --cxxflags --ldflags --libs`"'

if test $# -eq 0; then
      echo "${usage}" 1>&2
      exit 1
fi

while test $# -gt 0; do
  case "$1" in
    -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
    *) optarg= ;;
  esac
  case $1 in
    --prefix=*)
      prefix=$optarg
      ;;
    --prefix)
      echo $prefix
      ;;
    --exec-prefix=*)
      exec_prefix=$optarg
      ;;
    --exec-prefix)
      echo $exec_prefix
      ;;
    --version)
      echo '6.5.4 Q16 '
      ;;
    --cflags)
      echo "-I${includedir} -fopenmp"
      ;;
    --cxxflags)
      echo '-g -O2 -Wall -W -pthread'
      ;;
    --cppflags)
      echo '-I/usr/local/include/ImageMagick'
      ;;
    --ldflags)
      echo '-L/usr/local/lib -lfreetype'
      ;;
    --libs)
      echo "-L${libdir} -lMagick++ -lMagickWand -lMagickCore -llcms -ltiff -lfreetype -ljpeg -lfftw3 -lfontconfig -lXext -lSM -lICE -lX11 -lXt -lbz2 -lz -lm -lgomp -lpthread -lltdl"
      ;;
    *)
      echo "${usage}" 1>&2
      exit 1
      ;;
  esac
  shift
done


--- NEW FILE: Magick++-config.in ---
#!/bin/sh
#
# Configure options script for re-calling Magick+ compilation options
# required to use the Magick++ library.
#
#

prefix=@prefix@
exec_prefix=@exec_prefix@
libdir=@libdir@
includedir=@includedir@

usage='Usage: Magick++-config [--cppflags] [--cxxflags] [--exec-prefix] [--ldflags] [--libs] [--prefix] [--version]

 For example, "magick.cpp" may be compiled to produce "magick" as follows:

  "c++ -o magick magick.cpp `Magick++-config --cppflags --cxxflags --ldflags --libs`"'

if test $# -eq 0; then
      echo "${usage}" 1>&2
      exit 1
fi

while test $# -gt 0; do
  case "$1" in
    -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
    *) optarg= ;;
  esac
  case $1 in
    --prefix=*)
      prefix=$optarg
      ;;
    --prefix)
      echo $prefix
      ;;
    --exec-prefix=*)
      exec_prefix=$optarg
      ;;
    --exec-prefix)
      echo $exec_prefix
      ;;
    --version)
      echo '@PACKAGE_VERSION@ Q@QUANTUM_DEPTH@ @MAGICK_HDRI@'
      ;;
    --cflags)
      echo "-I${includedir} @MAGICK_PCFLAGS@"
      ;;
    --cxxflags)
      echo '@MAGICK_CXXFLAGS@'
      ;;
    --cppflags)
      echo '@MAGICK_CPPFLAGS@'
      ;;
    --ldflags)
      echo '@MAGICK_LDFLAGS@'
      ;;
    --libs)
      echo "-L${libdir} -lMagick++ -lMagickWand @MAGICK_LIBS@"
      ;;
    *)
      echo "${usage}" 1>&2
      exit 1
      ;;
  esac
  shift
done


--- NEW FILE: Magick++-config.1 ---
.ad l
.nh
.TH Magick++-Config 1 "2 May 2002" "ImageMagick"
.SH NAME
Magick++-config \- get information about the installed version of Magick++
.SH SYNOPSIS
.B Magick++-config 
.B [--cppflags]
.B [--cxxflags]
.B [--exec-prefix]
.B [--ldflags]
.B [--libs]
.B [--prefix]
.B [--version]
.SH DESCRIPTION
.B Magick++-config
prints the compiler and linker flags required to compile and link programs
that use the
.BR ImageMagick
C++ Application Programmer Interface (known as
.BR Magick++
).
.SH EXAMPLES
To print the version of the installed distribution of
.BR Magick++ ,
use:

.nf
  Magick++-config \-\-version
.fi
  
To compile a program that calls the 
.BR ImageMagick
C++ Application Programmer Interface, use:

.nf
  c++ `Magick++-config \-\-cxxflags \-\-cppflags \-\-ldflags \-\-libs` program.cpp
.fi

.SH OPTIONS
.TP
.B \-\-cppflags
Print the preprocessor flags that are needed to find the
.B ImageMagick
C and C++ include files and defines to ensures that the ImageMagick data structures match between
your program and the installed libraries.
.TP
.B \-\-cxxflags
Print the compiler flags that were used to compile 
.BR libMagick++ .
.TP
.B \-\-exec-prefix
Print the directory under which target specific binaries and executables are installed.
.TP
.B \-\-ldflags
Print the linker flags that are needed to link with the
.B libMagick++
library.
.TP
.B \-\-libs
Print the linker flags that are needed to link a program with
.BR libMagick++ .
.TP
.B \-\-prefix
Print the directory under which the package is installed.
.TP
.B \-\-version
Print the version of the
.B ImageMagick
distribution to standard output.
.SH COPYRIGHT
Copyright (C) 2000 ImageMagick Studio LLC, a non-profit organization dedicated
to making software imaging solutions freely available.

Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files ("ImageMagick"),
to deal in ImageMagick without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of ImageMagick, and to permit persons to whom the
ImageMagick is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of ImageMagick.

The software is provided "as is", without warranty of any kind, express or
implied, including but not limited to the warranties of merchantability,
fitness for a particular purpose and noninfringement.  In no event shall
ImageMagick Studio be liable for any claim, damages or other liability,
whether in an action of contract, tort or otherwise, arising from, out of
or in connection with ImageMagick or the use or other dealings in
ImageMagick.

Except as contained in this notice, the name of the ImageMagick Studio
shall not be used in advertising or otherwise to promote the sale, use or
other dealings in ImageMagick without prior written authorization from the
ImageMagick Studio.
.SH AUTHORS
Bob Friesenhahn, ImageMagick Studio



From ebala at helixcommunity.org  Thu Sep 10 11:34:29 2009
From: ebala at helixcommunity.org (ebala@helixcommunity.org)
Date: Thu Sep 10 20:37:16 2009
Subject: [Common-cvs] import/imagemagick/Magick++/bin Magick++-config, 1.1,
	1.2 Magick++-config.in, 1.1, 1.2 Magick++-config.1, 1.1, 1.2
Message-ID: 

Update of /cvsroot/common/import/imagemagick/Magick++/bin
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv27344

Added Files:
	Magick++-config Magick++-config.in Magick++-config.1 
Log Message:
Import of Imagemagick

--- NEW FILE: Magick++-config ---
#!/bin/sh
#
# Configure options script for re-calling Magick+ compilation options
# required to use the Magick++ library.
#
#

prefix=/usr/local
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include

usage='Usage: Magick++-config [--cppflags] [--cxxflags] [--exec-prefix] [--ldflags] [--libs] [--prefix] [--version]

 For example, "magick.cpp" may be compiled to produce "magick" as follows:

  "c++ -o magick magick.cpp `Magick++-config --cppflags --cxxflags --ldflags --libs`"'

if test $# -eq 0; then
      echo "${usage}" 1>&2
      exit 1
fi

while test $# -gt 0; do
  case "$1" in
    -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
    *) optarg= ;;
  esac
  case $1 in
    --prefix=*)
      prefix=$optarg
      ;;
    --prefix)
      echo $prefix
      ;;
    --exec-prefix=*)
      exec_prefix=$optarg
      ;;
    --exec-prefix)
      echo $exec_prefix
      ;;
    --version)
      echo '6.5.4 Q16 '
      ;;
    --cflags)
      echo "-I${includedir} -fopenmp"
      ;;
    --cxxflags)
      echo '-g -O2 -Wall -W -pthread'
      ;;
    --cppflags)
      echo '-I/usr/local/include/ImageMagick'
      ;;
    --ldflags)
      echo '-L/usr/local/lib -lfreetype'
      ;;
    --libs)
      echo "-L${libdir} -lMagick++ -lMagickWand -lMagickCore -llcms -ltiff -lfreetype -ljpeg -lfftw3 -lfontconfig -lXext -lSM -lICE -lX11 -lXt -lbz2 -lz -lm -lgomp -lpthread -lltdl"
      ;;
    *)
      echo "${usage}" 1>&2
      exit 1
      ;;
  esac
  shift
done


--- NEW FILE: Magick++-config.in ---
#!/bin/sh
#
# Configure options script for re-calling Magick+ compilation options
# required to use the Magick++ library.
#
#

prefix=@prefix@
exec_prefix=@exec_prefix@
libdir=@libdir@
includedir=@includedir@

usage='Usage: Magick++-config [--cppflags] [--cxxflags] [--exec-prefix] [--ldflags] [--libs] [--prefix] [--version]

 For example, "magick.cpp" may be compiled to produce "magick" as follows:

  "c++ -o magick magick.cpp `Magick++-config --cppflags --cxxflags --ldflags --libs`"'

if test $# -eq 0; then
      echo "${usage}" 1>&2
      exit 1
fi

while test $# -gt 0; do
  case "$1" in
    -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
    *) optarg= ;;
  esac
  case $1 in
    --prefix=*)
      prefix=$optarg
      ;;
    --prefix)
      echo $prefix
      ;;
    --exec-prefix=*)
      exec_prefix=$optarg
      ;;
    --exec-prefix)
      echo $exec_prefix
      ;;
    --version)
      echo '@PACKAGE_VERSION@ Q@QUANTUM_DEPTH@ @MAGICK_HDRI@'
      ;;
    --cflags)
      echo "-I${includedir} @MAGICK_PCFLAGS@"
      ;;
    --cxxflags)
      echo '@MAGICK_CXXFLAGS@'
      ;;
    --cppflags)
      echo '@MAGICK_CPPFLAGS@'
      ;;
    --ldflags)
      echo '@MAGICK_LDFLAGS@'
      ;;
    --libs)
      echo "-L${libdir} -lMagick++ -lMagickWand @MAGICK_LIBS@"
      ;;
    *)
      echo "${usage}" 1>&2
      exit 1
      ;;
  esac
  shift
done


--- NEW FILE: Magick++-config.1 ---
.ad l
.nh
.TH Magick++-Config 1 "2 May 2002" "ImageMagick"
.SH NAME
Magick++-config \- get information about the installed version of Magick++
.SH SYNOPSIS
.B Magick++-config 
.B [--cppflags]
.B [--cxxflags]
.B [--exec-prefix]
.B [--ldflags]
.B [--libs]
.B [--prefix]
.B [--version]
.SH DESCRIPTION
.B Magick++-config
prints the compiler and linker flags required to compile and link programs
that use the
.BR ImageMagick
C++ Application Programmer Interface (known as
.BR Magick++
).
.SH EXAMPLES
To print the version of the installed distribution of
.BR Magick++ ,
use:

.nf
  Magick++-config \-\-version
.fi
  
To compile a program that calls the 
.BR ImageMagick
C++ Application Programmer Interface, use:

.nf
  c++ `Magick++-config \-\-cxxflags \-\-cppflags \-\-ldflags \-\-libs` program.cpp
.fi

.SH OPTIONS
.TP
.B \-\-cppflags
Print the preprocessor flags that are needed to find the
.B ImageMagick
C and C++ include files and defines to ensures that the ImageMagick data structures match between
your program and the installed libraries.
.TP
.B \-\-cxxflags
Print the compiler flags that were used to compile 
.BR libMagick++ .
.TP
.B \-\-exec-prefix
Print the directory under which target specific binaries and executables are installed.
.TP
.B \-\-ldflags
Print the linker flags that are needed to link with the
.B libMagick++
library.
.TP
.B \-\-libs
Print the linker flags that are needed to link a program with
.BR libMagick++ .
.TP
.B \-\-prefix
Print the directory under which the package is installed.
.TP
.B \-\-version
Print the version of the
.B ImageMagick
distribution to standard output.
.SH COPYRIGHT
Copyright (C) 2000 ImageMagick Studio LLC, a non-profit organization dedicated
to making software imaging solutions freely available.

Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files ("ImageMagick"),
to deal in ImageMagick without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of ImageMagick, and to permit persons to whom the
ImageMagick is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of ImageMagick.

The software is provided "as is", without warranty of any kind, express or
implied, including but not limited to the warranties of merchantability,
fitness for a particular purpose and noninfringement.  In no event shall
ImageMagick Studio be liable for any claim, damages or other liability,
whether in an action of contract, tort or otherwise, arising from, out of
or in connection with ImageMagick or the use or other dealings in
ImageMagick.

Except as contained in this notice, the name of the ImageMagick Studio
shall not be used in advertising or otherwise to promote the sale, use or
other dealings in ImageMagick without prior written authorization from the
ImageMagick Studio.
.SH AUTHORS
Bob Friesenhahn, ImageMagick Studio



From ebala at helixcommunity.org  Thu Sep 10 11:34:36 2009
From: ebala at helixcommunity.org (ebala@helixcommunity.org)
Date: Thu Sep 10 20:37:19 2009
Subject: [Common-cvs] import/imagemagick/xlib/unix dirent.h, 1.1, 1.2 pwd.h,
	1.1, 1.2 README, 1.1, 1.2
Message-ID: 

Update of /cvsroot/common/import/imagemagick/xlib/unix
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv27384

Added Files:
	dirent.h pwd.h README 
Log Message:
Import of Imagemagick

--- NEW FILE: README ---
This directory contains Unix header files which may be of
use to those using the X11 stubs library to compile
ImageMagick on non-Unix systems.

--- NEW FILE: pwd.h ---
#ifdef __MWERKS__
#   include 
#else
#   include 
#endif

struct passwd
{
  char  *pw_name;
  char  *pw_passwd;
  short int  pw_uid;
  short int  pw_gid;
  char  *pw_age;
  char  *pw_comment;
  char  *pw_gecos;
  char  *pw_dir;
  char  *pw_shell;
};

extern struct passwd
  *getpwnam(char *name);

--- NEW FILE: dirent.h ---

/*
  Typedef declarations.
*/
typedef struct _DIR
{
  int
    d_VRefNum;
 
  long int
    d_DirID;
 
  int
    d_index;
} DIR;
 
struct dirent
{
  char
     d_name[255];
 
  int
    d_namlen;
};

/*
  Dirent utilities routines.
*/
extern char
  *mktemp(char *);

extern DIR
  *opendir(char *);

extern struct dirent
  *readdir(DIR *);

extern void
  closedir(DIR *);



From ebala at helixcommunity.org  Thu Sep 10 11:34:36 2009
From: ebala at helixcommunity.org (ebala@helixcommunity.org)
Date: Thu Sep 10 20:37:20 2009
Subject: [Common-cvs] import/imagemagick/xlib/unix dirent.h, 1.1, 1.2 pwd.h,
	1.1, 1.2 README, 1.1, 1.2
Message-ID: 

Update of /cvsroot/common/import/imagemagick/xlib/unix
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv27384

Added Files:
	dirent.h pwd.h README 
Log Message:
Import of Imagemagick

--- NEW FILE: README ---
This directory contains Unix header files which may be of
use to those using the X11 stubs library to compile
ImageMagick on non-Unix systems.

--- NEW FILE: pwd.h ---
#ifdef __MWERKS__
#   include 
#else
#   include 
#endif

struct passwd
{
  char  *pw_name;
  char  *pw_passwd;
  short int  pw_uid;
  short int  pw_gid;
  char  *pw_age;
  char  *pw_comment;
  char  *pw_gecos;
  char  *pw_dir;
  char  *pw_shell;
};

extern struct passwd
  *getpwnam(char *name);

--- NEW FILE: dirent.h ---

/*
  Typedef declarations.
*/
typedef struct _DIR
{
  int
    d_VRefNum;
 
  long int
    d_DirID;
 
  int
    d_index;
} DIR;
 
struct dirent
{
  char
     d_name[255];
 
  int
    d_namlen;
};

/*
  Dirent utilities routines.
*/
extern char
  *mktemp(char *);

extern DIR
  *opendir(char *);

extern struct dirent
  *readdir(DIR *);

extern void
  closedir(DIR *);



From ebala at helixcommunity.org  Thu Sep 10 11:34:47 2009
From: ebala at helixcommunity.org (ebala@helixcommunity.org)
Date: Thu Sep 10 20:37:34 2009
Subject: [Common-cvs] import/imagemagick/lib analyze.exp, 1.1,
	1.2 CORE_DB_jpeg_.exp, 1.1, 1.2 CORE_DB_xlib_.exp, 1.1,
	1.2 CORE_DB_zlib_.exp, 1.1, 1.2 CORE_RL_bzlib_.exp, 1.1,
	1.2 CORE_RL_jbig_.exp, 1.1, 1.2 CORE_RL_jp2_.exp, 1.1,
	1.2 CORE_RL_jpeg_.exp, 1.1, 1.2 CORE_RL_lcms_.exp, 1.1,
	1.2 CORE_RL_libxml_.exp, 1.1, 1.2 CORE_RL_Magick++_.exp, 1.1,
	1.2 CORE_RL_magick_.exp, 1.1, 1.2 CORE_RL_png_.exp, 1.1,
	1.2 CORE_RL_tiff_.exp, 1.1, 1.2 CORE_RL_ttf_.exp, 1.1,
	1.2 CORE_RL_wand_.exp, 1.1, 1.2 CORE_RL_xlib_.exp, 1.1,
	1.2 CORE_RL_zlib_.exp, 1.1, 1.2 IM_MOD_RL_art_.exp, 1.1,
	1.2 IM_MOD_RL_avi_.exp, 1.1, 1.2 IM_MOD_RL_avs_.exp, 1.1,
	1.2 IM_MOD_RL_bmp_.exp, 1.1, 1.2 IM_MOD_RL_braille_.exp, 1.1,
	1.2 IM_MOD_RL_cals_.exp, 1.1, 1.2 IM_MOD_RL_caption_.exp, 1.1,
	1.2 IM_MOD_RL_cin_.exp, 1.1, 1.2 IM_MOD_RL_cip_.exp, 1.1,
	1.2 IM_MOD_RL_clip_.exp, 1.1, 1.2 IM_MOD_RL_clipboard_.exp,
	1.1, 1.2 IM_MOD_RL_cmyk_.exp, 1.1, 1.2 IM_MOD_RL_cut_.exp, 1.1,
	1.2 IM_MOD_RL_dcm_.exp, 1.1, 1.2 IM_MOD_RL_dds_.exp, 1.1,
	1.2 IM_MOD_RL_dib_.exp, 1.1, 1.2 IM_MOD_RL_djvu_.exp, 1.1,
	1.2 IM_MOD_RL_dng_.exp, 1.1, 1.2 IM_MOD_RL_dot_.exp, 1.1,
	1.2 IM_MOD_RL_dps_.exp, 1.1, 1.2 IM_MOD_RL_dpx_.exp, 1.1,
	1.2 IM_MOD_RL_emf_.exp, 1.1, 1.2 IM_MOD_RL_ept_.exp, 1.1,
	1.2 IM_MOD_RL_exr_.exp, 1.1, 1.2 IM_MOD_RL_fax_.exp, 1.1,
	1.2 IM_MOD_RL_fits_.exp, 1.1, 1.2 IM_MOD_RL_fpx_.exp, 1.1,
	1.2 IM_MOD_RL_gif_.exp, 1.1, 1.2 IM_MOD_RL_gradient_.exp, 1.1,
	1.2 IM_MOD_RL_gray_.exp, 1.1, 1.2 IM_MOD_RL_hald_.exp, 1.1,
	1.2 IM_MOD_RL_histogram_.exp, 1.1, 1.2 IM_MOD_RL_hrz_.exp, 1.1,
	1.2 IM_MOD_RL_html_.exp, 1.1, 1.2 IM_MOD_RL_icon_.exp, 1.1,
	1.2 IM_MOD_RL_info_.exp, 1.1, 1.2 IM_MOD_RL_inline_.exp, 1.1,
	1.2 IM_MOD_RL_ipl_.exp, 1.1, 1.2 IM_MOD_RL_jbig_.exp, 1.1,
	1.2 IM_MOD_RL_jp2_.exp, 1.1, 1.2 IM_MOD_RL_jpeg_.exp, 1.1,
	1.2 IM_MOD_RL_label_.exp, 1.1, 1.2 IM_MOD_RL_magick_.exp, 1.1,
	1.2 IM_MOD_RL_map_.exp, 1.1, 1.2 IM_MOD_RL_mat_.exp, 1.1,
	1.2 IM_MOD_RL_matte_.exp, 1.1, 1.2 IM_MOD_RL_meta_.exp, 1.1,
	1.2 IM_MOD_RL_miff_.exp, 1.1, 1.2 IM_MOD_RL_mono_.exp, 1.1,
	1.2 IM_MOD_RL_mpc_.exp, 1.1, 1.2 IM_MOD_RL_mpeg_.exp, 1.1,
	1.2 IM_MOD_RL_mpr_.exp, 1.1, 1.2 IM_MOD_RL_msl_.exp, 1.1,
	1.2 IM_MOD_RL_mtv_.exp, 1.1, 1.2 IM_MOD_RL_mvg_.exp, 1.1,
	1.2 IM_MOD_RL_null_.exp, 1.1, 1.2 IM_MOD_RL_otb_.exp, 1.1,
	1.2 IM_MOD_RL_palm_.exp, 1.1, 1.2 IM_MOD_RL_pattern_.exp, 1.1,
	1.2 IM_MOD_RL_pcd_.exp, 1.1, 1.2 IM_MOD_RL_pcl_.exp, 1.1,
	1.2 IM_MOD_RL_pcx_.exp, 1.1, 1.2 IM_MOD_RL_pdb_.exp, 1.1,
	1.2 IM_MOD_RL_pdf_.exp, 1.1, 1.2 IM_MOD_RL_pict_.exp, 1.1,
	1.2 IM_MOD_RL_pix_.exp, 1.1, 1.2 IM_MOD_RL_plasma_.exp, 1.1,
	1.2 IM_MOD_RL_png_.exp, 1.1, 1.2 IM_MOD_RL_pnm_.exp, 1.1,
	1.2 IM_MOD_RL_preview_.exp, 1.1, 1.2 IM_MOD_RL_ps2_.exp, 1.1,
	1.2 IM_MOD_RL_ps3_.exp, 1.1, 1.2 IM_MOD_RL_ps_.exp, 1.1,
	1.2 IM_MOD_RL_psd_.exp, 1.1, 1.2 IM_MOD_RL_pwp_.exp, 1.1,
	1.2 IM_MOD_RL_raw_.exp, 1.1, 1.2 IM_MOD_RL_rgb_.exp, 1.1,
	1.2 IM_MOD_RL_rla_.exp, 1.1, 1.2 IM_MOD_RL_rle_.exp, 1.1,
	1.2 IM_MOD_RL_scr_.exp, 1.1, 1.2 IM_MOD_RL_sct_.exp, 1.1,
	1.2 IM_MOD_RL_sfw_.exp, 1.1, 1.2 IM_MOD_RL_sgi_.exp, 1.1,
	1.2 IM_MOD_RL_stegano_.exp, 1.1, 1.2 IM_MOD_RL_sun_.exp, 1.1,
	1.2 IM_MOD_RL_svg_.exp, 1.1, 1.2 IM_MOD_RL_tga_.exp, 1.1,
	1.2 IM_MOD_RL_thumbnail_.exp, 1.1, 1.2 IM_MOD_RL_tiff_.exp,
	1.1, 1.2 IM_MOD_RL_tile_.exp, 1.1, 1.2 IM_MOD_RL_tim_.exp, 1.1,
	1.2 IM_MOD_RL_ttf_.exp, 1.1, 1.2 IM_MOD_RL_txt_.exp, 1.1,
	1.2 IM_MOD_RL_uil_.exp, 1.1, 1.2 IM_MOD_RL_url_.exp, 1.1,
	1.2 IM_MOD_RL_uyvy_.exp, 1.1, 1.2 IM_MOD_RL_vicar_.exp, 1.1,
	1.2 IM_MOD_RL_vid_.exp, 1.1, 1.2 IM_MOD_RL_viff_.exp, 1.1,
	1.2 IM_MOD_RL_wbmp_.exp, 1.1, 1.2 IM_MOD_RL_wmf_.exp, 1.1,
	1.2 IM_MOD_RL_wpg_.exp, 1.1, 1.2 IM_MOD_RL_x_.exp, 1.1,
	1.2 IM_MOD_RL_xbm_.exp, 1.1, 1.2 IM_MOD_RL_xc_.exp, 1.1,
	1.2 IM_MOD_RL_xcf_.exp, 1.1, 1.2 IM_MOD_RL_xpm_.exp, 1.1,
	1.2 IM_MOD_RL_xps_.exp, 1.1, 1.2 IM_MOD_RL_xtrn_.exp, 1.1,
	1.2 IM_MOD_RL_xwd_.exp, 1.1, 1.2 IM_MOD_RL_ycbcr_.exp, 1.1,
	1.2 IM_MOD_RL_yuv_.exp, 1.1, 1.2 analyze.lib, 1.1,
	1.2 CORE_DB_jpeg_.lib, 1.1, 1.2 CORE_DB_magick_.lib, 1.1,
	1.2 CORE_DB_wand_.lib, 1.1, 1.2 CORE_DB_xlib_.lib, 1.1,
	1.2 CORE_DB_zlib_.lib, 1.1, 1.2 CORE_RL_bzlib_.lib, 1.1,
	1.2 CORE_RL_jbig_.lib, 1.1, 1.2 CORE_RL_jp2_.lib, 1.1,
	1.2 CORE_RL_jpeg_.lib, 1.1, 1.2 CORE_RL_lcms_.lib, 1.1,
	1.2 CORE_RL_libxml_.lib, 1.1, 1.2 CORE_RL_Magick++_.lib, 1.1,
	1.2 CORE_RL_magick_.lib, 1.1, 1.2 CORE_RL_png_.lib, 1.1,
	1.2 CORE_RL_tiff_.lib, 1.1, 1.2 CORE_RL_ttf_.lib, 1.1,
	1.2 CORE_RL_wand_.lib, 1.1, 1.2 CORE_RL_wmf_.lib, 1.1,
	1.2 CORE_RL_xlib_.lib, 1.1, 1.2 CORE_RL_zlib_.lib, 1.1,
	1.2 IM_MOD_RL_art_.lib, 1.1, 1.2 IM_MOD_RL_avi_.lib, 1.1,
	1.2 IM_MOD_RL_avs_.lib, 1.1, 1.2 IM_MOD_RL_bmp_.lib, 1.1,
	1.2 IM_MOD_RL_braille_.lib, 1.1, 1.2 IM_MOD_RL_cals_.lib, 1.1,
	1.2 IM_MOD_RL_caption_.lib, 1.1, 1.2 IM_MOD_RL_cin_.lib, 1.1,
	1.2 IM_MOD_RL_cip_.lib, 1.1, 1.2 IM_MOD_RL_clip_.lib, 1.1,
	1.2 IM_MOD_RL_clipboard_.lib, 1.1, 1.2 IM_MOD_RL_cmyk_.lib,
	1.1, 1.2 IM_MOD_RL_cut_.lib, 1.1, 1.2 IM_MOD_RL_dcm_.lib, 1.1,
	1.2 IM_MOD_RL_dds_.lib, 1.1, 1.2 IM_MOD_RL_dib_.lib, 1.1,
	1.2 IM_MOD_RL_djvu_.lib, 1.1, 1.2 IM_MOD_RL_dng_.lib, 1.1,
	1.2 IM_MOD_RL_dot_.lib, 1.1, 1.2 IM_MOD_RL_dps_.lib, 1.1,
	1.2 IM_MOD_RL_dpx_.lib, 1.1, 1.2 IM_MOD_RL_emf_.lib, 1.1,
	1.2 IM_MOD_RL_ept_.lib, 1.1, 1.2 IM_MOD_RL_exr_.lib, 1.1,
	1.2 IM_MOD_RL_fax_.lib, 1.1, 1.2 IM_MOD_RL_fits_.lib, 1.1,
	1.2 IM_MOD_RL_fpx_.lib, 1.1, 1.2 IM_MOD_RL_gif_.lib, 1.1,
	1.2 IM_MOD_RL_gradient_.lib, 1.1, 1.2 IM_MOD_RL_gray_.lib, 1.1,
	1.2 IM_MOD_RL_hald_.lib, 1.1, 1.2 IM_MOD_RL_histogram_.lib,
	1.1, 1.2 IM_MOD_RL_hrz_.lib, 1.1, 1.2 IM_MOD_RL_html_.lib, 1.1,
	1.2 IM_MOD_RL_icon_.lib, 1.1, 1.2 IM_MOD_RL_info_.lib, 1.1,
	1.2 IM_MOD_RL_inline_.lib, 1.1, 1.2 IM_MOD_RL_ipl_.lib, 1.1,
	1.2 IM_MOD_RL_jbig_.lib, 1.1, 1.2 IM_MOD_RL_jp2_.lib, 1.1,
	1.2 IM_MOD_RL_jpeg_.lib, 1.1, 1.2 IM_MOD_RL_label_.lib, 1.1,
	1.2 IM_MOD_RL_magick_.lib, 1.1, 1.2 IM_MOD_RL_map_.lib, 1.1,
	1.2 IM_MOD_RL_mat_.lib, 1.1, 1.2 IM_MOD_RL_matte_.lib, 1.1,
	1.2 IM_MOD_RL_meta_.lib, 1.1, 1.2 IM_MOD_RL_miff_.lib, 1.1,
	1.2 IM_MOD_RL_mono_.lib, 1.1, 1.2 IM_MOD_RL_mpc_.lib, 1.1,
	1.2 IM_MOD_RL_mpeg_.lib, 1.1, 1.2 IM_MOD_RL_mpr_.lib, 1.1,
	1.2 IM_MOD_RL_msl_.lib, 1.1, 1.2 IM_MOD_RL_mtv_.lib, 1.1,
	1.2 IM_MOD_RL_mvg_.lib, 1.1, 1.2 IM_MOD_RL_null_.lib, 1.1,
	1.2 IM_MOD_RL_otb_.lib, 1.1, 1.2 IM_MOD_RL_palm_.lib, 1.1,
	1.2 IM_MOD_RL_pattern_.lib, 1.1, 1.2 IM_MOD_RL_pcd_.lib, 1.1,
	1.2 IM_MOD_RL_pcl_.lib, 1.1, 1.2 IM_MOD_RL_pcx_.lib, 1.1,
	1.2 IM_MOD_RL_pdb_.lib, 1.1, 1.2 IM_MOD_RL_pdf_.lib, 1.1,
	1.2 IM_MOD_RL_pict_.lib, 1.1, 1.2 IM_MOD_RL_pix_.lib, 1.1,
	1.2 IM_MOD_RL_plasma_.lib, 1.1, 1.2 IM_MOD_RL_png_.lib, 1.1,
	1.2 IM_MOD_RL_pnm_.lib, 1.1, 1.2 IM_MOD_RL_preview_.lib, 1.1,
	1.2 IM_MOD_RL_ps2_.lib, 1.1, 1.2 IM_MOD_RL_ps3_.lib, 1.1,
	1.2 IM_MOD_RL_ps_.lib, 1.1, 1.2 IM_MOD_RL_psd_.lib, 1.1,
	1.2 IM_MOD_RL_pwp_.lib, 1.1, 1.2 IM_MOD_RL_raw_.lib, 1.1,
	1.2 IM_MOD_RL_rgb_.lib, 1.1, 1.2 IM_MOD_RL_rla_.lib, 1.1,
	1.2 IM_MOD_RL_rle_.lib, 1.1, 1.2 IM_MOD_RL_scr_.lib, 1.1,
	1.2 IM_MOD_RL_sct_.lib, 1.1, 1.2 IM_MOD_RL_sfw_.lib, 1.1,
	1.2 IM_MOD_RL_sgi_.lib, 1.1, 1.2 IM_MOD_RL_stegano_.lib, 1.1,
	1.2 IM_MOD_RL_sun_.lib, 1.1, 1.2 IM_MOD_RL_svg_.lib, 1.1,
	1.2 IM_MOD_RL_tga_.lib, 1.1, 1.2 IM_MOD_RL_thumbnail_.lib, 1.1,
	1.2 IM_MOD_RL_tiff_.lib, 1.1, 1.2 IM_MOD_RL_tile_.lib, 1.1,
	1.2 IM_MOD_RL_tim_.lib, 1.1, 1.2 IM_MOD_RL_ttf_.lib, 1.1,
	1.2 IM_MOD_RL_txt_.lib, 1.1, 1.2 IM_MOD_RL_uil_.lib, 1.1,
	1.2 IM_MOD_RL_url_.lib, 1.1, 1.2 IM_MOD_RL_uyvy_.lib, 1.1,
	1.2 IM_MOD_RL_vicar_.lib, 1.1, 1.2 IM_MOD_RL_vid_.lib, 1.1,
	1.2 IM_MOD_RL_viff_.lib, 1.1, 1.2 IM_MOD_RL_wbmp_.lib, 1.1,
	1.2 IM_MOD_RL_wmf_.lib, 1.1, 1.2 IM_MOD_RL_wpg_.lib, 1.1,
	1.2 IM_MOD_RL_x_.lib, 1.1, 1.2 IM_MOD_RL_xbm_.lib, 1.1,
	1.2 IM_MOD_RL_xc_.lib, 1.1, 1.2 IM_MOD_RL_xcf_.lib, 1.1,
	1.2 IM_MOD_RL_xpm_.lib, 1.1, 1.2 IM_MOD_RL_xps_.lib, 1.1,
	1.2 IM_MOD_RL_xtrn_.lib, 1.1, 1.2 IM_MOD_RL_xwd_.lib, 1.1,
	1.2 IM_MOD_RL_ycbcr_.lib, 1.1, 1.2 IM_MOD_RL_yuv_.lib, 1.1,
	1.2 X11.lib, 1.1, 1.2 Xext.lib, 1.1, 1.2
Message-ID: 

Update of /cvsroot/common/import/imagemagick/lib
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv27419

Added Files:
	analyze.exp CORE_DB_jpeg_.exp CORE_DB_xlib_.exp 
	CORE_DB_zlib_.exp CORE_RL_bzlib_.exp CORE_RL_jbig_.exp 
	CORE_RL_jp2_.exp CORE_RL_jpeg_.exp CORE_RL_lcms_.exp 
	CORE_RL_libxml_.exp CORE_RL_Magick++_.exp CORE_RL_magick_.exp 
	CORE_RL_png_.exp CORE_RL_tiff_.exp CORE_RL_ttf_.exp 
	CORE_RL_wand_.exp CORE_RL_xlib_.exp CORE_RL_zlib_.exp 
	IM_MOD_RL_art_.exp IM_MOD_RL_avi_.exp IM_MOD_RL_avs_.exp 
	IM_MOD_RL_bmp_.exp IM_MOD_RL_braille_.exp IM_MOD_RL_cals_.exp 
	IM_MOD_RL_caption_.exp IM_MOD_RL_cin_.exp IM_MOD_RL_cip_.exp 
	IM_MOD_RL_clip_.exp IM_MOD_RL_clipboard_.exp 
	IM_MOD_RL_cmyk_.exp IM_MOD_RL_cut_.exp IM_MOD_RL_dcm_.exp 
	IM_MOD_RL_dds_.exp IM_MOD_RL_dib_.exp IM_MOD_RL_djvu_.exp 
	IM_MOD_RL_dng_.exp IM_MOD_RL_dot_.exp IM_MOD_RL_dps_.exp 
	IM_MOD_RL_dpx_.exp IM_MOD_RL_emf_.exp IM_MOD_RL_ept_.exp 
	IM_MOD_RL_exr_.exp IM_MOD_RL_fax_.exp IM_MOD_RL_fits_.exp 
	IM_MOD_RL_fpx_.exp IM_MOD_RL_gif_.exp IM_MOD_RL_gradient_.exp 
	IM_MOD_RL_gray_.exp IM_MOD_RL_hald_.exp 
	IM_MOD_RL_histogram_.exp IM_MOD_RL_hrz_.exp 
	IM_MOD_RL_html_.exp IM_MOD_RL_icon_.exp IM_MOD_RL_info_.exp 
	IM_MOD_RL_inline_.exp IM_MOD_RL_ipl_.exp IM_MOD_RL_jbig_.exp 
	IM_MOD_RL_jp2_.exp IM_MOD_RL_jpeg_.exp IM_MOD_RL_label_.exp 
	IM_MOD_RL_magick_.exp IM_MOD_RL_map_.exp IM_MOD_RL_mat_.exp 
	IM_MOD_RL_matte_.exp IM_MOD_RL_meta_.exp IM_MOD_RL_miff_.exp 
	IM_MOD_RL_mono_.exp IM_MOD_RL_mpc_.exp IM_MOD_RL_mpeg_.exp 
	IM_MOD_RL_mpr_.exp IM_MOD_RL_msl_.exp IM_MOD_RL_mtv_.exp 
	IM_MOD_RL_mvg_.exp IM_MOD_RL_null_.exp IM_MOD_RL_otb_.exp 
	IM_MOD_RL_palm_.exp IM_MOD_RL_pattern_.exp IM_MOD_RL_pcd_.exp 
	IM_MOD_RL_pcl_.exp IM_MOD_RL_pcx_.exp IM_MOD_RL_pdb_.exp 
	IM_MOD_RL_pdf_.exp IM_MOD_RL_pict_.exp IM_MOD_RL_pix_.exp 
	IM_MOD_RL_plasma_.exp IM_MOD_RL_png_.exp IM_MOD_RL_pnm_.exp 
	IM_MOD_RL_preview_.exp IM_MOD_RL_ps2_.exp IM_MOD_RL_ps3_.exp 
	IM_MOD_RL_ps_.exp IM_MOD_RL_psd_.exp IM_MOD_RL_pwp_.exp 
	IM_MOD_RL_raw_.exp IM_MOD_RL_rgb_.exp IM_MOD_RL_rla_.exp 
	IM_MOD_RL_rle_.exp IM_MOD_RL_scr_.exp IM_MOD_RL_sct_.exp 
	IM_MOD_RL_sfw_.exp IM_MOD_RL_sgi_.exp IM_MOD_RL_stegano_.exp 
	IM_MOD_RL_sun_.exp IM_MOD_RL_svg_.exp IM_MOD_RL_tga_.exp 
	IM_MOD_RL_thumbnail_.exp IM_MOD_RL_tiff_.exp 
	IM_MOD_RL_tile_.exp IM_MOD_RL_tim_.exp IM_MOD_RL_ttf_.exp 
	IM_MOD_RL_txt_.exp IM_MOD_RL_uil_.exp IM_MOD_RL_url_.exp 
	IM_MOD_RL_uyvy_.exp IM_MOD_RL_vicar_.exp IM_MOD_RL_vid_.exp 
	IM_MOD_RL_viff_.exp IM_MOD_RL_wbmp_.exp IM_MOD_RL_wmf_.exp 
	IM_MOD_RL_wpg_.exp IM_MOD_RL_x_.exp IM_MOD_RL_xbm_.exp 
	IM_MOD_RL_xc_.exp IM_MOD_RL_xcf_.exp IM_MOD_RL_xpm_.exp 
	IM_MOD_RL_xps_.exp IM_MOD_RL_xtrn_.exp IM_MOD_RL_xwd_.exp 
	IM_MOD_RL_ycbcr_.exp IM_MOD_RL_yuv_.exp analyze.lib 
	CORE_DB_jpeg_.lib CORE_DB_magick_.lib CORE_DB_wand_.lib 
	CORE_DB_xlib_.lib CORE_DB_zlib_.lib CORE_RL_bzlib_.lib 
	CORE_RL_jbig_.lib CORE_RL_jp2_.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_wand_.lib CORE_RL_wmf_.lib 
	CORE_RL_xlib_.lib CORE_RL_zlib_.lib IM_MOD_RL_art_.lib 
	IM_MOD_RL_avi_.lib IM_MOD_RL_avs_.lib IM_MOD_RL_bmp_.lib 
	IM_MOD_RL_braille_.lib IM_MOD_RL_cals_.lib 
	IM_MOD_RL_caption_.lib IM_MOD_RL_cin_.lib IM_MOD_RL_cip_.lib 
	IM_MOD_RL_clip_.lib IM_MOD_RL_clipboard_.lib 
	IM_MOD_RL_cmyk_.lib IM_MOD_RL_cut_.lib IM_MOD_RL_dcm_.lib 
	IM_MOD_RL_dds_.lib IM_MOD_RL_dib_.lib IM_MOD_RL_djvu_.lib 
	IM_MOD_RL_dng_.lib IM_MOD_RL_dot_.lib IM_MOD_RL_dps_.lib 
	IM_MOD_RL_dpx_.lib IM_MOD_RL_emf_.lib IM_MOD_RL_ept_.lib 
	IM_MOD_RL_exr_.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_hald_.lib 
	IM_MOD_RL_histogram_.lib IM_MOD_RL_hrz_.lib 
	IM_MOD_RL_html_.lib IM_MOD_RL_icon_.lib IM_MOD_RL_info_.lib 
	IM_MOD_RL_inline_.lib IM_MOD_RL_ipl_.lib IM_MOD_RL_jbig_.lib 
	IM_MOD_RL_jp2_.lib IM_MOD_RL_jpeg_.lib IM_MOD_RL_label_.lib 
	IM_MOD_RL_magick_.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_pattern_.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_ps2_.lib IM_MOD_RL_ps3_.lib 
	IM_MOD_RL_ps_.lib IM_MOD_RL_psd_.lib IM_MOD_RL_pwp_.lib 
	IM_MOD_RL_raw_.lib IM_MOD_RL_rgb_.lib IM_MOD_RL_rla_.lib 
	IM_MOD_RL_rle_.lib IM_MOD_RL_scr_.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_thumbnail_.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_xps_.lib IM_MOD_RL_xtrn_.lib IM_MOD_RL_xwd_.lib 
	IM_MOD_RL_ycbcr_.lib IM_MOD_RL_yuv_.lib X11.lib Xext.lib 
Log Message:
Import of Imagemagick

--- NEW FILE: IM_MOD_RL_hrz_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_xc_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_DB_wand_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_bmp_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_DB_magick_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_uyvy_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_pcl_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_mtv_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_dps_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_tiff_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_dng_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_meta_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_preview_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_txt_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_dng_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_tim_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_xps_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_mvg_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_avi_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_exr_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_vid_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_lcms_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_tile_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_pcx_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_cals_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_clipboard_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_dot_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_plasma_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_lcms_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_art_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_wmf_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_png_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_uil_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_pix_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_jbig_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_emf_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_stegano_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_ipl_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_fpx_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_dpx_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_url_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_xlib_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_pwp_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_cin_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_raw_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_magick_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_gradient_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_map_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_ps2_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_dot_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_txt_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_Magick++_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_label_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_zlib_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_pnm_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_uyvy_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_libxml_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_xbm_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_clipboard_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_pcd_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_tim_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_xps_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_avi_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_libxml_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_mvg_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_meta_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_DB_zlib_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_clip_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_vid_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_jp2_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_cip_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_plasma_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_icon_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_palm_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_cut_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_miff_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_mpeg_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_ps2_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_rgb_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_uil_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_xwd_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_wand_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_mono_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_pdb_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_tile_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_pict_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_hald_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_sun_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_ttf_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_xbm_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_url_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_png_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_otb_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_dds_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_svg_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_xlib_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_psd_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_ttf_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_sct_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_x_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_hald_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_dpx_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_mtv_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_tiff_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_fpx_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_inline_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_pict_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_dcm_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_dds_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_scr_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_dcm_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_matte_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_html_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_mpr_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_png_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_ttf_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_dps_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_info_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_x_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_magick_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_pwp_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_svg_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_wand_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_mono_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_mpc_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_jpeg_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_caption_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: analyze.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_pdf_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_exr_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_label_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_gif_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_jp2_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_tiff_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_wpg_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_wpg_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_wbmp_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_bzlib_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_palm_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_viff_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_stegano_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_sfw_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_xtrn_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_thumbnail_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_icon_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_sgi_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_ps3_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_gif_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_pix_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_jbig_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_rle_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_yuv_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_fits_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_hrz_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_avs_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_miff_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_xwd_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_pdf_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_png_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_ept_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_matte_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_dib_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_null_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: X11.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_cmyk_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_wmf_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_scr_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_braille_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_emf_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_caption_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_fax_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_ps3_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_jpeg_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_cut_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_raw_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_mat_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_clip_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_jp2_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_fax_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_DB_zlib_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_msl_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_cals_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_xcf_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_DB_jpeg_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_pcl_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_sun_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_tiff_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_Magick++_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_jp2_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_dib_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_null_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_sgi_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_wmf_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_viff_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_braille_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_xpm_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_xtrn_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_histogram_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_otb_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_ipl_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_pattern_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_fits_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_rle_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_xpm_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_preview_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: analyze.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_djvu_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_DB_xlib_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_xcf_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_inline_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_art_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_gray_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_ps_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_ttf_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_pcd_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_avs_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_bmp_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_gradient_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_ycbcr_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_psd_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_zlib_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_mpr_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_msl_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_mpc_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_mat_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_magick_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_histogram_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_wbmp_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_bzlib_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_mpeg_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_rla_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_tga_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_sct_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_pnm_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_cip_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_vicar_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_yuv_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_pdb_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_ept_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_pattern_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_magick_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_sfw_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_DB_jpeg_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_rgb_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_jbig_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_ycbcr_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_pcx_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_thumbnail_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_info_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_cmyk_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_djvu_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_jpeg_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_jbig_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_ps_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_html_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_tga_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_xc_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_rla_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_DB_xlib_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: Xext.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_map_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_jpeg_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_gray_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_vicar_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_cin_.lib ---
(This appears to be a binary file; contents omitted.)


From ebala at helixcommunity.org  Thu Sep 10 11:34:49 2009
From: ebala at helixcommunity.org (ebala@helixcommunity.org)
Date: Thu Sep 10 20:37:37 2009
Subject: [Common-cvs] import/imagemagick/lib analyze.exp, 1.1,
	1.2 CORE_DB_jpeg_.exp, 1.1, 1.2 CORE_DB_xlib_.exp, 1.1,
	1.2 CORE_DB_zlib_.exp, 1.1, 1.2 CORE_RL_bzlib_.exp, 1.1,
	1.2 CORE_RL_jbig_.exp, 1.1, 1.2 CORE_RL_jp2_.exp, 1.1,
	1.2 CORE_RL_jpeg_.exp, 1.1, 1.2 CORE_RL_lcms_.exp, 1.1,
	1.2 CORE_RL_libxml_.exp, 1.1, 1.2 CORE_RL_Magick++_.exp, 1.1,
	1.2 CORE_RL_magick_.exp, 1.1, 1.2 CORE_RL_png_.exp, 1.1,
	1.2 CORE_RL_tiff_.exp, 1.1, 1.2 CORE_RL_ttf_.exp, 1.1,
	1.2 CORE_RL_wand_.exp, 1.1, 1.2 CORE_RL_xlib_.exp, 1.1,
	1.2 CORE_RL_zlib_.exp, 1.1, 1.2 IM_MOD_RL_art_.exp, 1.1,
	1.2 IM_MOD_RL_avi_.exp, 1.1, 1.2 IM_MOD_RL_avs_.exp, 1.1,
	1.2 IM_MOD_RL_bmp_.exp, 1.1, 1.2 IM_MOD_RL_braille_.exp, 1.1,
	1.2 IM_MOD_RL_cals_.exp, 1.1, 1.2 IM_MOD_RL_caption_.exp, 1.1,
	1.2 IM_MOD_RL_cin_.exp, 1.1, 1.2 IM_MOD_RL_cip_.exp, 1.1,
	1.2 IM_MOD_RL_clip_.exp, 1.1, 1.2 IM_MOD_RL_clipboard_.exp,
	1.1, 1.2 IM_MOD_RL_cmyk_.exp, 1.1, 1.2 IM_MOD_RL_cut_.exp, 1.1,
	1.2 IM_MOD_RL_dcm_.exp, 1.1, 1.2 IM_MOD_RL_dds_.exp, 1.1,
	1.2 IM_MOD_RL_dib_.exp, 1.1, 1.2 IM_MOD_RL_djvu_.exp, 1.1,
	1.2 IM_MOD_RL_dng_.exp, 1.1, 1.2 IM_MOD_RL_dot_.exp, 1.1,
	1.2 IM_MOD_RL_dps_.exp, 1.1, 1.2 IM_MOD_RL_dpx_.exp, 1.1,
	1.2 IM_MOD_RL_emf_.exp, 1.1, 1.2 IM_MOD_RL_ept_.exp, 1.1,
	1.2 IM_MOD_RL_exr_.exp, 1.1, 1.2 IM_MOD_RL_fax_.exp, 1.1,
	1.2 IM_MOD_RL_fits_.exp, 1.1, 1.2 IM_MOD_RL_fpx_.exp, 1.1,
	1.2 IM_MOD_RL_gif_.exp, 1.1, 1.2 IM_MOD_RL_gradient_.exp, 1.1,
	1.2 IM_MOD_RL_gray_.exp, 1.1, 1.2 IM_MOD_RL_hald_.exp, 1.1,
	1.2 IM_MOD_RL_histogram_.exp, 1.1, 1.2 IM_MOD_RL_hrz_.exp, 1.1,
	1.2 IM_MOD_RL_html_.exp, 1.1, 1.2 IM_MOD_RL_icon_.exp, 1.1,
	1.2 IM_MOD_RL_info_.exp, 1.1, 1.2 IM_MOD_RL_inline_.exp, 1.1,
	1.2 IM_MOD_RL_ipl_.exp, 1.1, 1.2 IM_MOD_RL_jbig_.exp, 1.1,
	1.2 IM_MOD_RL_jp2_.exp, 1.1, 1.2 IM_MOD_RL_jpeg_.exp, 1.1,
	1.2 IM_MOD_RL_label_.exp, 1.1, 1.2 IM_MOD_RL_magick_.exp, 1.1,
	1.2 IM_MOD_RL_map_.exp, 1.1, 1.2 IM_MOD_RL_mat_.exp, 1.1,
	1.2 IM_MOD_RL_matte_.exp, 1.1, 1.2 IM_MOD_RL_meta_.exp, 1.1,
	1.2 IM_MOD_RL_miff_.exp, 1.1, 1.2 IM_MOD_RL_mono_.exp, 1.1,
	1.2 IM_MOD_RL_mpc_.exp, 1.1, 1.2 IM_MOD_RL_mpeg_.exp, 1.1,
	1.2 IM_MOD_RL_mpr_.exp, 1.1, 1.2 IM_MOD_RL_msl_.exp, 1.1,
	1.2 IM_MOD_RL_mtv_.exp, 1.1, 1.2 IM_MOD_RL_mvg_.exp, 1.1,
	1.2 IM_MOD_RL_null_.exp, 1.1, 1.2 IM_MOD_RL_otb_.exp, 1.1,
	1.2 IM_MOD_RL_palm_.exp, 1.1, 1.2 IM_MOD_RL_pattern_.exp, 1.1,
	1.2 IM_MOD_RL_pcd_.exp, 1.1, 1.2 IM_MOD_RL_pcl_.exp, 1.1,
	1.2 IM_MOD_RL_pcx_.exp, 1.1, 1.2 IM_MOD_RL_pdb_.exp, 1.1,
	1.2 IM_MOD_RL_pdf_.exp, 1.1, 1.2 IM_MOD_RL_pict_.exp, 1.1,
	1.2 IM_MOD_RL_pix_.exp, 1.1, 1.2 IM_MOD_RL_plasma_.exp, 1.1,
	1.2 IM_MOD_RL_png_.exp, 1.1, 1.2 IM_MOD_RL_pnm_.exp, 1.1,
	1.2 IM_MOD_RL_preview_.exp, 1.1, 1.2 IM_MOD_RL_ps2_.exp, 1.1,
	1.2 IM_MOD_RL_ps3_.exp, 1.1, 1.2 IM_MOD_RL_ps_.exp, 1.1,
	1.2 IM_MOD_RL_psd_.exp, 1.1, 1.2 IM_MOD_RL_pwp_.exp, 1.1,
	1.2 IM_MOD_RL_raw_.exp, 1.1, 1.2 IM_MOD_RL_rgb_.exp, 1.1,
	1.2 IM_MOD_RL_rla_.exp, 1.1, 1.2 IM_MOD_RL_rle_.exp, 1.1,
	1.2 IM_MOD_RL_scr_.exp, 1.1, 1.2 IM_MOD_RL_sct_.exp, 1.1,
	1.2 IM_MOD_RL_sfw_.exp, 1.1, 1.2 IM_MOD_RL_sgi_.exp, 1.1,
	1.2 IM_MOD_RL_stegano_.exp, 1.1, 1.2 IM_MOD_RL_sun_.exp, 1.1,
	1.2 IM_MOD_RL_svg_.exp, 1.1, 1.2 IM_MOD_RL_tga_.exp, 1.1,
	1.2 IM_MOD_RL_thumbnail_.exp, 1.1, 1.2 IM_MOD_RL_tiff_.exp,
	1.1, 1.2 IM_MOD_RL_tile_.exp, 1.1, 1.2 IM_MOD_RL_tim_.exp, 1.1,
	1.2 IM_MOD_RL_ttf_.exp, 1.1, 1.2 IM_MOD_RL_txt_.exp, 1.1,
	1.2 IM_MOD_RL_uil_.exp, 1.1, 1.2 IM_MOD_RL_url_.exp, 1.1,
	1.2 IM_MOD_RL_uyvy_.exp, 1.1, 1.2 IM_MOD_RL_vicar_.exp, 1.1,
	1.2 IM_MOD_RL_vid_.exp, 1.1, 1.2 IM_MOD_RL_viff_.exp, 1.1,
	1.2 IM_MOD_RL_wbmp_.exp, 1.1, 1.2 IM_MOD_RL_wmf_.exp, 1.1,
	1.2 IM_MOD_RL_wpg_.exp, 1.1, 1.2 IM_MOD_RL_x_.exp, 1.1,
	1.2 IM_MOD_RL_xbm_.exp, 1.1, 1.2 IM_MOD_RL_xc_.exp, 1.1,
	1.2 IM_MOD_RL_xcf_.exp, 1.1, 1.2 IM_MOD_RL_xpm_.exp, 1.1,
	1.2 IM_MOD_RL_xps_.exp, 1.1, 1.2 IM_MOD_RL_xtrn_.exp, 1.1,
	1.2 IM_MOD_RL_xwd_.exp, 1.1, 1.2 IM_MOD_RL_ycbcr_.exp, 1.1,
	1.2 IM_MOD_RL_yuv_.exp, 1.1, 1.2 analyze.lib, 1.1,
	1.2 CORE_DB_jpeg_.lib, 1.1, 1.2 CORE_DB_magick_.lib, 1.1,
	1.2 CORE_DB_wand_.lib, 1.1, 1.2 CORE_DB_xlib_.lib, 1.1,
	1.2 CORE_DB_zlib_.lib, 1.1, 1.2 CORE_RL_bzlib_.lib, 1.1,
	1.2 CORE_RL_jbig_.lib, 1.1, 1.2 CORE_RL_jp2_.lib, 1.1,
	1.2 CORE_RL_jpeg_.lib, 1.1, 1.2 CORE_RL_lcms_.lib, 1.1,
	1.2 CORE_RL_libxml_.lib, 1.1, 1.2 CORE_RL_Magick++_.lib, 1.1,
	1.2 CORE_RL_magick_.lib, 1.1, 1.2 CORE_RL_png_.lib, 1.1,
	1.2 CORE_RL_tiff_.lib, 1.1, 1.2 CORE_RL_ttf_.lib, 1.1,
	1.2 CORE_RL_wand_.lib, 1.1, 1.2 CORE_RL_wmf_.lib, 1.1,
	1.2 CORE_RL_xlib_.lib, 1.1, 1.2 CORE_RL_zlib_.lib, 1.1,
	1.2 IM_MOD_RL_art_.lib, 1.1, 1.2 IM_MOD_RL_avi_.lib, 1.1,
	1.2 IM_MOD_RL_avs_.lib, 1.1, 1.2 IM_MOD_RL_bmp_.lib, 1.1,
	1.2 IM_MOD_RL_braille_.lib, 1.1, 1.2 IM_MOD_RL_cals_.lib, 1.1,
	1.2 IM_MOD_RL_caption_.lib, 1.1, 1.2 IM_MOD_RL_cin_.lib, 1.1,
	1.2 IM_MOD_RL_cip_.lib, 1.1, 1.2 IM_MOD_RL_clip_.lib, 1.1,
	1.2 IM_MOD_RL_clipboard_.lib, 1.1, 1.2 IM_MOD_RL_cmyk_.lib,
	1.1, 1.2 IM_MOD_RL_cut_.lib, 1.1, 1.2 IM_MOD_RL_dcm_.lib, 1.1,
	1.2 IM_MOD_RL_dds_.lib, 1.1, 1.2 IM_MOD_RL_dib_.lib, 1.1,
	1.2 IM_MOD_RL_djvu_.lib, 1.1, 1.2 IM_MOD_RL_dng_.lib, 1.1,
	1.2 IM_MOD_RL_dot_.lib, 1.1, 1.2 IM_MOD_RL_dps_.lib, 1.1,
	1.2 IM_MOD_RL_dpx_.lib, 1.1, 1.2 IM_MOD_RL_emf_.lib, 1.1,
	1.2 IM_MOD_RL_ept_.lib, 1.1, 1.2 IM_MOD_RL_exr_.lib, 1.1,
	1.2 IM_MOD_RL_fax_.lib, 1.1, 1.2 IM_MOD_RL_fits_.lib, 1.1,
	1.2 IM_MOD_RL_fpx_.lib, 1.1, 1.2 IM_MOD_RL_gif_.lib, 1.1,
	1.2 IM_MOD_RL_gradient_.lib, 1.1, 1.2 IM_MOD_RL_gray_.lib, 1.1,
	1.2 IM_MOD_RL_hald_.lib, 1.1, 1.2 IM_MOD_RL_histogram_.lib,
	1.1, 1.2 IM_MOD_RL_hrz_.lib, 1.1, 1.2 IM_MOD_RL_html_.lib, 1.1,
	1.2 IM_MOD_RL_icon_.lib, 1.1, 1.2 IM_MOD_RL_info_.lib, 1.1,
	1.2 IM_MOD_RL_inline_.lib, 1.1, 1.2 IM_MOD_RL_ipl_.lib, 1.1,
	1.2 IM_MOD_RL_jbig_.lib, 1.1, 1.2 IM_MOD_RL_jp2_.lib, 1.1,
	1.2 IM_MOD_RL_jpeg_.lib, 1.1, 1.2 IM_MOD_RL_label_.lib, 1.1,
	1.2 IM_MOD_RL_magick_.lib, 1.1, 1.2 IM_MOD_RL_map_.lib, 1.1,
	1.2 IM_MOD_RL_mat_.lib, 1.1, 1.2 IM_MOD_RL_matte_.lib, 1.1,
	1.2 IM_MOD_RL_meta_.lib, 1.1, 1.2 IM_MOD_RL_miff_.lib, 1.1,
	1.2 IM_MOD_RL_mono_.lib, 1.1, 1.2 IM_MOD_RL_mpc_.lib, 1.1,
	1.2 IM_MOD_RL_mpeg_.lib, 1.1, 1.2 IM_MOD_RL_mpr_.lib, 1.1,
	1.2 IM_MOD_RL_msl_.lib, 1.1, 1.2 IM_MOD_RL_mtv_.lib, 1.1,
	1.2 IM_MOD_RL_mvg_.lib, 1.1, 1.2 IM_MOD_RL_null_.lib, 1.1,
	1.2 IM_MOD_RL_otb_.lib, 1.1, 1.2 IM_MOD_RL_palm_.lib, 1.1,
	1.2 IM_MOD_RL_pattern_.lib, 1.1, 1.2 IM_MOD_RL_pcd_.lib, 1.1,
	1.2 IM_MOD_RL_pcl_.lib, 1.1, 1.2 IM_MOD_RL_pcx_.lib, 1.1,
	1.2 IM_MOD_RL_pdb_.lib, 1.1, 1.2 IM_MOD_RL_pdf_.lib, 1.1,
	1.2 IM_MOD_RL_pict_.lib, 1.1, 1.2 IM_MOD_RL_pix_.lib, 1.1,
	1.2 IM_MOD_RL_plasma_.lib, 1.1, 1.2 IM_MOD_RL_png_.lib, 1.1,
	1.2 IM_MOD_RL_pnm_.lib, 1.1, 1.2 IM_MOD_RL_preview_.lib, 1.1,
	1.2 IM_MOD_RL_ps2_.lib, 1.1, 1.2 IM_MOD_RL_ps3_.lib, 1.1,
	1.2 IM_MOD_RL_ps_.lib, 1.1, 1.2 IM_MOD_RL_psd_.lib, 1.1,
	1.2 IM_MOD_RL_pwp_.lib, 1.1, 1.2 IM_MOD_RL_raw_.lib, 1.1,
	1.2 IM_MOD_RL_rgb_.lib, 1.1, 1.2 IM_MOD_RL_rla_.lib, 1.1,
	1.2 IM_MOD_RL_rle_.lib, 1.1, 1.2 IM_MOD_RL_scr_.lib, 1.1,
	1.2 IM_MOD_RL_sct_.lib, 1.1, 1.2 IM_MOD_RL_sfw_.lib, 1.1,
	1.2 IM_MOD_RL_sgi_.lib, 1.1, 1.2 IM_MOD_RL_stegano_.lib, 1.1,
	1.2 IM_MOD_RL_sun_.lib, 1.1, 1.2 IM_MOD_RL_svg_.lib, 1.1,
	1.2 IM_MOD_RL_tga_.lib, 1.1, 1.2 IM_MOD_RL_thumbnail_.lib, 1.1,
	1.2 IM_MOD_RL_tiff_.lib, 1.1, 1.2 IM_MOD_RL_tile_.lib, 1.1,
	1.2 IM_MOD_RL_tim_.lib, 1.1, 1.2 IM_MOD_RL_ttf_.lib, 1.1,
	1.2 IM_MOD_RL_txt_.lib, 1.1, 1.2 IM_MOD_RL_uil_.lib, 1.1,
	1.2 IM_MOD_RL_url_.lib, 1.1, 1.2 IM_MOD_RL_uyvy_.lib, 1.1,
	1.2 IM_MOD_RL_vicar_.lib, 1.1, 1.2 IM_MOD_RL_vid_.lib, 1.1,
	1.2 IM_MOD_RL_viff_.lib, 1.1, 1.2 IM_MOD_RL_wbmp_.lib, 1.1,
	1.2 IM_MOD_RL_wmf_.lib, 1.1, 1.2 IM_MOD_RL_wpg_.lib, 1.1,
	1.2 IM_MOD_RL_x_.lib, 1.1, 1.2 IM_MOD_RL_xbm_.lib, 1.1,
	1.2 IM_MOD_RL_xc_.lib, 1.1, 1.2 IM_MOD_RL_xcf_.lib, 1.1,
	1.2 IM_MOD_RL_xpm_.lib, 1.1, 1.2 IM_MOD_RL_xps_.lib, 1.1,
	1.2 IM_MOD_RL_xtrn_.lib, 1.1, 1.2 IM_MOD_RL_xwd_.lib, 1.1,
	1.2 IM_MOD_RL_ycbcr_.lib, 1.1, 1.2 IM_MOD_RL_yuv_.lib, 1.1,
	1.2 X11.lib, 1.1, 1.2 Xext.lib, 1.1, 1.2
Message-ID: 

Update of /cvsroot/common/import/imagemagick/lib
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv27419

Added Files:
	analyze.exp CORE_DB_jpeg_.exp CORE_DB_xlib_.exp 
	CORE_DB_zlib_.exp CORE_RL_bzlib_.exp CORE_RL_jbig_.exp 
	CORE_RL_jp2_.exp CORE_RL_jpeg_.exp CORE_RL_lcms_.exp 
	CORE_RL_libxml_.exp CORE_RL_Magick++_.exp CORE_RL_magick_.exp 
	CORE_RL_png_.exp CORE_RL_tiff_.exp CORE_RL_ttf_.exp 
	CORE_RL_wand_.exp CORE_RL_xlib_.exp CORE_RL_zlib_.exp 
	IM_MOD_RL_art_.exp IM_MOD_RL_avi_.exp IM_MOD_RL_avs_.exp 
	IM_MOD_RL_bmp_.exp IM_MOD_RL_braille_.exp IM_MOD_RL_cals_.exp 
	IM_MOD_RL_caption_.exp IM_MOD_RL_cin_.exp IM_MOD_RL_cip_.exp 
	IM_MOD_RL_clip_.exp IM_MOD_RL_clipboard_.exp 
	IM_MOD_RL_cmyk_.exp IM_MOD_RL_cut_.exp IM_MOD_RL_dcm_.exp 
	IM_MOD_RL_dds_.exp IM_MOD_RL_dib_.exp IM_MOD_RL_djvu_.exp 
	IM_MOD_RL_dng_.exp IM_MOD_RL_dot_.exp IM_MOD_RL_dps_.exp 
	IM_MOD_RL_dpx_.exp IM_MOD_RL_emf_.exp IM_MOD_RL_ept_.exp 
	IM_MOD_RL_exr_.exp IM_MOD_RL_fax_.exp IM_MOD_RL_fits_.exp 
	IM_MOD_RL_fpx_.exp IM_MOD_RL_gif_.exp IM_MOD_RL_gradient_.exp 
	IM_MOD_RL_gray_.exp IM_MOD_RL_hald_.exp 
	IM_MOD_RL_histogram_.exp IM_MOD_RL_hrz_.exp 
	IM_MOD_RL_html_.exp IM_MOD_RL_icon_.exp IM_MOD_RL_info_.exp 
	IM_MOD_RL_inline_.exp IM_MOD_RL_ipl_.exp IM_MOD_RL_jbig_.exp 
	IM_MOD_RL_jp2_.exp IM_MOD_RL_jpeg_.exp IM_MOD_RL_label_.exp 
	IM_MOD_RL_magick_.exp IM_MOD_RL_map_.exp IM_MOD_RL_mat_.exp 
	IM_MOD_RL_matte_.exp IM_MOD_RL_meta_.exp IM_MOD_RL_miff_.exp 
	IM_MOD_RL_mono_.exp IM_MOD_RL_mpc_.exp IM_MOD_RL_mpeg_.exp 
	IM_MOD_RL_mpr_.exp IM_MOD_RL_msl_.exp IM_MOD_RL_mtv_.exp 
	IM_MOD_RL_mvg_.exp IM_MOD_RL_null_.exp IM_MOD_RL_otb_.exp 
	IM_MOD_RL_palm_.exp IM_MOD_RL_pattern_.exp IM_MOD_RL_pcd_.exp 
	IM_MOD_RL_pcl_.exp IM_MOD_RL_pcx_.exp IM_MOD_RL_pdb_.exp 
	IM_MOD_RL_pdf_.exp IM_MOD_RL_pict_.exp IM_MOD_RL_pix_.exp 
	IM_MOD_RL_plasma_.exp IM_MOD_RL_png_.exp IM_MOD_RL_pnm_.exp 
	IM_MOD_RL_preview_.exp IM_MOD_RL_ps2_.exp IM_MOD_RL_ps3_.exp 
	IM_MOD_RL_ps_.exp IM_MOD_RL_psd_.exp IM_MOD_RL_pwp_.exp 
	IM_MOD_RL_raw_.exp IM_MOD_RL_rgb_.exp IM_MOD_RL_rla_.exp 
	IM_MOD_RL_rle_.exp IM_MOD_RL_scr_.exp IM_MOD_RL_sct_.exp 
	IM_MOD_RL_sfw_.exp IM_MOD_RL_sgi_.exp IM_MOD_RL_stegano_.exp 
	IM_MOD_RL_sun_.exp IM_MOD_RL_svg_.exp IM_MOD_RL_tga_.exp 
	IM_MOD_RL_thumbnail_.exp IM_MOD_RL_tiff_.exp 
	IM_MOD_RL_tile_.exp IM_MOD_RL_tim_.exp IM_MOD_RL_ttf_.exp 
	IM_MOD_RL_txt_.exp IM_MOD_RL_uil_.exp IM_MOD_RL_url_.exp 
	IM_MOD_RL_uyvy_.exp IM_MOD_RL_vicar_.exp IM_MOD_RL_vid_.exp 
	IM_MOD_RL_viff_.exp IM_MOD_RL_wbmp_.exp IM_MOD_RL_wmf_.exp 
	IM_MOD_RL_wpg_.exp IM_MOD_RL_x_.exp IM_MOD_RL_xbm_.exp 
	IM_MOD_RL_xc_.exp IM_MOD_RL_xcf_.exp IM_MOD_RL_xpm_.exp 
	IM_MOD_RL_xps_.exp IM_MOD_RL_xtrn_.exp IM_MOD_RL_xwd_.exp 
	IM_MOD_RL_ycbcr_.exp IM_MOD_RL_yuv_.exp analyze.lib 
	CORE_DB_jpeg_.lib CORE_DB_magick_.lib CORE_DB_wand_.lib 
	CORE_DB_xlib_.lib CORE_DB_zlib_.lib CORE_RL_bzlib_.lib 
	CORE_RL_jbig_.lib CORE_RL_jp2_.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_wand_.lib CORE_RL_wmf_.lib 
	CORE_RL_xlib_.lib CORE_RL_zlib_.lib IM_MOD_RL_art_.lib 
	IM_MOD_RL_avi_.lib IM_MOD_RL_avs_.lib IM_MOD_RL_bmp_.lib 
	IM_MOD_RL_braille_.lib IM_MOD_RL_cals_.lib 
	IM_MOD_RL_caption_.lib IM_MOD_RL_cin_.lib IM_MOD_RL_cip_.lib 
	IM_MOD_RL_clip_.lib IM_MOD_RL_clipboard_.lib 
	IM_MOD_RL_cmyk_.lib IM_MOD_RL_cut_.lib IM_MOD_RL_dcm_.lib 
	IM_MOD_RL_dds_.lib IM_MOD_RL_dib_.lib IM_MOD_RL_djvu_.lib 
	IM_MOD_RL_dng_.lib IM_MOD_RL_dot_.lib IM_MOD_RL_dps_.lib 
	IM_MOD_RL_dpx_.lib IM_MOD_RL_emf_.lib IM_MOD_RL_ept_.lib 
	IM_MOD_RL_exr_.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_hald_.lib 
	IM_MOD_RL_histogram_.lib IM_MOD_RL_hrz_.lib 
	IM_MOD_RL_html_.lib IM_MOD_RL_icon_.lib IM_MOD_RL_info_.lib 
	IM_MOD_RL_inline_.lib IM_MOD_RL_ipl_.lib IM_MOD_RL_jbig_.lib 
	IM_MOD_RL_jp2_.lib IM_MOD_RL_jpeg_.lib IM_MOD_RL_label_.lib 
	IM_MOD_RL_magick_.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_pattern_.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_ps2_.lib IM_MOD_RL_ps3_.lib 
	IM_MOD_RL_ps_.lib IM_MOD_RL_psd_.lib IM_MOD_RL_pwp_.lib 
	IM_MOD_RL_raw_.lib IM_MOD_RL_rgb_.lib IM_MOD_RL_rla_.lib 
	IM_MOD_RL_rle_.lib IM_MOD_RL_scr_.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_thumbnail_.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_xps_.lib IM_MOD_RL_xtrn_.lib IM_MOD_RL_xwd_.lib 
	IM_MOD_RL_ycbcr_.lib IM_MOD_RL_yuv_.lib X11.lib Xext.lib 
Log Message:
Import of Imagemagick

--- NEW FILE: IM_MOD_RL_hrz_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_xc_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_DB_wand_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_bmp_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_DB_magick_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_uyvy_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_pcl_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_mtv_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_dps_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_tiff_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_dng_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_meta_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_preview_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_txt_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_dng_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_tim_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_xps_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_mvg_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_avi_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_exr_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_vid_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_lcms_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_tile_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_pcx_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_cals_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_clipboard_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_dot_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_plasma_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_lcms_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_art_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_wmf_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_png_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_uil_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_pix_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_jbig_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_emf_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_stegano_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_ipl_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_fpx_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_dpx_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_url_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_xlib_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_pwp_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_cin_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_raw_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_magick_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_gradient_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_map_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_ps2_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_dot_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_txt_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_Magick++_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_label_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_zlib_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_pnm_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_uyvy_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_libxml_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_xbm_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_clipboard_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_pcd_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_tim_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_xps_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_avi_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_libxml_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_mvg_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_meta_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_DB_zlib_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_clip_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_vid_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_jp2_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_cip_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_plasma_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_icon_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_palm_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_cut_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_miff_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_mpeg_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_ps2_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_rgb_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_uil_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_xwd_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_wand_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_mono_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_pdb_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_tile_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_pict_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_hald_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_sun_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_ttf_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_xbm_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_url_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_png_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_otb_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_dds_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_svg_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_xlib_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_psd_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_ttf_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_sct_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_x_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_hald_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_dpx_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_mtv_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_tiff_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_fpx_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_inline_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_pict_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_dcm_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_dds_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_scr_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_dcm_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_matte_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_html_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_mpr_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_png_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_ttf_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_dps_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_info_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_x_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_magick_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_pwp_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_svg_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_wand_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_mono_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_mpc_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_jpeg_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_caption_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: analyze.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_pdf_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_exr_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_label_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_gif_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_jp2_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_tiff_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_wpg_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_wpg_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_wbmp_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_bzlib_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_palm_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_viff_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_stegano_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_sfw_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_xtrn_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_thumbnail_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_icon_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_sgi_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_ps3_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_gif_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_pix_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_jbig_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_rle_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_yuv_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_fits_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_hrz_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_avs_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_miff_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_xwd_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_pdf_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_png_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_ept_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_matte_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_dib_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_null_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: X11.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_cmyk_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_wmf_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_scr_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_braille_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_emf_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_caption_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_fax_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_ps3_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_jpeg_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_cut_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_raw_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_mat_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_clip_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_jp2_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_fax_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_DB_zlib_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_msl_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_cals_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_xcf_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_DB_jpeg_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_pcl_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_sun_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_tiff_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_Magick++_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_jp2_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_dib_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_null_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_sgi_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_wmf_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_viff_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_braille_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_xpm_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_xtrn_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_histogram_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_otb_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_ipl_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_pattern_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_fits_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_rle_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_xpm_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_preview_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: analyze.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_djvu_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_DB_xlib_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_xcf_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_inline_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_art_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_gray_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_ps_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_ttf_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_pcd_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_avs_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_bmp_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_gradient_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_ycbcr_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_psd_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_zlib_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_mpr_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_msl_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_mpc_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_mat_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_magick_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_histogram_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_wbmp_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_bzlib_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_mpeg_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_rla_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_tga_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_sct_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_pnm_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_cip_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_vicar_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_yuv_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_pdb_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_ept_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_pattern_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_magick_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_sfw_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_DB_jpeg_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_rgb_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_jbig_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_ycbcr_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_pcx_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_thumbnail_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_info_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_cmyk_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_djvu_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_jpeg_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_jbig_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_ps_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_html_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_tga_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_xc_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_rla_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_DB_xlib_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: Xext.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_map_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_jpeg_.lib ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_gray_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_vicar_.exp ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_cin_.lib ---
(This appears to be a binary file; contents omitted.)


From ebala at helixcommunity.org  Thu Sep 10 11:35:05 2009
From: ebala at helixcommunity.org (ebala@helixcommunity.org)
Date: Thu Sep 10 20:37:50 2009
Subject: [Common-cvs] import/imagemagick/lib CORE_RL_bzlib_.dll, 1.1,
	1.2 CORE_RL_jpeg_.dll, 1.1, 1.2 CORE_RL_lcms_.dll, 1.1,
	1.2 CORE_RL_magick_.dll, 1.1, 1.2 CORE_RL_png_.dll, 1.1,
	1.2 CORE_RL_tiff_.dll, 1.1, 1.2 CORE_RL_ttf_.dll, 1.1,
	1.2 CORE_RL_xlib_.dll, 1.1, 1.2 CORE_RL_zlib_.dll, 1.1,
	1.2 IM_MOD_RL_png_.dll, 1.1, 1.2 IM_MOD_RL_yuv_.dll, 1.1, 1.2
Message-ID: 

Update of /cvsroot/common/import/imagemagick/lib
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv27714

Added Files:
	CORE_RL_bzlib_.dll CORE_RL_jpeg_.dll CORE_RL_lcms_.dll 
	CORE_RL_magick_.dll CORE_RL_png_.dll CORE_RL_tiff_.dll 
	CORE_RL_ttf_.dll CORE_RL_xlib_.dll CORE_RL_zlib_.dll 
	IM_MOD_RL_png_.dll IM_MOD_RL_yuv_.dll 
Log Message:
Import of Imagemagick

--- NEW FILE: CORE_RL_magick_.dll ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_tiff_.dll ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_ttf_.dll ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_jpeg_.dll ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_png_.dll ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_xlib_.dll ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_lcms_.dll ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_png_.dll ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_yuv_.dll ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_bzlib_.dll ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_zlib_.dll ---
(This appears to be a binary file; contents omitted.)


From ebala at helixcommunity.org  Thu Sep 10 11:35:05 2009
From: ebala at helixcommunity.org (ebala@helixcommunity.org)
Date: Thu Sep 10 20:37:50 2009
Subject: [Common-cvs] import/imagemagick/lib CORE_RL_bzlib_.dll, 1.1,
	1.2 CORE_RL_jpeg_.dll, 1.1, 1.2 CORE_RL_lcms_.dll, 1.1,
	1.2 CORE_RL_magick_.dll, 1.1, 1.2 CORE_RL_png_.dll, 1.1,
	1.2 CORE_RL_tiff_.dll, 1.1, 1.2 CORE_RL_ttf_.dll, 1.1,
	1.2 CORE_RL_xlib_.dll, 1.1, 1.2 CORE_RL_zlib_.dll, 1.1,
	1.2 IM_MOD_RL_png_.dll, 1.1, 1.2 IM_MOD_RL_yuv_.dll, 1.1, 1.2
Message-ID: 

Update of /cvsroot/common/import/imagemagick/lib
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv27714

Added Files:
	CORE_RL_bzlib_.dll CORE_RL_jpeg_.dll CORE_RL_lcms_.dll 
	CORE_RL_magick_.dll CORE_RL_png_.dll CORE_RL_tiff_.dll 
	CORE_RL_ttf_.dll CORE_RL_xlib_.dll CORE_RL_zlib_.dll 
	IM_MOD_RL_png_.dll IM_MOD_RL_yuv_.dll 
Log Message:
Import of Imagemagick

--- NEW FILE: CORE_RL_magick_.dll ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_tiff_.dll ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_ttf_.dll ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_jpeg_.dll ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_png_.dll ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_xlib_.dll ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_lcms_.dll ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_png_.dll ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: IM_MOD_RL_yuv_.dll ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_bzlib_.dll ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: CORE_RL_zlib_.dll ---
(This appears to be a binary file; contents omitted.)


From ebala at helixcommunity.org  Thu Sep 10 11:35:13 2009
From: ebala at helixcommunity.org (ebala@helixcommunity.org)
Date: Thu Sep 10 20:38:02 2009
Subject: [Common-cvs] import/imagemagick/Magick++/tests Makefile.am, 1.1,
	1.2 appendImages.cpp, 1.1, 1.2 attributes.cpp, 1.1,
	1.2 averageImages.cpp, 1.1, 1.2 coalesceImages.cpp, 1.1,
	1.2 coderInfo.cpp, 1.1, 1.2 color.cpp, 1.1,
	1.2 colorHistogram.cpp, 1.1, 1.2 exceptions.cpp, 1.1,
	1.2 montageImages.cpp, 1.1, 1.2 morphImages.cpp, 1.1,
	1.2 readWriteBlob.cpp, 1.1, 1.2 readWriteImages.cpp, 1.1,
	1.2 test_image.miff, 1.1, 1.2 test_image_anim.miff, 1.1,
	1.2 appendImages.sh, 1.1, 1.2 attributes.sh, 1.1,
	1.2 averageImages.sh, 1.1, 1.2 coalesceImages.sh, 1.1,
	1.2 coderInfo.sh, 1.1, 1.2 color.sh, 1.1,
	1.2 colorHistogram.sh, 1.1, 1.2 exceptions.sh, 1.1,
	1.2 montageImages.sh, 1.1, 1.2 morphImages.sh, 1.1,
	1.2 readWriteBlob.sh, 1.1, 1.2 readWriteImages.sh, 1.1,
	1.2 test_appendImages.sh, 1.1, 1.2 test_attributes.sh, 1.1,
	1.2 test_averageImages.sh, 1.1, 1.2 test_coalesceImages.sh,
	1.1, 1.2 test_coderInfo.sh, 1.1, 1.2 test_color.sh, 1.1,
	1.2 test_colorHistogram.sh, 1.1, 1.2 test_exceptions.sh, 1.1,
	1.2 test_montageImages.sh, 1.1, 1.2 test_morphImages.sh, 1.1,
	1.2 test_readWriteBlob.sh, 1.1, 1.2 test_readWriteImages.sh,
	1.1, 1.2
Message-ID: 

Update of /cvsroot/common/import/imagemagick/Magick++/tests
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv27764

Added Files:
	Makefile.am appendImages.cpp attributes.cpp averageImages.cpp 
	coalesceImages.cpp coderInfo.cpp color.cpp colorHistogram.cpp 
	exceptions.cpp montageImages.cpp morphImages.cpp 
	readWriteBlob.cpp readWriteImages.cpp test_image.miff 
	test_image_anim.miff appendImages.sh attributes.sh 
	averageImages.sh coalesceImages.sh coderInfo.sh color.sh 
	colorHistogram.sh exceptions.sh montageImages.sh 
	morphImages.sh readWriteBlob.sh readWriteImages.sh 
	test_appendImages.sh test_attributes.sh test_averageImages.sh 
	test_coalesceImages.sh test_coderInfo.sh test_color.sh 
	test_colorHistogram.sh test_exceptions.sh 
	test_montageImages.sh test_morphImages.sh 
	test_readWriteBlob.sh test_readWriteImages.sh 
Log Message:
Import of Imagemagick

--- NEW FILE: readWriteImages.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/tests || exit 1

executable=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`

outfile="test_${executable}.out"

rm -f $outfile
${MEMCHECK} "./${executable}" 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: test_color.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
executable=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`

outfile="test_${executable}.out"

rm -f $outfile
${MAGICK_ENV} ${MEMCHECK} "./${executable}" 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: coalesceImages.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/tests || exit 1

executable=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`

outfile="test_${executable}.out"

rm -f $outfile
${MEMCHECK} "./${executable}" 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: test_averageImages.sh ---
#!/bin/sh 
#
# Copyright 2004 Bob Friesenhahn 
#
executable=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`

outfile="test_${executable}.out"

rm -f $outfile
${MAGICK_ENV} ${MEMCHECK} "./${executable}" 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: test_montageImages.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
executable=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`

outfile="test_${executable}.out"

rm -f $outfile
${MAGICK_ENV} ${MEMCHECK} "./${executable}" 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: averageImages.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2000, 2003
//
// Test STL averageImages function
//

#include 
#include 
#include 
#include 
#include 

using namespace std;

using namespace Magick;

int main( int /*argc*/, char ** argv)
{

  // Initialize ImageMagick install location for Windows
  InitializeMagick(*argv);

  int failures=0;

  try {

    string srcdir("");
    if(getenv("SRCDIR") != 0)
      srcdir = getenv("SRCDIR");

    //
    // Test averageImages
    //
    
    list imageList;
    readImages( &imageList, srcdir + "test_image_anim.miff" );
    
    Image averaged;
    averageImages( &averaged, imageList.begin(), imageList.end() );
    // averaged.display();
    if ( 0 && averaged.signature() != "d4b4ffb8b70c4e9b0e50445542deb26fbcdf8c393c793123cbc92fb35341e44d" &&
         averaged.signature() != "62d46d6d239b9fbd3b8ff2271aed1b5dde6303e0d5228dd8d833f61a7b012a79" &&
         averaged.signature() != "fdc76a2689d19061e1f7f6adfd79a2c04bc4608125a2cd2a1bce0d981774e13f" &&
         averaged.signature() != "66dfb88c21405a6bf582c9a542d87fd14db176aae1f34bc30b0b3e2443b49aa8" &&
         averaged.signature() != "f3bc318abc0b842c656b6545d1d7159eedb61f559a95fc5df671db7d0c0639de")
      {
	cout << "Line: " << __LINE__
	     << "  Averaging image failed, signature = "
	     << averaged.signature() << endl;
	averaged.display();
	++failures;
      }
  }

  catch( Exception &error_ )
    {
      cout << "Caught exception: " << error_.what() << endl;
      return 1;
    }
  catch( exception &error_ )
    {
      cout << "Caught exception: " << error_.what() << endl;
      return 1;
    }

  if ( failures )
    {
      cout << failures << " failures" << endl;
      return 1;
    }
  
  return 0;
}


--- NEW FILE: exceptions.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2000, 2001, 2002, 2003
//
// Tests for throwing exceptions
//

#include 
#include 
#include 

using namespace std;

using namespace Magick;

int main( int /*argc*/, char ** argv)
{
  // Initialize ImageMagick install location for Windows
  InitializeMagick(*argv);
      
  int failures=0;
      
  cout << "Checking for working exceptions (may crash) ... ";
  cout.flush();

  {      
    // Basic exception test
    try
      {
        failures++;
        throw int(100);
      }
    catch ( int /*value_*/ )
      {
        failures--;
      }
      
    // Throw a Magick++ exception class.
    try
      {
        failures++;
        throw WarningResourceLimit("How now brown cow?");
      }
    catch( Exception & /*error_*/ )
      {
        failures--;
      }
      
    // A more complex test
    try
      {
        unsigned int columns = 640;
        unsigned int rows = 480;
        Geometry geometry(columns,rows);
        Color canvasColor( "red" );
        Image image( geometry, canvasColor);
          
        {
          try
            {
              failures++;
              image.directory();
            }
          catch ( Exception& /*error_*/ )
            {
              failures--;
            }
        }
          
      }
    catch( Exception &error_ )
      {
        cout << "Caught exception: " << error_.what() << endl;
        return 1;
      }
    catch( exception &error_ )
      {
        cout << "Caught exception: " << error_.what() << endl;
        return 1;
      }
  
    if ( failures )
      {
        cout << failures << " failures" << endl;
        return 1;
      }
    cout << "passed!" << endl;
  }

  return 0;
}

--- NEW FILE: appendImages.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2000, 2003
//
// Test STL appendImages function
//

#include 
#include 
#include 
#include 
#include 

using namespace std;

using namespace Magick;

int main( int /*argc*/, char ** argv)
{

  // Initialize ImageMagick install location for Windows
  InitializeMagick(*argv);

  int failures=0;

  try {

    string srcdir("");
    if(getenv("SRCDIR") != 0)
      srcdir = getenv("SRCDIR");

    //
    // Test appendImages
    //

    list imageList;
    readImages( &imageList, srcdir + "test_image_anim.miff" );

    Image appended;

    // Horizontal
    appendImages( &appended, imageList.begin(), imageList.end() );
    // appended.display();
    if (( appended.signature() != "3a90bb0bb8f69f6788ab99e9e25598a0d6c5cdbbb797f77ad68011e0a8b1689d" ) &&
        ( appended.signature() != "c15fcd1e739b73638dc4e36837bdb53f7087359544664caf7b1763928129f3c7" ) &&
        ( appended.signature() != "229ff72f812e5f536245dc3b4502a0bc2ab2363f67c545863a85ab91ebfbfb83" ) &&
        ( appended.signature() != "b98c42c55fc4e661cb3684154256809c03c0c6b53da2738b6ce8066e1b6ddef0" ))
      {
	++failures;
	cout << "Line: " << __LINE__
	     << "  Horizontal append failed, signature = "
	     << appended.signature() << endl;
	appended.write("appendImages_horizontal_out.miff");
	// appended.display();
      }

    // Vertical
    appendImages( &appended, imageList.begin(), imageList.end(), true );
    if (( appended.signature() != "d73d25ccd6011936d08b6d0d89183b7a61790544c2195269aff4db2f782ffc08" ) &&
        ( appended.signature() != "0909f7ffa7c6ea410fb2ebfdbcb19d61b19c4bd271851ce3bd51662519dc2b58" ) &&
        ( appended.signature() != "11b97ba6ac1664aa1c2faed4c86195472ae9cce2ed75402d975bb4ffcf1de751" ) &&
        ( appended.signature() != "cae4815eeb3cb689e73b94d897a9957d3414d1d4f513e8b5e52579b05d164bfe" ))
      {
	++failures;
	cout << "Line: " << __LINE__
	     << "  Vertical append failed, signature = "
	     << appended.signature() << endl;
	appended.write("appendImages_vertical_out.miff");
	// appended.display();
      }
    
  }

  catch( Exception &error_ )
    {
      cout << "Caught exception: " << error_.what() << endl;
      return 1;
    }
  catch( exception &error_ )
    {
      cout << "Caught exception: " << error_.what() << endl;
      return 1;
    }

  if ( failures )
    {
      cout << failures << " failures" << endl;
      return 1;
    }
  
  return 0;
}


--- NEW FILE: test_coderInfo.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
executable=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`

outfile="test_${executable}.out"

rm -f $outfile
${MAGICK_ENV} ${MEMCHECK} "./${executable}" 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: attributes.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2000, 2001, 2002, 2003
//
// Tests for setting/getting Magick::Image attributes
//

#include 
#include 
#include 

using namespace std;

using namespace Magick;

int main( int /*argc*/, char ** argv)
{

  // Initialize ImageMagick install location for Windows
[...1471 lines suppressed...]
  }
  catch( Exception &error_ )
    {
      cout << "Caught exception: " << error_.what() << endl;
      return 1;
    }
  catch( exception &error_ )
    {
      cout << "Caught exception: " << error_.what() << endl;
      return 1;
    }
  
  if ( failures )
    {
      cout << failures << " failures" << endl;
      return 1;
    }

  return 0;
}

--- NEW FILE: montageImages.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2000, 2002, 2003
//
// Test STL montageImages function
//

#include 
#include 
#include 
#include 
#include 

using namespace std;

using namespace Magick;

int main( int /*argc*/, char ** /*argv*/)
{

  // Initialize ImageMagick install location for Windows
  // InitializeMagick(*argv);
  InitializeMagick("");
  
  int failures=0;

  try {

    string srcdir("");
    if(getenv("SRCDIR") != 0)
      srcdir = getenv("SRCDIR");

    //
    // Test montageImages
    //

    list imageList;
    readImages( &imageList, srcdir + "test_image_anim.miff" );

    vector montage;
    MontageFramed montageOpts;

    // Default montage
    montageImages( &montage, imageList.begin(), imageList.end(), montageOpts );

    {
      Geometry targetGeometry(128, 126 );
      if ( montage[0].montageGeometry() != targetGeometry )
        {
          ++failures;
          cout << "Line: " << __LINE__ 
               << "  Montage geometry ("
               << string(montage[0].montageGeometry())
               << ") is incorrect (expected "
               << string(targetGeometry)
               << ")"
               << endl;
        }
    }

    if ( montage[0].columns() != 768 || montage[0].rows() != 504 )
      {
	++failures;
	cout << "Line: " << __LINE__ 
	     << "  Montage columns/rows ("
	     << montage[0].columns() << "x"
	     << montage[0].rows()
	     << ") incorrect. (expected 768x504)" << endl;
      }

    // Montage with options set
    montage.clear();
    montageOpts.borderColor( "green" );
    montageOpts.borderWidth( 1 );
    montageOpts.compose( OverCompositeOp );
    montageOpts.fileName( "Montage" );
    montageOpts.frameGeometry( "6x6+3+3" );
    montageOpts.geometry("50x50+2+2>");
    montageOpts.gravity( CenterGravity );
    montageOpts.penColor( "yellow" );
    montageOpts.shadow( true );
    montageOpts.texture( "granite:" );
    montageOpts.tile("2x1");
    montageImages( &montage, imageList.begin(), imageList.end(), montageOpts );

    if ( montage.size() != 3 )
      {
	++failures;
	cout << "Line: " << __LINE__ 
	     << "  Montage images failed, number of montage frames is "
	     << montage.size()
	     << " rather than 3 as expected." << endl;
      }

    {
      Geometry targetGeometry( 66, 70 );
      if ( montage[0].montageGeometry() != targetGeometry )
        {
          ++failures;
          cout << "Line: " << __LINE__ 
               << "  Montage geometry ("
               << string(montage[0].montageGeometry())
               << ") is incorrect (expected "
               << string(targetGeometry)
               << ")."
               << endl;
        }
    }

    if ( montage[0].columns() != 136 || montage[0].rows() != 70 )
      {
	++failures;
	cout << "Line: " << __LINE__ 
	     << "  Montage columns/rows ("
	     << montage[0].columns() << "x"
	     << montage[0].rows()
	     << ") incorrect. (expected 136x70)" << endl;
      }
  }

  catch( Exception &error_ )
    {
      cout << "Caught exception: " << error_.what() << endl;
      return 1;
    }
  catch( exception &error_ )
    {
      cout << "Caught exception: " << error_.what() << endl;
      return 1;
    }

  if ( failures )
    {
      cout << failures << " failures" << endl;
      return 1;
    }
  
  return 0;
}


--- NEW FILE: averageImages.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/tests || exit 1

executable=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`

outfile="test_${executable}.out"

rm -f $outfile
${MEMCHECK} "./${executable}" 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: appendImages.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/tests || exit 1

executable=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`

outfile="test_${executable}.out"

rm -f $outfile
${MEMCHECK} "./${executable}" 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: morphImages.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2000, 2003
//
// Test STL morphImages function
//

#include 
#include 
#include 
#include 
#include 

using namespace std;

using namespace Magick;

int main( int /*argc*/, char **argv)
{

  // Initialize ImageMagick install location for Windows
  InitializeMagick(*argv);

  int failures=0;

  try {

    string srcdir("");
    if(getenv("SRCDIR") != 0)
      srcdir = getenv("SRCDIR");

    //
    // Test morphImages
    //

    list imageList;
    readImages( &imageList, srcdir + "test_image_anim.miff" );

    list morphed;
    morphImages( &morphed, imageList.begin(), imageList.end(), 3 );

    if ( morphed.size() != 21 )
      {
	++failures;
	cout << "Line: " << __LINE__ 
	     << "  Morph images failed, number of frames is "
	     << morphed.size()
	     << " rather than 21 as expected." << endl;
      }
  }

  catch( Exception &error_ )
    {
      cout << "Caught exception: " << error_.what() << endl;
      return 1;
    }
  catch( exception &error_ )
    {
      cout << "Caught exception: " << error_.what() << endl;
      return 1;
    }

  if ( failures )
    {
      cout << failures << " failures" << endl;
      return 1;
    }
  
  return 0;
}


--- NEW FILE: attributes.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/tests || exit 1

executable=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`

outfile="test_${executable}.out"

rm -f $outfile
${MEMCHECK} "./${executable}" 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: test_readWriteBlob.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
executable=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`

outfile="test_${executable}.out"

rm -f $outfile
${MAGICK_ENV} ${MEMCHECK} "./${executable}" 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: readWriteBlob.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/tests || exit 1

executable=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`

outfile="test_${executable}.out"

rm -f $outfile
${MEMCHECK} "./${executable}" 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: color.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2000, 2001, 2002, 2003
//
// Test Magick::Color classes
//

#include 
#include 
#include 

using namespace std;

using namespace Magick;

int main( int /*argc*/, char **argv)
{

  // Initialize ImageMagick install location for Windows
  InitializeMagick(*argv);

  int failures=0;

  try {

    //
    // Verify conversion from named colors as well as ColorRGB constructor
    //

    {
      struct colorStr
      {
	const char* color;
	double red;
	double green;
	double blue;
      };

      // Convert ratios from rgb.txt via value/255
      struct colorStr colorMap [] =
      { 
	{ "red", 1,0,0 },
	{ "green", 0,0.5019607843137256,0 },
	{ "blue", 0,0,1 },
	{ "black", 0,0,0 },
	{ "white", 1,1,1 },
	{ "cyan", 0,1,1 },
	{ "magenta", 1,0,1 },
	{ "yellow", 1,1,0 },
	{ NULL, 0,0,0 }
      };

      for ( int i = 0; colorMap[i].color != NULL; i++ )
	{
	  {
	    Color color( colorMap[i].color );
	    ColorRGB colorMatch( colorMap[i].red,
				 colorMap[i].green,
				 colorMap[i].blue );
	    if ( color != colorMatch )
	      {
		++failures;
		cout << "Line: " << __LINE__ << " Color(\""
		     << colorMap[i].color << "\") is "
		     << string(color)
		     << " rather than "
		     << string(colorMatch)
		     << endl;
                // printf ("Green: %10.16f\n", color.green());
	      }
	  }
	}      
    }

    // Test conversion to/from X11-style color specifications
    {
      const char * colorStrings[] =
      {
	"#ABC",
	"#AABBCC",
	"#AAAABBBBCCCC",
	NULL
      };

#if MAGICKCORE_QUANTUM_DEPTH == 8
      string expectedString = "#AABBCC";
#elif MAGICKCORE_QUANTUM_DEPTH == 16
      string expectedString = "#AAAABBBBCCCC";
#elif MAGICKCORE_QUANTUM_DEPTH == 32
      string expectedString = "#AAAAAAAABBBBBBBBCCCCCCCC";
#elif MAGICKCORE_QUANTUM_DEPTH == 64
      string expectedString = "#AAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCC";
#else
# error Quantum depth not supported!
#endif

      for ( int i = 0; colorStrings[i] != NULL; ++i )
	{
	  if ( string(Color(colorStrings[i])) != expectedString )
	    {
	      ++failures;
	      cout << "Line: " << __LINE__
		   << " Conversion from " << colorStrings[i]
		   << " is "
		   << string(Color(colorStrings[i])) << " rather than "
		   << expectedString
		   << endl;
	    }
	}
    }

    // Test ColorGray
    {
#undef MagickEpsilon
#define MagickEpsilon  1.0e-12
      double resolution = 1.0/QuantumRange;
      double max_error = resolution + MagickEpsilon;

      if ( resolution < 0.0001 )
        resolution = 0.0001;

      for( double value = 0; value < 1.0 + MagickEpsilon; value += resolution )
        {
          ColorGray gray(value);
          if ( gray.shade() < value - max_error || gray.shade() > value + max_error )
            {
              ++failures;
              cout << "Line: " << __LINE__
                   << " shade is "
                   << gray.shade()
                   << " rather than nominal"
                   << value
                   << endl;
            }
        }
    }

  }
  catch( Exception &error_ )
    {
      cout << "Caught exception: " << error_.what() << endl;
      return 1;
    }
  catch( exception &error_ )
    {
      cout << "Caught exception: " << error_.what() << endl;
      return 1;
    }
  
  if ( failures )
    {
      cout << failures << " failures" << endl;
      return 1;
    }

  return 0;
}

--- NEW FILE: Makefile.am ---
#
# Makefile for Magick++ tests
#
# Copyright Bob Friesenhahn, 1999, 2000, 2002, 2004
#
AUTOMAKE_OPTIONS = 1.8 foreign nostdinc

AM_CPPFLAGS = -I$(top_builddir) -I$(top_srcdir)/Magick++/lib -I$(top_srcdir)

#
# Execute 'make check' to compile and run a test program
#
check_PROGRAMS =  \
	appendImages \
	attributes \
	averageImages \
	coalesceImages \
	coderInfo \
	color \
	colorHistogram \
	exceptions \
	montageImages \
	morphImages \
	readWriteBlob \
	readWriteImages

LDADD = ../lib/libMagick++.la

appendImages_SOURCES	= appendImages.cpp
attributes_SOURCES	= attributes.cpp
averageImages_SOURCES	= averageImages.cpp
coalesceImages_SOURCES	= coalesceImages.cpp
coderInfo_SOURCES	= coderInfo.cpp
color_SOURCES		= color.cpp
colorHistogram_SOURCES  = colorHistogram.cpp
exceptions_SOURCES	= exceptions.cpp
montageImages_SOURCES	= montageImages.cpp
morphImages_SOURCES	= morphImages.cpp
readWriteBlob_SOURCES	= readWriteBlob.cpp
readWriteImages_SOURCES = readWriteImages.cpp


if WIN32_NATIVE_BUILD
SRCDIR='$(shell @WinPathScript@ $(srcdir)/)'
else
SRCDIR="$(srcdir)/"
endif

MAGICK_ENV = "$(SHELL) $(top_builddir)/magick.sh"

# Environment parameters to be used during tests
TESTS_ENVIRONMENT = \
	MAGICK_ENV=$(MAGICK_ENV) \
	SRCDIR=$(SRCDIR)

# Tests to run
TESTS = \
	test_exceptions.sh \
	test_appendImages.sh \
	test_attributes.sh \
	test_averageImages.sh \
	test_coalesceImages.sh \
	test_colorHistogram.sh \
	test_color.sh \
	test_montageImages.sh \
	test_morphImages.sh \
	test_readWriteBlob.sh \
	test_readWriteImages.sh

# Tests which are expected to fail
XFAIL_TESTS =

# Extra files to distribute
EXTRA_DIST = \
	$(TESTS) \
	test_image.miff \
	test_image_anim.miff

CLEANFILES = colorHistogram.txt testmagick_anim_out.miff ir.out # SunWS_cache

--- NEW FILE: coalesceImages.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2000, 2003
//
// Test STL coalesceImages function
//

#include 
#include 
#include 
#include 
#include 

using namespace std;

using namespace Magick;

int main( int /*argc*/, char ** argv)
{

  // Initialize ImageMagick install location for Windows
  InitializeMagick(*argv);

  int failures=0;

  try {

    string srcdir("");
    if(getenv("SRCDIR") != 0)
      srcdir = getenv("SRCDIR");

    //
    // Test coalesceImages
    //

    list imageList;
    readImages( &imageList, srcdir + "test_image_anim.miff" );

    list coalescedList;
    coalesceImages( &coalescedList, imageList.begin(), imageList.end() );
  }

  catch( Exception &error_ )
    {
      cout << "Caught exception: " << error_.what() << endl;
      return 1;
    }
  catch( exception &error_ )
    {
      cout << "Caught exception: " << error_.what() << endl;
      return 1;
    }

  if ( failures )
    {
      cout << failures << " failures" << endl;
      return 1;
    }
  
  return 0;
}


--- NEW FILE: morphImages.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/tests || exit 1

executable=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`

outfile="test_${executable}.out"

rm -f $outfile
${MEMCHECK} "./${executable}" 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: test_attributes.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
executable=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`

outfile="test_${executable}.out"

rm -f $outfile
${MAGICK_ENV} ${MEMCHECK} "./${executable}" 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: test_image.miff ---
id=ImageMagick  version=1.0
class=DirectClass  matte=False
columns=148  rows=99  depth=8
Resolution=72x72  units=undefined

:
--- NEW FILE: montageImages.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/tests || exit 1

executable=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`

outfile="test_${executable}.out"

rm -f $outfile
${MEMCHECK} "./${executable}" 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: test_exceptions.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
executable=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`

outfile="test_${executable}.out"

rm -f $outfile
${MAGICK_ENV} ${MEMCHECK} "./${executable}" 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: test_colorHistogram.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
executable=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`

outfile="test_${executable}.out"

rm -f $outfile
${MAGICK_ENV} ${MEMCHECK} "./${executable}" 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: test_appendImages.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
executable=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`

outfile="test_${executable}.out"

rm -f $outfile
${MAGICK_ENV} ${MEMCHECK} "./${executable}" 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: test_readWriteImages.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
executable=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`

outfile="test_${executable}.out"

rm -f $outfile
${MAGICK_ENV} ${MEMCHECK} "./${executable}" 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: test_image_anim.miff ---
id=ImageMagick
class=PseudoClass  colors=2  matte=False
columns=48  rows=48  depth=8
page=48x48+0+0
iterations=0  delay=10  dispose=3
Comment={GifBuilder 0.2 by Yves Piguet}
signature=4deabaabba44141d658a8c6132752c657b16679951950e004783317c694adb68

:
--- NEW FILE: readWriteImages.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2000, 2003
//
// Test STL readImages and writeImages functions
//

#include 
#include 
#include 
#include 
#include 

using namespace std;

using namespace Magick;

int main( int /*argc*/, char ** argv)
{

  // Initialize ImageMagick install location for Windows
  InitializeMagick(*argv);

  int failures=0;

  try {

    string srcdir("");
    if(getenv("SRCDIR") != 0)
      srcdir = getenv("SRCDIR");

    //
    // Test readImages and writeImages
    //
      
    list first;
    readImages( &first, srcdir + "test_image_anim.miff" );
      
    if ( first.size() != 6 )
      {
	++failures;
	cout << "Line: " << __LINE__ 
	     << "  Read images failed, number of frames is "
	     << first.size()
	     << " rather than 6 as expected." << endl;
      }
      
    writeImages( first.begin(), first.end(), "testmagick_anim_out.miff" );
      
    list second;
    readImages( &second, "testmagick_anim_out.miff" );
      
    list::iterator firstIter = first.begin();
    list::iterator secondIter = second.begin();
    while( firstIter != first.end() && secondIter != second.end() )
      {

	if ( firstIter->scene() != secondIter->scene() )
	  {
	    ++failures;
	    cout << "Line: " << __LINE__ 
		 << "  Image scene: " << secondIter->scene()
		 << " is not equal to original "
		 << firstIter->scene()
		 << endl;
	  }

	if ( firstIter->rows() != secondIter->rows() )
	  {
	    ++failures;
	    cout << "Line: " << __LINE__ 
		 << "  Image rows " << secondIter->rows()
		 << " are not equal to original "
		 << firstIter->rows()
		 << endl;
	  }

	if ( firstIter->columns() != secondIter->columns() )
	  {
	    ++failures;
	    cout << "Line: " << __LINE__ 
		 << "  Image columns " << secondIter->columns()
		 << " are not equal to original "
		 << firstIter->rows()
		 << endl;
	  }

	firstIter++;
	secondIter++;
      }
  }

  catch( Exception &error_ )
    {
      cout << "Caught exception: " << error_.what() << endl;
      return 1;
    }
  catch( exception &error_ )
    {
      cout << "Caught exception: " << error_.what() << endl;
      return 1;
    }

  if ( failures )
    {
      cout << failures << " failures" << endl;
      return 1;
    }
  
  return 0;
}


--- NEW FILE: color.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/tests || exit 1

executable=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`

outfile="test_${executable}.out"

rm -f $outfile
${MEMCHECK} "./${executable}" 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: colorHistogram.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/tests || exit 1

executable=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`

outfile="test_${executable}.out"

rm -f $outfile
${MEMCHECK} "./${executable}" 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: readWriteBlob.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2000, 2003
//
// Test reading/writing BLOBs using Magick++
//

#include 
#include 
#include 
#include 

#if defined(MISSING_STD_IOS_BINARY)
#  define IOS_IN_BINARY ios::in
#else
#  define IOS_IN_BINARY ios::in | ios::binary
#endif

using namespace std;

using namespace Magick;

// A derived Blob class to exercise updateNoCopy()
class myBlob : public Blob
{
public:
  // Construct from open binary stream
  myBlob( ifstream &stream_ )
    : Blob()
    {
      unsigned char* blobData = new unsigned char[100000];
      char* c= reinterpret_cast(blobData);
      size_t blobLen=0;
      while( (blobLen< 100000) && stream_.get(*c) )
        {
          c++;
          blobLen++;
        }
      if ((!stream_.eof()) || (blobLen == 0))
        {
          cout << "Failed to stream into blob!" << endl;
          exit(1);
        }

      // Insert data into blob
      updateNoCopy( reinterpret_cast(blobData), blobLen,
                    Blob::NewAllocator );
    }
};


int main( int /*argc*/, char ** argv)
{

  // Initialize ImageMagick install location for Windows
  InitializeMagick(*argv);

  int failures=0;

  try
    {
      string srcdir("");
      if(getenv("SRCDIR") != 0)
        srcdir = getenv("SRCDIR");

      string testimage;
    
      //
      // Test reading BLOBs
      //
      {
        string signature("");
        {
          Image image(srcdir + "test_image.miff");
          signature = image.signature();
        }

        // Read raw data from file into BLOB
        testimage = srcdir + "test_image.miff";
        ifstream in( testimage.c_str(), ios::in | IOS_IN_BINARY );
        if( !in )
          {
            cout << "Failed to open file " << testimage << " for input!" << endl;
            exit(1);
          }
        unsigned char* blobData = new unsigned char[100000];
        char* c=reinterpret_cast(blobData);
        size_t blobLen=0;
        while( (blobLen< 100000) && in.get(*c) )
          {
            c++;
            blobLen++;
          }
        if ((!in.eof()) || (blobLen == 0))
          {
            cout << "Failed to read file " << testimage << " for input!" << endl;
            exit(1);
          }
        in.close();

        // Construct Magick++ Blob
        Blob blob(static_cast(blobData), blobLen);
        delete [] blobData;

        // If construction of image fails, an exception should be thrown
        {
          // Construct with blob data only
          Image image( blob );
          if ( image.signature() != signature )
            {
              ++failures;
              cout << "Line: " << __LINE__
                   << "  Image signature "
                   << image.signature()
                   << " != "
                   << signature << endl;
            }
        }

        {
          // Construct with image geometry and blob data
          Image image(  blob, Geometry(148,99));
          if ( image.signature() != signature )
            {
              ++failures;
              cout << "Line: " << __LINE__
                   << "  Image signature "
                   << image.signature()
                   << " != "
                   << signature << endl;
            }
        }

        {
          // Construct default image, and then read in blob data
          Image image;
          image.read( blob );
          if ( image.signature() != signature )
            {
              ++failures;
              cout << "Line: " << __LINE__
                   << "  Image signature "
                   << image.signature()
                   << " != "
                   << signature << endl;
            }
        }

        {
          // Construct default image, and then read in blob data with
          // image geometry
          Image image;
          image.read( blob, Geometry(148,99) );
          if ( image.signature() != signature )
            {
              ++failures;
              cout << "Line: " << __LINE__
                   << "  Image signature "
                   << image.signature()
                   << " != "
                   << signature << endl;
            }
        }

      }

      // Test writing BLOBs
      {
        Blob blob;
        string signature("");
        {
          Image image(srcdir + "test_image.miff");
          image.magick("MIFF");
          image.write( &blob );
          signature = image.signature();
        }
        {
          Image image(blob);
          if ( image.signature() != signature )
            {
              ++failures;
              cout << "Line: " << __LINE__
                   << "  Image signature "
                   << image.signature()
                   << " != "
                   << signature << endl;
              image.display();
            }
        }
      
      }
      // Test writing BLOBs via STL writeImages
      {
        Blob blob;

        list first;
        readImages( &first, srcdir + "test_image_anim.miff" );
        writeImages( first.begin(), first.end(), &blob, true );
      }

      // Test constructing a BLOB from a derived class
      {

        string signature("");
        {
          Image image(srcdir + "test_image.miff");
          signature = image.signature();
        }

        // Read raw data from file into BLOB
        testimage = srcdir + "test_image.miff";
        ifstream in( testimage.c_str(), ios::in | IOS_IN_BINARY );
        if( !in )
          {
            cout << "Failed to open file for input!" << endl;
            exit(1);
          }

        myBlob blob( in );
        in.close();

        Image image( blob );
        if ( image.signature() != signature )
          {
            ++failures;
            cout << "Line: " << __LINE__
                 << "  Image signature "
                 << image.signature()
                 << " != "
                 << signature << endl;
          }
      }
    }
  
  catch( Exception &error_ )
    {
      cout << "Caught exception: " << error_.what() << endl;
      return 1;
    }
  catch( exception &error_ )
    {
      cout << "Caught exception: " << error_.what() << endl;
      return 1;
    }

  if ( failures )
    {
      cout << failures << " failures" << endl;
      return 1;
    }
  
  return 0;
}



--- NEW FILE: test_morphImages.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
executable=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`

outfile="test_${executable}.out"

rm -f $outfile
${MAGICK_ENV} ${MEMCHECK} "./${executable}" 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: test_coalesceImages.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
executable=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`

outfile="test_${executable}.out"

rm -f $outfile
${MAGICK_ENV} ${MEMCHECK} "./${executable}" 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: coderInfo.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/tests || exit 1

executable=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`

outfile="test_${executable}.out"

rm -f $outfile
${MEMCHECK} "./${executable}" 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: exceptions.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/tests || exit 1

executable=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`

outfile="test_${executable}.out"

rm -f $outfile
${MEMCHECK} "./${executable}" 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: colorHistogram.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 2003
//
// Test STL colorHistogram function
//

#undef USE_VECTOR
#define USE_MAP

#include 
#include 
#include 
#include 
#if defined(USE_VECTOR)
#  include 
#  include 
#endif
#if defined(USE_MAP)
#  include 
#endif

using namespace std;

using namespace Magick;

int main( int /*argc*/, char ** argv)
{

  // Initialize ImageMagick install location for Windows
  InitializeMagick(*argv);

  int failures=0;

  try {

    string srcdir("");
    if(getenv("SRCDIR") != 0)
      srcdir = getenv("SRCDIR");

    // Read image
    Image image;
    image.read( srcdir + "test_image.miff" );

    // Create histogram vector
#if defined(USE_MAP)
    std::map histogram;
#elif defined(USE_VECTOR)
    std::vector > histogram;
#endif

    colorHistogram( &histogram, image );

    // Print out histogram
#if (MAGICKCORE_QUANTUM_DEPTH == 8)
    int quantum_width=3;
#elif (MAGICKCORE_QUANTUM_DEPTH == 16)
    int quantum_width=5;
#else
    int quantum_width=10;
#endif

    cout << "Histogram for file \"" << image.fileName() << "\"" << endl
         << histogram.size() << " entries:" << endl;

#if defined(USE_MAP)
    std::map::const_iterator p=histogram.begin();
#elif defined(USE_VECTOR)
    std::vector >::const_iterator p=histogram.begin();
#endif
    while (p != histogram.end())
      {
        cout << setw(10) << (int)p->second << ": ("
             << setw(quantum_width) << (int)p->first.redQuantum() << ","
             << setw(quantum_width) << (int)p->first.greenQuantum() << ","
             << setw(quantum_width) << (int)p->first.blueQuantum() << ")"
             << endl;
        p++;
      }
  }

  catch( Exception &error_ )
    {
      cout << "Caught exception: " << error_.what() << endl;
      return 1;
    }
  catch( exception &error_ )
    {
      cout << "Caught exception: " << error_.what() << endl;
      return 1;
    }

  if ( failures )
    {
      cout << failures << " failures" << endl;
      return 1;
    }
  
  return 0;
}


--- NEW FILE: coderInfo.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 2001, 2002, 2003
//
// Test Magick::CoderInfo class and Magick::coderInfoList
//

#include 
#include 
#include 
#include 

using namespace std;

using namespace Magick;

int test( CoderInfo::MatchType isReadable_,
          CoderInfo::MatchType isWritable_,
          CoderInfo::MatchType isMultiFrame_ )
{
  int result = 0;
  list coderList;
  coderInfoList( &coderList, isReadable_, isWritable_, isMultiFrame_ );
  list::iterator entry = coderList.begin();
  while( entry != coderList.end() )
    {
      // Readable
      if ( isReadable_ != CoderInfo::AnyMatch &&
           (( entry->isReadable() && isReadable_ != CoderInfo::TrueMatch ) ||
            ( !entry->isReadable() && isReadable_ != CoderInfo::FalseMatch )) )
        {
          cout << "Entry \""
               << entry->name()
               << "\" has unexpected readablity state ("
               << static_cast(entry->isReadable())
               << ")"
               << endl;
          ++result;
        }

      // Writable
      if ( isWritable_ != CoderInfo::AnyMatch &&
           (( entry->isWritable() && isWritable_ != CoderInfo::TrueMatch ) ||
            ( !entry->isWritable() && isWritable_ != CoderInfo::FalseMatch )) )
        {
          cout << "Entry \""
               << entry->name()
               << "\" has unexpected writablity state ("
               << static_cast(entry->isWritable())
               << ")"
               << endl;
          ++result;
        }

      // MultiFrame
      if ( isMultiFrame_ != CoderInfo::AnyMatch &&
           (( entry->isMultiFrame() && isMultiFrame_ != CoderInfo::TrueMatch ) ||
            ( !entry->isMultiFrame() && isMultiFrame_ != CoderInfo::FalseMatch )) )
        {
          cout << "Entry \""
               << entry->name()
               << "\" has unexpected multiframe state ("
               << static_cast(entry->isMultiFrame())
               << ")"
               << endl;
          ++result;
        }

      entry++;
    }

  return result;
}

int main( int /*argc*/, char **argv)
{

  // Initialize ImageMagick install location for Windows
  InitializeMagick(*argv);

  int failures=0;

  try {

    CoderInfo coderInfo("GIF");
    if ( coderInfo.name() != string("GIF") )
      {
        cout << "Unexpected coder name \""
             << coderInfo.name()
             << "\""
             << endl;
        ++failures;
      }

    if( coderInfo.description() != string("CompuServe graphics interchange format") )
      {
        cout << "Unexpected coder description \""
             << coderInfo.description()
             << "\""
             << endl;
        ++failures;
      }

    failures += test(CoderInfo::AnyMatch,CoderInfo::AnyMatch,CoderInfo::AnyMatch);
    failures += test(CoderInfo::FalseMatch,CoderInfo::FalseMatch,CoderInfo::FalseMatch);

    failures += test(CoderInfo::TrueMatch,CoderInfo::AnyMatch,CoderInfo::AnyMatch);
    failures += test(CoderInfo::FalseMatch,CoderInfo::AnyMatch,CoderInfo::AnyMatch);

    failures += test(CoderInfo::AnyMatch,CoderInfo::TrueMatch,CoderInfo::AnyMatch);
    failures += test(CoderInfo::AnyMatch,CoderInfo::FalseMatch,CoderInfo::AnyMatch);

    failures += test(CoderInfo::AnyMatch,CoderInfo::AnyMatch,CoderInfo::TrueMatch);
    failures += test(CoderInfo::AnyMatch,CoderInfo::AnyMatch,CoderInfo::FalseMatch);
  }
  catch( Exception &error_ )
    {
      cout << "Caught exception: " << error_.what() << endl;
      return 1;
    }
  catch( exception &error_ )
    {
      cout << "Caught exception: " << error_.what() << endl;
      return 1;
    }
  
  if ( failures )
    {
      cout << failures << " failures" << endl;
      return 1;
    }

  return 0;
}


From ebala at helixcommunity.org  Thu Sep 10 11:35:13 2009
From: ebala at helixcommunity.org (ebala@helixcommunity.org)
Date: Thu Sep 10 20:38:03 2009
Subject: [Common-cvs] import/imagemagick/Magick++/tests Makefile.am, 1.1,
	1.2 appendImages.cpp, 1.1, 1.2 attributes.cpp, 1.1,
	1.2 averageImages.cpp, 1.1, 1.2 coalesceImages.cpp, 1.1,
	1.2 coderInfo.cpp, 1.1, 1.2 color.cpp, 1.1,
	1.2 colorHistogram.cpp, 1.1, 1.2 exceptions.cpp, 1.1,
	1.2 montageImages.cpp, 1.1, 1.2 morphImages.cpp, 1.1,
	1.2 readWriteBlob.cpp, 1.1, 1.2 readWriteImages.cpp, 1.1,
	1.2 test_image.miff, 1.1, 1.2 test_image_anim.miff, 1.1,
	1.2 appendImages.sh, 1.1, 1.2 attributes.sh, 1.1,
	1.2 averageImages.sh, 1.1, 1.2 coalesceImages.sh, 1.1,
	1.2 coderInfo.sh, 1.1, 1.2 color.sh, 1.1,
	1.2 colorHistogram.sh, 1.1, 1.2 exceptions.sh, 1.1,
	1.2 montageImages.sh, 1.1, 1.2 morphImages.sh, 1.1,
	1.2 readWriteBlob.sh, 1.1, 1.2 readWriteImages.sh, 1.1,
	1.2 test_appendImages.sh, 1.1, 1.2 test_attributes.sh, 1.1,
	1.2 test_averageImages.sh, 1.1, 1.2 test_coalesceImages.sh,
	1.1, 1.2 test_coderInfo.sh, 1.1, 1.2 test_color.sh, 1.1,
	1.2 test_colorHistogram.sh, 1.1, 1.2 test_exceptions.sh, 1.1,
	1.2 test_montageImages.sh, 1.1, 1.2 test_morphImages.sh, 1.1,
	1.2 test_readWriteBlob.sh, 1.1, 1.2 test_readWriteImages.sh,
	1.1, 1.2
Message-ID: 

Update of /cvsroot/common/import/imagemagick/Magick++/tests
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv27764

Added Files:
	Makefile.am appendImages.cpp attributes.cpp averageImages.cpp 
	coalesceImages.cpp coderInfo.cpp color.cpp colorHistogram.cpp 
	exceptions.cpp montageImages.cpp morphImages.cpp 
	readWriteBlob.cpp readWriteImages.cpp test_image.miff 
	test_image_anim.miff appendImages.sh attributes.sh 
	averageImages.sh coalesceImages.sh coderInfo.sh color.sh 
	colorHistogram.sh exceptions.sh montageImages.sh 
	morphImages.sh readWriteBlob.sh readWriteImages.sh 
	test_appendImages.sh test_attributes.sh test_averageImages.sh 
	test_coalesceImages.sh test_coderInfo.sh test_color.sh 
	test_colorHistogram.sh test_exceptions.sh 
	test_montageImages.sh test_morphImages.sh 
	test_readWriteBlob.sh test_readWriteImages.sh 
Log Message:
Import of Imagemagick

--- NEW FILE: readWriteImages.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/tests || exit 1

executable=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`

outfile="test_${executable}.out"

rm -f $outfile
${MEMCHECK} "./${executable}" 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: test_color.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
executable=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`

outfile="test_${executable}.out"

rm -f $outfile
${MAGICK_ENV} ${MEMCHECK} "./${executable}" 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: coalesceImages.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/tests || exit 1

executable=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`

outfile="test_${executable}.out"

rm -f $outfile
${MEMCHECK} "./${executable}" 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: test_averageImages.sh ---
#!/bin/sh 
#
# Copyright 2004 Bob Friesenhahn 
#
executable=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`

outfile="test_${executable}.out"

rm -f $outfile
${MAGICK_ENV} ${MEMCHECK} "./${executable}" 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: test_montageImages.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
executable=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`

outfile="test_${executable}.out"

rm -f $outfile
${MAGICK_ENV} ${MEMCHECK} "./${executable}" 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: averageImages.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2000, 2003
//
// Test STL averageImages function
//

#include 
#include 
#include 
#include 
#include 

using namespace std;

using namespace Magick;

int main( int /*argc*/, char ** argv)
{

  // Initialize ImageMagick install location for Windows
  InitializeMagick(*argv);

  int failures=0;

  try {

    string srcdir("");
    if(getenv("SRCDIR") != 0)
      srcdir = getenv("SRCDIR");

    //
    // Test averageImages
    //
    
    list imageList;
    readImages( &imageList, srcdir + "test_image_anim.miff" );
    
    Image averaged;
    averageImages( &averaged, imageList.begin(), imageList.end() );
    // averaged.display();
    if ( 0 && averaged.signature() != "d4b4ffb8b70c4e9b0e50445542deb26fbcdf8c393c793123cbc92fb35341e44d" &&
         averaged.signature() != "62d46d6d239b9fbd3b8ff2271aed1b5dde6303e0d5228dd8d833f61a7b012a79" &&
         averaged.signature() != "fdc76a2689d19061e1f7f6adfd79a2c04bc4608125a2cd2a1bce0d981774e13f" &&
         averaged.signature() != "66dfb88c21405a6bf582c9a542d87fd14db176aae1f34bc30b0b3e2443b49aa8" &&
         averaged.signature() != "f3bc318abc0b842c656b6545d1d7159eedb61f559a95fc5df671db7d0c0639de")
      {
	cout << "Line: " << __LINE__
	     << "  Averaging image failed, signature = "
	     << averaged.signature() << endl;
	averaged.display();
	++failures;
      }
  }

  catch( Exception &error_ )
    {
      cout << "Caught exception: " << error_.what() << endl;
      return 1;
    }
  catch( exception &error_ )
    {
      cout << "Caught exception: " << error_.what() << endl;
      return 1;
    }

  if ( failures )
    {
      cout << failures << " failures" << endl;
      return 1;
    }
  
  return 0;
}


--- NEW FILE: exceptions.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2000, 2001, 2002, 2003
//
// Tests for throwing exceptions
//

#include 
#include 
#include 

using namespace std;

using namespace Magick;

int main( int /*argc*/, char ** argv)
{
  // Initialize ImageMagick install location for Windows
  InitializeMagick(*argv);
      
  int failures=0;
      
  cout << "Checking for working exceptions (may crash) ... ";
  cout.flush();

  {      
    // Basic exception test
    try
      {
        failures++;
        throw int(100);
      }
    catch ( int /*value_*/ )
      {
        failures--;
      }
      
    // Throw a Magick++ exception class.
    try
      {
        failures++;
        throw WarningResourceLimit("How now brown cow?");
      }
    catch( Exception & /*error_*/ )
      {
        failures--;
      }
      
    // A more complex test
    try
      {
        unsigned int columns = 640;
        unsigned int rows = 480;
        Geometry geometry(columns,rows);
        Color canvasColor( "red" );
        Image image( geometry, canvasColor);
          
        {
          try
            {
              failures++;
              image.directory();
            }
          catch ( Exception& /*error_*/ )
            {
              failures--;
            }
        }
          
      }
    catch( Exception &error_ )
      {
        cout << "Caught exception: " << error_.what() << endl;
        return 1;
      }
    catch( exception &error_ )
      {
        cout << "Caught exception: " << error_.what() << endl;
        return 1;
      }
  
    if ( failures )
      {
        cout << failures << " failures" << endl;
        return 1;
      }
    cout << "passed!" << endl;
  }

  return 0;
}

--- NEW FILE: appendImages.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2000, 2003
//
// Test STL appendImages function
//

#include 
#include 
#include 
#include 
#include 

using namespace std;

using namespace Magick;

int main( int /*argc*/, char ** argv)
{

  // Initialize ImageMagick install location for Windows
  InitializeMagick(*argv);

  int failures=0;

  try {

    string srcdir("");
    if(getenv("SRCDIR") != 0)
      srcdir = getenv("SRCDIR");

    //
    // Test appendImages
    //

    list imageList;
    readImages( &imageList, srcdir + "test_image_anim.miff" );

    Image appended;

    // Horizontal
    appendImages( &appended, imageList.begin(), imageList.end() );
    // appended.display();
    if (( appended.signature() != "3a90bb0bb8f69f6788ab99e9e25598a0d6c5cdbbb797f77ad68011e0a8b1689d" ) &&
        ( appended.signature() != "c15fcd1e739b73638dc4e36837bdb53f7087359544664caf7b1763928129f3c7" ) &&
        ( appended.signature() != "229ff72f812e5f536245dc3b4502a0bc2ab2363f67c545863a85ab91ebfbfb83" ) &&
        ( appended.signature() != "b98c42c55fc4e661cb3684154256809c03c0c6b53da2738b6ce8066e1b6ddef0" ))
      {
	++failures;
	cout << "Line: " << __LINE__
	     << "  Horizontal append failed, signature = "
	     << appended.signature() << endl;
	appended.write("appendImages_horizontal_out.miff");
	// appended.display();
      }

    // Vertical
    appendImages( &appended, imageList.begin(), imageList.end(), true );
    if (( appended.signature() != "d73d25ccd6011936d08b6d0d89183b7a61790544c2195269aff4db2f782ffc08" ) &&
        ( appended.signature() != "0909f7ffa7c6ea410fb2ebfdbcb19d61b19c4bd271851ce3bd51662519dc2b58" ) &&
        ( appended.signature() != "11b97ba6ac1664aa1c2faed4c86195472ae9cce2ed75402d975bb4ffcf1de751" ) &&
        ( appended.signature() != "cae4815eeb3cb689e73b94d897a9957d3414d1d4f513e8b5e52579b05d164bfe" ))
      {
	++failures;
	cout << "Line: " << __LINE__
	     << "  Vertical append failed, signature = "
	     << appended.signature() << endl;
	appended.write("appendImages_vertical_out.miff");
	// appended.display();
      }
    
  }

  catch( Exception &error_ )
    {
      cout << "Caught exception: " << error_.what() << endl;
      return 1;
    }
  catch( exception &error_ )
    {
      cout << "Caught exception: " << error_.what() << endl;
      return 1;
    }

  if ( failures )
    {
      cout << failures << " failures" << endl;
      return 1;
    }
  
  return 0;
}


--- NEW FILE: test_coderInfo.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
executable=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`

outfile="test_${executable}.out"

rm -f $outfile
${MAGICK_ENV} ${MEMCHECK} "./${executable}" 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: attributes.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2000, 2001, 2002, 2003
//
// Tests for setting/getting Magick::Image attributes
//

#include 
#include 
#include 

using namespace std;

using namespace Magick;

int main( int /*argc*/, char ** argv)
{

  // Initialize ImageMagick install location for Windows
[...1471 lines suppressed...]
  }
  catch( Exception &error_ )
    {
      cout << "Caught exception: " << error_.what() << endl;
      return 1;
    }
  catch( exception &error_ )
    {
      cout << "Caught exception: " << error_.what() << endl;
      return 1;
    }
  
  if ( failures )
    {
      cout << failures << " failures" << endl;
      return 1;
    }

  return 0;
}

--- NEW FILE: montageImages.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2000, 2002, 2003
//
// Test STL montageImages function
//

#include 
#include 
#include 
#include 
#include 

using namespace std;

using namespace Magick;

int main( int /*argc*/, char ** /*argv*/)
{

  // Initialize ImageMagick install location for Windows
  // InitializeMagick(*argv);
  InitializeMagick("");
  
  int failures=0;

  try {

    string srcdir("");
    if(getenv("SRCDIR") != 0)
      srcdir = getenv("SRCDIR");

    //
    // Test montageImages
    //

    list imageList;
    readImages( &imageList, srcdir + "test_image_anim.miff" );

    vector montage;
    MontageFramed montageOpts;

    // Default montage
    montageImages( &montage, imageList.begin(), imageList.end(), montageOpts );

    {
      Geometry targetGeometry(128, 126 );
      if ( montage[0].montageGeometry() != targetGeometry )
        {
          ++failures;
          cout << "Line: " << __LINE__ 
               << "  Montage geometry ("
               << string(montage[0].montageGeometry())
               << ") is incorrect (expected "
               << string(targetGeometry)
               << ")"
               << endl;
        }
    }

    if ( montage[0].columns() != 768 || montage[0].rows() != 504 )
      {
	++failures;
	cout << "Line: " << __LINE__ 
	     << "  Montage columns/rows ("
	     << montage[0].columns() << "x"
	     << montage[0].rows()
	     << ") incorrect. (expected 768x504)" << endl;
      }

    // Montage with options set
    montage.clear();
    montageOpts.borderColor( "green" );
    montageOpts.borderWidth( 1 );
    montageOpts.compose( OverCompositeOp );
    montageOpts.fileName( "Montage" );
    montageOpts.frameGeometry( "6x6+3+3" );
    montageOpts.geometry("50x50+2+2>");
    montageOpts.gravity( CenterGravity );
    montageOpts.penColor( "yellow" );
    montageOpts.shadow( true );
    montageOpts.texture( "granite:" );
    montageOpts.tile("2x1");
    montageImages( &montage, imageList.begin(), imageList.end(), montageOpts );

    if ( montage.size() != 3 )
      {
	++failures;
	cout << "Line: " << __LINE__ 
	     << "  Montage images failed, number of montage frames is "
	     << montage.size()
	     << " rather than 3 as expected." << endl;
      }

    {
      Geometry targetGeometry( 66, 70 );
      if ( montage[0].montageGeometry() != targetGeometry )
        {
          ++failures;
          cout << "Line: " << __LINE__ 
               << "  Montage geometry ("
               << string(montage[0].montageGeometry())
               << ") is incorrect (expected "
               << string(targetGeometry)
               << ")."
               << endl;
        }
    }

    if ( montage[0].columns() != 136 || montage[0].rows() != 70 )
      {
	++failures;
	cout << "Line: " << __LINE__ 
	     << "  Montage columns/rows ("
	     << montage[0].columns() << "x"
	     << montage[0].rows()
	     << ") incorrect. (expected 136x70)" << endl;
      }
  }

  catch( Exception &error_ )
    {
      cout << "Caught exception: " << error_.what() << endl;
      return 1;
    }
  catch( exception &error_ )
    {
      cout << "Caught exception: " << error_.what() << endl;
      return 1;
    }

  if ( failures )
    {
      cout << failures << " failures" << endl;
      return 1;
    }
  
  return 0;
}


--- NEW FILE: averageImages.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/tests || exit 1

executable=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`

outfile="test_${executable}.out"

rm -f $outfile
${MEMCHECK} "./${executable}" 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: appendImages.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/tests || exit 1

executable=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`

outfile="test_${executable}.out"

rm -f $outfile
${MEMCHECK} "./${executable}" 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: morphImages.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2000, 2003
//
// Test STL morphImages function
//

#include 
#include 
#include 
#include 
#include 

using namespace std;

using namespace Magick;

int main( int /*argc*/, char **argv)
{

  // Initialize ImageMagick install location for Windows
  InitializeMagick(*argv);

  int failures=0;

  try {

    string srcdir("");
    if(getenv("SRCDIR") != 0)
      srcdir = getenv("SRCDIR");

    //
    // Test morphImages
    //

    list imageList;
    readImages( &imageList, srcdir + "test_image_anim.miff" );

    list morphed;
    morphImages( &morphed, imageList.begin(), imageList.end(), 3 );

    if ( morphed.size() != 21 )
      {
	++failures;
	cout << "Line: " << __LINE__ 
	     << "  Morph images failed, number of frames is "
	     << morphed.size()
	     << " rather than 21 as expected." << endl;
      }
  }

  catch( Exception &error_ )
    {
      cout << "Caught exception: " << error_.what() << endl;
      return 1;
    }
  catch( exception &error_ )
    {
      cout << "Caught exception: " << error_.what() << endl;
      return 1;
    }

  if ( failures )
    {
      cout << failures << " failures" << endl;
      return 1;
    }
  
  return 0;
}


--- NEW FILE: attributes.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/tests || exit 1

executable=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`

outfile="test_${executable}.out"

rm -f $outfile
${MEMCHECK} "./${executable}" 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: test_readWriteBlob.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
executable=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`

outfile="test_${executable}.out"

rm -f $outfile
${MAGICK_ENV} ${MEMCHECK} "./${executable}" 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: readWriteBlob.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/tests || exit 1

executable=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`

outfile="test_${executable}.out"

rm -f $outfile
${MEMCHECK} "./${executable}" 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: color.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2000, 2001, 2002, 2003
//
// Test Magick::Color classes
//

#include 
#include 
#include 

using namespace std;

using namespace Magick;

int main( int /*argc*/, char **argv)
{

  // Initialize ImageMagick install location for Windows
  InitializeMagick(*argv);

  int failures=0;

  try {

    //
    // Verify conversion from named colors as well as ColorRGB constructor
    //

    {
      struct colorStr
      {
	const char* color;
	double red;
	double green;
	double blue;
      };

      // Convert ratios from rgb.txt via value/255
      struct colorStr colorMap [] =
      { 
	{ "red", 1,0,0 },
	{ "green", 0,0.5019607843137256,0 },
	{ "blue", 0,0,1 },
	{ "black", 0,0,0 },
	{ "white", 1,1,1 },
	{ "cyan", 0,1,1 },
	{ "magenta", 1,0,1 },
	{ "yellow", 1,1,0 },
	{ NULL, 0,0,0 }
      };

      for ( int i = 0; colorMap[i].color != NULL; i++ )
	{
	  {
	    Color color( colorMap[i].color );
	    ColorRGB colorMatch( colorMap[i].red,
				 colorMap[i].green,
				 colorMap[i].blue );
	    if ( color != colorMatch )
	      {
		++failures;
		cout << "Line: " << __LINE__ << " Color(\""
		     << colorMap[i].color << "\") is "
		     << string(color)
		     << " rather than "
		     << string(colorMatch)
		     << endl;
                // printf ("Green: %10.16f\n", color.green());
	      }
	  }
	}      
    }

    // Test conversion to/from X11-style color specifications
    {
      const char * colorStrings[] =
      {
	"#ABC",
	"#AABBCC",
	"#AAAABBBBCCCC",
	NULL
      };

#if MAGICKCORE_QUANTUM_DEPTH == 8
      string expectedString = "#AABBCC";
#elif MAGICKCORE_QUANTUM_DEPTH == 16
      string expectedString = "#AAAABBBBCCCC";
#elif MAGICKCORE_QUANTUM_DEPTH == 32
      string expectedString = "#AAAAAAAABBBBBBBBCCCCCCCC";
#elif MAGICKCORE_QUANTUM_DEPTH == 64
      string expectedString = "#AAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCC";
#else
# error Quantum depth not supported!
#endif

      for ( int i = 0; colorStrings[i] != NULL; ++i )
	{
	  if ( string(Color(colorStrings[i])) != expectedString )
	    {
	      ++failures;
	      cout << "Line: " << __LINE__
		   << " Conversion from " << colorStrings[i]
		   << " is "
		   << string(Color(colorStrings[i])) << " rather than "
		   << expectedString
		   << endl;
	    }
	}
    }

    // Test ColorGray
    {
#undef MagickEpsilon
#define MagickEpsilon  1.0e-12
      double resolution = 1.0/QuantumRange;
      double max_error = resolution + MagickEpsilon;

      if ( resolution < 0.0001 )
        resolution = 0.0001;

      for( double value = 0; value < 1.0 + MagickEpsilon; value += resolution )
        {
          ColorGray gray(value);
          if ( gray.shade() < value - max_error || gray.shade() > value + max_error )
            {
              ++failures;
              cout << "Line: " << __LINE__
                   << " shade is "
                   << gray.shade()
                   << " rather than nominal"
                   << value
                   << endl;
            }
        }
    }

  }
  catch( Exception &error_ )
    {
      cout << "Caught exception: " << error_.what() << endl;
      return 1;
    }
  catch( exception &error_ )
    {
      cout << "Caught exception: " << error_.what() << endl;
      return 1;
    }
  
  if ( failures )
    {
      cout << failures << " failures" << endl;
      return 1;
    }

  return 0;
}

--- NEW FILE: Makefile.am ---
#
# Makefile for Magick++ tests
#
# Copyright Bob Friesenhahn, 1999, 2000, 2002, 2004
#
AUTOMAKE_OPTIONS = 1.8 foreign nostdinc

AM_CPPFLAGS = -I$(top_builddir) -I$(top_srcdir)/Magick++/lib -I$(top_srcdir)

#
# Execute 'make check' to compile and run a test program
#
check_PROGRAMS =  \
	appendImages \
	attributes \
	averageImages \
	coalesceImages \
	coderInfo \
	color \
	colorHistogram \
	exceptions \
	montageImages \
	morphImages \
	readWriteBlob \
	readWriteImages

LDADD = ../lib/libMagick++.la

appendImages_SOURCES	= appendImages.cpp
attributes_SOURCES	= attributes.cpp
averageImages_SOURCES	= averageImages.cpp
coalesceImages_SOURCES	= coalesceImages.cpp
coderInfo_SOURCES	= coderInfo.cpp
color_SOURCES		= color.cpp
colorHistogram_SOURCES  = colorHistogram.cpp
exceptions_SOURCES	= exceptions.cpp
montageImages_SOURCES	= montageImages.cpp
morphImages_SOURCES	= morphImages.cpp
readWriteBlob_SOURCES	= readWriteBlob.cpp
readWriteImages_SOURCES = readWriteImages.cpp


if WIN32_NATIVE_BUILD
SRCDIR='$(shell @WinPathScript@ $(srcdir)/)'
else
SRCDIR="$(srcdir)/"
endif

MAGICK_ENV = "$(SHELL) $(top_builddir)/magick.sh"

# Environment parameters to be used during tests
TESTS_ENVIRONMENT = \
	MAGICK_ENV=$(MAGICK_ENV) \
	SRCDIR=$(SRCDIR)

# Tests to run
TESTS = \
	test_exceptions.sh \
	test_appendImages.sh \
	test_attributes.sh \
	test_averageImages.sh \
	test_coalesceImages.sh \
	test_colorHistogram.sh \
	test_color.sh \
	test_montageImages.sh \
	test_morphImages.sh \
	test_readWriteBlob.sh \
	test_readWriteImages.sh

# Tests which are expected to fail
XFAIL_TESTS =

# Extra files to distribute
EXTRA_DIST = \
	$(TESTS) \
	test_image.miff \
	test_image_anim.miff

CLEANFILES = colorHistogram.txt testmagick_anim_out.miff ir.out # SunWS_cache

--- NEW FILE: coalesceImages.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2000, 2003
//
// Test STL coalesceImages function
//

#include 
#include 
#include 
#include 
#include 

using namespace std;

using namespace Magick;

int main( int /*argc*/, char ** argv)
{

  // Initialize ImageMagick install location for Windows
  InitializeMagick(*argv);

  int failures=0;

  try {

    string srcdir("");
    if(getenv("SRCDIR") != 0)
      srcdir = getenv("SRCDIR");

    //
    // Test coalesceImages
    //

    list imageList;
    readImages( &imageList, srcdir + "test_image_anim.miff" );

    list coalescedList;
    coalesceImages( &coalescedList, imageList.begin(), imageList.end() );
  }

  catch( Exception &error_ )
    {
      cout << "Caught exception: " << error_.what() << endl;
      return 1;
    }
  catch( exception &error_ )
    {
      cout << "Caught exception: " << error_.what() << endl;
      return 1;
    }

  if ( failures )
    {
      cout << failures << " failures" << endl;
      return 1;
    }
  
  return 0;
}


--- NEW FILE: morphImages.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/tests || exit 1

executable=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`

outfile="test_${executable}.out"

rm -f $outfile
${MEMCHECK} "./${executable}" 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: test_attributes.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
executable=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`

outfile="test_${executable}.out"

rm -f $outfile
${MAGICK_ENV} ${MEMCHECK} "./${executable}" 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: test_image.miff ---
id=ImageMagick  version=1.0
class=DirectClass  matte=False
columns=148  rows=99  depth=8
Resolution=72x72  units=undefined

:
--- NEW FILE: montageImages.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/tests || exit 1

executable=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`

outfile="test_${executable}.out"

rm -f $outfile
${MEMCHECK} "./${executable}" 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: test_exceptions.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
executable=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`

outfile="test_${executable}.out"

rm -f $outfile
${MAGICK_ENV} ${MEMCHECK} "./${executable}" 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: test_colorHistogram.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
executable=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`

outfile="test_${executable}.out"

rm -f $outfile
${MAGICK_ENV} ${MEMCHECK} "./${executable}" 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: test_appendImages.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
executable=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`

outfile="test_${executable}.out"

rm -f $outfile
${MAGICK_ENV} ${MEMCHECK} "./${executable}" 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: test_readWriteImages.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
executable=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`

outfile="test_${executable}.out"

rm -f $outfile
${MAGICK_ENV} ${MEMCHECK} "./${executable}" 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: test_image_anim.miff ---
id=ImageMagick
class=PseudoClass  colors=2  matte=False
columns=48  rows=48  depth=8
page=48x48+0+0
iterations=0  delay=10  dispose=3
Comment={GifBuilder 0.2 by Yves Piguet}
signature=4deabaabba44141d658a8c6132752c657b16679951950e004783317c694adb68

:
--- NEW FILE: readWriteImages.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2000, 2003
//
// Test STL readImages and writeImages functions
//

#include 
#include 
#include 
#include 
#include 

using namespace std;

using namespace Magick;

int main( int /*argc*/, char ** argv)
{

  // Initialize ImageMagick install location for Windows
  InitializeMagick(*argv);

  int failures=0;

  try {

    string srcdir("");
    if(getenv("SRCDIR") != 0)
      srcdir = getenv("SRCDIR");

    //
    // Test readImages and writeImages
    //
      
    list first;
    readImages( &first, srcdir + "test_image_anim.miff" );
      
    if ( first.size() != 6 )
      {
	++failures;
	cout << "Line: " << __LINE__ 
	     << "  Read images failed, number of frames is "
	     << first.size()
	     << " rather than 6 as expected." << endl;
      }
      
    writeImages( first.begin(), first.end(), "testmagick_anim_out.miff" );
      
    list second;
    readImages( &second, "testmagick_anim_out.miff" );
      
    list::iterator firstIter = first.begin();
    list::iterator secondIter = second.begin();
    while( firstIter != first.end() && secondIter != second.end() )
      {

	if ( firstIter->scene() != secondIter->scene() )
	  {
	    ++failures;
	    cout << "Line: " << __LINE__ 
		 << "  Image scene: " << secondIter->scene()
		 << " is not equal to original "
		 << firstIter->scene()
		 << endl;
	  }

	if ( firstIter->rows() != secondIter->rows() )
	  {
	    ++failures;
	    cout << "Line: " << __LINE__ 
		 << "  Image rows " << secondIter->rows()
		 << " are not equal to original "
		 << firstIter->rows()
		 << endl;
	  }

	if ( firstIter->columns() != secondIter->columns() )
	  {
	    ++failures;
	    cout << "Line: " << __LINE__ 
		 << "  Image columns " << secondIter->columns()
		 << " are not equal to original "
		 << firstIter->rows()
		 << endl;
	  }

	firstIter++;
	secondIter++;
      }
  }

  catch( Exception &error_ )
    {
      cout << "Caught exception: " << error_.what() << endl;
      return 1;
    }
  catch( exception &error_ )
    {
      cout << "Caught exception: " << error_.what() << endl;
      return 1;
    }

  if ( failures )
    {
      cout << failures << " failures" << endl;
      return 1;
    }
  
  return 0;
}


--- NEW FILE: color.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/tests || exit 1

executable=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`

outfile="test_${executable}.out"

rm -f $outfile
${MEMCHECK} "./${executable}" 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: colorHistogram.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/tests || exit 1

executable=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`

outfile="test_${executable}.out"

rm -f $outfile
${MEMCHECK} "./${executable}" 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: readWriteBlob.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2000, 2003
//
// Test reading/writing BLOBs using Magick++
//

#include 
#include 
#include 
#include 

#if defined(MISSING_STD_IOS_BINARY)
#  define IOS_IN_BINARY ios::in
#else
#  define IOS_IN_BINARY ios::in | ios::binary
#endif

using namespace std;

using namespace Magick;

// A derived Blob class to exercise updateNoCopy()
class myBlob : public Blob
{
public:
  // Construct from open binary stream
  myBlob( ifstream &stream_ )
    : Blob()
    {
      unsigned char* blobData = new unsigned char[100000];
      char* c= reinterpret_cast(blobData);
      size_t blobLen=0;
      while( (blobLen< 100000) && stream_.get(*c) )
        {
          c++;
          blobLen++;
        }
      if ((!stream_.eof()) || (blobLen == 0))
        {
          cout << "Failed to stream into blob!" << endl;
          exit(1);
        }

      // Insert data into blob
      updateNoCopy( reinterpret_cast(blobData), blobLen,
                    Blob::NewAllocator );
    }
};


int main( int /*argc*/, char ** argv)
{

  // Initialize ImageMagick install location for Windows
  InitializeMagick(*argv);

  int failures=0;

  try
    {
      string srcdir("");
      if(getenv("SRCDIR") != 0)
        srcdir = getenv("SRCDIR");

      string testimage;
    
      //
      // Test reading BLOBs
      //
      {
        string signature("");
        {
          Image image(srcdir + "test_image.miff");
          signature = image.signature();
        }

        // Read raw data from file into BLOB
        testimage = srcdir + "test_image.miff";
        ifstream in( testimage.c_str(), ios::in | IOS_IN_BINARY );
        if( !in )
          {
            cout << "Failed to open file " << testimage << " for input!" << endl;
            exit(1);
          }
        unsigned char* blobData = new unsigned char[100000];
        char* c=reinterpret_cast(blobData);
        size_t blobLen=0;
        while( (blobLen< 100000) && in.get(*c) )
          {
            c++;
            blobLen++;
          }
        if ((!in.eof()) || (blobLen == 0))
          {
            cout << "Failed to read file " << testimage << " for input!" << endl;
            exit(1);
          }
        in.close();

        // Construct Magick++ Blob
        Blob blob(static_cast(blobData), blobLen);
        delete [] blobData;

        // If construction of image fails, an exception should be thrown
        {
          // Construct with blob data only
          Image image( blob );
          if ( image.signature() != signature )
            {
              ++failures;
              cout << "Line: " << __LINE__
                   << "  Image signature "
                   << image.signature()
                   << " != "
                   << signature << endl;
            }
        }

        {
          // Construct with image geometry and blob data
          Image image(  blob, Geometry(148,99));
          if ( image.signature() != signature )
            {
              ++failures;
              cout << "Line: " << __LINE__
                   << "  Image signature "
                   << image.signature()
                   << " != "
                   << signature << endl;
            }
        }

        {
          // Construct default image, and then read in blob data
          Image image;
          image.read( blob );
          if ( image.signature() != signature )
            {
              ++failures;
              cout << "Line: " << __LINE__
                   << "  Image signature "
                   << image.signature()
                   << " != "
                   << signature << endl;
            }
        }

        {
          // Construct default image, and then read in blob data with
          // image geometry
          Image image;
          image.read( blob, Geometry(148,99) );
          if ( image.signature() != signature )
            {
              ++failures;
              cout << "Line: " << __LINE__
                   << "  Image signature "
                   << image.signature()
                   << " != "
                   << signature << endl;
            }
        }

      }

      // Test writing BLOBs
      {
        Blob blob;
        string signature("");
        {
          Image image(srcdir + "test_image.miff");
          image.magick("MIFF");
          image.write( &blob );
          signature = image.signature();
        }
        {
          Image image(blob);
          if ( image.signature() != signature )
            {
              ++failures;
              cout << "Line: " << __LINE__
                   << "  Image signature "
                   << image.signature()
                   << " != "
                   << signature << endl;
              image.display();
            }
        }
      
      }
      // Test writing BLOBs via STL writeImages
      {
        Blob blob;

        list first;
        readImages( &first, srcdir + "test_image_anim.miff" );
        writeImages( first.begin(), first.end(), &blob, true );
      }

      // Test constructing a BLOB from a derived class
      {

        string signature("");
        {
          Image image(srcdir + "test_image.miff");
          signature = image.signature();
        }

        // Read raw data from file into BLOB
        testimage = srcdir + "test_image.miff";
        ifstream in( testimage.c_str(), ios::in | IOS_IN_BINARY );
        if( !in )
          {
            cout << "Failed to open file for input!" << endl;
            exit(1);
          }

        myBlob blob( in );
        in.close();

        Image image( blob );
        if ( image.signature() != signature )
          {
            ++failures;
            cout << "Line: " << __LINE__
                 << "  Image signature "
                 << image.signature()
                 << " != "
                 << signature << endl;
          }
      }
    }
  
  catch( Exception &error_ )
    {
      cout << "Caught exception: " << error_.what() << endl;
      return 1;
    }
  catch( exception &error_ )
    {
      cout << "Caught exception: " << error_.what() << endl;
      return 1;
    }

  if ( failures )
    {
      cout << failures << " failures" << endl;
      return 1;
    }
  
  return 0;
}



--- NEW FILE: test_morphImages.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
executable=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`

outfile="test_${executable}.out"

rm -f $outfile
${MAGICK_ENV} ${MEMCHECK} "./${executable}" 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: test_coalesceImages.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
executable=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`

outfile="test_${executable}.out"

rm -f $outfile
${MAGICK_ENV} ${MEMCHECK} "./${executable}" 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: coderInfo.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/tests || exit 1

executable=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`

outfile="test_${executable}.out"

rm -f $outfile
${MEMCHECK} "./${executable}" 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: exceptions.sh ---
#!/bin/sh
#
# Copyright 2004 Bob Friesenhahn 
#
# This file is part of Magick++, the C++ API for ImageMagick and
# ImageMagick.  Please see the file "COPYING" included with Magick++
# for usage and copying restrictions.
#

SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR; pwd`/
export SRCDIR
cd Magick++/tests || exit 1

executable=`echo $0 | sed -e 's:.*/::g;s:test_::;s:\.sh::'`

outfile="test_${executable}.out"

rm -f $outfile
${MEMCHECK} "./${executable}" 2>&1 > $outfile
status=$?
if test $status -eq 1
then
  cat $outfile
fi
rm -f $outfile
exit $status



--- NEW FILE: colorHistogram.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 2003
//
// Test STL colorHistogram function
//

#undef USE_VECTOR
#define USE_MAP

#include 
#include 
#include 
#include 
#if defined(USE_VECTOR)
#  include 
#  include 
#endif
#if defined(USE_MAP)
#  include 
#endif

using namespace std;

using namespace Magick;

int main( int /*argc*/, char ** argv)
{

  // Initialize ImageMagick install location for Windows
  InitializeMagick(*argv);

  int failures=0;

  try {

    string srcdir("");
    if(getenv("SRCDIR") != 0)
      srcdir = getenv("SRCDIR");

    // Read image
    Image image;
    image.read( srcdir + "test_image.miff" );

    // Create histogram vector
#if defined(USE_MAP)
    std::map histogram;
#elif defined(USE_VECTOR)
    std::vector > histogram;
#endif

    colorHistogram( &histogram, image );

    // Print out histogram
#if (MAGICKCORE_QUANTUM_DEPTH == 8)
    int quantum_width=3;
#elif (MAGICKCORE_QUANTUM_DEPTH == 16)
    int quantum_width=5;
#else
    int quantum_width=10;
#endif

    cout << "Histogram for file \"" << image.fileName() << "\"" << endl
         << histogram.size() << " entries:" << endl;

#if defined(USE_MAP)
    std::map::const_iterator p=histogram.begin();
#elif defined(USE_VECTOR)
    std::vector >::const_iterator p=histogram.begin();
#endif
    while (p != histogram.end())
      {
        cout << setw(10) << (int)p->second << ": ("
             << setw(quantum_width) << (int)p->first.redQuantum() << ","
             << setw(quantum_width) << (int)p->first.greenQuantum() << ","
             << setw(quantum_width) << (int)p->first.blueQuantum() << ")"
             << endl;
        p++;
      }
  }

  catch( Exception &error_ )
    {
      cout << "Caught exception: " << error_.what() << endl;
      return 1;
    }
  catch( exception &error_ )
    {
      cout << "Caught exception: " << error_.what() << endl;
      return 1;
    }

  if ( failures )
    {
      cout << failures << " failures" << endl;
      return 1;
    }
  
  return 0;
}


--- NEW FILE: coderInfo.cpp ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 2001, 2002, 2003
//
// Test Magick::CoderInfo class and Magick::coderInfoList
//

#include 
#include 
#include 
#include 

using namespace std;

using namespace Magick;

int test( CoderInfo::MatchType isReadable_,
          CoderInfo::MatchType isWritable_,
          CoderInfo::MatchType isMultiFrame_ )
{
  int result = 0;
  list coderList;
  coderInfoList( &coderList, isReadable_, isWritable_, isMultiFrame_ );
  list::iterator entry = coderList.begin();
  while( entry != coderList.end() )
    {
      // Readable
      if ( isReadable_ != CoderInfo::AnyMatch &&
           (( entry->isReadable() && isReadable_ != CoderInfo::TrueMatch ) ||
            ( !entry->isReadable() && isReadable_ != CoderInfo::FalseMatch )) )
        {
          cout << "Entry \""
               << entry->name()
               << "\" has unexpected readablity state ("
               << static_cast(entry->isReadable())
               << ")"
               << endl;
          ++result;
        }

      // Writable
      if ( isWritable_ != CoderInfo::AnyMatch &&
           (( entry->isWritable() && isWritable_ != CoderInfo::TrueMatch ) ||
            ( !entry->isWritable() && isWritable_ != CoderInfo::FalseMatch )) )
        {
          cout << "Entry \""
               << entry->name()
               << "\" has unexpected writablity state ("
               << static_cast(entry->isWritable())
               << ")"
               << endl;
          ++result;
        }

      // MultiFrame
      if ( isMultiFrame_ != CoderInfo::AnyMatch &&
           (( entry->isMultiFrame() && isMultiFrame_ != CoderInfo::TrueMatch ) ||
            ( !entry->isMultiFrame() && isMultiFrame_ != CoderInfo::FalseMatch )) )
        {
          cout << "Entry \""
               << entry->name()
               << "\" has unexpected multiframe state ("
               << static_cast(entry->isMultiFrame())
               << ")"
               << endl;
          ++result;
        }

      entry++;
    }

  return result;
}

int main( int /*argc*/, char **argv)
{

  // Initialize ImageMagick install location for Windows
  InitializeMagick(*argv);

  int failures=0;

  try {

    CoderInfo coderInfo("GIF");
    if ( coderInfo.name() != string("GIF") )
      {
        cout << "Unexpected coder name \""
             << coderInfo.name()
             << "\""
             << endl;
        ++failures;
      }

    if( coderInfo.description() != string("CompuServe graphics interchange format") )
      {
        cout << "Unexpected coder description \""
             << coderInfo.description()
             << "\""
             << endl;
        ++failures;
      }

    failures += test(CoderInfo::AnyMatch,CoderInfo::AnyMatch,CoderInfo::AnyMatch);
    failures += test(CoderInfo::FalseMatch,CoderInfo::FalseMatch,CoderInfo::FalseMatch);

    failures += test(CoderInfo::TrueMatch,CoderInfo::AnyMatch,CoderInfo::AnyMatch);
    failures += test(CoderInfo::FalseMatch,CoderInfo::AnyMatch,CoderInfo::AnyMatch);

    failures += test(CoderInfo::AnyMatch,CoderInfo::TrueMatch,CoderInfo::AnyMatch);
    failures += test(CoderInfo::AnyMatch,CoderInfo::FalseMatch,CoderInfo::AnyMatch);

    failures += test(CoderInfo::AnyMatch,CoderInfo::AnyMatch,CoderInfo::TrueMatch);
    failures += test(CoderInfo::AnyMatch,CoderInfo::AnyMatch,CoderInfo::FalseMatch);
  }
  catch( Exception &error_ )
    {
      cout << "Caught exception: " << error_.what() << endl;
      return 1;
    }
  catch( exception &error_ )
    {
      cout << "Caught exception: " << error_.what() << endl;
      return 1;
    }
  
  if ( failures )
    {
      cout << failures << " failures" << endl;
      return 1;
    }

  return 0;
}


From ebala at helixcommunity.org  Thu Sep 10 11:35:22 2009
From: ebala at helixcommunity.org (ebala@helixcommunity.org)
Date: Thu Sep 10 20:38:18 2009
Subject: [Common-cvs] import/imagemagick/xlib/X11 cursorfont.h, 1.1,
	1.2 keysym.h, 1.1, 1.2 keysymdef.h, 1.1, 1.2 X.h, 1.1,
	1.2 Xatom.h, 1.1, 1.2 Xfuncproto.h, 1.1, 1.2 Xlib.h, 1.1,
	1.2 Xlocale.h, 1.1, 1.2 Xmd.h, 1.1, 1.2 Xos.h, 1.1,
	1.2 Xosdefs.h, 1.1, 1.2 Xproto.h, 1.1, 1.2 Xprotostr.h, 1.1,
	1.2 Xresource.h, 1.1, 1.2 Xutil.h, 1.1, 1.2 Xw32defs.h, 1.1,
	1.2 XWDFile.h, 1.1, 1.2
Message-ID: 

Update of /cvsroot/common/import/imagemagick/xlib/X11
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv27835

Added Files:
	cursorfont.h keysym.h keysymdef.h X.h Xatom.h Xfuncproto.h 
	Xlib.h Xlocale.h Xmd.h Xos.h Xosdefs.h Xproto.h Xprotostr.h 
	Xresource.h Xutil.h Xw32defs.h XWDFile.h 
Log Message:
Import of Imagemagick

--- NEW FILE: XWDFile.h ---
/* $XConsortium: XWDFile.h,v 1.17 94/04/17 20:10:49 dpw Exp $ */
/*

Copyright (c) 1985, 1986  X Consortium

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Except as contained in this notice, the name of the X Consortium shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from the X Consortium.

*/

/*
 * XWDFile.h	MIT Project Athena, X Window system window raster
 *		image dumper, dump file format header file.
 *
 *  Author:	Tony Della Fera, DEC
 *		27-Jun-85
 *
 * Modifier:    William F. Wyatt, SAO
 *              18-Nov-86  - version 6 for saving/restoring color maps
 */

#if !defined(macintosh)
#include 
#else
#include 
#endif

#define XWD_FILE_VERSION 7
#ifdef WORD64
#define sz_XWDheader 104
#else
#define sz_XWDheader 100
#endif

#ifdef PRE_R6_ICCCM
#define sz_XWDColor sizeof(XColor)
#else
#define sz_XWDColor 12
#endif

typedef CARD32 xwdval;          /* for old broken programs */

/* Values in the file are most significant byte first. */

typedef struct _xwd_file_header {
	/* header_size = SIZEOF(XWDheader) + length of null-terminated
	 * window name. */
	CARD32 header_size B32;		

	CARD32 file_version B32;	/* = XWD_FILE_VERSION above */
	CARD32 pixmap_format B32;	/* ZPixmap or XYPixmap */
	CARD32 pixmap_depth B32;	/* Pixmap depth */
	CARD32 pixmap_width B32;	/* Pixmap width */
	CARD32 pixmap_height B32;	/* Pixmap height */
	CARD32 xoffset B32;		/* Bitmap x offset, normally 0 */
	CARD32 byte_order B32;		/* of image data: MSBFirst, LSBFirst */

	/* bitmap_unit applies to bitmaps (depth 1 format XY) only.
	 * It is the number of bits that each scanline is padded to. */
	CARD32 bitmap_unit B32;		

	CARD32 bitmap_bit_order B32;	/* bitmaps only: MSBFirst, LSBFirst */

	/* bitmap_pad applies to pixmaps (non-bitmaps) only.
	 * It is the number of bits that each scanline is padded to. */
	CARD32 bitmap_pad B32;		

	CARD32 bits_per_pixel B32;	/* Bits per pixel */

	/* bytes_per_line is pixmap_width padded to bitmap_unit (bitmaps)
	 * or bitmap_pad (pixmaps).  It is the delta (in bytes) to get
	 * to the same x position on an adjacent row. */
	CARD32 bytes_per_line B32;
	CARD32 visual_class B32;	/* Class of colormap */
	CARD32 red_mask B32;		/* Z red mask */
	CARD32 green_mask B32;		/* Z green mask */
	CARD32 blue_mask B32;		/* Z blue mask */
	CARD32 bits_per_rgb B32;	/* Log2 of distinct color values */
	CARD32 colormap_entries B32;	/* Number of entries in colormap; not used? */
	CARD32 ncolors B32;		/* Number of XWDColor structures */
	CARD32 window_width B32;	/* Window width */
	CARD32 window_height B32;	/* Window height */
	CARD32 window_x B32;		/* Window upper left X coordinate */
	CARD32 window_y B32;		/* Window upper left Y coordinate */
	CARD32 window_bdrwidth B32;	/* Window border width */
#ifdef WORD64
	CARD32 header_end B32;          /* Pad to fill out word */
#endif
} XWDFileHeader;

/* Null-terminated window name follows the above structure. */

/* Next comes XWDColor structures, at offset XWDFileHeader.header_size in
 * the file.  XWDFileHeader.ncolors tells how many XWDColor structures
 * there are.
 */

#ifdef PRE_R6_ICCCM
typedef XColor XWDColor;
#else
typedef struct {
        CARD32	pixel B32;
        CARD16	red B16;
	CARD16	green B16;
	CARD16	blue B16;
        CARD8	flags;
        CARD8	pad;
} XWDColor;
#endif

/* Last comes the image data in the format described by XWDFileHeader. */

--- NEW FILE: Xmd.h ---
/***********************************************************

Copyright (c) 1987  X Consortium

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Except as contained in this notice, the name of the X Consortium shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from the X Consortium.


Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.

                        All Rights Reserved

Permission to use, copy, modify, and distribute this software and its 
documentation for any purpose and without fee is hereby granted, 
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in 
supporting documentation, and that the name of Digital not be
used in advertising or publicity pertaining to distribution of the
software without specific, written prior permission.  

DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.

******************************************************************/
#ifndef XMD_H
#define XMD_H 1
/* $XConsortium: Xmd.h,v 1.47 94/04/17 20:10:50 rws Exp $ */
/*
 *  Xmd.h: MACHINE DEPENDENT DECLARATIONS.
 */

/*
 * Special per-machine configuration flags.
 */
#ifdef CRAY
#define WORD64				/* 64-bit architecture */
#endif
#ifdef __alpha
#define LONG64				/* 32/64-bit architecture */
#endif

/*
 * Stuff to handle large architecture machines; the constants were generated
 * on a 32-bit machine and must coorespond to the protocol.
 */
#ifdef WORD64
#define MUSTCOPY
#endif /* WORD64 */


/*
 * Definition of macro used to set constants for size of network structures;
 * machines with preprocessors that can't handle all of the sz_ symbols
 * can define this macro to be sizeof(x) if and only if their compiler doesn't
 * pad out structures (esp. the xTextElt structure which contains only two 
 * one-byte fields).  Network structures should always define sz_symbols.
 *
 * The sz_ prefix is used instead of something more descriptive so that the
 * symbols are no more than 32 characters long (which causes problems for some
 * compilers and preprocessors).
 *
 * The extra indirection in the __STDC__ case is to get macro arguments to
 * expand correctly before the concatenation, rather than afterward.
 */
#if ((__STDC__ || defined(__cplusplus) || defined(c_plusplus)) && !defined(UNIXCPP)) || defined(ANSICPP)
#define _SIZEOF(x) sz_##x
#define SIZEOF(x) _SIZEOF(x)
#else
#define SIZEOF(x) sz_/**/x
#endif /* if ANSI C compiler else not */

/*
 * Bitfield suffixes for the protocol structure elements, if you
 * need them.  Note that bitfields are not guarranteed to be signed
 * (or even unsigned) according to ANSI C.
 */
#ifdef WORD64
typedef long INT64;
typedef unsigned long CARD64;
#define B32 :32
#define B16 :16
#ifdef UNSIGNEDBITFIELDS
typedef unsigned int INT32;
typedef unsigned int INT16;
#else
#if __STDC__
typedef signed int INT32;
typedef signed int INT16;
#else
typedef int INT32;
typedef int INT16;
#endif
#endif
#else
#define B32
#define B16
#ifdef LONG64
typedef long INT64;
typedef int INT32;
#else
typedef long INT32;
#endif
typedef short INT16;
#endif

#if __STDC__ || defined(sgi) || defined(AIXV3)
typedef signed char    INT8;
#else
typedef char           INT8;
#endif

#ifdef LONG64
typedef unsigned long CARD64;
typedef unsigned int CARD32;
#else
typedef unsigned long CARD32;
#endif
typedef unsigned short CARD16;
typedef unsigned char  CARD8;

typedef CARD32		BITS32;
typedef CARD16		BITS16;
typedef CARD8		BYTE;

/* typedef CARD8           BOOL; */


/*
 * definitions for sign-extending bitfields on 64-bit architectures
 */
#if defined(WORD64) && defined(UNSIGNEDBITFIELDS)
#define cvtINT8toInt(val)   (((val) & 0x00000080) ? ((val) | 0xffffffffffffff00) : (val))
#define cvtINT16toInt(val)  (((val) & 0x00008000) ? ((val) | 0xffffffffffff0000) : (val))
#define cvtINT32toInt(val)  (((val) & 0x80000000) ? ((val) | 0xffffffff00000000) : (val))
#define cvtINT8toShort(val)  cvtINT8toInt(val)
#define cvtINT16toShort(val) cvtINT16toInt(val)
#define cvtINT32toShort(val) cvtINT32toInt(val)
#define cvtINT8toLong(val)  cvtINT8toInt(val)
#define cvtINT16toLong(val) cvtINT16toInt(val)
#define cvtINT32toLong(val) cvtINT32toInt(val)
#else
#define cvtINT8toInt(val) (val)
#define cvtINT16toInt(val) (val)
#define cvtINT32toInt(val) (val)
#define cvtINT8toShort(val) (val)
#define cvtINT16toShort(val) (val)
#define cvtINT32toShort(val) (val)
#define cvtINT8toLong(val) (val)
#define cvtINT16toLong(val) (val)
#define cvtINT32toLong(val) (val)
#endif /* WORD64 and UNSIGNEDBITFIELDS */



#ifdef MUSTCOPY
/*
 * This macro must not cast or else pointers will get aligned and be wrong
 */
#define NEXTPTR(p,t)  (((char *) p) + SIZEOF(t))
#else /* else not MUSTCOPY, this is used for 32-bit machines */
/*
 * this version should leave result of type (t *), but that should only be 
 * used when not in MUSTCOPY
 */  
#define NEXTPTR(p,t) (((t *)(p)) + 1)
#endif /* MUSTCOPY - used machines whose C structs don't line up with proto */

#endif /* XMD_H */

--- NEW FILE: Xatom.h ---
#ifndef XATOM_H
#define XATOM_H 1

/* THIS IS A GENERATED FILE
 *
 * Do not change!  Changing this file implies a protocol change!
 */

#define XA_PRIMARY ((Atom) 1)
#define XA_SECONDARY ((Atom) 2)
#define XA_ARC ((Atom) 3)
#define XA_ATOM ((Atom) 4)
#define XA_BITMAP ((Atom) 5)
#define XA_CARDINAL ((Atom) 6)
#define XA_COLORMAP ((Atom) 7)
#define XA_CURSOR ((Atom) 8)
#define XA_CUT_BUFFER0 ((Atom) 9)
#define XA_CUT_BUFFER1 ((Atom) 10)
#define XA_CUT_BUFFER2 ((Atom) 11)
#define XA_CUT_BUFFER3 ((Atom) 12)
#define XA_CUT_BUFFER4 ((Atom) 13)
#define XA_CUT_BUFFER5 ((Atom) 14)
#define XA_CUT_BUFFER6 ((Atom) 15)
#define XA_CUT_BUFFER7 ((Atom) 16)
#define XA_DRAWABLE ((Atom) 17)
#define XA_FONT ((Atom) 18)
#define XA_INTEGER ((Atom) 19)
#define XA_PIXMAP ((Atom) 20)
#define XA_POINT ((Atom) 21)
#define XA_RECTANGLE ((Atom) 22)
#define XA_RESOURCE_MANAGER ((Atom) 23)
#define XA_RGB_COLOR_MAP ((Atom) 24)
#define XA_RGB_BEST_MAP ((Atom) 25)
#define XA_RGB_BLUE_MAP ((Atom) 26)
#define XA_RGB_DEFAULT_MAP ((Atom) 27)
#define XA_RGB_GRAY_MAP ((Atom) 28)
#define XA_RGB_GREEN_MAP ((Atom) 29)
#define XA_RGB_RED_MAP ((Atom) 30)
#define XA_STRING ((Atom) 31)
#define XA_VISUALID ((Atom) 32)
#define XA_WINDOW ((Atom) 33)
#define XA_WM_COMMAND ((Atom) 34)
#define XA_WM_HINTS ((Atom) 35)
#define XA_WM_CLIENT_MACHINE ((Atom) 36)
#define XA_WM_ICON_NAME ((Atom) 37)
#define XA_WM_ICON_SIZE ((Atom) 38)
#define XA_WM_NAME ((Atom) 39)
#define XA_WM_NORMAL_HINTS ((Atom) 40)
#define XA_WM_SIZE_HINTS ((Atom) 41)
#define XA_WM_ZOOM_HINTS ((Atom) 42)
#define XA_MIN_SPACE ((Atom) 43)
#define XA_NORM_SPACE ((Atom) 44)
#define XA_MAX_SPACE ((Atom) 45)
#define XA_END_SPACE ((Atom) 46)
#define XA_SUPERSCRIPT_X ((Atom) 47)
#define XA_SUPERSCRIPT_Y ((Atom) 48)
#define XA_SUBSCRIPT_X ((Atom) 49)
#define XA_SUBSCRIPT_Y ((Atom) 50)
#define XA_UNDERLINE_POSITION ((Atom) 51)
#define XA_UNDERLINE_THICKNESS ((Atom) 52)
#define XA_STRIKEOUT_ASCENT ((Atom) 53)
#define XA_STRIKEOUT_DESCENT ((Atom) 54)
#define XA_ITALIC_ANGLE ((Atom) 55)
#define XA_X_HEIGHT ((Atom) 56)
#define XA_QUAD_WIDTH ((Atom) 57)
#define XA_WEIGHT ((Atom) 58)
#define XA_POINT_SIZE ((Atom) 59)
#define XA_RESOLUTION ((Atom) 60)
#define XA_COPYRIGHT ((Atom) 61)
#define XA_NOTICE ((Atom) 62)
#define XA_FONT_NAME ((Atom) 63)
#define XA_FAMILY_NAME ((Atom) 64)
#define XA_FULL_NAME ((Atom) 65)
#define XA_CAP_HEIGHT ((Atom) 66)
#define XA_WM_CLASS ((Atom) 67)
#define XA_WM_TRANSIENT_FOR ((Atom) 68)

#define XA_LAST_PREDEFINED ((Atom) 68)
#endif /* XATOM_H */

--- NEW FILE: cursorfont.h ---
/* $XConsortium: cursorfont.h,v 1.4 94/04/17 20:22:00 rws Exp $ */
/*

Copyright (c) 1987  X Consortium

Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:

The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.

Except as contained in this notice, the name of the X Consortium shall
not be used in advertising or otherwise to promote the sale, use or
other dealings in this Software without prior written authorization
from the X Consortium.

*/

#define XC_num_glyphs 154
#define XC_X_cursor 0
#define XC_arrow 2
#define XC_based_arrow_down 4
#define XC_based_arrow_up 6
#define XC_boat 8
#define XC_bogosity 10
#define XC_bottom_left_corner 12
#define XC_bottom_right_corner 14
#define XC_bottom_side 16
#define XC_bottom_tee 18
#define XC_box_spiral 20
#define XC_center_ptr 22
#define XC_circle 24
#define XC_clock 26
#define XC_coffee_mug 28
#define XC_cross 30
#define XC_cross_reverse 32
#define XC_crosshair 34
#define XC_diamond_cross 36
#define XC_dot 38
#define XC_dotbox 40
#define XC_double_arrow 42
#define XC_draft_large 44
#define XC_draft_small 46
#define XC_draped_box 48
#define XC_exchange 50
#define XC_fleur 52
#define XC_gobbler 54
#define XC_gumby 56
#define XC_hand1 58
#define XC_hand2 60
#define XC_heart 62
#define XC_icon 64
#define XC_iron_cross 66
#define XC_left_ptr 68
#define XC_left_side 70
#define XC_left_tee 72
#define XC_leftbutton 74
#define XC_ll_angle 76
#define XC_lr_angle 78
#define XC_man 80
#define XC_middlebutton 82
#define XC_mouse 84
#define XC_pencil 86
#define XC_pirate 88
#define XC_plus 90
#define XC_question_arrow 92
#define XC_right_ptr 94
#define XC_right_side 96
#define XC_right_tee 98
#define XC_rightbutton 100
#define XC_rtl_logo 102
#define XC_sailboat 104
#define XC_sb_down_arrow 106
#define XC_sb_h_double_arrow 108
#define XC_sb_left_arrow 110
#define XC_sb_right_arrow 112
#define XC_sb_up_arrow 114
#define XC_sb_v_double_arrow 116
#define XC_shuttle 118
#define XC_sizing 120
#define XC_spider 122
#define XC_spraycan 124
#define XC_star 126
#define XC_target 128
#define XC_tcross 130
#define XC_top_left_arrow 132
#define XC_top_left_corner 134
#define XC_top_right_corner 136
#define XC_top_side 138
#define XC_top_tee 140
#define XC_trek 142
#define XC_ul_angle 144
#define XC_umbrella 146
#define XC_ur_angle 148
#define XC_watch 150
#define XC_xterm 152

--- NEW FILE: Xlocale.h ---
/* $XConsortium: Xlocale.h,v 1.10 94/04/17 20:21:51 rws Exp $ */
/*

Copyright (c) 1991  X Consortium

Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:

The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.

Except as contained in this notice, the name of the X Consortium shall
not be used in advertising or otherwise to promote the sale, use or
other dealings in this Software without prior written authorization
from the X Consortium.

*/

#ifndef _XLOCALE_H_
#define _XLOCALE_H_

#include 
#include 

#ifndef X_LOCALE
#ifdef X_NOT_STDC_ENV
#define X_LOCALE
#endif
#endif

#ifndef X_LOCALE
#include 
#else

#define LC_ALL      0
#define LC_COLLATE  1
#define LC_CTYPE    2
#define LC_MONETARY 3
#define LC_NUMERIC  4
#define LC_TIME     5

_XFUNCPROTOBEGIN
extern char *_Xsetlocale(
#if NeedFunctionPrototypes
    int /* category */,
    _Xconst char* /* name */
#endif
);
_XFUNCPROTOEND

#define setlocale _Xsetlocale

#ifndef NULL
#define NULL 0
#endif

#endif /* X_LOCALE */

#endif /* _XLOCALE_H_ */

--- NEW FILE: Xosdefs.h ---
/*
 * O/S-dependent (mis)feature macro definitions
 *
 * $XConsortium: Xosdefs.h,v 1.14 94/11/30 20:48:05 kaleb Exp $
 *
Copyright (c) 1991  X Consortium

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Except as contained in this notice, the name of the X Consortium shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from the X Consortium.
 */

#ifndef _XOSDEFS_H_
#define _XOSDEFS_H_

/*
 * X_NOT_STDC_ENV means does not have ANSI C header files.  Lack of this
 * symbol does NOT mean that the system has stdarg.h.
 *
 * X_NOT_POSIX means does not have POSIX header files.  Lack of this
 * symbol does NOT mean that the POSIX environment is the default.
 * You may still have to define _POSIX_SOURCE to get it.
 */

#ifdef NOSTDHDRS
#define X_NOT_POSIX
#define X_NOT_STDC_ENV
#endif

#ifdef sony
#if !defined(SYSTYPE_SYSV) && !defined(_SYSTYPE_SYSV)
#define X_NOT_POSIX
#endif
#endif

#ifdef UTEK
#define X_NOT_POSIX
#define X_NOT_STDC_ENV
#endif

#ifdef vax
#ifndef ultrix			/* assume vanilla BSD */
#define X_NOT_POSIX
#define X_NOT_STDC_ENV
#endif
#endif

#ifdef luna
#define X_NOT_POSIX
#define X_NOT_STDC_ENV
#endif

#ifdef Mips
#define X_NOT_POSIX
#define X_NOT_STDC_ENV
#endif
  
#ifdef USL
#ifdef SYSV /* (release 3.2) */
#define X_NOT_POSIX
#define X_NOT_STDC_ENV
#endif
#endif

#ifdef i386
#ifdef SYSV
#define X_NOT_POSIX
#define X_NOT_STDC_ENV
#endif
#endif

#ifdef MOTOROLA
#ifdef SYSV
#define X_NOT_STDC_ENV
#endif
#endif

#ifdef sun
#ifdef SVR4
/* define this to whatever it needs to be */
#define X_POSIX_C_SOURCE 199300L
#endif
#endif

#ifdef WIN32
#ifndef _POSIX_
#define X_NOT_POSIX
#endif
#endif

#if defined(nec_ews_svr2) || defined(SX) || defined(PC_UX)
#define X_NOT_POSIX
#define X_NOT_STDC_ENV
#endif

#endif /* _XOSDEFS_H_ */

--- NEW FILE: Xfuncproto.h ---
/* $XConsortium: Xfuncproto.h,v 1.8 94/04/17 20:10:49 rws Exp $ */
/* 
 * 
Copyright (c) 1989, 1991  X Consortium

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Except as contained in this notice, the name of the X Consortium shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from the X Consortium.
 *
 */

/* Definitions to make function prototypes manageable */

#ifndef _XFUNCPROTO_H_
#define _XFUNCPROTO_H_

#ifndef NeedFunctionPrototypes
#if defined(FUNCPROTO) || __STDC__ || defined(__cplusplus) || defined(c_plusplus)
#define NeedFunctionPrototypes 1
#else
#define NeedFunctionPrototypes 0
#endif
#endif /* NeedFunctionPrototypes */

#ifndef NeedVarargsPrototypes
#if __STDC__ || defined(__cplusplus) || defined(c_plusplus) || (FUNCPROTO&2)
#define NeedVarargsPrototypes 1
#else
#define NeedVarargsPrototypes 0
#endif
#endif /* NeedVarargsPrototypes */

#if NeedFunctionPrototypes

#ifndef NeedNestedPrototypes
#if __STDC__ || defined(__cplusplus) || defined(c_plusplus) || (FUNCPROTO&8)
#define NeedNestedPrototypes 1
#else
#define NeedNestedPrototypes 0
#endif
#endif /* NeedNestedPrototypes */

#ifndef _Xconst
#if __STDC__ || defined(__cplusplus) || defined(c_plusplus) || (FUNCPROTO&4)
#define _Xconst const
#else
#define _Xconst
#endif
#endif /* _Xconst */

#ifndef NeedWidePrototypes
#ifdef NARROWPROTO
#define NeedWidePrototypes 0
#else
#define NeedWidePrototypes 1		/* default to make interropt. easier */
#endif
#endif /* NeedWidePrototypes */

#endif /* NeedFunctionPrototypes */

#ifndef _XFUNCPROTOBEGIN
#ifdef __cplusplus			/* for C++ V2.0 */
#define _XFUNCPROTOBEGIN extern "C" {	/* do not leave open across includes */
#define _XFUNCPROTOEND }
#else
#define _XFUNCPROTOBEGIN
#define _XFUNCPROTOEND
#endif
#endif /* _XFUNCPROTOBEGIN */

#endif /* _XFUNCPROTO_H_ */

--- NEW FILE: keysym.h ---
/* $XConsortium: keysym.h,v 1.15 94/04/17 20:10:55 rws Exp $ */

/***********************************************************

Copyright (c) 1987  X Consortium

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Except as contained in this notice, the name of the X Consortium shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from the X Consortium.


Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.

                        All Rights Reserved

Permission to use, copy, modify, and distribute this software and its 
documentation for any purpose and without fee is hereby granted, 
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in 
supporting documentation, and that the name of Digital not be
used in advertising or publicity pertaining to distribution of the
software without specific, written prior permission.  

DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.

******************************************************************/

/* default keysyms */
#define XK_MISCELLANY
#define XK_XKB_KEYS
#define XK_LATIN1
#define XK_LATIN2
#define XK_LATIN3
#define XK_LATIN4
#define XK_GREEK

#ifdef __MWERKS__
#include 
#else
#include 
#endif

--- NEW FILE: Xw32defs.h ---



--- NEW FILE: keysymdef.h ---
/* $XConsortium: keysymdef.h,v 1.21 94/08/28 16:17:06 rws Exp $ */

/***********************************************************
Copyright (c) 1987, 1994  X Consortium

Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:

The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
[...1513 lines suppressed...]
#define XK_Hangul_SunkyeongeumMieum			0xef0
#define XK_Hangul_SunkyeongeumPieub			0xef1
#define XK_Hangul_PanSios				0xef2
#define XK_Hangul_KkogjiDalrinIeung			0xef3
#define XK_Hangul_SunkyeongeumPhieuf			0xef4
#define XK_Hangul_YeorinHieuh				0xef5

/* Ancient Hangul Vowel Characters */
#define XK_Hangul_AraeA					0xef6
#define XK_Hangul_AraeAE				0xef7

/* Ancient Hangul syllable-final (JongSeong) Characters */
#define XK_Hangul_J_PanSios				0xef8
#define XK_Hangul_J_KkogjiDalrinIeung			0xef9
#define XK_Hangul_J_YeorinHieuh				0xefa

/* Korean currency symbol */
#define XK_Korean_Won					0xeff

#endif /* XK_KOREAN */

--- NEW FILE: Xprotostr.h ---
/* $XConsortium: Xprotostr.h,v 1.5 94/04/17 20:10:53 rws Exp $ */
#ifndef XPROTOSTRUCTS_H
#define XPROTOSTRUCTS_H

/***********************************************************

Copyright (c) 1987  X Consortium

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Except as contained in this notice, the name of the X Consortium shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from the X Consortium.


Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.

                        All Rights Reserved

Permission to use, copy, modify, and distribute this software and its 
documentation for any purpose and without fee is hereby granted, 
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in 
supporting documentation, and that the name of Digital not be
used in advertising or publicity pertaining to distribution of the
software without specific, written prior permission.  

DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.

******************************************************************/
#ifdef __MWERKS__
#include 
#else
#include 
#endif

/* Used by PolySegment */

typedef struct _xSegment {
    INT16 x1 B16, y1 B16, x2 B16, y2 B16;
} xSegment;

/* POINT */

typedef struct _xPoint {
	INT16		x B16, y B16;
} xPoint;

typedef struct _xRectangle {
    INT16 x B16, y B16;
    CARD16  width B16, height B16;
} xRectangle;

/*  ARC  */

typedef struct _xArc {
    INT16 x B16, y B16;
    CARD16   width B16, height B16;
    INT16   angle1 B16, angle2 B16;
} xArc;

#endif /* XPROTOSTRUCTS_H */

--- NEW FILE: Xproto.h ---
/*
 *	$XConsortium: Xproto.h,v 1.89 94/04/17 20:10:52 rws Exp $
 */

/* Definitions for the X window system used by server and c bindings */

/*
 * This packet-construction scheme makes the following assumptions:
 *
 * 1. The compiler is able
 * to generate code which addresses one- and two-byte quantities.
 * In the worst case, this would be done with bit-fields.  If bit-fields
 * are used it may be necessary to reorder the request fields in this file,
 * depending on the order in which the machine assigns bit fields to
 * machine words.  There may also be a problem with sign extension,
 * as K+R specify that bitfields are always unsigned.
 *
 * 2. 2- and 4-byte fields in packet structures must be ordered by hand
 * such that they are naturally-aligned, so that no compiler will ever
[...2116 lines suppressed...]
#define X_GetPointerMapping            117
#define X_SetModifierMapping	       118
#define X_GetModifierMapping	       119
#define X_NoOperation                  127

/* restore these definitions back to the typedefs in X.h */
#undef Window
#undef Drawable
#undef Font
#undef Pixmap
/*#undef Cursor*/
#undef Colormap
#undef GContext
#undef Atom
#undef VisualID
#undef Time
#undef KeyCode
#undef KeySym

#endif /* XPROTO_H */

--- NEW FILE: Xutil.h ---
/* $XConsortium: Xutil.h,v 11.78 94/04/17 20:21:56 rws Exp $ */

/***********************************************************

Copyright (c) 1987  X Consortium

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Except as contained in this notice, the name of the X Consortium shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from the X Consortium.


Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.

                        All Rights Reserved

Permission to use, copy, modify, and distribute this software and its 
documentation for any purpose and without fee is hereby granted, 
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in 
supporting documentation, and that the name of Digital not be
used in advertising or publicity pertaining to distribution of the
software without specific, written prior permission.  

DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.

******************************************************************/

#ifndef _XUTIL_H_
#define _XUTIL_H_

#ifdef __MWERKS__
#   define Region XRegion
#endif


/* You must include  before including this file */

/* 
 * Bitmask returned by XParseGeometry().  Each bit tells if the corresponding
 * value (x, y, width, height) was found in the parsed string.
 */
#define NoValue		0x0000
#define XValue  	0x0001
#define YValue		0x0002
#define WidthValue  	0x0004
#define HeightValue  	0x0008
#define AllValues 	0x000F
#define XNegative 	0x0010
#define YNegative 	0x0020

/*
 * new version containing base_width, base_height, and win_gravity fields;
 * used with WM_NORMAL_HINTS.
 */
typedef struct {
    	long flags;	/* marks which fields in this structure are defined */
	int x, y;		/* obsolete for new window mgrs, but clients */
	int width, height;	/* should set so old wm's don't mess up */
	int min_width, min_height;
	int max_width, max_height;
    	int width_inc, height_inc;
	struct {
		int x;	/* numerator */
		int y;	/* denominator */
	} min_aspect, max_aspect;
	int base_width, base_height;		/* added by ICCCM version 1 */
	int win_gravity;			/* added by ICCCM version 1 */
} XSizeHints;

/*
 * The next block of definitions are for window manager properties that
 * clients and applications use for communication.
 */

/* flags argument in size hints */
#define USPosition	(1L << 0) /* user specified x, y */
#define USSize		(1L << 1) /* user specified width, height */

#define PPosition	(1L << 2) /* program specified position */
#define PSize		(1L << 3) /* program specified size */
#define PMinSize	(1L << 4) /* program specified minimum size */
#define PMaxSize	(1L << 5) /* program specified maximum size */
#define PResizeInc	(1L << 6) /* program specified resize increments */
#define PAspect		(1L << 7) /* program specified min and max aspect ratios */
#define PBaseSize	(1L << 8) /* program specified base for incrementing */
#define PWinGravity	(1L << 9) /* program specified window gravity */

/* obsolete */
#define PAllHints (PPosition|PSize|PMinSize|PMaxSize|PResizeInc|PAspect)



typedef struct {
	long flags;	/* marks which fields in this structure are defined */
	Bool input;	/* does this application rely on the window manager to
			get keyboard input? */
	int initial_state;	/* see below */
	Pixmap icon_pixmap;	/* pixmap to be used as icon */
	Window icon_window; 	/* window to be used as icon */
	int icon_x, icon_y; 	/* initial position of icon */
	Pixmap icon_mask;	/* icon mask bitmap */
	XID window_group;	/* id of related window group */
	/* this structure may be extended in the future */
} XWMHints;

/* definition for flags of XWMHints */

#define InputHint 		(1L << 0)
#define StateHint 		(1L << 1)
#define IconPixmapHint		(1L << 2)
#define IconWindowHint		(1L << 3)
#define IconPositionHint 	(1L << 4)
#define IconMaskHint		(1L << 5)
#define WindowGroupHint		(1L << 6)
#define AllHints (InputHint|StateHint|IconPixmapHint|IconWindowHint| \
IconPositionHint|IconMaskHint|WindowGroupHint)
#define XUrgencyHint		(1L << 8)

/* definitions for initial window state */
#define WithdrawnState 0	/* for windows that are not mapped */
#define NormalState 1	/* most applications want to start this way */
#define IconicState 3	/* application wants to start as an icon */

/*
 * Obsolete states no longer defined by ICCCM
 */
#define DontCareState 0	/* don't know or care */
#define ZoomState 2	/* application wants to start zoomed */
#define InactiveState 4	/* application believes it is seldom used; */
			/* some wm's may put it on inactive menu */


/*
 * new structure for manipulating TEXT properties; used with WM_NAME, 
 * WM_ICON_NAME, WM_CLIENT_MACHINE, and WM_COMMAND.
 */
typedef struct {
    unsigned char *value;		/* same as Property routines */
    Atom encoding;			/* prop type */
    int format;				/* prop data format: 8, 16, or 32 */
    unsigned long nitems;		/* number of data items in value */
} XTextProperty;

#define XNoMemory -1
#define XLocaleNotSupported -2
#define XConverterNotFound -3

typedef enum {
    XStringStyle,		/* STRING */
    XCompoundTextStyle,		/* COMPOUND_TEXT */
    XTextStyle,			/* text in owner's encoding (current locale)*/
    XStdICCTextStyle		/* STRING, else COMPOUND_TEXT */
} XICCEncodingStyle;

typedef struct {
	int min_width, min_height;
	int max_width, max_height;
	int width_inc, height_inc;
} XIconSize;

typedef struct {
	char *res_name;
	char *res_class;
} XClassHint;

/*
 * These macros are used to give some sugar to the image routines so that
 * naive people are more comfortable with them.
 */
#define XDestroyImage(ximage) \
	((*((ximage)->f.destroy_image))((ximage)))
#define XGetPixel(ximage, x, y) \
	((*((ximage)->f.get_pixel))((ximage), (x), (y)))
#define XPutPixel(ximage, x, y, pixel) \
	((*((ximage)->f.put_pixel))((ximage), (x), (y), (pixel)))
#define XSubImage(ximage, x, y, width, height)  \
	((*((ximage)->f.sub_image))((ximage), (x), (y), (width), (height)))
#define XAddPixel(ximage, value) \
	((*((ximage)->f.add_pixel))((ximage), (value)))

/*
 * Compose sequence status structure, used in calling XLookupString.
 */
typedef struct _XComposeStatus {
    XPointer compose_ptr;	/* state table pointer */
    int chars_matched;		/* match state */
} XComposeStatus;

/*
 * Keysym macros, used on Keysyms to test for classes of symbols
 */
#define IsKeypadKey(keysym) \
  (((KeySym)(keysym) >= XK_KP_Space) && ((KeySym)(keysym) <= XK_KP_Equal))

#define IsPrivateKeypadKey(keysym) \
  (((KeySym)(keysym) >= 0x11000000) && ((KeySym)(keysym) <= 0x1100FFFF))

#define IsCursorKey(keysym) \
  (((KeySym)(keysym) >= XK_Home)     && ((KeySym)(keysym) <  XK_Select))

#define IsPFKey(keysym) \
  (((KeySym)(keysym) >= XK_KP_F1)     && ((KeySym)(keysym) <= XK_KP_F4))

#define IsFunctionKey(keysym) \
  (((KeySym)(keysym) >= XK_F1)       && ((KeySym)(keysym) <= XK_F35))

#define IsMiscFunctionKey(keysym) \
  (((KeySym)(keysym) >= XK_Select)   && ((KeySym)(keysym) <= XK_Break))

#define IsModifierKey(keysym) \
  ((((KeySym)(keysym) >= XK_Shift_L) && ((KeySym)(keysym) <= XK_Hyper_R)) \
   || ((KeySym)(keysym) == XK_Mode_switch) \
   || ((KeySym)(keysym) == XK_Num_Lock))
/*
 * opaque reference to Region data type 
 */
typedef struct _XRegion *Region; 

/* Return values from XRectInRegion() */
 
#define RectangleOut 0
#define RectangleIn  1
#define RectanglePart 2
 

/*
 * Information used by the visual utility routines to find desired visual
 * type from the many visuals a display may support.
 */

typedef struct {
  Visual *visual;
  VisualID visualid;
  int screen;
  int depth;
#if defined(__cplusplus) || defined(c_plusplus)
  int c_class;					/* C++ */
#else
  int class;
#endif
  unsigned long red_mask;
  unsigned long green_mask;
  unsigned long blue_mask;
  int colormap_size;
  int bits_per_rgb;
} XVisualInfo;

#define VisualNoMask		0x0
#define VisualIDMask 		0x1
#define VisualScreenMask	0x2
#define VisualDepthMask		0x4
#define VisualClassMask		0x8
#define VisualRedMaskMask	0x10
#define VisualGreenMaskMask	0x20
#define VisualBlueMaskMask	0x40
#define VisualColormapSizeMask	0x80
#define VisualBitsPerRGBMask	0x100
#define VisualAllMask		0x1FF

/*
 * This defines a window manager property that clients may use to
 * share standard color maps of type RGB_COLOR_MAP:
 */
typedef struct {
	Colormap colormap;
	unsigned long red_max;
	unsigned long red_mult;
	unsigned long green_max;
	unsigned long green_mult;
	unsigned long blue_max;
	unsigned long blue_mult;
	unsigned long base_pixel;
	VisualID visualid;		/* added by ICCCM version 1 */
	XID killid;			/* added by ICCCM version 1 */
} XStandardColormap;

#define ReleaseByFreeingColormap ((XID) 1L)  /* for killid field above */


/*
 * return codes for XReadBitmapFile and XWriteBitmapFile
 */
#define BitmapSuccess		0
#define BitmapOpenFailed 	1
#define BitmapFileInvalid 	2
#define BitmapNoMemory		3

/****************************************************************
 *
 * Context Management
 *
 ****************************************************************/


/* Associative lookup table return codes */

#define XCSUCCESS 0	/* No error. */
#define XCNOMEM   1    /* Out of memory */
#define XCNOENT   2    /* No entry in table */

typedef int XContext;

#define XUniqueContext()       ((XContext) XrmUniqueQuark())
#define XStringToContext(string)   ((XContext) XrmStringToQuark(string))

_XFUNCPROTOBEGIN

/* The following declarations are alphabetized. */

extern XClassHint *XAllocClassHint (
#if NeedFunctionPrototypes
    void
#endif
);

extern XIconSize *XAllocIconSize (
#if NeedFunctionPrototypes
    void
#endif
);

extern XSizeHints *XAllocSizeHints (
#if NeedFunctionPrototypes
    void
#endif
);

extern XStandardColormap *XAllocStandardColormap (
#if NeedFunctionPrototypes
    void
#endif
);

extern XWMHints *XAllocWMHints (
#if NeedFunctionPrototypes
    void
#endif
);

extern XClipBox(
#if NeedFunctionPrototypes
    Region		/* r */,
    XRectangle*		/* rect_return */
#endif
);

extern Region XCreateRegion(
#if NeedFunctionPrototypes
    void
#endif
);

extern char *XDefaultString(
#if NeedFunctionPrototypes
    void
#endif
);

extern int XDeleteContext(
#if NeedFunctionPrototypes
    Display*		/* display */,
    XID			/* rid */,
    XContext		/* context */
#endif
);

extern XDestroyRegion(
#if NeedFunctionPrototypes
    Region		/* r */
#endif
);

extern XEmptyRegion(
#if NeedFunctionPrototypes
    Region		/* r */
#endif
);

extern XEqualRegion(
#if NeedFunctionPrototypes
    Region		/* r1 */,
    Region		/* r2 */
#endif
);

extern int XFindContext(
#if NeedFunctionPrototypes
    Display*		/* display */,
    XID			/* rid */,
    XContext		/* context */,
    XPointer*		/* data_return */
#endif
);

extern Status XGetClassHint(
#if NeedFunctionPrototypes
    Display*		/* display */,
    Window		/* w */,
    XClassHint*		/* class_hints_return */
#endif
);

extern Status XGetIconSizes(
#if NeedFunctionPrototypes
    Display*		/* display */,
    Window		/* w */,
    XIconSize**		/* size_list_return */,
    int*		/* count_return */
#endif
);

extern Status XGetNormalHints(
#if NeedFunctionPrototypes
    Display*		/* display */,
    Window		/* w */,
    XSizeHints*		/* hints_return */
#endif
);

extern Status XGetRGBColormaps(
#if NeedFunctionPrototypes
    Display*		/* display */,
    Window		/* w */,
    XStandardColormap** /* stdcmap_return */,
    int*		/* count_return */,
    Atom		/* property */
#endif
);

extern Status XGetSizeHints(
#if NeedFunctionPrototypes
    Display*		/* display */,
    Window		/* w */,
    XSizeHints*		/* hints_return */,
    Atom		/* property */
#endif
);

extern Status XGetStandardColormap(
#if NeedFunctionPrototypes
    Display*		/* display */,
    Window		/* w */,
    XStandardColormap*	/* colormap_return */,
    Atom		/* property */			    
#endif
);

extern Status XGetTextProperty(
#if NeedFunctionPrototypes
    Display*		/* display */,
    Window		/* window */,
    XTextProperty*	/* text_prop_return */,
    Atom		/* property */
#endif
);

extern XVisualInfo *XGetVisualInfo(
#if NeedFunctionPrototypes
    Display*		/* display */,
    long		/* vinfo_mask */,
    XVisualInfo*	/* vinfo_template */,
    int*		/* nitems_return */
#endif
);

extern Status XGetWMClientMachine(
#if NeedFunctionPrototypes
    Display*		/* display */,
    Window		/* w */,
    XTextProperty*	/* text_prop_return */
#endif
);

extern XWMHints *XGetWMHints(
#if NeedFunctionPrototypes
    Display*		/* display */,
    Window		/* w */		      
#endif
);

extern Status XGetWMIconName(
#if NeedFunctionPrototypes
    Display*		/* display */,
    Window		/* w */,
    XTextProperty*	/* text_prop_return */
#endif
);

extern Status XGetWMName(
#if NeedFunctionPrototypes
    Display*		/* display */,
    Window		/* w */,
    XTextProperty*	/* text_prop_return */
#endif
);

extern Status XGetWMNormalHints(
#if NeedFunctionPrototypes
    Display*		/* display */,
    Window		/* w */,
    XSizeHints*		/* hints_return */,
    long*		/* supplied_return */ 
#endif
);

extern Status XGetWMSizeHints(
#if NeedFunctionPrototypes
    Display*		/* display */,
    Window		/* w */,
    XSizeHints*		/* hints_return */,
    long*		/* supplied_return */,
    Atom		/* property */
#endif
);

extern Status XGetZoomHints(
#if NeedFunctionPrototypes
    Display*		/* display */,
    Window		/* w */,
    XSizeHints*		/* zhints_return */
#endif
);

extern XIntersectRegion(
#if NeedFunctionPrototypes
    Region		/* sra */,
    Region		/* srb */,
    Region		/* dr_return */
#endif
);

extern void XConvertCase(
#if NeedFunctionPrototypes
    KeySym		/* sym */,
    KeySym*		/* lower */,
    KeySym*		/* upper */
#endif
);

extern int XLookupString(
#if NeedFunctionPrototypes
    XKeyEvent*		/* event_struct */,
    char*		/* buffer_return */,
    int			/* bytes_buffer */,
    KeySym*		/* keysym_return */,
    XComposeStatus*	/* status_in_out */
#endif
);

extern Status XMatchVisualInfo(
#if NeedFunctionPrototypes
    Display*		/* display */,
    int			/* screen */,
    int			/* depth */,
    int			/* class */,
    XVisualInfo*	/* vinfo_return */
#endif
);

extern XOffsetRegion(
#if NeedFunctionPrototypes
    Region		/* r */,
    int			/* dx */,
    int			/* dy */
#endif
);

extern Bool XPointInRegion(
#if NeedFunctionPrototypes
    Region		/* r */,
    int			/* x */,
    int			/* y */
#endif
);

extern Region XPolygonRegion(
#if NeedFunctionPrototypes
    XPoint*		/* points */,
    int			/* n */,
    int			/* fill_rule */
#endif
);

extern int XRectInRegion(
#if NeedFunctionPrototypes
    Region		/* r */,
    int			/* x */,
    int			/* y */,
    unsigned int	/* width */,
    unsigned int	/* height */
#endif
);

extern int XSaveContext(
#if NeedFunctionPrototypes
    Display*		/* display */,
    XID			/* rid */,
    XContext		/* context */,
    _Xconst char*	/* data */
#endif
);

extern XSetClassHint(
#if NeedFunctionPrototypes
    Display*		/* display */,
    Window		/* w */,
    XClassHint*		/* class_hints */
#endif
);

extern XSetIconSizes(
#if NeedFunctionPrototypes
    Display*		/* display */,
    Window		/* w */,
    XIconSize*		/* size_list */,
    int			/* count */    
#endif
);

extern XSetNormalHints(
#if NeedFunctionPrototypes
    Display*		/* display */,
    Window		/* w */,
    XSizeHints*		/* hints */
#endif
);

extern void XSetRGBColormaps(
#if NeedFunctionPrototypes
    Display*		/* display */,
    Window		/* w */,
    XStandardColormap*	/* stdcmaps */,
    int			/* count */,
    Atom		/* property */
#endif
);

extern XSetSizeHints(
#if NeedFunctionPrototypes
    Display*		/* display */,
    Window		/* w */,
    XSizeHints*		/* hints */,
    Atom		/* property */
#endif
);

extern XSetStandardProperties(
#if NeedFunctionPrototypes
    Display*		/* display */,
    Window		/* w */,
    _Xconst char*	/* window_name */,
    _Xconst char*	/* icon_name */,
    Pixmap		/* icon_pixmap */,
    char**		/* argv */,
    int			/* argc */,
    XSizeHints*		/* hints */
#endif
);

extern void XSetTextProperty(
#if NeedFunctionPrototypes
    Display*		/* display */,
    Window		/* w */,
    XTextProperty*	/* text_prop */,
    Atom		/* property */
#endif
);

extern void XSetWMClientMachine(
#if NeedFunctionPrototypes
    Display*		/* display */,
    Window		/* w */,
    XTextProperty*	/* text_prop */
#endif
);

extern XSetWMHints(
#if NeedFunctionPrototypes
    Display*		/* display */,
    Window		/* w */,
    XWMHints*		/* wm_hints */
#endif
);

extern void XSetWMIconName(
#if NeedFunctionPrototypes
    Display*		/* display */,
    Window		/* w */,
    XTextProperty*	/* text_prop */
#endif
);

extern void XSetWMName(
#if NeedFunctionPrototypes
    Display*		/* display */,
    Window		/* w */,
    XTextProperty*	/* text_prop */
#endif
);

extern void XSetWMNormalHints(
#if NeedFunctionPrototypes
    Display*		/* display */,
    Window		/* w */,
    XSizeHints*		/* hints */
#endif
);

extern void XSetWMProperties(
#if NeedFunctionPrototypes
    Display*		/* display */,
    Window		/* w */,
    XTextProperty*	/* window_name */,
    XTextProperty*	/* icon_name */,
    char**		/* argv */,
    int			/* argc */,
    XSizeHints*		/* normal_hints */,
    XWMHints*		/* wm_hints */,
    XClassHint*		/* class_hints */
#endif
);

extern void XmbSetWMProperties(
#if NeedFunctionPrototypes
    Display*		/* display */,
    Window		/* w */,
    _Xconst char*	/* window_name */,
    _Xconst char*	/* icon_name */,
    char**		/* argv */,
    int			/* argc */,
    XSizeHints*		/* normal_hints */,
    XWMHints*		/* wm_hints */,
    XClassHint*		/* class_hints */
#endif
);

extern void XSetWMSizeHints(
#if NeedFunctionPrototypes
    Display*		/* display */,
    Window		/* w */,
    XSizeHints*		/* hints */,
    Atom		/* property */
#endif
);

extern XSetRegion(
#if NeedFunctionPrototypes
    Display*		/* display */,
    GC			/* gc */,
    Region		/* r */
#endif
);

extern void XSetStandardColormap(
#if NeedFunctionPrototypes
    Display*		/* display */,
    Window		/* w */,
    XStandardColormap*	/* colormap */,
    Atom		/* property */
#endif
);

extern XSetZoomHints(
#if NeedFunctionPrototypes
    Display*		/* display */,
    Window		/* w */,
    XSizeHints*		/* zhints */
#endif
);

extern XShrinkRegion(
#if NeedFunctionPrototypes
    Region		/* r */,
    int			/* dx */,
    int			/* dy */
#endif
);

extern Status XStringListToTextProperty(
#if NeedFunctionPrototypes
    char**		/* list */,
    int			/* count */,
    XTextProperty*	/* text_prop_return */
#endif
);

extern XSubtractRegion(
#if NeedFunctionPrototypes
    Region		/* sra */,
    Region		/* srb */,
    Region		/* dr_return */
#endif
);

extern int XmbTextListToTextProperty(
#if NeedFunctionPrototypes
    Display*		/* display */,
    char**		/* list */,
    int			/* count */,
    XICCEncodingStyle	/* style */,
    XTextProperty*	/* text_prop_return */
#endif
);

extern int XwcTextListToTextProperty(
#if NeedFunctionPrototypes
    Display*		/* display */,
    wchar_t**		/* list */,
    int			/* count */,
    XICCEncodingStyle	/* style */,
    XTextProperty*	/* text_prop_return */
#endif
);

extern void XwcFreeStringList(
#if NeedFunctionPrototypes
    wchar_t**		/* list */
#endif
);

extern Status XTextPropertyToStringList(
#if NeedFunctionPrototypes
    XTextProperty*	/* text_prop */,
    char***		/* list_return */,
    int*		/* count_return */
#endif
);

extern int XmbTextPropertyToTextList(
#if NeedFunctionPrototypes
    Display*		/* display */,
    XTextProperty*	/* text_prop */,
    char***		/* list_return */,
    int*		/* count_return */
#endif
);

extern int XwcTextPropertyToTextList(
#if NeedFunctionPrototypes
    Display*		/* display */,
    XTextProperty*	/* text_prop */,
    wchar_t***		/* list_return */,
    int*		/* count_return */
#endif
);

extern XUnionRectWithRegion(
#if NeedFunctionPrototypes
    XRectangle*		/* rectangle */,
    Region		/* src_region */,
    Region		/* dest_region_return */
#endif
);

extern XUnionRegion(
#if NeedFunctionPrototypes
    Region		/* sra */,
    Region		/* srb */,
    Region		/* dr_return */
#endif
);

extern int XWMGeometry(
#if NeedFunctionPrototypes
    Display*		/* display */,
    int			/* screen_number */,
    _Xconst char*	/* user_geometry */,
    _Xconst char*	/* default_geometry */,
    unsigned int	/* border_width */,
    XSizeHints*		/* hints */,
    int*		/* x_return */,
    int*		/* y_return */,
    int*		/* width_return */,
    int*		/* height_return */,
    int*		/* gravity_return */
#endif
);

extern XXorRegion(
#if NeedFunctionPrototypes
    Region		/* sra */,
    Region		/* srb */,
    Region		/* dr_return */
#endif
);

_XFUNCPROTOEND

#ifdef __MWERKS__
#   undef Region
#endif

#endif /* _XUTIL_H_ */

--- NEW FILE: Xresource.h ---
/* $XConsortium: Xresource.h,v 1.37 94/04/17 20:21:52 rws Exp $ */

/***********************************************************

Copyright (c) 1987, 1988  X Consortium

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Except as contained in this notice, the name of the X Consortium shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from the X Consortium.


Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.

                        All Rights Reserved

Permission to use, copy, modify, and distribute this software and its 
documentation for any purpose and without fee is hereby granted, 
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in 
supporting documentation, and that the name of Digital not be
used in advertising or publicity pertaining to distribution of the
software without specific, written prior permission.  

DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.

******************************************************************/

#ifndef _XRESOURCE_H_
#define _XRESOURCE_H_

/* You must include  before including this file */

/****************************************************************
 ****************************************************************
 ***                                                          ***
 ***                                                          ***
 ***          X Resource Manager Intrinsics                   ***
 ***                                                          ***
 ***                                                          ***
 ****************************************************************
 ****************************************************************/

_XFUNCPROTOBEGIN

/****************************************************************
 *
 * Memory Management
 *
 ****************************************************************/

extern char *Xpermalloc(
#if NeedFunctionPrototypes
    unsigned int	/* size */
#endif
);

/****************************************************************
 *
 * Quark Management
 *
 ****************************************************************/

typedef int     XrmQuark, *XrmQuarkList;
#define NULLQUARK ((XrmQuark) 0)

typedef char *XrmString;
#define NULLSTRING ((XrmString) 0)

/* find quark for string, create new quark if none already exists */
extern XrmQuark XrmStringToQuark(
#if NeedFunctionPrototypes
    _Xconst char* 	/* string */
#endif
);

extern XrmQuark XrmPermStringToQuark(
#if NeedFunctionPrototypes
    _Xconst char* 	/* string */
#endif
);

/* find string for quark */
extern XrmString XrmQuarkToString(
#if NeedFunctionPrototypes
    XrmQuark 		/* quark */
#endif
);

extern XrmQuark XrmUniqueQuark(
#if NeedFunctionPrototypes
    void
#endif
);

#define XrmStringsEqual(a1, a2) (strcmp(a1, a2) == 0)


/****************************************************************
 *
 * Conversion of Strings to Lists
 *
 ****************************************************************/

typedef enum {XrmBindTightly, XrmBindLoosely} XrmBinding, *XrmBindingList;

extern void XrmStringToQuarkList(
#if NeedFunctionPrototypes
    _Xconst char*	/* string */,
    XrmQuarkList	/* quarks_return */
#endif
);

extern void XrmStringToBindingQuarkList(
#if NeedFunctionPrototypes
    _Xconst char*	/* string */,
    XrmBindingList	/* bindings_return */,
    XrmQuarkList	/* quarks_return */
#endif
);

/****************************************************************
 *
 * Name and Class lists.
 *
 ****************************************************************/

typedef XrmQuark     XrmName;
typedef XrmQuarkList XrmNameList;
#define XrmNameToString(name)		XrmQuarkToString(name)
#define XrmStringToName(string)		XrmStringToQuark(string)
#define XrmStringToNameList(str, name)	XrmStringToQuarkList(str, name)

typedef XrmQuark     XrmClass;
typedef XrmQuarkList XrmClassList;
#define XrmClassToString(c_class)	XrmQuarkToString(c_class)
#define XrmStringToClass(c_class)	XrmStringToQuark(c_class)
#define XrmStringToClassList(str,c_class) XrmStringToQuarkList(str, c_class)



/****************************************************************
 *
 * Resource Representation Types and Values
 *
 ****************************************************************/

typedef XrmQuark     XrmRepresentation;
#define XrmStringToRepresentation(string)   XrmStringToQuark(string)
#define	XrmRepresentationToString(type)   XrmQuarkToString(type)

typedef struct {
    unsigned int    size;
    XPointer	    addr;
} XrmValue, *XrmValuePtr;


/****************************************************************
 *
 * Resource Manager Functions
 *
 ****************************************************************/

typedef struct _XrmHashBucketRec *XrmHashBucket;
typedef XrmHashBucket *XrmHashTable;
typedef XrmHashTable XrmSearchList[];
typedef struct _XrmHashBucketRec *XrmDatabase;


extern void XrmDestroyDatabase(
#if NeedFunctionPrototypes
    XrmDatabase		/* database */    
#endif
);

extern void XrmQPutResource(
#if NeedFunctionPrototypes
    XrmDatabase*	/* database */,
    XrmBindingList	/* bindings */,
    XrmQuarkList	/* quarks */,
    XrmRepresentation	/* type */,
    XrmValue*		/* value */
#endif
);

extern void XrmPutResource(
#if NeedFunctionPrototypes
    XrmDatabase*	/* database */,
    _Xconst char*	/* specifier */,
    _Xconst char*	/* type */,
    XrmValue*		/* value */
#endif
);

extern void XrmQPutStringResource(
#if NeedFunctionPrototypes
    XrmDatabase*	/* database */,
    XrmBindingList      /* bindings */,
    XrmQuarkList	/* quarks */,
    _Xconst char*	/* value */
#endif
);

extern void XrmPutStringResource(
#if NeedFunctionPrototypes
    XrmDatabase*	/* database */,
    _Xconst char*	/* specifier */,
    _Xconst char*	/* value */
#endif
);

extern void XrmPutLineResource(
#if NeedFunctionPrototypes
    XrmDatabase*	/* database */,
    _Xconst char*	/* line */
#endif
);

extern  XrmQGetResource(
#if NeedFunctionPrototypes
    XrmDatabase		/* database */,
    XrmNameList		/* quark_name */,
    XrmClassList	/* quark_class */,
    XrmRepresentation*	/* quark_type_return */,
    XrmValue*		/* value_return */
#endif
);

extern Bool XrmGetResource(
#if NeedFunctionPrototypes
    XrmDatabase		/* database */,
    _Xconst char*	/* str_name */,
    _Xconst char*	/* str_class */,
    char**		/* str_type_return */,
    XrmValue*		/* value_return */
#endif
);

extern Bool XrmQGetSearchList(
#if NeedFunctionPrototypes
    XrmDatabase		/* database */,
    XrmNameList		/* names */,
    XrmClassList	/* classes */,
    XrmSearchList	/* list_return */,
    int			/* list_length */
#endif
);

extern Bool XrmQGetSearchResource(
#if NeedFunctionPrototypes
    XrmSearchList	/* list */,
    XrmName		/* name */,
    XrmClass		/* class */,
    XrmRepresentation*	/* type_return */,
    XrmValue*		/* value_return */
#endif
);

/****************************************************************
 *
 * Resource Database Management
 *
 ****************************************************************/

extern void XrmSetDatabase(
#if NeedFunctionPrototypes
    Display*		/* display */,
    XrmDatabase		/* database */
#endif
);

extern XrmDatabase XrmGetDatabase(
#if NeedFunctionPrototypes
    Display*		/* display */
#endif
);

extern XrmDatabase XrmGetFileDatabase(
#if NeedFunctionPrototypes
    _Xconst char*	/* filename */
#endif
);

extern Status XrmCombineFileDatabase(
#if NeedFunctionPrototypes
    _Xconst char* 	/* filename */,
    XrmDatabase*	/* target */,
    Bool		/* override */
#endif
);

extern XrmDatabase XrmGetStringDatabase(
#if NeedFunctionPrototypes
    _Xconst char*	/* data */  /*  null terminated string */
#endif
);

extern void XrmPutFileDatabase(
#if NeedFunctionPrototypes
    XrmDatabase		/* database */,
    _Xconst char*	/* filename */
#endif
);

extern void XrmMergeDatabases(
#if NeedFunctionPrototypes
    XrmDatabase		/* source_db */,
    XrmDatabase*	/* target_db */
#endif
);

extern void XrmCombineDatabase(
#if NeedFunctionPrototypes
    XrmDatabase		/* source_db */,
    XrmDatabase*	/* target_db */,
    Bool		/* override */
#endif
);

#define XrmEnumAllLevels 0
#define XrmEnumOneLevel  1

extern Bool XrmEnumerateDatabase(
#if NeedFunctionPrototypes
    XrmDatabase		/* db */,
    XrmNameList		/* name_prefix */,
    XrmClassList	/* class_prefix */,
    int			/* mode */,
    Bool (*)(
#if NeedNestedPrototypes
	     XrmDatabase*	/* db */,
	     XrmBindingList	/* bindings */,
	     XrmQuarkList	/* quarks */,
	     XrmRepresentation*	/* type */,
	     XrmValue*		/* value */,
	     XPointer		/* closure */
#endif
	     )		/* proc */,
    XPointer		/* closure */
#endif
);

extern char *XrmLocaleOfDatabase(
#if NeedFunctionPrototypes
    XrmDatabase 	/* database */
#endif
);


/****************************************************************
 *
 * Command line option mapping to resource entries
 *
 ****************************************************************/

typedef enum {
    XrmoptionNoArg,	/* Value is specified in OptionDescRec.value	    */
    XrmoptionIsArg,     /* Value is the option string itself		    */
    XrmoptionStickyArg, /* Value is characters immediately following option */
    XrmoptionSepArg,    /* Value is next argument in argv		    */
    XrmoptionResArg,	/* Resource and value in next argument in argv      */
    XrmoptionSkipArg,   /* Ignore this option and the next argument in argv */
    XrmoptionSkipLine,  /* Ignore this option and the rest of argv	    */
    XrmoptionSkipNArgs	/* Ignore this option and the next 
			   OptionDescRes.value arguments in argv */
} XrmOptionKind;

typedef struct {
    char	    *option;	    /* Option abbreviation in argv	    */
    char	    *specifier;     /* Resource specifier		    */
    XrmOptionKind   argKind;	    /* Which style of option it is	    */
    XPointer	    value;	    /* Value to provide if XrmoptionNoArg   */
} XrmOptionDescRec, *XrmOptionDescList;


extern void XrmParseCommand(
#if NeedFunctionPrototypes
    XrmDatabase*	/* database */,
    XrmOptionDescList	/* table */,
    int			/* table_count */,
    _Xconst char*	/* name */,
    int*		/* argc_in_out */,
    char**		/* argv_in_out */		     
#endif
);

_XFUNCPROTOEND

#endif /* _XRESOURCE_H_ */
/* DON'T ADD STUFF AFTER THIS #endif */

--- NEW FILE: X.h ---
/*
 *	$XConsortium: X.h,v 1.69 94/04/17 20:10:48 dpw Exp $
 */

/* Definitions for the X window system likely to be used by applications */

#ifndef X_H
#define X_H

/***********************************************************

Copyright (c) 1987  X Consortium

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Except as contained in this notice, the name of the X Consortium shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from the X Consortium.


Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.

                        All Rights Reserved

Permission to use, copy, modify, and distribute this software and its 
documentation for any purpose and without fee is hereby granted, 
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in 
supporting documentation, and that the name of Digital not be
used in advertising or publicity pertaining to distribution of the
software without specific, written prior permission.  

DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.

******************************************************************/
#define X_PROTOCOL	11		/* current protocol version */
#define X_PROTOCOL_REVISION 0		/* current minor version */

#ifdef __MWERKS__
#   define Cursor XCursor
#   define cursor xcursor
#   define Region XRegion
#endif

/* Resources */

/*
 * _XSERVER64 must ONLY be defined when compiling X server sources on
 * systems where unsigned long is not 32 bits, must NOT be used in
 * client or library code.
 */
#ifndef _XSERVER64
typedef unsigned long XID;
typedef unsigned long Mask;
typedef unsigned long Atom;
typedef unsigned long VisualID;
typedef unsigned long Time;
#else
#include 
typedef CARD32 XID;
typedef CARD32 Mask;
typedef CARD32 Atom;
typedef CARD32 VisualID;
typedef CARD32 Time;
#endif

typedef XID Window;
typedef XID Drawable;
typedef XID Font;
typedef XID Pixmap;
typedef XID Cursor;
typedef XID Colormap;
typedef XID GContext;
typedef XID KeySym;

typedef unsigned char KeyCode;

/*****************************************************************
 * RESERVED RESOURCE AND CONSTANT DEFINITIONS
 *****************************************************************/

#define None                 0L	/* universal null resource or null atom */

#define ParentRelative       1L	/* background pixmap in CreateWindow
				    and ChangeWindowAttributes */

#define CopyFromParent       0L	/* border pixmap in CreateWindow
				       and ChangeWindowAttributes
				   special VisualID and special window
				       class passed to CreateWindow */

#define PointerWindow        0L	/* destination window in SendEvent */
#define InputFocus           1L	/* destination window in SendEvent */

#define PointerRoot          1L	/* focus window in SetInputFocus */

#define AnyPropertyType      0L	/* special Atom, passed to GetProperty */

#define AnyKey		     0L	/* special Key Code, passed to GrabKey */

#define AnyButton            0L	/* special Button Code, passed to GrabButton */

#define AllTemporary         0L	/* special Resource ID passed to KillClient */

#define CurrentTime          0L	/* special Time */

#define NoSymbol	     0L	/* special KeySym */

/***************************************************************** 
 * EVENT DEFINITIONS 
 *****************************************************************/

/* Input Event Masks. Used as event-mask window attribute and as arguments
   to Grab requests.  Not to be confused with event names.  */

#define NoEventMask			0L
#define KeyPressMask			(1L<<0)  
#define KeyReleaseMask			(1L<<1)  
#define ButtonPressMask			(1L<<2)  
#define ButtonReleaseMask		(1L<<3)  
#define EnterWindowMask			(1L<<4)  
#define LeaveWindowMask			(1L<<5)  
#define PointerMotionMask		(1L<<6)  
#define PointerMotionHintMask		(1L<<7)  
#define Button1MotionMask		(1L<<8)  
#define Button2MotionMask		(1L<<9)  
#define Button3MotionMask		(1L<<10) 
#define Button4MotionMask		(1L<<11) 
#define Button5MotionMask		(1L<<12) 
#define ButtonMotionMask		(1L<<13) 
#define KeymapStateMask			(1L<<14)
#define ExposureMask			(1L<<15) 
#define VisibilityChangeMask		(1L<<16) 
#define StructureNotifyMask		(1L<<17) 
#define ResizeRedirectMask		(1L<<18) 
#define SubstructureNotifyMask		(1L<<19) 
#define SubstructureRedirectMask	(1L<<20) 
#define FocusChangeMask			(1L<<21) 
#define PropertyChangeMask		(1L<<22) 
#define ColormapChangeMask		(1L<<23) 
#define OwnerGrabButtonMask		(1L<<24) 

/* Event names.  Used in "type" field in XEvent structures.  Not to be
confused with event masks above.  They start from 2 because 0 and 1
are reserved in the protocol for errors and replies. */

#define KeyPress		2
#define KeyRelease		3
#define ButtonPress		4
#define ButtonRelease		5
#define MotionNotify		6
#define EnterNotify		7
#define LeaveNotify		8
#define FocusIn			9
#define FocusOut		10
#define KeymapNotify		11
#define Expose			12
#define GraphicsExpose		13
#define NoExpose		14
#define VisibilityNotify	15
#define CreateNotify		16
#define DestroyNotify		17
#define UnmapNotify		18
#define MapNotify		19
#define MapRequest		20
#define ReparentNotify		21
#define ConfigureNotify		22
#define ConfigureRequest	23
#define GravityNotify		24
#define ResizeRequest		25
#define CirculateNotify		26
#define CirculateRequest	27
#define PropertyNotify		28
#define SelectionClear		29
#define SelectionRequest	30
#define SelectionNotify		31
#define ColormapNotify		32
#define ClientMessage		33
#define MappingNotify		34
#define LASTEvent		35	/* must be bigger than any event # */


/* Key masks. Used as modifiers to GrabButton and GrabKey, results of QueryPointer,
   state in various key-, mouse-, and button-related events. */

#define ShiftMask		(1<<0)
#define LockMask		(1<<1)
#define ControlMask		(1<<2)
#define Mod1Mask		(1<<3)
#define Mod2Mask		(1<<4)
#define Mod3Mask		(1<<5)
#define Mod4Mask		(1<<6)
#define Mod5Mask		(1<<7)

/* modifier names.  Used to build a SetModifierMapping request or
   to read a GetModifierMapping request.  These correspond to the
   masks defined above. */
#define ShiftMapIndex		0
#define LockMapIndex		1
#define ControlMapIndex		2
#define Mod1MapIndex		3
#define Mod2MapIndex		4
#define Mod3MapIndex		5
#define Mod4MapIndex		6
#define Mod5MapIndex		7


/* button masks.  Used in same manner as Key masks above. Not to be confused
   with button names below. */

#define Button1Mask		(1<<8)
#define Button2Mask		(1<<9)
#define Button3Mask		(1<<10)
#define Button4Mask		(1<<11)
#define Button5Mask		(1<<12)

#define AnyModifier		(1<<15)  /* used in GrabButton, GrabKey */


/* button names. Used as arguments to GrabButton and as detail in ButtonPress
   and ButtonRelease events.  Not to be confused with button masks above.
   Note that 0 is already defined above as "AnyButton".  */

#define Button1			1
#define Button2			2
#define Button3			3
#define Button4			4
#define Button5			5

/* Notify modes */

#define NotifyNormal		0
#define NotifyGrab		1
#define NotifyUngrab		2
#define NotifyWhileGrabbed	3

#define NotifyHint		1	/* for MotionNotify events */
		       
/* Notify detail */

#define NotifyAncestor		0
#define NotifyVirtual		1
#define NotifyInferior		2
#define NotifyNonlinear		3
#define NotifyNonlinearVirtual	4
#define NotifyPointer		5
#define NotifyPointerRoot	6
#define NotifyDetailNone	7

/* Visibility notify */

#define VisibilityUnobscured		0
#define VisibilityPartiallyObscured	1
#define VisibilityFullyObscured		2

/* Circulation request */

#define PlaceOnTop		0
#define PlaceOnBottom		1

/* protocol families */

#define FamilyInternet		0
#define FamilyDECnet		1
#define FamilyChaos		2

/* Property notification */

#define PropertyNewValue	0
#define PropertyDelete		1

/* Color Map notification */

#define ColormapUninstalled	0
#define ColormapInstalled	1

/* GrabPointer, GrabButton, GrabKeyboard, GrabKey Modes */

#define GrabModeSync		0
#define GrabModeAsync		1

/* GrabPointer, GrabKeyboard reply status */

#define GrabSuccess		0
#define AlreadyGrabbed		1
#define GrabInvalidTime		2
#define GrabNotViewable		3
#define GrabFrozen		4

/* AllowEvents modes */

#define AsyncPointer		0
#define SyncPointer		1
#define ReplayPointer		2
#define AsyncKeyboard		3
#define SyncKeyboard		4
#define ReplayKeyboard		5
#define AsyncBoth		6
#define SyncBoth		7

/* Used in SetInputFocus, GetInputFocus */

#define RevertToNone		(int)None
#define RevertToPointerRoot	(int)PointerRoot
#define RevertToParent		2

/*****************************************************************
 * ERROR CODES 
 *****************************************************************/

#define Success		   0	/* everything's okay */
#define BadRequest	   1	/* bad request code */
#define BadValue	   2	/* int parameter out of range */
#define BadWindow	   3	/* parameter not a Window */
#define BadPixmap	   4	/* parameter not a Pixmap */
#define BadAtom		   5	/* parameter not an Atom */
#define BadCursor	   6	/* parameter not a Cursor */
#define BadFont		   7	/* parameter not a Font */
#define BadMatch	   8	/* parameter mismatch */
#define BadDrawable	   9	/* parameter not a Pixmap or Window */
#define BadAccess	  10	/* depending on context:
				 - key/button already grabbed
				 - attempt to free an illegal 
				   cmap entry 
				- attempt to store into a read-only 
				   color map entry.
 				- attempt to modify the access control
				   list from other than the local host.
				*/
#define BadAlloc	  11	/* insufficient resources */
#define BadColor	  12	/* no such colormap */
#define BadGC		  13	/* parameter not a GC */
#define BadIDChoice	  14	/* choice not in range or already used */
#define BadName		  15	/* font or color name doesn't exist */
#define BadLength	  16	/* Request length incorrect */
#define BadImplementation 17	/* server is defective */

#define FirstExtensionError	128
#define LastExtensionError	255

/*****************************************************************
 * WINDOW DEFINITIONS 
 *****************************************************************/

/* Window classes used by CreateWindow */
/* Note that CopyFromParent is already defined as 0 above */

#define InputOutput		1
#define InputOnly		2

/* Window attributes for CreateWindow and ChangeWindowAttributes */

#define CWBackPixmap		(1L<<0)
#define CWBackPixel		(1L<<1)
#define CWBorderPixmap		(1L<<2)
#define CWBorderPixel           (1L<<3)
#define CWBitGravity		(1L<<4)
#define CWWinGravity		(1L<<5)
#define CWBackingStore          (1L<<6)
#define CWBackingPlanes	        (1L<<7)
#define CWBackingPixel	        (1L<<8)
#define CWOverrideRedirect	(1L<<9)
#define CWSaveUnder		(1L<<10)
#define CWEventMask		(1L<<11)
#define CWDontPropagate	        (1L<<12)
#define CWColormap		(1L<<13)
#define CWCursor	        (1L<<14)

/* ConfigureWindow structure */

#define CWX			(1<<0)
#define CWY			(1<<1)
#define CWWidth			(1<<2)
#define CWHeight		(1<<3)
#define CWBorderWidth		(1<<4)
#define CWSibling		(1<<5)
#define CWStackMode		(1<<6)


/* Bit Gravity */

#define ForgetGravity		0
#define NorthWestGravity	1
#define NorthGravity		2
#define NorthEastGravity	3
#define WestGravity		4
#define CenterGravity		5
#define EastGravity		6
#define SouthWestGravity	7
#define SouthGravity		8
#define SouthEastGravity	9
#define StaticGravity		10

/* Window gravity + bit gravity above */

#define UnmapGravity		0

/* Used in CreateWindow for backing-store hint */

#define NotUseful               0
#define WhenMapped              1
#define Always                  2

/* Used in GetWindowAttributes reply */

#define IsUnmapped		0
#define IsUnviewable		1
#define IsViewable		2

/* Used in ChangeSaveSet */

#define SetModeInsert           0
#define SetModeDelete           1

/* Used in ChangeCloseDownMode */

#define DestroyAll              0
#define RetainPermanent         1
#define RetainTemporary         2

/* Window stacking method (in configureWindow) */

#define Above                   0
#define Below                   1
#define TopIf                   2
#define BottomIf                3
#define Opposite                4

/* Circulation direction */

#define RaiseLowest             0
#define LowerHighest            1

/* Property modes */

#define PropModeReplace         0
#define PropModePrepend         1
#define PropModeAppend          2

/*****************************************************************
 * GRAPHICS DEFINITIONS
 *****************************************************************/

/* graphics functions, as in GC.alu */

#define	GXclear			0x0		/* 0 */
#define GXand			0x1		/* src AND dst */
#define GXandReverse		0x2		/* src AND NOT dst */
#define GXcopy			0x3		/* src */
#define GXandInverted		0x4		/* NOT src AND dst */
#define	GXnoop			0x5		/* dst */
#define GXxor			0x6		/* src XOR dst */
#define GXor			0x7		/* src OR dst */
#define GXnor			0x8		/* NOT src AND NOT dst */
#define GXequiv			0x9		/* NOT src XOR dst */
#define GXinvert		0xa		/* NOT dst */
#define GXorReverse		0xb		/* src OR NOT dst */
#define GXcopyInverted		0xc		/* NOT src */
#define GXorInverted		0xd		/* NOT src OR dst */
#define GXnand			0xe		/* NOT src OR NOT dst */
#define GXset			0xf		/* 1 */

/* LineStyle */

#define LineSolid		0
#define LineOnOffDash		1
#define LineDoubleDash		2

/* capStyle */

#define CapNotLast		0
#define CapButt			1
#define CapRound		2
#define CapProjecting		3

/* joinStyle */

#define JoinMiter		0
#define JoinRound		1
#define JoinBevel		2

/* fillStyle */

#define FillSolid		0
#define FillTiled		1
#define FillStippled		2
#define FillOpaqueStippled	3

/* fillRule */

#define EvenOddRule		0
#define WindingRule		1

/* subwindow mode */

#define ClipByChildren		0
#define IncludeInferiors	1

/* SetClipRectangles ordering */

#define Unsorted		0
#define YSorted			1
#define YXSorted		2
#define YXBanded		3

/* CoordinateMode for drawing routines */

#define CoordModeOrigin		0	/* relative to the origin */
#define CoordModePrevious       1	/* relative to previous point */

/* Polygon shapes */

#define Complex			0	/* paths may intersect */
#define Nonconvex		1	/* no paths intersect, but not convex */
#define Convex			2	/* wholly convex */

/* Arc modes for PolyFillArc */

#define ArcChord		0	/* join endpoints of arc */
#define ArcPieSlice		1	/* join endpoints to center of arc */

/* GC components: masks used in CreateGC, CopyGC, ChangeGC, OR'ed into
   GC.stateChanges */

#define GCFunction              (1L<<0)
#define GCPlaneMask             (1L<<1)
#define GCForeground            (1L<<2)
#define GCBackground            (1L<<3)
#define GCLineWidth             (1L<<4)
#define GCLineStyle             (1L<<5)
#define GCCapStyle              (1L<<6)
#define GCJoinStyle		(1L<<7)
#define GCFillStyle		(1L<<8)
#define GCFillRule		(1L<<9) 
#define GCTile			(1L<<10)
#define GCStipple		(1L<<11)
#define GCTileStipXOrigin	(1L<<12)
#define GCTileStipYOrigin	(1L<<13)
#define GCFont 			(1L<<14)
#define GCSubwindowMode		(1L<<15)
#define GCGraphicsExposures     (1L<<16)
#define GCClipXOrigin		(1L<<17)
#define GCClipYOrigin		(1L<<18)
#define GCClipMask		(1L<<19)
#define GCDashOffset		(1L<<20)
#define GCDashList		(1L<<21)
#define GCArcMode		(1L<<22)

#define GCLastBit		22
/*****************************************************************
 * FONTS 
 *****************************************************************/

/* used in QueryFont -- draw direction */

#define FontLeftToRight		0
#define FontRightToLeft		1

#define FontChange		255

/*****************************************************************
 *  IMAGING 
 *****************************************************************/

/* ImageFormat -- PutImage, GetImage */

#define XYBitmap		0	/* depth 1, XYFormat */
#define XYPixmap		1	/* depth == drawable depth */
#define ZPixmap			2	/* depth == drawable depth */

/*****************************************************************
 *  COLOR MAP STUFF 
 *****************************************************************/

/* For CreateColormap */

#define AllocNone		0	/* create map with no entries */
#define AllocAll		1	/* allocate entire map writeable */


/* Flags used in StoreNamedColor, StoreColors */

#define DoRed			(1<<0)
#define DoGreen			(1<<1)
#define DoBlue			(1<<2)

/*****************************************************************
 * CURSOR STUFF
 *****************************************************************/

/* QueryBestSize Class */

#define CursorShape		0	/* largest size that can be displayed */
#define TileShape		1	/* size tiled fastest */
#define StippleShape		2	/* size stippled fastest */

/***************************************************************** 
 * KEYBOARD/POINTER STUFF
 *****************************************************************/

#define AutoRepeatModeOff	0
#define AutoRepeatModeOn	1
#define AutoRepeatModeDefault	2

#define LedModeOff		0
#define LedModeOn		1

/* masks for ChangeKeyboardControl */

#define KBKeyClickPercent	(1L<<0)
#define KBBellPercent		(1L<<1)
#define KBBellPitch		(1L<<2)
#define KBBellDuration		(1L<<3)
#define KBLed			(1L<<4)
#define KBLedMode		(1L<<5)
#define KBKey			(1L<<6)
#define KBAutoRepeatMode	(1L<<7)

#define MappingSuccess     	0
#define MappingBusy        	1
#define MappingFailed		2

#define MappingModifier		0
#define MappingKeyboard		1
#define MappingPointer		2

/*****************************************************************
 * SCREEN SAVER STUFF 
 *****************************************************************/

#define DontPreferBlanking	0
#define PreferBlanking		1
#define DefaultBlanking		2

#define DisableScreenSaver	0
#define DisableScreenInterval	0

#define DontAllowExposures	0
#define AllowExposures		1
#define DefaultExposures	2

/* for ForceScreenSaver */

#define ScreenSaverReset 0
#define ScreenSaverActive 1

/*****************************************************************
 * HOSTS AND CONNECTIONS
 *****************************************************************/

/* for ChangeHosts */

#define HostInsert		0
#define HostDelete		1

/* for ChangeAccessControl */

#define EnableAccess		1      
#define DisableAccess		0

/* Display classes  used in opening the connection 
 * Note that the statically allocated ones are even numbered and the
 * dynamically changeable ones are odd numbered */

#define StaticGray		0
#define GrayScale		1
#define StaticColor		2
#define PseudoColor		3
#define TrueColor		4
#define DirectColor		5


/* Byte order  used in imageByteOrder and bitmapBitOrder */

#define LSBFirst		0
#define MSBFirst		1

#ifdef __MWERKS__
#   undef Region
#endif

#endif /* X_H */

--- NEW FILE: Xos.h ---
/*
 * $XConsortium: Xos.h,v 1.67 94/11/30 20:48:05 kaleb Exp $
 * 
 * 
Copyright (c) 1987  X Consortium

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Except as contained in this notice, the name of the X Consortium shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from the X Consortium.
 *
 * The X Window System is a Trademark of X Consortium.
 *
 */

/* This is a collection of things to try and minimize system dependencies
 * in a "signficant" number of source files.
 */

#ifndef _XOS_H_
#define _XOS_H_

#ifdef __MWERKS__
#   include 
#else
#include 
#endif

/*
 * Get major data types (esp. caddr_t)
 */

#ifdef USG
#ifndef __TYPES__
#ifdef CRAY
#define word word_t
#endif /* CRAY */
#include 			/* forgot to protect it... */
#define __TYPES__
#endif /* __TYPES__ */
#else /* USG */
#if defined(_POSIX_SOURCE) && (defined(MOTOROLA) || defined(AMOEBA))
#undef _POSIX_SOURCE
#include 
#define _POSIX_SOURCE
#else
#ifdef __MWERKS__
#   include 
#else
#include 
#endif
#endif
#endif /* USG */


/*
 * Just about everyone needs the strings routines.  We provide both forms here,
 * index/rindex and strchr/strrchr, so any systems that don't provide them all
 * need to have #defines here.
 */

#ifndef X_NOT_STDC_ENV

#include 
#ifndef index
#define index strchr
#endif
#ifndef rindex
#define rindex strrchr
#endif

#else

#ifdef SYSV
#include 
#define index strchr
#define rindex strrchr
#else
#include 
#define strchr index
#define strrchr rindex
#endif

#endif /* X_NOT_STDC_ENV */

/*
 * strerror()
 */
#if defined(X_NOT_STDC_ENV) || (defined(sun) && !defined(SVR4)) || defined(macII)
#ifndef strerror
extern char *sys_errlist[];
extern int sys_nerr;
#define strerror(n) \
    (((n) >= 0 && (n) < sys_nerr) ? sys_errlist[n] : "unknown error")
#endif
#endif

/*
 * Get open(2) constants
 */
#ifdef X_NOT_POSIX
#include 
#if defined(USL) || defined(CRAY) || defined(MOTOROLA) || (defined(i386) && (defined(SYSV) || defined(SVR4))) || defined(__sxg__)
#include 
#endif
#ifdef WIN32
#include 
#else
#include 
#endif
#else /* X_NOT_POSIX */
#if !defined(_POSIX_SOURCE) && defined(macII)
#define _POSIX_SOURCE
#include 
#include 
#undef _POSIX_SOURCE
#else
#include 
#include 
#endif
#endif /* X_NOT_POSIX else */

/*
 * Get struct timeval
 */

#ifdef SYSV

#ifndef USL
#include 
#endif
#include 
#ifdef CRAY
#undef word
#endif /* CRAY */
#if defined(USG) && !defined(CRAY) && !defined(MOTOROLA) && !defined(uniosu) && !defined(__sxg__)
struct timeval {
    long tv_sec;
    long tv_usec;
};
#ifndef USL_SHARELIB
struct timezone {
    int tz_minuteswest;
    int tz_dsttime;
};
#endif /* USL_SHARELIB */
#endif /* USG */

#ifdef _SEQUENT_
struct timezone {
    int tz_minuteswest;
    int tz_dsttime;
};
#endif /* _SEQUENT_ */

#else /* not SYSV */

#if defined(_POSIX_SOURCE) && defined(SVR4)
/* need to omit _POSIX_SOURCE in order to get what we want in SVR4 */
#undef _POSIX_SOURCE
#include 
#define _POSIX_SOURCE
#else /* defined(_POSIX_SOURCE) && defined(SVR4) */
#ifdef WIN32
#include 
#if !defined(_WINSOCKAPI_) && !defined(_WILLWINSOCK_)
struct timeval {
    long    tv_sec;         /* seconds */
    long    tv_usec;        /* and microseconds */
};
#endif
/*#include */
#define gettimeofday(t) \
{ \
    struct _timeb _gtodtmp; \
    _ftime (&_gtodtmp); \
    (t)->tv_sec = _gtodtmp.time; \
    (t)->tv_usec = _gtodtmp.millitm * 1000; \
}
#else /* WIN32 */
#ifdef _SEQUENT_
#include 
#else /* _SEQUENT_ */
#ifdef __MWERKS__
#   include 
#else
#include 
#endif
#endif /* _SEQUENT_ */
#endif /* WIN32 else */
#endif /* defined(_POSIX_SOURCE) && defined(SVR4) */

#endif /* SYSV */

/* define X_GETTIMEOFDAY macro, a portable gettimeofday() */
#if defined(SVR4) || defined(VMS) || defined(WIN32)
#define X_GETTIMEOFDAY(t) gettimeofday(t)
#else
#define X_GETTIMEOFDAY(t) gettimeofday(t, (struct timezone*)0)
#endif

/* use POSIX name for signal */
#if defined(X_NOT_POSIX) && defined(SYSV) && !defined(SIGCHLD)
#define SIGCHLD SIGCLD
#endif

#ifdef ISC
#include 
#endif

#endif /* _XOS_H_ */

--- NEW FILE: Xlib.h ---
/* $XConsortium: Xlib.h,v 11.237 94/09/01 18:44:49 kaleb Exp $ */
/* 

Copyright (c) 1985, 1986, 1987, 1991  X Consortium

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
[...4627 lines suppressed...]

extern Status XAddConnectionWatch(
#if NeedFunctionPrototypes
    Display*			/* dpy */,
    XConnectionWatchProc	/* callback */,
    XPointer			/* client_data */
#endif
);

extern void XRemoveConnectionWatch(
#if NeedFunctionPrototypes
    Display*			/* dpy */,
    XConnectionWatchProc	/* callback */,
    XPointer			/* client_data */
#endif
);

_XFUNCPROTOEND

#endif /* _XLIB_H_ */


From ebala at helixcommunity.org  Thu Sep 10 11:35:22 2009
From: ebala at helixcommunity.org (ebala@helixcommunity.org)
Date: Thu Sep 10 20:38:18 2009
Subject: [Common-cvs] import/imagemagick/xlib/X11 cursorfont.h, 1.1,
	1.2 keysym.h, 1.1, 1.2 keysymdef.h, 1.1, 1.2 X.h, 1.1,
	1.2 Xatom.h, 1.1, 1.2 Xfuncproto.h, 1.1, 1.2 Xlib.h, 1.1,
	1.2 Xlocale.h, 1.1, 1.2 Xmd.h, 1.1, 1.2 Xos.h, 1.1,
	1.2 Xosdefs.h, 1.1, 1.2 Xproto.h, 1.1, 1.2 Xprotostr.h, 1.1,
	1.2 Xresource.h, 1.1, 1.2 Xutil.h, 1.1, 1.2 Xw32defs.h, 1.1,
	1.2 XWDFile.h, 1.1, 1.2
Message-ID: 

Update of /cvsroot/common/import/imagemagick/xlib/X11
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv27835

Added Files:
	cursorfont.h keysym.h keysymdef.h X.h Xatom.h Xfuncproto.h 
	Xlib.h Xlocale.h Xmd.h Xos.h Xosdefs.h Xproto.h Xprotostr.h 
	Xresource.h Xutil.h Xw32defs.h XWDFile.h 
Log Message:
Import of Imagemagick

--- NEW FILE: XWDFile.h ---
/* $XConsortium: XWDFile.h,v 1.17 94/04/17 20:10:49 dpw Exp $ */
/*

Copyright (c) 1985, 1986  X Consortium

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Except as contained in this notice, the name of the X Consortium shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from the X Consortium.

*/

/*
 * XWDFile.h	MIT Project Athena, X Window system window raster
 *		image dumper, dump file format header file.
 *
 *  Author:	Tony Della Fera, DEC
 *		27-Jun-85
 *
 * Modifier:    William F. Wyatt, SAO
 *              18-Nov-86  - version 6 for saving/restoring color maps
 */

#if !defined(macintosh)
#include 
#else
#include 
#endif

#define XWD_FILE_VERSION 7
#ifdef WORD64
#define sz_XWDheader 104
#else
#define sz_XWDheader 100
#endif

#ifdef PRE_R6_ICCCM
#define sz_XWDColor sizeof(XColor)
#else
#define sz_XWDColor 12
#endif

typedef CARD32 xwdval;          /* for old broken programs */

/* Values in the file are most significant byte first. */

typedef struct _xwd_file_header {
	/* header_size = SIZEOF(XWDheader) + length of null-terminated
	 * window name. */
	CARD32 header_size B32;		

	CARD32 file_version B32;	/* = XWD_FILE_VERSION above */
	CARD32 pixmap_format B32;	/* ZPixmap or XYPixmap */
	CARD32 pixmap_depth B32;	/* Pixmap depth */
	CARD32 pixmap_width B32;	/* Pixmap width */
	CARD32 pixmap_height B32;	/* Pixmap height */
	CARD32 xoffset B32;		/* Bitmap x offset, normally 0 */
	CARD32 byte_order B32;		/* of image data: MSBFirst, LSBFirst */

	/* bitmap_unit applies to bitmaps (depth 1 format XY) only.
	 * It is the number of bits that each scanline is padded to. */
	CARD32 bitmap_unit B32;		

	CARD32 bitmap_bit_order B32;	/* bitmaps only: MSBFirst, LSBFirst */

	/* bitmap_pad applies to pixmaps (non-bitmaps) only.
	 * It is the number of bits that each scanline is padded to. */
	CARD32 bitmap_pad B32;		

	CARD32 bits_per_pixel B32;	/* Bits per pixel */

	/* bytes_per_line is pixmap_width padded to bitmap_unit (bitmaps)
	 * or bitmap_pad (pixmaps).  It is the delta (in bytes) to get
	 * to the same x position on an adjacent row. */
	CARD32 bytes_per_line B32;
	CARD32 visual_class B32;	/* Class of colormap */
	CARD32 red_mask B32;		/* Z red mask */
	CARD32 green_mask B32;		/* Z green mask */
	CARD32 blue_mask B32;		/* Z blue mask */
	CARD32 bits_per_rgb B32;	/* Log2 of distinct color values */
	CARD32 colormap_entries B32;	/* Number of entries in colormap; not used? */
	CARD32 ncolors B32;		/* Number of XWDColor structures */
	CARD32 window_width B32;	/* Window width */
	CARD32 window_height B32;	/* Window height */
	CARD32 window_x B32;		/* Window upper left X coordinate */
	CARD32 window_y B32;		/* Window upper left Y coordinate */
	CARD32 window_bdrwidth B32;	/* Window border width */
#ifdef WORD64
	CARD32 header_end B32;          /* Pad to fill out word */
#endif
} XWDFileHeader;

/* Null-terminated window name follows the above structure. */

/* Next comes XWDColor structures, at offset XWDFileHeader.header_size in
 * the file.  XWDFileHeader.ncolors tells how many XWDColor structures
 * there are.
 */

#ifdef PRE_R6_ICCCM
typedef XColor XWDColor;
#else
typedef struct {
        CARD32	pixel B32;
        CARD16	red B16;
	CARD16	green B16;
	CARD16	blue B16;
        CARD8	flags;
        CARD8	pad;
} XWDColor;
#endif

/* Last comes the image data in the format described by XWDFileHeader. */

--- NEW FILE: Xmd.h ---
/***********************************************************

Copyright (c) 1987  X Consortium

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Except as contained in this notice, the name of the X Consortium shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from the X Consortium.


Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.

                        All Rights Reserved

Permission to use, copy, modify, and distribute this software and its 
documentation for any purpose and without fee is hereby granted, 
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in 
supporting documentation, and that the name of Digital not be
used in advertising or publicity pertaining to distribution of the
software without specific, written prior permission.  

DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.

******************************************************************/
#ifndef XMD_H
#define XMD_H 1
/* $XConsortium: Xmd.h,v 1.47 94/04/17 20:10:50 rws Exp $ */
/*
 *  Xmd.h: MACHINE DEPENDENT DECLARATIONS.
 */

/*
 * Special per-machine configuration flags.
 */
#ifdef CRAY
#define WORD64				/* 64-bit architecture */
#endif
#ifdef __alpha
#define LONG64				/* 32/64-bit architecture */
#endif

/*
 * Stuff to handle large architecture machines; the constants were generated
 * on a 32-bit machine and must coorespond to the protocol.
 */
#ifdef WORD64
#define MUSTCOPY
#endif /* WORD64 */


/*
 * Definition of macro used to set constants for size of network structures;
 * machines with preprocessors that can't handle all of the sz_ symbols
 * can define this macro to be sizeof(x) if and only if their compiler doesn't
 * pad out structures (esp. the xTextElt structure which contains only two 
 * one-byte fields).  Network structures should always define sz_symbols.
 *
 * The sz_ prefix is used instead of something more descriptive so that the
 * symbols are no more than 32 characters long (which causes problems for some
 * compilers and preprocessors).
 *
 * The extra indirection in the __STDC__ case is to get macro arguments to
 * expand correctly before the concatenation, rather than afterward.
 */
#if ((__STDC__ || defined(__cplusplus) || defined(c_plusplus)) && !defined(UNIXCPP)) || defined(ANSICPP)
#define _SIZEOF(x) sz_##x
#define SIZEOF(x) _SIZEOF(x)
#else
#define SIZEOF(x) sz_/**/x
#endif /* if ANSI C compiler else not */

/*
 * Bitfield suffixes for the protocol structure elements, if you
 * need them.  Note that bitfields are not guarranteed to be signed
 * (or even unsigned) according to ANSI C.
 */
#ifdef WORD64
typedef long INT64;
typedef unsigned long CARD64;
#define B32 :32
#define B16 :16
#ifdef UNSIGNEDBITFIELDS
typedef unsigned int INT32;
typedef unsigned int INT16;
#else
#if __STDC__
typedef signed int INT32;
typedef signed int INT16;
#else
typedef int INT32;
typedef int INT16;
#endif
#endif
#else
#define B32
#define B16
#ifdef LONG64
typedef long INT64;
typedef int INT32;
#else
typedef long INT32;
#endif
typedef short INT16;
#endif

#if __STDC__ || defined(sgi) || defined(AIXV3)
typedef signed char    INT8;
#else
typedef char           INT8;
#endif

#ifdef LONG64
typedef unsigned long CARD64;
typedef unsigned int CARD32;
#else
typedef unsigned long CARD32;
#endif
typedef unsigned short CARD16;
typedef unsigned char  CARD8;

typedef CARD32		BITS32;
typedef CARD16		BITS16;
typedef CARD8		BYTE;

/* typedef CARD8           BOOL; */


/*
 * definitions for sign-extending bitfields on 64-bit architectures
 */
#if defined(WORD64) && defined(UNSIGNEDBITFIELDS)
#define cvtINT8toInt(val)   (((val) & 0x00000080) ? ((val) | 0xffffffffffffff00) : (val))
#define cvtINT16toInt(val)  (((val) & 0x00008000) ? ((val) | 0xffffffffffff0000) : (val))
#define cvtINT32toInt(val)  (((val) & 0x80000000) ? ((val) | 0xffffffff00000000) : (val))
#define cvtINT8toShort(val)  cvtINT8toInt(val)
#define cvtINT16toShort(val) cvtINT16toInt(val)
#define cvtINT32toShort(val) cvtINT32toInt(val)
#define cvtINT8toLong(val)  cvtINT8toInt(val)
#define cvtINT16toLong(val) cvtINT16toInt(val)
#define cvtINT32toLong(val) cvtINT32toInt(val)
#else
#define cvtINT8toInt(val) (val)
#define cvtINT16toInt(val) (val)
#define cvtINT32toInt(val) (val)
#define cvtINT8toShort(val) (val)
#define cvtINT16toShort(val) (val)
#define cvtINT32toShort(val) (val)
#define cvtINT8toLong(val) (val)
#define cvtINT16toLong(val) (val)
#define cvtINT32toLong(val) (val)
#endif /* WORD64 and UNSIGNEDBITFIELDS */



#ifdef MUSTCOPY
/*
 * This macro must not cast or else pointers will get aligned and be wrong
 */
#define NEXTPTR(p,t)  (((char *) p) + SIZEOF(t))
#else /* else not MUSTCOPY, this is used for 32-bit machines */
/*
 * this version should leave result of type (t *), but that should only be 
 * used when not in MUSTCOPY
 */  
#define NEXTPTR(p,t) (((t *)(p)) + 1)
#endif /* MUSTCOPY - used machines whose C structs don't line up with proto */

#endif /* XMD_H */

--- NEW FILE: Xatom.h ---
#ifndef XATOM_H
#define XATOM_H 1

/* THIS IS A GENERATED FILE
 *
 * Do not change!  Changing this file implies a protocol change!
 */

#define XA_PRIMARY ((Atom) 1)
#define XA_SECONDARY ((Atom) 2)
#define XA_ARC ((Atom) 3)
#define XA_ATOM ((Atom) 4)
#define XA_BITMAP ((Atom) 5)
#define XA_CARDINAL ((Atom) 6)
#define XA_COLORMAP ((Atom) 7)
#define XA_CURSOR ((Atom) 8)
#define XA_CUT_BUFFER0 ((Atom) 9)
#define XA_CUT_BUFFER1 ((Atom) 10)
#define XA_CUT_BUFFER2 ((Atom) 11)
#define XA_CUT_BUFFER3 ((Atom) 12)
#define XA_CUT_BUFFER4 ((Atom) 13)
#define XA_CUT_BUFFER5 ((Atom) 14)
#define XA_CUT_BUFFER6 ((Atom) 15)
#define XA_CUT_BUFFER7 ((Atom) 16)
#define XA_DRAWABLE ((Atom) 17)
#define XA_FONT ((Atom) 18)
#define XA_INTEGER ((Atom) 19)
#define XA_PIXMAP ((Atom) 20)
#define XA_POINT ((Atom) 21)
#define XA_RECTANGLE ((Atom) 22)
#define XA_RESOURCE_MANAGER ((Atom) 23)
#define XA_RGB_COLOR_MAP ((Atom) 24)
#define XA_RGB_BEST_MAP ((Atom) 25)
#define XA_RGB_BLUE_MAP ((Atom) 26)
#define XA_RGB_DEFAULT_MAP ((Atom) 27)
#define XA_RGB_GRAY_MAP ((Atom) 28)
#define XA_RGB_GREEN_MAP ((Atom) 29)
#define XA_RGB_RED_MAP ((Atom) 30)
#define XA_STRING ((Atom) 31)
#define XA_VISUALID ((Atom) 32)
#define XA_WINDOW ((Atom) 33)
#define XA_WM_COMMAND ((Atom) 34)
#define XA_WM_HINTS ((Atom) 35)
#define XA_WM_CLIENT_MACHINE ((Atom) 36)
#define XA_WM_ICON_NAME ((Atom) 37)
#define XA_WM_ICON_SIZE ((Atom) 38)
#define XA_WM_NAME ((Atom) 39)
#define XA_WM_NORMAL_HINTS ((Atom) 40)
#define XA_WM_SIZE_HINTS ((Atom) 41)
#define XA_WM_ZOOM_HINTS ((Atom) 42)
#define XA_MIN_SPACE ((Atom) 43)
#define XA_NORM_SPACE ((Atom) 44)
#define XA_MAX_SPACE ((Atom) 45)
#define XA_END_SPACE ((Atom) 46)
#define XA_SUPERSCRIPT_X ((Atom) 47)
#define XA_SUPERSCRIPT_Y ((Atom) 48)
#define XA_SUBSCRIPT_X ((Atom) 49)
#define XA_SUBSCRIPT_Y ((Atom) 50)
#define XA_UNDERLINE_POSITION ((Atom) 51)
#define XA_UNDERLINE_THICKNESS ((Atom) 52)
#define XA_STRIKEOUT_ASCENT ((Atom) 53)
#define XA_STRIKEOUT_DESCENT ((Atom) 54)
#define XA_ITALIC_ANGLE ((Atom) 55)
#define XA_X_HEIGHT ((Atom) 56)
#define XA_QUAD_WIDTH ((Atom) 57)
#define XA_WEIGHT ((Atom) 58)
#define XA_POINT_SIZE ((Atom) 59)
#define XA_RESOLUTION ((Atom) 60)
#define XA_COPYRIGHT ((Atom) 61)
#define XA_NOTICE ((Atom) 62)
#define XA_FONT_NAME ((Atom) 63)
#define XA_FAMILY_NAME ((Atom) 64)
#define XA_FULL_NAME ((Atom) 65)
#define XA_CAP_HEIGHT ((Atom) 66)
#define XA_WM_CLASS ((Atom) 67)
#define XA_WM_TRANSIENT_FOR ((Atom) 68)

#define XA_LAST_PREDEFINED ((Atom) 68)
#endif /* XATOM_H */

--- NEW FILE: cursorfont.h ---
/* $XConsortium: cursorfont.h,v 1.4 94/04/17 20:22:00 rws Exp $ */
/*

Copyright (c) 1987  X Consortium

Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:

The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.

Except as contained in this notice, the name of the X Consortium shall
not be used in advertising or otherwise to promote the sale, use or
other dealings in this Software without prior written authorization
from the X Consortium.

*/

#define XC_num_glyphs 154
#define XC_X_cursor 0
#define XC_arrow 2
#define XC_based_arrow_down 4
#define XC_based_arrow_up 6
#define XC_boat 8
#define XC_bogosity 10
#define XC_bottom_left_corner 12
#define XC_bottom_right_corner 14
#define XC_bottom_side 16
#define XC_bottom_tee 18
#define XC_box_spiral 20
#define XC_center_ptr 22
#define XC_circle 24
#define XC_clock 26
#define XC_coffee_mug 28
#define XC_cross 30
#define XC_cross_reverse 32
#define XC_crosshair 34
#define XC_diamond_cross 36
#define XC_dot 38
#define XC_dotbox 40
#define XC_double_arrow 42
#define XC_draft_large 44
#define XC_draft_small 46
#define XC_draped_box 48
#define XC_exchange 50
#define XC_fleur 52
#define XC_gobbler 54
#define XC_gumby 56
#define XC_hand1 58
#define XC_hand2 60
#define XC_heart 62
#define XC_icon 64
#define XC_iron_cross 66
#define XC_left_ptr 68
#define XC_left_side 70
#define XC_left_tee 72
#define XC_leftbutton 74
#define XC_ll_angle 76
#define XC_lr_angle 78
#define XC_man 80
#define XC_middlebutton 82
#define XC_mouse 84
#define XC_pencil 86
#define XC_pirate 88
#define XC_plus 90
#define XC_question_arrow 92
#define XC_right_ptr 94
#define XC_right_side 96
#define XC_right_tee 98
#define XC_rightbutton 100
#define XC_rtl_logo 102
#define XC_sailboat 104
#define XC_sb_down_arrow 106
#define XC_sb_h_double_arrow 108
#define XC_sb_left_arrow 110
#define XC_sb_right_arrow 112
#define XC_sb_up_arrow 114
#define XC_sb_v_double_arrow 116
#define XC_shuttle 118
#define XC_sizing 120
#define XC_spider 122
#define XC_spraycan 124
#define XC_star 126
#define XC_target 128
#define XC_tcross 130
#define XC_top_left_arrow 132
#define XC_top_left_corner 134
#define XC_top_right_corner 136
#define XC_top_side 138
#define XC_top_tee 140
#define XC_trek 142
#define XC_ul_angle 144
#define XC_umbrella 146
#define XC_ur_angle 148
#define XC_watch 150
#define XC_xterm 152

--- NEW FILE: Xlocale.h ---
/* $XConsortium: Xlocale.h,v 1.10 94/04/17 20:21:51 rws Exp $ */
/*

Copyright (c) 1991  X Consortium

Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:

The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.

Except as contained in this notice, the name of the X Consortium shall
not be used in advertising or otherwise to promote the sale, use or
other dealings in this Software without prior written authorization
from the X Consortium.

*/

#ifndef _XLOCALE_H_
#define _XLOCALE_H_

#include 
#include 

#ifndef X_LOCALE
#ifdef X_NOT_STDC_ENV
#define X_LOCALE
#endif
#endif

#ifndef X_LOCALE
#include 
#else

#define LC_ALL      0
#define LC_COLLATE  1
#define LC_CTYPE    2
#define LC_MONETARY 3
#define LC_NUMERIC  4
#define LC_TIME     5

_XFUNCPROTOBEGIN
extern char *_Xsetlocale(
#if NeedFunctionPrototypes
    int /* category */,
    _Xconst char* /* name */
#endif
);
_XFUNCPROTOEND

#define setlocale _Xsetlocale

#ifndef NULL
#define NULL 0
#endif

#endif /* X_LOCALE */

#endif /* _XLOCALE_H_ */

--- NEW FILE: Xosdefs.h ---
/*
 * O/S-dependent (mis)feature macro definitions
 *
 * $XConsortium: Xosdefs.h,v 1.14 94/11/30 20:48:05 kaleb Exp $
 *
Copyright (c) 1991  X Consortium

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Except as contained in this notice, the name of the X Consortium shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from the X Consortium.
 */

#ifndef _XOSDEFS_H_
#define _XOSDEFS_H_

/*
 * X_NOT_STDC_ENV means does not have ANSI C header files.  Lack of this
 * symbol does NOT mean that the system has stdarg.h.
 *
 * X_NOT_POSIX means does not have POSIX header files.  Lack of this
 * symbol does NOT mean that the POSIX environment is the default.
 * You may still have to define _POSIX_SOURCE to get it.
 */

#ifdef NOSTDHDRS
#define X_NOT_POSIX
#define X_NOT_STDC_ENV
#endif

#ifdef sony
#if !defined(SYSTYPE_SYSV) && !defined(_SYSTYPE_SYSV)
#define X_NOT_POSIX
#endif
#endif

#ifdef UTEK
#define X_NOT_POSIX
#define X_NOT_STDC_ENV
#endif

#ifdef vax
#ifndef ultrix			/* assume vanilla BSD */
#define X_NOT_POSIX
#define X_NOT_STDC_ENV
#endif
#endif

#ifdef luna
#define X_NOT_POSIX
#define X_NOT_STDC_ENV
#endif

#ifdef Mips
#define X_NOT_POSIX
#define X_NOT_STDC_ENV
#endif
  
#ifdef USL
#ifdef SYSV /* (release 3.2) */
#define X_NOT_POSIX
#define X_NOT_STDC_ENV
#endif
#endif

#ifdef i386
#ifdef SYSV
#define X_NOT_POSIX
#define X_NOT_STDC_ENV
#endif
#endif

#ifdef MOTOROLA
#ifdef SYSV
#define X_NOT_STDC_ENV
#endif
#endif

#ifdef sun
#ifdef SVR4
/* define this to whatever it needs to be */
#define X_POSIX_C_SOURCE 199300L
#endif
#endif

#ifdef WIN32
#ifndef _POSIX_
#define X_NOT_POSIX
#endif
#endif

#if defined(nec_ews_svr2) || defined(SX) || defined(PC_UX)
#define X_NOT_POSIX
#define X_NOT_STDC_ENV
#endif

#endif /* _XOSDEFS_H_ */

--- NEW FILE: Xfuncproto.h ---
/* $XConsortium: Xfuncproto.h,v 1.8 94/04/17 20:10:49 rws Exp $ */
/* 
 * 
Copyright (c) 1989, 1991  X Consortium

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Except as contained in this notice, the name of the X Consortium shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from the X Consortium.
 *
 */

/* Definitions to make function prototypes manageable */

#ifndef _XFUNCPROTO_H_
#define _XFUNCPROTO_H_

#ifndef NeedFunctionPrototypes
#if defined(FUNCPROTO) || __STDC__ || defined(__cplusplus) || defined(c_plusplus)
#define NeedFunctionPrototypes 1
#else
#define NeedFunctionPrototypes 0
#endif
#endif /* NeedFunctionPrototypes */

#ifndef NeedVarargsPrototypes
#if __STDC__ || defined(__cplusplus) || defined(c_plusplus) || (FUNCPROTO&2)
#define NeedVarargsPrototypes 1
#else
#define NeedVarargsPrototypes 0
#endif
#endif /* NeedVarargsPrototypes */

#if NeedFunctionPrototypes

#ifndef NeedNestedPrototypes
#if __STDC__ || defined(__cplusplus) || defined(c_plusplus) || (FUNCPROTO&8)
#define NeedNestedPrototypes 1
#else
#define NeedNestedPrototypes 0
#endif
#endif /* NeedNestedPrototypes */

#ifndef _Xconst
#if __STDC__ || defined(__cplusplus) || defined(c_plusplus) || (FUNCPROTO&4)
#define _Xconst const
#else
#define _Xconst
#endif
#endif /* _Xconst */

#ifndef NeedWidePrototypes
#ifdef NARROWPROTO
#define NeedWidePrototypes 0
#else
#define NeedWidePrototypes 1		/* default to make interropt. easier */
#endif
#endif /* NeedWidePrototypes */

#endif /* NeedFunctionPrototypes */

#ifndef _XFUNCPROTOBEGIN
#ifdef __cplusplus			/* for C++ V2.0 */
#define _XFUNCPROTOBEGIN extern "C" {	/* do not leave open across includes */
#define _XFUNCPROTOEND }
#else
#define _XFUNCPROTOBEGIN
#define _XFUNCPROTOEND
#endif
#endif /* _XFUNCPROTOBEGIN */

#endif /* _XFUNCPROTO_H_ */

--- NEW FILE: keysym.h ---
/* $XConsortium: keysym.h,v 1.15 94/04/17 20:10:55 rws Exp $ */

/***********************************************************

Copyright (c) 1987  X Consortium

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Except as contained in this notice, the name of the X Consortium shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from the X Consortium.


Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.

                        All Rights Reserved

Permission to use, copy, modify, and distribute this software and its 
documentation for any purpose and without fee is hereby granted, 
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in 
supporting documentation, and that the name of Digital not be
used in advertising or publicity pertaining to distribution of the
software without specific, written prior permission.  

DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.

******************************************************************/

/* default keysyms */
#define XK_MISCELLANY
#define XK_XKB_KEYS
#define XK_LATIN1
#define XK_LATIN2
#define XK_LATIN3
#define XK_LATIN4
#define XK_GREEK

#ifdef __MWERKS__
#include 
#else
#include 
#endif

--- NEW FILE: Xw32defs.h ---



--- NEW FILE: keysymdef.h ---
/* $XConsortium: keysymdef.h,v 1.21 94/08/28 16:17:06 rws Exp $ */

/***********************************************************
Copyright (c) 1987, 1994  X Consortium

Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:

The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
[...1513 lines suppressed...]
#define XK_Hangul_SunkyeongeumMieum			0xef0
#define XK_Hangul_SunkyeongeumPieub			0xef1
#define XK_Hangul_PanSios				0xef2
#define XK_Hangul_KkogjiDalrinIeung			0xef3
#define XK_Hangul_SunkyeongeumPhieuf			0xef4
#define XK_Hangul_YeorinHieuh				0xef5

/* Ancient Hangul Vowel Characters */
#define XK_Hangul_AraeA					0xef6
#define XK_Hangul_AraeAE				0xef7

/* Ancient Hangul syllable-final (JongSeong) Characters */
#define XK_Hangul_J_PanSios				0xef8
#define XK_Hangul_J_KkogjiDalrinIeung			0xef9
#define XK_Hangul_J_YeorinHieuh				0xefa

/* Korean currency symbol */
#define XK_Korean_Won					0xeff

#endif /* XK_KOREAN */

--- NEW FILE: Xprotostr.h ---
/* $XConsortium: Xprotostr.h,v 1.5 94/04/17 20:10:53 rws Exp $ */
#ifndef XPROTOSTRUCTS_H
#define XPROTOSTRUCTS_H

/***********************************************************

Copyright (c) 1987  X Consortium

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Except as contained in this notice, the name of the X Consortium shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from the X Consortium.


Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.

                        All Rights Reserved

Permission to use, copy, modify, and distribute this software and its 
documentation for any purpose and without fee is hereby granted, 
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in 
supporting documentation, and that the name of Digital not be
used in advertising or publicity pertaining to distribution of the
software without specific, written prior permission.  

DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.

******************************************************************/
#ifdef __MWERKS__
#include 
#else
#include 
#endif

/* Used by PolySegment */

typedef struct _xSegment {
    INT16 x1 B16, y1 B16, x2 B16, y2 B16;
} xSegment;

/* POINT */

typedef struct _xPoint {
	INT16		x B16, y B16;
} xPoint;

typedef struct _xRectangle {
    INT16 x B16, y B16;
    CARD16  width B16, height B16;
} xRectangle;

/*  ARC  */

typedef struct _xArc {
    INT16 x B16, y B16;
    CARD16   width B16, height B16;
    INT16   angle1 B16, angle2 B16;
} xArc;

#endif /* XPROTOSTRUCTS_H */

--- NEW FILE: Xproto.h ---
/*
 *	$XConsortium: Xproto.h,v 1.89 94/04/17 20:10:52 rws Exp $
 */

/* Definitions for the X window system used by server and c bindings */

/*
 * This packet-construction scheme makes the following assumptions:
 *
 * 1. The compiler is able
 * to generate code which addresses one- and two-byte quantities.
 * In the worst case, this would be done with bit-fields.  If bit-fields
 * are used it may be necessary to reorder the request fields in this file,
 * depending on the order in which the machine assigns bit fields to
 * machine words.  There may also be a problem with sign extension,
 * as K+R specify that bitfields are always unsigned.
 *
 * 2. 2- and 4-byte fields in packet structures must be ordered by hand
 * such that they are naturally-aligned, so that no compiler will ever
[...2116 lines suppressed...]
#define X_GetPointerMapping            117
#define X_SetModifierMapping	       118
#define X_GetModifierMapping	       119
#define X_NoOperation                  127

/* restore these definitions back to the typedefs in X.h */
#undef Window
#undef Drawable
#undef Font
#undef Pixmap
/*#undef Cursor*/
#undef Colormap
#undef GContext
#undef Atom
#undef VisualID
#undef Time
#undef KeyCode
#undef KeySym

#endif /* XPROTO_H */

--- NEW FILE: Xutil.h ---
/* $XConsortium: Xutil.h,v 11.78 94/04/17 20:21:56 rws Exp $ */

/***********************************************************

Copyright (c) 1987  X Consortium

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Except as contained in this notice, the name of the X Consortium shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from the X Consortium.


Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.

                        All Rights Reserved

Permission to use, copy, modify, and distribute this software and its 
documentation for any purpose and without fee is hereby granted, 
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in 
supporting documentation, and that the name of Digital not be
used in advertising or publicity pertaining to distribution of the
software without specific, written prior permission.  

DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.

******************************************************************/

#ifndef _XUTIL_H_
#define _XUTIL_H_

#ifdef __MWERKS__
#   define Region XRegion
#endif


/* You must include  before including this file */

/* 
 * Bitmask returned by XParseGeometry().  Each bit tells if the corresponding
 * value (x, y, width, height) was found in the parsed string.
 */
#define NoValue		0x0000
#define XValue  	0x0001
#define YValue		0x0002
#define WidthValue  	0x0004
#define HeightValue  	0x0008
#define AllValues 	0x000F
#define XNegative 	0x0010
#define YNegative 	0x0020

/*
 * new version containing base_width, base_height, and win_gravity fields;
 * used with WM_NORMAL_HINTS.
 */
typedef struct {
    	long flags;	/* marks which fields in this structure are defined */
	int x, y;		/* obsolete for new window mgrs, but clients */
	int width, height;	/* should set so old wm's don't mess up */
	int min_width, min_height;
	int max_width, max_height;
    	int width_inc, height_inc;
	struct {
		int x;	/* numerator */
		int y;	/* denominator */
	} min_aspect, max_aspect;
	int base_width, base_height;		/* added by ICCCM version 1 */
	int win_gravity;			/* added by ICCCM version 1 */
} XSizeHints;

/*
 * The next block of definitions are for window manager properties that
 * clients and applications use for communication.
 */

/* flags argument in size hints */
#define USPosition	(1L << 0) /* user specified x, y */
#define USSize		(1L << 1) /* user specified width, height */

#define PPosition	(1L << 2) /* program specified position */
#define PSize		(1L << 3) /* program specified size */
#define PMinSize	(1L << 4) /* program specified minimum size */
#define PMaxSize	(1L << 5) /* program specified maximum size */
#define PResizeInc	(1L << 6) /* program specified resize increments */
#define PAspect		(1L << 7) /* program specified min and max aspect ratios */
#define PBaseSize	(1L << 8) /* program specified base for incrementing */
#define PWinGravity	(1L << 9) /* program specified window gravity */

/* obsolete */
#define PAllHints (PPosition|PSize|PMinSize|PMaxSize|PResizeInc|PAspect)



typedef struct {
	long flags;	/* marks which fields in this structure are defined */
	Bool input;	/* does this application rely on the window manager to
			get keyboard input? */
	int initial_state;	/* see below */
	Pixmap icon_pixmap;	/* pixmap to be used as icon */
	Window icon_window; 	/* window to be used as icon */
	int icon_x, icon_y; 	/* initial position of icon */
	Pixmap icon_mask;	/* icon mask bitmap */
	XID window_group;	/* id of related window group */
	/* this structure may be extended in the future */
} XWMHints;

/* definition for flags of XWMHints */

#define InputHint 		(1L << 0)
#define StateHint 		(1L << 1)
#define IconPixmapHint		(1L << 2)
#define IconWindowHint		(1L << 3)
#define IconPositionHint 	(1L << 4)
#define IconMaskHint		(1L << 5)
#define WindowGroupHint		(1L << 6)
#define AllHints (InputHint|StateHint|IconPixmapHint|IconWindowHint| \
IconPositionHint|IconMaskHint|WindowGroupHint)
#define XUrgencyHint		(1L << 8)

/* definitions for initial window state */
#define WithdrawnState 0	/* for windows that are not mapped */
#define NormalState 1	/* most applications want to start this way */
#define IconicState 3	/* application wants to start as an icon */

/*
 * Obsolete states no longer defined by ICCCM
 */
#define DontCareState 0	/* don't know or care */
#define ZoomState 2	/* application wants to start zoomed */
#define InactiveState 4	/* application believes it is seldom used; */
			/* some wm's may put it on inactive menu */


/*
 * new structure for manipulating TEXT properties; used with WM_NAME, 
 * WM_ICON_NAME, WM_CLIENT_MACHINE, and WM_COMMAND.
 */
typedef struct {
    unsigned char *value;		/* same as Property routines */
    Atom encoding;			/* prop type */
    int format;				/* prop data format: 8, 16, or 32 */
    unsigned long nitems;		/* number of data items in value */
} XTextProperty;

#define XNoMemory -1
#define XLocaleNotSupported -2
#define XConverterNotFound -3

typedef enum {
    XStringStyle,		/* STRING */
    XCompoundTextStyle,		/* COMPOUND_TEXT */
    XTextStyle,			/* text in owner's encoding (current locale)*/
    XStdICCTextStyle		/* STRING, else COMPOUND_TEXT */
} XICCEncodingStyle;

typedef struct {
	int min_width, min_height;
	int max_width, max_height;
	int width_inc, height_inc;
} XIconSize;

typedef struct {
	char *res_name;
	char *res_class;
} XClassHint;

/*
 * These macros are used to give some sugar to the image routines so that
 * naive people are more comfortable with them.
 */
#define XDestroyImage(ximage) \
	((*((ximage)->f.destroy_image))((ximage)))
#define XGetPixel(ximage, x, y) \
	((*((ximage)->f.get_pixel))((ximage), (x), (y)))
#define XPutPixel(ximage, x, y, pixel) \
	((*((ximage)->f.put_pixel))((ximage), (x), (y), (pixel)))
#define XSubImage(ximage, x, y, width, height)  \
	((*((ximage)->f.sub_image))((ximage), (x), (y), (width), (height)))
#define XAddPixel(ximage, value) \
	((*((ximage)->f.add_pixel))((ximage), (value)))

/*
 * Compose sequence status structure, used in calling XLookupString.
 */
typedef struct _XComposeStatus {
    XPointer compose_ptr;	/* state table pointer */
    int chars_matched;		/* match state */
} XComposeStatus;

/*
 * Keysym macros, used on Keysyms to test for classes of symbols
 */
#define IsKeypadKey(keysym) \
  (((KeySym)(keysym) >= XK_KP_Space) && ((KeySym)(keysym) <= XK_KP_Equal))

#define IsPrivateKeypadKey(keysym) \
  (((KeySym)(keysym) >= 0x11000000) && ((KeySym)(keysym) <= 0x1100FFFF))

#define IsCursorKey(keysym) \
  (((KeySym)(keysym) >= XK_Home)     && ((KeySym)(keysym) <  XK_Select))

#define IsPFKey(keysym) \
  (((KeySym)(keysym) >= XK_KP_F1)     && ((KeySym)(keysym) <= XK_KP_F4))

#define IsFunctionKey(keysym) \
  (((KeySym)(keysym) >= XK_F1)       && ((KeySym)(keysym) <= XK_F35))

#define IsMiscFunctionKey(keysym) \
  (((KeySym)(keysym) >= XK_Select)   && ((KeySym)(keysym) <= XK_Break))

#define IsModifierKey(keysym) \
  ((((KeySym)(keysym) >= XK_Shift_L) && ((KeySym)(keysym) <= XK_Hyper_R)) \
   || ((KeySym)(keysym) == XK_Mode_switch) \
   || ((KeySym)(keysym) == XK_Num_Lock))
/*
 * opaque reference to Region data type 
 */
typedef struct _XRegion *Region; 

/* Return values from XRectInRegion() */
 
#define RectangleOut 0
#define RectangleIn  1
#define RectanglePart 2
 

/*
 * Information used by the visual utility routines to find desired visual
 * type from the many visuals a display may support.
 */

typedef struct {
  Visual *visual;
  VisualID visualid;
  int screen;
  int depth;
#if defined(__cplusplus) || defined(c_plusplus)
  int c_class;					/* C++ */
#else
  int class;
#endif
  unsigned long red_mask;
  unsigned long green_mask;
  unsigned long blue_mask;
  int colormap_size;
  int bits_per_rgb;
} XVisualInfo;

#define VisualNoMask		0x0
#define VisualIDMask 		0x1
#define VisualScreenMask	0x2
#define VisualDepthMask		0x4
#define VisualClassMask		0x8
#define VisualRedMaskMask	0x10
#define VisualGreenMaskMask	0x20
#define VisualBlueMaskMask	0x40
#define VisualColormapSizeMask	0x80
#define VisualBitsPerRGBMask	0x100
#define VisualAllMask		0x1FF

/*
 * This defines a window manager property that clients may use to
 * share standard color maps of type RGB_COLOR_MAP:
 */
typedef struct {
	Colormap colormap;
	unsigned long red_max;
	unsigned long red_mult;
	unsigned long green_max;
	unsigned long green_mult;
	unsigned long blue_max;
	unsigned long blue_mult;
	unsigned long base_pixel;
	VisualID visualid;		/* added by ICCCM version 1 */
	XID killid;			/* added by ICCCM version 1 */
} XStandardColormap;

#define ReleaseByFreeingColormap ((XID) 1L)  /* for killid field above */


/*
 * return codes for XReadBitmapFile and XWriteBitmapFile
 */
#define BitmapSuccess		0
#define BitmapOpenFailed 	1
#define BitmapFileInvalid 	2
#define BitmapNoMemory		3

/****************************************************************
 *
 * Context Management
 *
 ****************************************************************/


/* Associative lookup table return codes */

#define XCSUCCESS 0	/* No error. */
#define XCNOMEM   1    /* Out of memory */
#define XCNOENT   2    /* No entry in table */

typedef int XContext;

#define XUniqueContext()       ((XContext) XrmUniqueQuark())
#define XStringToContext(string)   ((XContext) XrmStringToQuark(string))

_XFUNCPROTOBEGIN

/* The following declarations are alphabetized. */

extern XClassHint *XAllocClassHint (
#if NeedFunctionPrototypes
    void
#endif
);

extern XIconSize *XAllocIconSize (
#if NeedFunctionPrototypes
    void
#endif
);

extern XSizeHints *XAllocSizeHints (
#if NeedFunctionPrototypes
    void
#endif
);

extern XStandardColormap *XAllocStandardColormap (
#if NeedFunctionPrototypes
    void
#endif
);

extern XWMHints *XAllocWMHints (
#if NeedFunctionPrototypes
    void
#endif
);

extern XClipBox(
#if NeedFunctionPrototypes
    Region		/* r */,
    XRectangle*		/* rect_return */
#endif
);

extern Region XCreateRegion(
#if NeedFunctionPrototypes
    void
#endif
);

extern char *XDefaultString(
#if NeedFunctionPrototypes
    void
#endif
);

extern int XDeleteContext(
#if NeedFunctionPrototypes
    Display*		/* display */,
    XID			/* rid */,
    XContext		/* context */
#endif
);

extern XDestroyRegion(
#if NeedFunctionPrototypes
    Region		/* r */
#endif
);

extern XEmptyRegion(
#if NeedFunctionPrototypes
    Region		/* r */
#endif
);

extern XEqualRegion(
#if NeedFunctionPrototypes
    Region		/* r1 */,
    Region		/* r2 */
#endif
);

extern int XFindContext(
#if NeedFunctionPrototypes
    Display*		/* display */,
    XID			/* rid */,
    XContext		/* context */,
    XPointer*		/* data_return */
#endif
);

extern Status XGetClassHint(
#if NeedFunctionPrototypes
    Display*		/* display */,
    Window		/* w */,
    XClassHint*		/* class_hints_return */
#endif
);

extern Status XGetIconSizes(
#if NeedFunctionPrototypes
    Display*		/* display */,
    Window		/* w */,
    XIconSize**		/* size_list_return */,
    int*		/* count_return */
#endif
);

extern Status XGetNormalHints(
#if NeedFunctionPrototypes
    Display*		/* display */,
    Window		/* w */,
    XSizeHints*		/* hints_return */
#endif
);

extern Status XGetRGBColormaps(
#if NeedFunctionPrototypes
    Display*		/* display */,
    Window		/* w */,
    XStandardColormap** /* stdcmap_return */,
    int*		/* count_return */,
    Atom		/* property */
#endif
);

extern Status XGetSizeHints(
#if NeedFunctionPrototypes
    Display*		/* display */,
    Window		/* w */,
    XSizeHints*		/* hints_return */,
    Atom		/* property */
#endif
);

extern Status XGetStandardColormap(
#if NeedFunctionPrototypes
    Display*		/* display */,
    Window		/* w */,
    XStandardColormap*	/* colormap_return */,
    Atom		/* property */			    
#endif
);

extern Status XGetTextProperty(
#if NeedFunctionPrototypes
    Display*		/* display */,
    Window		/* window */,
    XTextProperty*	/* text_prop_return */,
    Atom		/* property */
#endif
);

extern XVisualInfo *XGetVisualInfo(
#if NeedFunctionPrototypes
    Display*		/* display */,
    long		/* vinfo_mask */,
    XVisualInfo*	/* vinfo_template */,
    int*		/* nitems_return */
#endif
);

extern Status XGetWMClientMachine(
#if NeedFunctionPrototypes
    Display*		/* display */,
    Window		/* w */,
    XTextProperty*	/* text_prop_return */
#endif
);

extern XWMHints *XGetWMHints(
#if NeedFunctionPrototypes
    Display*		/* display */,
    Window		/* w */		      
#endif
);

extern Status XGetWMIconName(
#if NeedFunctionPrototypes
    Display*		/* display */,
    Window		/* w */,
    XTextProperty*	/* text_prop_return */
#endif
);

extern Status XGetWMName(
#if NeedFunctionPrototypes
    Display*		/* display */,
    Window		/* w */,
    XTextProperty*	/* text_prop_return */
#endif
);

extern Status XGetWMNormalHints(
#if NeedFunctionPrototypes
    Display*		/* display */,
    Window		/* w */,
    XSizeHints*		/* hints_return */,
    long*		/* supplied_return */ 
#endif
);

extern Status XGetWMSizeHints(
#if NeedFunctionPrototypes
    Display*		/* display */,
    Window		/* w */,
    XSizeHints*		/* hints_return */,
    long*		/* supplied_return */,
    Atom		/* property */
#endif
);

extern Status XGetZoomHints(
#if NeedFunctionPrototypes
    Display*		/* display */,
    Window		/* w */,
    XSizeHints*		/* zhints_return */
#endif
);

extern XIntersectRegion(
#if NeedFunctionPrototypes
    Region		/* sra */,
    Region		/* srb */,
    Region		/* dr_return */
#endif
);

extern void XConvertCase(
#if NeedFunctionPrototypes
    KeySym		/* sym */,
    KeySym*		/* lower */,
    KeySym*		/* upper */
#endif
);

extern int XLookupString(
#if NeedFunctionPrototypes
    XKeyEvent*		/* event_struct */,
    char*		/* buffer_return */,
    int			/* bytes_buffer */,
    KeySym*		/* keysym_return */,
    XComposeStatus*	/* status_in_out */
#endif
);

extern Status XMatchVisualInfo(
#if NeedFunctionPrototypes
    Display*		/* display */,
    int			/* screen */,
    int			/* depth */,
    int			/* class */,
    XVisualInfo*	/* vinfo_return */
#endif
);

extern XOffsetRegion(
#if NeedFunctionPrototypes
    Region		/* r */,
    int			/* dx */,
    int			/* dy */
#endif
);

extern Bool XPointInRegion(
#if NeedFunctionPrototypes
    Region		/* r */,
    int			/* x */,
    int			/* y */
#endif
);

extern Region XPolygonRegion(
#if NeedFunctionPrototypes
    XPoint*		/* points */,
    int			/* n */,
    int			/* fill_rule */
#endif
);

extern int XRectInRegion(
#if NeedFunctionPrototypes
    Region		/* r */,
    int			/* x */,
    int			/* y */,
    unsigned int	/* width */,
    unsigned int	/* height */
#endif
);

extern int XSaveContext(
#if NeedFunctionPrototypes
    Display*		/* display */,
    XID			/* rid */,
    XContext		/* context */,
    _Xconst char*	/* data */
#endif
);

extern XSetClassHint(
#if NeedFunctionPrototypes
    Display*		/* display */,
    Window		/* w */,
    XClassHint*		/* class_hints */
#endif
);

extern XSetIconSizes(
#if NeedFunctionPrototypes
    Display*		/* display */,
    Window		/* w */,
    XIconSize*		/* size_list */,
    int			/* count */    
#endif
);

extern XSetNormalHints(
#if NeedFunctionPrototypes
    Display*		/* display */,
    Window		/* w */,
    XSizeHints*		/* hints */
#endif
);

extern void XSetRGBColormaps(
#if NeedFunctionPrototypes
    Display*		/* display */,
    Window		/* w */,
    XStandardColormap*	/* stdcmaps */,
    int			/* count */,
    Atom		/* property */
#endif
);

extern XSetSizeHints(
#if NeedFunctionPrototypes
    Display*		/* display */,
    Window		/* w */,
    XSizeHints*		/* hints */,
    Atom		/* property */
#endif
);

extern XSetStandardProperties(
#if NeedFunctionPrototypes
    Display*		/* display */,
    Window		/* w */,
    _Xconst char*	/* window_name */,
    _Xconst char*	/* icon_name */,
    Pixmap		/* icon_pixmap */,
    char**		/* argv */,
    int			/* argc */,
    XSizeHints*		/* hints */
#endif
);

extern void XSetTextProperty(
#if NeedFunctionPrototypes
    Display*		/* display */,
    Window		/* w */,
    XTextProperty*	/* text_prop */,
    Atom		/* property */
#endif
);

extern void XSetWMClientMachine(
#if NeedFunctionPrototypes
    Display*		/* display */,
    Window		/* w */,
    XTextProperty*	/* text_prop */
#endif
);

extern XSetWMHints(
#if NeedFunctionPrototypes
    Display*		/* display */,
    Window		/* w */,
    XWMHints*		/* wm_hints */
#endif
);

extern void XSetWMIconName(
#if NeedFunctionPrototypes
    Display*		/* display */,
    Window		/* w */,
    XTextProperty*	/* text_prop */
#endif
);

extern void XSetWMName(
#if NeedFunctionPrototypes
    Display*		/* display */,
    Window		/* w */,
    XTextProperty*	/* text_prop */
#endif
);

extern void XSetWMNormalHints(
#if NeedFunctionPrototypes
    Display*		/* display */,
    Window		/* w */,
    XSizeHints*		/* hints */
#endif
);

extern void XSetWMProperties(
#if NeedFunctionPrototypes
    Display*		/* display */,
    Window		/* w */,
    XTextProperty*	/* window_name */,
    XTextProperty*	/* icon_name */,
    char**		/* argv */,
    int			/* argc */,
    XSizeHints*		/* normal_hints */,
    XWMHints*		/* wm_hints */,
    XClassHint*		/* class_hints */
#endif
);

extern void XmbSetWMProperties(
#if NeedFunctionPrototypes
    Display*		/* display */,
    Window		/* w */,
    _Xconst char*	/* window_name */,
    _Xconst char*	/* icon_name */,
    char**		/* argv */,
    int			/* argc */,
    XSizeHints*		/* normal_hints */,
    XWMHints*		/* wm_hints */,
    XClassHint*		/* class_hints */
#endif
);

extern void XSetWMSizeHints(
#if NeedFunctionPrototypes
    Display*		/* display */,
    Window		/* w */,
    XSizeHints*		/* hints */,
    Atom		/* property */
#endif
);

extern XSetRegion(
#if NeedFunctionPrototypes
    Display*		/* display */,
    GC			/* gc */,
    Region		/* r */
#endif
);

extern void XSetStandardColormap(
#if NeedFunctionPrototypes
    Display*		/* display */,
    Window		/* w */,
    XStandardColormap*	/* colormap */,
    Atom		/* property */
#endif
);

extern XSetZoomHints(
#if NeedFunctionPrototypes
    Display*		/* display */,
    Window		/* w */,
    XSizeHints*		/* zhints */
#endif
);

extern XShrinkRegion(
#if NeedFunctionPrototypes
    Region		/* r */,
    int			/* dx */,
    int			/* dy */
#endif
);

extern Status XStringListToTextProperty(
#if NeedFunctionPrototypes
    char**		/* list */,
    int			/* count */,
    XTextProperty*	/* text_prop_return */
#endif
);

extern XSubtractRegion(
#if NeedFunctionPrototypes
    Region		/* sra */,
    Region		/* srb */,
    Region		/* dr_return */
#endif
);

extern int XmbTextListToTextProperty(
#if NeedFunctionPrototypes
    Display*		/* display */,
    char**		/* list */,
    int			/* count */,
    XICCEncodingStyle	/* style */,
    XTextProperty*	/* text_prop_return */
#endif
);

extern int XwcTextListToTextProperty(
#if NeedFunctionPrototypes
    Display*		/* display */,
    wchar_t**		/* list */,
    int			/* count */,
    XICCEncodingStyle	/* style */,
    XTextProperty*	/* text_prop_return */
#endif
);

extern void XwcFreeStringList(
#if NeedFunctionPrototypes
    wchar_t**		/* list */
#endif
);

extern Status XTextPropertyToStringList(
#if NeedFunctionPrototypes
    XTextProperty*	/* text_prop */,
    char***		/* list_return */,
    int*		/* count_return */
#endif
);

extern int XmbTextPropertyToTextList(
#if NeedFunctionPrototypes
    Display*		/* display */,
    XTextProperty*	/* text_prop */,
    char***		/* list_return */,
    int*		/* count_return */
#endif
);

extern int XwcTextPropertyToTextList(
#if NeedFunctionPrototypes
    Display*		/* display */,
    XTextProperty*	/* text_prop */,
    wchar_t***		/* list_return */,
    int*		/* count_return */
#endif
);

extern XUnionRectWithRegion(
#if NeedFunctionPrototypes
    XRectangle*		/* rectangle */,
    Region		/* src_region */,
    Region		/* dest_region_return */
#endif
);

extern XUnionRegion(
#if NeedFunctionPrototypes
    Region		/* sra */,
    Region		/* srb */,
    Region		/* dr_return */
#endif
);

extern int XWMGeometry(
#if NeedFunctionPrototypes
    Display*		/* display */,
    int			/* screen_number */,
    _Xconst char*	/* user_geometry */,
    _Xconst char*	/* default_geometry */,
    unsigned int	/* border_width */,
    XSizeHints*		/* hints */,
    int*		/* x_return */,
    int*		/* y_return */,
    int*		/* width_return */,
    int*		/* height_return */,
    int*		/* gravity_return */
#endif
);

extern XXorRegion(
#if NeedFunctionPrototypes
    Region		/* sra */,
    Region		/* srb */,
    Region		/* dr_return */
#endif
);

_XFUNCPROTOEND

#ifdef __MWERKS__
#   undef Region
#endif

#endif /* _XUTIL_H_ */

--- NEW FILE: Xresource.h ---
/* $XConsortium: Xresource.h,v 1.37 94/04/17 20:21:52 rws Exp $ */

/***********************************************************

Copyright (c) 1987, 1988  X Consortium

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Except as contained in this notice, the name of the X Consortium shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from the X Consortium.


Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.

                        All Rights Reserved

Permission to use, copy, modify, and distribute this software and its 
documentation for any purpose and without fee is hereby granted, 
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in 
supporting documentation, and that the name of Digital not be
used in advertising or publicity pertaining to distribution of the
software without specific, written prior permission.  

DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.

******************************************************************/

#ifndef _XRESOURCE_H_
#define _XRESOURCE_H_

/* You must include  before including this file */

/****************************************************************
 ****************************************************************
 ***                                                          ***
 ***                                                          ***
 ***          X Resource Manager Intrinsics                   ***
 ***                                                          ***
 ***                                                          ***
 ****************************************************************
 ****************************************************************/

_XFUNCPROTOBEGIN

/****************************************************************
 *
 * Memory Management
 *
 ****************************************************************/

extern char *Xpermalloc(
#if NeedFunctionPrototypes
    unsigned int	/* size */
#endif
);

/****************************************************************
 *
 * Quark Management
 *
 ****************************************************************/

typedef int     XrmQuark, *XrmQuarkList;
#define NULLQUARK ((XrmQuark) 0)

typedef char *XrmString;
#define NULLSTRING ((XrmString) 0)

/* find quark for string, create new quark if none already exists */
extern XrmQuark XrmStringToQuark(
#if NeedFunctionPrototypes
    _Xconst char* 	/* string */
#endif
);

extern XrmQuark XrmPermStringToQuark(
#if NeedFunctionPrototypes
    _Xconst char* 	/* string */
#endif
);

/* find string for quark */
extern XrmString XrmQuarkToString(
#if NeedFunctionPrototypes
    XrmQuark 		/* quark */
#endif
);

extern XrmQuark XrmUniqueQuark(
#if NeedFunctionPrototypes
    void
#endif
);

#define XrmStringsEqual(a1, a2) (strcmp(a1, a2) == 0)


/****************************************************************
 *
 * Conversion of Strings to Lists
 *
 ****************************************************************/

typedef enum {XrmBindTightly, XrmBindLoosely} XrmBinding, *XrmBindingList;

extern void XrmStringToQuarkList(
#if NeedFunctionPrototypes
    _Xconst char*	/* string */,
    XrmQuarkList	/* quarks_return */
#endif
);

extern void XrmStringToBindingQuarkList(
#if NeedFunctionPrototypes
    _Xconst char*	/* string */,
    XrmBindingList	/* bindings_return */,
    XrmQuarkList	/* quarks_return */
#endif
);

/****************************************************************
 *
 * Name and Class lists.
 *
 ****************************************************************/

typedef XrmQuark     XrmName;
typedef XrmQuarkList XrmNameList;
#define XrmNameToString(name)		XrmQuarkToString(name)
#define XrmStringToName(string)		XrmStringToQuark(string)
#define XrmStringToNameList(str, name)	XrmStringToQuarkList(str, name)

typedef XrmQuark     XrmClass;
typedef XrmQuarkList XrmClassList;
#define XrmClassToString(c_class)	XrmQuarkToString(c_class)
#define XrmStringToClass(c_class)	XrmStringToQuark(c_class)
#define XrmStringToClassList(str,c_class) XrmStringToQuarkList(str, c_class)



/****************************************************************
 *
 * Resource Representation Types and Values
 *
 ****************************************************************/

typedef XrmQuark     XrmRepresentation;
#define XrmStringToRepresentation(string)   XrmStringToQuark(string)
#define	XrmRepresentationToString(type)   XrmQuarkToString(type)

typedef struct {
    unsigned int    size;
    XPointer	    addr;
} XrmValue, *XrmValuePtr;


/****************************************************************
 *
 * Resource Manager Functions
 *
 ****************************************************************/

typedef struct _XrmHashBucketRec *XrmHashBucket;
typedef XrmHashBucket *XrmHashTable;
typedef XrmHashTable XrmSearchList[];
typedef struct _XrmHashBucketRec *XrmDatabase;


extern void XrmDestroyDatabase(
#if NeedFunctionPrototypes
    XrmDatabase		/* database */    
#endif
);

extern void XrmQPutResource(
#if NeedFunctionPrototypes
    XrmDatabase*	/* database */,
    XrmBindingList	/* bindings */,
    XrmQuarkList	/* quarks */,
    XrmRepresentation	/* type */,
    XrmValue*		/* value */
#endif
);

extern void XrmPutResource(
#if NeedFunctionPrototypes
    XrmDatabase*	/* database */,
    _Xconst char*	/* specifier */,
    _Xconst char*	/* type */,
    XrmValue*		/* value */
#endif
);

extern void XrmQPutStringResource(
#if NeedFunctionPrototypes
    XrmDatabase*	/* database */,
    XrmBindingList      /* bindings */,
    XrmQuarkList	/* quarks */,
    _Xconst char*	/* value */
#endif
);

extern void XrmPutStringResource(
#if NeedFunctionPrototypes
    XrmDatabase*	/* database */,
    _Xconst char*	/* specifier */,
    _Xconst char*	/* value */
#endif
);

extern void XrmPutLineResource(
#if NeedFunctionPrototypes
    XrmDatabase*	/* database */,
    _Xconst char*	/* line */
#endif
);

extern  XrmQGetResource(
#if NeedFunctionPrototypes
    XrmDatabase		/* database */,
    XrmNameList		/* quark_name */,
    XrmClassList	/* quark_class */,
    XrmRepresentation*	/* quark_type_return */,
    XrmValue*		/* value_return */
#endif
);

extern Bool XrmGetResource(
#if NeedFunctionPrototypes
    XrmDatabase		/* database */,
    _Xconst char*	/* str_name */,
    _Xconst char*	/* str_class */,
    char**		/* str_type_return */,
    XrmValue*		/* value_return */
#endif
);

extern Bool XrmQGetSearchList(
#if NeedFunctionPrototypes
    XrmDatabase		/* database */,
    XrmNameList		/* names */,
    XrmClassList	/* classes */,
    XrmSearchList	/* list_return */,
    int			/* list_length */
#endif
);

extern Bool XrmQGetSearchResource(
#if NeedFunctionPrototypes
    XrmSearchList	/* list */,
    XrmName		/* name */,
    XrmClass		/* class */,
    XrmRepresentation*	/* type_return */,
    XrmValue*		/* value_return */
#endif
);

/****************************************************************
 *
 * Resource Database Management
 *
 ****************************************************************/

extern void XrmSetDatabase(
#if NeedFunctionPrototypes
    Display*		/* display */,
    XrmDatabase		/* database */
#endif
);

extern XrmDatabase XrmGetDatabase(
#if NeedFunctionPrototypes
    Display*		/* display */
#endif
);

extern XrmDatabase XrmGetFileDatabase(
#if NeedFunctionPrototypes
    _Xconst char*	/* filename */
#endif
);

extern Status XrmCombineFileDatabase(
#if NeedFunctionPrototypes
    _Xconst char* 	/* filename */,
    XrmDatabase*	/* target */,
    Bool		/* override */
#endif
);

extern XrmDatabase XrmGetStringDatabase(
#if NeedFunctionPrototypes
    _Xconst char*	/* data */  /*  null terminated string */
#endif
);

extern void XrmPutFileDatabase(
#if NeedFunctionPrototypes
    XrmDatabase		/* database */,
    _Xconst char*	/* filename */
#endif
);

extern void XrmMergeDatabases(
#if NeedFunctionPrototypes
    XrmDatabase		/* source_db */,
    XrmDatabase*	/* target_db */
#endif
);

extern void XrmCombineDatabase(
#if NeedFunctionPrototypes
    XrmDatabase		/* source_db */,
    XrmDatabase*	/* target_db */,
    Bool		/* override */
#endif
);

#define XrmEnumAllLevels 0
#define XrmEnumOneLevel  1

extern Bool XrmEnumerateDatabase(
#if NeedFunctionPrototypes
    XrmDatabase		/* db */,
    XrmNameList		/* name_prefix */,
    XrmClassList	/* class_prefix */,
    int			/* mode */,
    Bool (*)(
#if NeedNestedPrototypes
	     XrmDatabase*	/* db */,
	     XrmBindingList	/* bindings */,
	     XrmQuarkList	/* quarks */,
	     XrmRepresentation*	/* type */,
	     XrmValue*		/* value */,
	     XPointer		/* closure */
#endif
	     )		/* proc */,
    XPointer		/* closure */
#endif
);

extern char *XrmLocaleOfDatabase(
#if NeedFunctionPrototypes
    XrmDatabase 	/* database */
#endif
);


/****************************************************************
 *
 * Command line option mapping to resource entries
 *
 ****************************************************************/

typedef enum {
    XrmoptionNoArg,	/* Value is specified in OptionDescRec.value	    */
    XrmoptionIsArg,     /* Value is the option string itself		    */
    XrmoptionStickyArg, /* Value is characters immediately following option */
    XrmoptionSepArg,    /* Value is next argument in argv		    */
    XrmoptionResArg,	/* Resource and value in next argument in argv      */
    XrmoptionSkipArg,   /* Ignore this option and the next argument in argv */
    XrmoptionSkipLine,  /* Ignore this option and the rest of argv	    */
    XrmoptionSkipNArgs	/* Ignore this option and the next 
			   OptionDescRes.value arguments in argv */
} XrmOptionKind;

typedef struct {
    char	    *option;	    /* Option abbreviation in argv	    */
    char	    *specifier;     /* Resource specifier		    */
    XrmOptionKind   argKind;	    /* Which style of option it is	    */
    XPointer	    value;	    /* Value to provide if XrmoptionNoArg   */
} XrmOptionDescRec, *XrmOptionDescList;


extern void XrmParseCommand(
#if NeedFunctionPrototypes
    XrmDatabase*	/* database */,
    XrmOptionDescList	/* table */,
    int			/* table_count */,
    _Xconst char*	/* name */,
    int*		/* argc_in_out */,
    char**		/* argv_in_out */		     
#endif
);

_XFUNCPROTOEND

#endif /* _XRESOURCE_H_ */
/* DON'T ADD STUFF AFTER THIS #endif */

--- NEW FILE: X.h ---
/*
 *	$XConsortium: X.h,v 1.69 94/04/17 20:10:48 dpw Exp $
 */

/* Definitions for the X window system likely to be used by applications */

#ifndef X_H
#define X_H

/***********************************************************

Copyright (c) 1987  X Consortium

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Except as contained in this notice, the name of the X Consortium shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from the X Consortium.


Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.

                        All Rights Reserved

Permission to use, copy, modify, and distribute this software and its 
documentation for any purpose and without fee is hereby granted, 
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in 
supporting documentation, and that the name of Digital not be
used in advertising or publicity pertaining to distribution of the
software without specific, written prior permission.  

DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.

******************************************************************/
#define X_PROTOCOL	11		/* current protocol version */
#define X_PROTOCOL_REVISION 0		/* current minor version */

#ifdef __MWERKS__
#   define Cursor XCursor
#   define cursor xcursor
#   define Region XRegion
#endif

/* Resources */

/*
 * _XSERVER64 must ONLY be defined when compiling X server sources on
 * systems where unsigned long is not 32 bits, must NOT be used in
 * client or library code.
 */
#ifndef _XSERVER64
typedef unsigned long XID;
typedef unsigned long Mask;
typedef unsigned long Atom;
typedef unsigned long VisualID;
typedef unsigned long Time;
#else
#include 
typedef CARD32 XID;
typedef CARD32 Mask;
typedef CARD32 Atom;
typedef CARD32 VisualID;
typedef CARD32 Time;
#endif

typedef XID Window;
typedef XID Drawable;
typedef XID Font;
typedef XID Pixmap;
typedef XID Cursor;
typedef XID Colormap;
typedef XID GContext;
typedef XID KeySym;

typedef unsigned char KeyCode;

/*****************************************************************
 * RESERVED RESOURCE AND CONSTANT DEFINITIONS
 *****************************************************************/

#define None                 0L	/* universal null resource or null atom */

#define ParentRelative       1L	/* background pixmap in CreateWindow
				    and ChangeWindowAttributes */

#define CopyFromParent       0L	/* border pixmap in CreateWindow
				       and ChangeWindowAttributes
				   special VisualID and special window
				       class passed to CreateWindow */

#define PointerWindow        0L	/* destination window in SendEvent */
#define InputFocus           1L	/* destination window in SendEvent */

#define PointerRoot          1L	/* focus window in SetInputFocus */

#define AnyPropertyType      0L	/* special Atom, passed to GetProperty */

#define AnyKey		     0L	/* special Key Code, passed to GrabKey */

#define AnyButton            0L	/* special Button Code, passed to GrabButton */

#define AllTemporary         0L	/* special Resource ID passed to KillClient */

#define CurrentTime          0L	/* special Time */

#define NoSymbol	     0L	/* special KeySym */

/***************************************************************** 
 * EVENT DEFINITIONS 
 *****************************************************************/

/* Input Event Masks. Used as event-mask window attribute and as arguments
   to Grab requests.  Not to be confused with event names.  */

#define NoEventMask			0L
#define KeyPressMask			(1L<<0)  
#define KeyReleaseMask			(1L<<1)  
#define ButtonPressMask			(1L<<2)  
#define ButtonReleaseMask		(1L<<3)  
#define EnterWindowMask			(1L<<4)  
#define LeaveWindowMask			(1L<<5)  
#define PointerMotionMask		(1L<<6)  
#define PointerMotionHintMask		(1L<<7)  
#define Button1MotionMask		(1L<<8)  
#define Button2MotionMask		(1L<<9)  
#define Button3MotionMask		(1L<<10) 
#define Button4MotionMask		(1L<<11) 
#define Button5MotionMask		(1L<<12) 
#define ButtonMotionMask		(1L<<13) 
#define KeymapStateMask			(1L<<14)
#define ExposureMask			(1L<<15) 
#define VisibilityChangeMask		(1L<<16) 
#define StructureNotifyMask		(1L<<17) 
#define ResizeRedirectMask		(1L<<18) 
#define SubstructureNotifyMask		(1L<<19) 
#define SubstructureRedirectMask	(1L<<20) 
#define FocusChangeMask			(1L<<21) 
#define PropertyChangeMask		(1L<<22) 
#define ColormapChangeMask		(1L<<23) 
#define OwnerGrabButtonMask		(1L<<24) 

/* Event names.  Used in "type" field in XEvent structures.  Not to be
confused with event masks above.  They start from 2 because 0 and 1
are reserved in the protocol for errors and replies. */

#define KeyPress		2
#define KeyRelease		3
#define ButtonPress		4
#define ButtonRelease		5
#define MotionNotify		6
#define EnterNotify		7
#define LeaveNotify		8
#define FocusIn			9
#define FocusOut		10
#define KeymapNotify		11
#define Expose			12
#define GraphicsExpose		13
#define NoExpose		14
#define VisibilityNotify	15
#define CreateNotify		16
#define DestroyNotify		17
#define UnmapNotify		18
#define MapNotify		19
#define MapRequest		20
#define ReparentNotify		21
#define ConfigureNotify		22
#define ConfigureRequest	23
#define GravityNotify		24
#define ResizeRequest		25
#define CirculateNotify		26
#define CirculateRequest	27
#define PropertyNotify		28
#define SelectionClear		29
#define SelectionRequest	30
#define SelectionNotify		31
#define ColormapNotify		32
#define ClientMessage		33
#define MappingNotify		34
#define LASTEvent		35	/* must be bigger than any event # */


/* Key masks. Used as modifiers to GrabButton and GrabKey, results of QueryPointer,
   state in various key-, mouse-, and button-related events. */

#define ShiftMask		(1<<0)
#define LockMask		(1<<1)
#define ControlMask		(1<<2)
#define Mod1Mask		(1<<3)
#define Mod2Mask		(1<<4)
#define Mod3Mask		(1<<5)
#define Mod4Mask		(1<<6)
#define Mod5Mask		(1<<7)

/* modifier names.  Used to build a SetModifierMapping request or
   to read a GetModifierMapping request.  These correspond to the
   masks defined above. */
#define ShiftMapIndex		0
#define LockMapIndex		1
#define ControlMapIndex		2
#define Mod1MapIndex		3
#define Mod2MapIndex		4
#define Mod3MapIndex		5
#define Mod4MapIndex		6
#define Mod5MapIndex		7


/* button masks.  Used in same manner as Key masks above. Not to be confused
   with button names below. */

#define Button1Mask		(1<<8)
#define Button2Mask		(1<<9)
#define Button3Mask		(1<<10)
#define Button4Mask		(1<<11)
#define Button5Mask		(1<<12)

#define AnyModifier		(1<<15)  /* used in GrabButton, GrabKey */


/* button names. Used as arguments to GrabButton and as detail in ButtonPress
   and ButtonRelease events.  Not to be confused with button masks above.
   Note that 0 is already defined above as "AnyButton".  */

#define Button1			1
#define Button2			2
#define Button3			3
#define Button4			4
#define Button5			5

/* Notify modes */

#define NotifyNormal		0
#define NotifyGrab		1
#define NotifyUngrab		2
#define NotifyWhileGrabbed	3

#define NotifyHint		1	/* for MotionNotify events */
		       
/* Notify detail */

#define NotifyAncestor		0
#define NotifyVirtual		1
#define NotifyInferior		2
#define NotifyNonlinear		3
#define NotifyNonlinearVirtual	4
#define NotifyPointer		5
#define NotifyPointerRoot	6
#define NotifyDetailNone	7

/* Visibility notify */

#define VisibilityUnobscured		0
#define VisibilityPartiallyObscured	1
#define VisibilityFullyObscured		2

/* Circulation request */

#define PlaceOnTop		0
#define PlaceOnBottom		1

/* protocol families */

#define FamilyInternet		0
#define FamilyDECnet		1
#define FamilyChaos		2

/* Property notification */

#define PropertyNewValue	0
#define PropertyDelete		1

/* Color Map notification */

#define ColormapUninstalled	0
#define ColormapInstalled	1

/* GrabPointer, GrabButton, GrabKeyboard, GrabKey Modes */

#define GrabModeSync		0
#define GrabModeAsync		1

/* GrabPointer, GrabKeyboard reply status */

#define GrabSuccess		0
#define AlreadyGrabbed		1
#define GrabInvalidTime		2
#define GrabNotViewable		3
#define GrabFrozen		4

/* AllowEvents modes */

#define AsyncPointer		0
#define SyncPointer		1
#define ReplayPointer		2
#define AsyncKeyboard		3
#define SyncKeyboard		4
#define ReplayKeyboard		5
#define AsyncBoth		6
#define SyncBoth		7

/* Used in SetInputFocus, GetInputFocus */

#define RevertToNone		(int)None
#define RevertToPointerRoot	(int)PointerRoot
#define RevertToParent		2

/*****************************************************************
 * ERROR CODES 
 *****************************************************************/

#define Success		   0	/* everything's okay */
#define BadRequest	   1	/* bad request code */
#define BadValue	   2	/* int parameter out of range */
#define BadWindow	   3	/* parameter not a Window */
#define BadPixmap	   4	/* parameter not a Pixmap */
#define BadAtom		   5	/* parameter not an Atom */
#define BadCursor	   6	/* parameter not a Cursor */
#define BadFont		   7	/* parameter not a Font */
#define BadMatch	   8	/* parameter mismatch */
#define BadDrawable	   9	/* parameter not a Pixmap or Window */
#define BadAccess	  10	/* depending on context:
				 - key/button already grabbed
				 - attempt to free an illegal 
				   cmap entry 
				- attempt to store into a read-only 
				   color map entry.
 				- attempt to modify the access control
				   list from other than the local host.
				*/
#define BadAlloc	  11	/* insufficient resources */
#define BadColor	  12	/* no such colormap */
#define BadGC		  13	/* parameter not a GC */
#define BadIDChoice	  14	/* choice not in range or already used */
#define BadName		  15	/* font or color name doesn't exist */
#define BadLength	  16	/* Request length incorrect */
#define BadImplementation 17	/* server is defective */

#define FirstExtensionError	128
#define LastExtensionError	255

/*****************************************************************
 * WINDOW DEFINITIONS 
 *****************************************************************/

/* Window classes used by CreateWindow */
/* Note that CopyFromParent is already defined as 0 above */

#define InputOutput		1
#define InputOnly		2

/* Window attributes for CreateWindow and ChangeWindowAttributes */

#define CWBackPixmap		(1L<<0)
#define CWBackPixel		(1L<<1)
#define CWBorderPixmap		(1L<<2)
#define CWBorderPixel           (1L<<3)
#define CWBitGravity		(1L<<4)
#define CWWinGravity		(1L<<5)
#define CWBackingStore          (1L<<6)
#define CWBackingPlanes	        (1L<<7)
#define CWBackingPixel	        (1L<<8)
#define CWOverrideRedirect	(1L<<9)
#define CWSaveUnder		(1L<<10)
#define CWEventMask		(1L<<11)
#define CWDontPropagate	        (1L<<12)
#define CWColormap		(1L<<13)
#define CWCursor	        (1L<<14)

/* ConfigureWindow structure */

#define CWX			(1<<0)
#define CWY			(1<<1)
#define CWWidth			(1<<2)
#define CWHeight		(1<<3)
#define CWBorderWidth		(1<<4)
#define CWSibling		(1<<5)
#define CWStackMode		(1<<6)


/* Bit Gravity */

#define ForgetGravity		0
#define NorthWestGravity	1
#define NorthGravity		2
#define NorthEastGravity	3
#define WestGravity		4
#define CenterGravity		5
#define EastGravity		6
#define SouthWestGravity	7
#define SouthGravity		8
#define SouthEastGravity	9
#define StaticGravity		10

/* Window gravity + bit gravity above */

#define UnmapGravity		0

/* Used in CreateWindow for backing-store hint */

#define NotUseful               0
#define WhenMapped              1
#define Always                  2

/* Used in GetWindowAttributes reply */

#define IsUnmapped		0
#define IsUnviewable		1
#define IsViewable		2

/* Used in ChangeSaveSet */

#define SetModeInsert           0
#define SetModeDelete           1

/* Used in ChangeCloseDownMode */

#define DestroyAll              0
#define RetainPermanent         1
#define RetainTemporary         2

/* Window stacking method (in configureWindow) */

#define Above                   0
#define Below                   1
#define TopIf                   2
#define BottomIf                3
#define Opposite                4

/* Circulation direction */

#define RaiseLowest             0
#define LowerHighest            1

/* Property modes */

#define PropModeReplace         0
#define PropModePrepend         1
#define PropModeAppend          2

/*****************************************************************
 * GRAPHICS DEFINITIONS
 *****************************************************************/

/* graphics functions, as in GC.alu */

#define	GXclear			0x0		/* 0 */
#define GXand			0x1		/* src AND dst */
#define GXandReverse		0x2		/* src AND NOT dst */
#define GXcopy			0x3		/* src */
#define GXandInverted		0x4		/* NOT src AND dst */
#define	GXnoop			0x5		/* dst */
#define GXxor			0x6		/* src XOR dst */
#define GXor			0x7		/* src OR dst */
#define GXnor			0x8		/* NOT src AND NOT dst */
#define GXequiv			0x9		/* NOT src XOR dst */
#define GXinvert		0xa		/* NOT dst */
#define GXorReverse		0xb		/* src OR NOT dst */
#define GXcopyInverted		0xc		/* NOT src */
#define GXorInverted		0xd		/* NOT src OR dst */
#define GXnand			0xe		/* NOT src OR NOT dst */
#define GXset			0xf		/* 1 */

/* LineStyle */

#define LineSolid		0
#define LineOnOffDash		1
#define LineDoubleDash		2

/* capStyle */

#define CapNotLast		0
#define CapButt			1
#define CapRound		2
#define CapProjecting		3

/* joinStyle */

#define JoinMiter		0
#define JoinRound		1
#define JoinBevel		2

/* fillStyle */

#define FillSolid		0
#define FillTiled		1
#define FillStippled		2
#define FillOpaqueStippled	3

/* fillRule */

#define EvenOddRule		0
#define WindingRule		1

/* subwindow mode */

#define ClipByChildren		0
#define IncludeInferiors	1

/* SetClipRectangles ordering */

#define Unsorted		0
#define YSorted			1
#define YXSorted		2
#define YXBanded		3

/* CoordinateMode for drawing routines */

#define CoordModeOrigin		0	/* relative to the origin */
#define CoordModePrevious       1	/* relative to previous point */

/* Polygon shapes */

#define Complex			0	/* paths may intersect */
#define Nonconvex		1	/* no paths intersect, but not convex */
#define Convex			2	/* wholly convex */

/* Arc modes for PolyFillArc */

#define ArcChord		0	/* join endpoints of arc */
#define ArcPieSlice		1	/* join endpoints to center of arc */

/* GC components: masks used in CreateGC, CopyGC, ChangeGC, OR'ed into
   GC.stateChanges */

#define GCFunction              (1L<<0)
#define GCPlaneMask             (1L<<1)
#define GCForeground            (1L<<2)
#define GCBackground            (1L<<3)
#define GCLineWidth             (1L<<4)
#define GCLineStyle             (1L<<5)
#define GCCapStyle              (1L<<6)
#define GCJoinStyle		(1L<<7)
#define GCFillStyle		(1L<<8)
#define GCFillRule		(1L<<9) 
#define GCTile			(1L<<10)
#define GCStipple		(1L<<11)
#define GCTileStipXOrigin	(1L<<12)
#define GCTileStipYOrigin	(1L<<13)
#define GCFont 			(1L<<14)
#define GCSubwindowMode		(1L<<15)
#define GCGraphicsExposures     (1L<<16)
#define GCClipXOrigin		(1L<<17)
#define GCClipYOrigin		(1L<<18)
#define GCClipMask		(1L<<19)
#define GCDashOffset		(1L<<20)
#define GCDashList		(1L<<21)
#define GCArcMode		(1L<<22)

#define GCLastBit		22
/*****************************************************************
 * FONTS 
 *****************************************************************/

/* used in QueryFont -- draw direction */

#define FontLeftToRight		0
#define FontRightToLeft		1

#define FontChange		255

/*****************************************************************
 *  IMAGING 
 *****************************************************************/

/* ImageFormat -- PutImage, GetImage */

#define XYBitmap		0	/* depth 1, XYFormat */
#define XYPixmap		1	/* depth == drawable depth */
#define ZPixmap			2	/* depth == drawable depth */

/*****************************************************************
 *  COLOR MAP STUFF 
 *****************************************************************/

/* For CreateColormap */

#define AllocNone		0	/* create map with no entries */
#define AllocAll		1	/* allocate entire map writeable */


/* Flags used in StoreNamedColor, StoreColors */

#define DoRed			(1<<0)
#define DoGreen			(1<<1)
#define DoBlue			(1<<2)

/*****************************************************************
 * CURSOR STUFF
 *****************************************************************/

/* QueryBestSize Class */

#define CursorShape		0	/* largest size that can be displayed */
#define TileShape		1	/* size tiled fastest */
#define StippleShape		2	/* size stippled fastest */

/***************************************************************** 
 * KEYBOARD/POINTER STUFF
 *****************************************************************/

#define AutoRepeatModeOff	0
#define AutoRepeatModeOn	1
#define AutoRepeatModeDefault	2

#define LedModeOff		0
#define LedModeOn		1

/* masks for ChangeKeyboardControl */

#define KBKeyClickPercent	(1L<<0)
#define KBBellPercent		(1L<<1)
#define KBBellPitch		(1L<<2)
#define KBBellDuration		(1L<<3)
#define KBLed			(1L<<4)
#define KBLedMode		(1L<<5)
#define KBKey			(1L<<6)
#define KBAutoRepeatMode	(1L<<7)

#define MappingSuccess     	0
#define MappingBusy        	1
#define MappingFailed		2

#define MappingModifier		0
#define MappingKeyboard		1
#define MappingPointer		2

/*****************************************************************
 * SCREEN SAVER STUFF 
 *****************************************************************/

#define DontPreferBlanking	0
#define PreferBlanking		1
#define DefaultBlanking		2

#define DisableScreenSaver	0
#define DisableScreenInterval	0

#define DontAllowExposures	0
#define AllowExposures		1
#define DefaultExposures	2

/* for ForceScreenSaver */

#define ScreenSaverReset 0
#define ScreenSaverActive 1

/*****************************************************************
 * HOSTS AND CONNECTIONS
 *****************************************************************/

/* for ChangeHosts */

#define HostInsert		0
#define HostDelete		1

/* for ChangeAccessControl */

#define EnableAccess		1      
#define DisableAccess		0

/* Display classes  used in opening the connection 
 * Note that the statically allocated ones are even numbered and the
 * dynamically changeable ones are odd numbered */

#define StaticGray		0
#define GrayScale		1
#define StaticColor		2
#define PseudoColor		3
#define TrueColor		4
#define DirectColor		5


/* Byte order  used in imageByteOrder and bitmapBitOrder */

#define LSBFirst		0
#define MSBFirst		1

#ifdef __MWERKS__
#   undef Region
#endif

#endif /* X_H */

--- NEW FILE: Xos.h ---
/*
 * $XConsortium: Xos.h,v 1.67 94/11/30 20:48:05 kaleb Exp $
 * 
 * 
Copyright (c) 1987  X Consortium

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Except as contained in this notice, the name of the X Consortium shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from the X Consortium.
 *
 * The X Window System is a Trademark of X Consortium.
 *
 */

/* This is a collection of things to try and minimize system dependencies
 * in a "signficant" number of source files.
 */

#ifndef _XOS_H_
#define _XOS_H_

#ifdef __MWERKS__
#   include 
#else
#include 
#endif

/*
 * Get major data types (esp. caddr_t)
 */

#ifdef USG
#ifndef __TYPES__
#ifdef CRAY
#define word word_t
#endif /* CRAY */
#include 			/* forgot to protect it... */
#define __TYPES__
#endif /* __TYPES__ */
#else /* USG */
#if defined(_POSIX_SOURCE) && (defined(MOTOROLA) || defined(AMOEBA))
#undef _POSIX_SOURCE
#include 
#define _POSIX_SOURCE
#else
#ifdef __MWERKS__
#   include 
#else
#include 
#endif
#endif
#endif /* USG */


/*
 * Just about everyone needs the strings routines.  We provide both forms here,
 * index/rindex and strchr/strrchr, so any systems that don't provide them all
 * need to have #defines here.
 */

#ifndef X_NOT_STDC_ENV

#include 
#ifndef index
#define index strchr
#endif
#ifndef rindex
#define rindex strrchr
#endif

#else

#ifdef SYSV
#include 
#define index strchr
#define rindex strrchr
#else
#include 
#define strchr index
#define strrchr rindex
#endif

#endif /* X_NOT_STDC_ENV */

/*
 * strerror()
 */
#if defined(X_NOT_STDC_ENV) || (defined(sun) && !defined(SVR4)) || defined(macII)
#ifndef strerror
extern char *sys_errlist[];
extern int sys_nerr;
#define strerror(n) \
    (((n) >= 0 && (n) < sys_nerr) ? sys_errlist[n] : "unknown error")
#endif
#endif

/*
 * Get open(2) constants
 */
#ifdef X_NOT_POSIX
#include 
#if defined(USL) || defined(CRAY) || defined(MOTOROLA) || (defined(i386) && (defined(SYSV) || defined(SVR4))) || defined(__sxg__)
#include 
#endif
#ifdef WIN32
#include 
#else
#include 
#endif
#else /* X_NOT_POSIX */
#if !defined(_POSIX_SOURCE) && defined(macII)
#define _POSIX_SOURCE
#include 
#include 
#undef _POSIX_SOURCE
#else
#include 
#include 
#endif
#endif /* X_NOT_POSIX else */

/*
 * Get struct timeval
 */

#ifdef SYSV

#ifndef USL
#include 
#endif
#include 
#ifdef CRAY
#undef word
#endif /* CRAY */
#if defined(USG) && !defined(CRAY) && !defined(MOTOROLA) && !defined(uniosu) && !defined(__sxg__)
struct timeval {
    long tv_sec;
    long tv_usec;
};
#ifndef USL_SHARELIB
struct timezone {
    int tz_minuteswest;
    int tz_dsttime;
};
#endif /* USL_SHARELIB */
#endif /* USG */

#ifdef _SEQUENT_
struct timezone {
    int tz_minuteswest;
    int tz_dsttime;
};
#endif /* _SEQUENT_ */

#else /* not SYSV */

#if defined(_POSIX_SOURCE) && defined(SVR4)
/* need to omit _POSIX_SOURCE in order to get what we want in SVR4 */
#undef _POSIX_SOURCE
#include 
#define _POSIX_SOURCE
#else /* defined(_POSIX_SOURCE) && defined(SVR4) */
#ifdef WIN32
#include 
#if !defined(_WINSOCKAPI_) && !defined(_WILLWINSOCK_)
struct timeval {
    long    tv_sec;         /* seconds */
    long    tv_usec;        /* and microseconds */
};
#endif
/*#include */
#define gettimeofday(t) \
{ \
    struct _timeb _gtodtmp; \
    _ftime (&_gtodtmp); \
    (t)->tv_sec = _gtodtmp.time; \
    (t)->tv_usec = _gtodtmp.millitm * 1000; \
}
#else /* WIN32 */
#ifdef _SEQUENT_
#include 
#else /* _SEQUENT_ */
#ifdef __MWERKS__
#   include 
#else
#include 
#endif
#endif /* _SEQUENT_ */
#endif /* WIN32 else */
#endif /* defined(_POSIX_SOURCE) && defined(SVR4) */

#endif /* SYSV */

/* define X_GETTIMEOFDAY macro, a portable gettimeofday() */
#if defined(SVR4) || defined(VMS) || defined(WIN32)
#define X_GETTIMEOFDAY(t) gettimeofday(t)
#else
#define X_GETTIMEOFDAY(t) gettimeofday(t, (struct timezone*)0)
#endif

/* use POSIX name for signal */
#if defined(X_NOT_POSIX) && defined(SYSV) && !defined(SIGCHLD)
#define SIGCHLD SIGCLD
#endif

#ifdef ISC
#include 
#endif

#endif /* _XOS_H_ */

--- NEW FILE: Xlib.h ---
/* $XConsortium: Xlib.h,v 11.237 94/09/01 18:44:49 kaleb Exp $ */
/* 

Copyright (c) 1985, 1986, 1987, 1991  X Consortium

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
[...4627 lines suppressed...]

extern Status XAddConnectionWatch(
#if NeedFunctionPrototypes
    Display*			/* dpy */,
    XConnectionWatchProc	/* callback */,
    XPointer			/* client_data */
#endif
);

extern void XRemoveConnectionWatch(
#if NeedFunctionPrototypes
    Display*			/* dpy */,
    XConnectionWatchProc	/* callback */,
    XPointer			/* client_data */
#endif
);

_XFUNCPROTOEND

#endif /* _XLIB_H_ */


From ebala at helixcommunity.org  Thu Sep 10 11:36:32 2009
From: ebala at helixcommunity.org (ebala@helixcommunity.org)
Date: Thu Sep 10 20:40:09 2009
Subject: [Common-cvs] import/imagemagick/magick ImageMagick.ico, 1.1,
	1.2 Make.com, 1.1, 1.2
Message-ID: 

Update of /cvsroot/common/import/imagemagick/magick
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv28190

Added Files:
	ImageMagick.ico Make.com 
Log Message:
Import of Imagemagick

--- NEW FILE: ImageMagick.ico ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: Make.com ---
$!
$! Make ImageMagick image utilities for VMS.
$!
$ define/nolog MAGICK [-.magick]
$ define/nolog WAND [-.wand]
$ copy config.h_vms magick-config.h
$ copy xwdfile.h_vms xwdfile.h
$
$if (f$trnlnm("X11") .eqs. "") then define/nolog X11 decw$include:
$compile_options="/nodebug/optimize"
$if (f$search("sys$system:decc$compiler.exe") .nes. "") 
$then     ! VAX with DEC C
$  compile_options="/decc/nodebug/optimize/warning=(disable=rightshiftovr)"
$else     ! VAX with VAX C
$define/nolog lnk$library sys$library:vaxcrtl
$define/nolog sys sys$share
$endif
$if (f$getsyi("HW_MODEL") .gt. 1023)
$then     ! Alpha with DEC C
$  define/nolog sys decc$library_include
$  compile_options="/nodebug/optimize/prefix=all/warning=(disable=rightshiftovr)/name=(as_is,short)/float=ieee
$endif
$
$write sys$output "Making Magick..."
$call Make animate.c
$call Make annotate.c
$call Make artifact.c
$call Make blob.c
$call Make cache.c
$call Make cache-view.c
$call Make cipher.c
$call Make client.c
$call Make coder.c
$call Make color.c
$call Make colorspace.c
$call Make compare.c
$call Make composite.c
$call Make compress.c
$call Make configure.c
$call Make constitute.c
$call Make decorate.c
$call Make delegate.c
$call Make deprecate.c
$call Make display.c
$call Make distort.c
$call Make draw.c
$call Make effect.c
$call Make enhance.c
$call Make exception.c
$call Make fx.c
$call Make gem.c
$call Make geometry.c
$call Make hashmap.c
$call Make identify.c
$call Make image.c
$call Make layer.c
$call Make list.c
$call Make locale.c
$call Make log.c
$call Make magic.c
$call Make magick.c
$call Make matrix.c
$call Make memory.c
$call Make mime.c
$call Make module.c
$call Make monitor.c
$call Make montage.c
$call Make option.c
$call Make paint.c
$call Make pixel.c
$call Make prepress.c
$call Make property.c
$call Make PreRvIcccm.c
$call Make profile.c
$call Make quantize.c
$call Make quantum.c
$call Make quantum-export.c
$call Make quantum-import.c
$call Make random.c
$call Make registry.c
$call Make resample.c
$call Make resize.c
$call Make resource.c
$call Make segment.c
$call Make semaphore.c
$call Make shear.c
$call Make signature.c
$call Make splay-tree.c
$call Make static.c
$call Make statistic.c
$call Make stream.c
$call Make string.c
$call Make thread.c
$call Make timer.c
$call Make token.c
$call Make transform.c
$call Make threshold.c
$call Make type.c
$call Make utility.c
$call Make version.c
$call Make vms.c
$call Make widget.c
$call Make xml-tree.c
$call Make xwindow.c
$ set default [-.filters]
$ call Make analyze.c
$ set default [-.wand]
$ call Make drawing-wand.c
$ call Make pixel-wand.c
$ call Make pixel-view.c
$ call Make conjure.c
$ call Make convert.c
$ call Make import.c
$ call Make mogrify.c
$ copy animate.c animate-wand.c
$ call make animate-wand.c
$ copy compare.c compare-wand.c
$ call make compare-wand.c
$ copy composite.c composite-wand.c
$ call make composite-wand.c
$ copy display.c display-wand.c
$ call make display-wand.c
$ copy identify.c identify-wand.c
$ call make identify-wand.c
$ copy montage.c montage-wand.c
$ call make montage-wand.c
$ set default [-.magick]
$ deass magick
$ deass wand
$library/create libMagick.olb -
  animate, annotate, artifact, blob, cache, cache-view, cipher, client, coder, -
  color, colorspace, compare, composite, compress, configure, -
  constitute, decorate, delegate, deprecate, display, distort, draw, -
  effect, enhance, exception, fx, gem, geometry, hashmap, identify, image, -
  layer, list, locale, log, magic, magick, matrix, memory, mime, module, -
  monitor, montage, option, paint, pixel, PreRvIcccm, profile, quantize, -
  quantum,quantum-export,quantum-import,random, registry, resample, resize, -
  resource, segment, semaphore, -
  shear, signature, splay-tree, static, stream, string, thread, timer, token, -
  transform, threshold, type, utility, version, vms, widget, xwindow, -
	statistic, prepress, property, xml-tree, -
	[-.filters]analyze,[-.wand]drawing-wand, pixel-wand, pixel-view, conjure, -
  convert,import, mogrify, animate-wand, compare-wand, composite-wand, -
  display-wand,identify-wand,montage-wand
$exit
$
$Make: subroutine
$!
$! Primitive MMS hack for DCL.
$!
$if (p1 .eqs. "") then exit
$source_file=f$search(f$parse(p1,".c"))
$if (source_file .nes. "")
$then
$  object_file=f$parse(source_file,,,"name")+".obj"
$  object_file=f$search( object_file )
$  if (object_file .nes. "")
$  then
$    object_time=f$file_attribute(object_file,"cdt")
$    source_time=f$file_attribute(source_file,"cdt")
$    if (f$cvtime(object_time) .lts. f$cvtime(source_time)) then -
$      object_file=""
$  endif
$  if (object_file .eqs. "")
$  then
$    write sys$output "Compiling ",p1
$    cc'compile_options'/include_directory=([-],[-.magick],[-.jpeg],[-.png], -
       [-.tiff],[-.ttf],[-.zlib]) 'source_file'  
$  endif
$endif
$exit
$endsubroutine


From ebala at helixcommunity.org  Thu Sep 10 11:36:32 2009
From: ebala at helixcommunity.org (ebala@helixcommunity.org)
Date: Thu Sep 10 20:40:10 2009
Subject: [Common-cvs] import/imagemagick/magick ImageMagick.ico, 1.1,
	1.2 Make.com, 1.1, 1.2
Message-ID: 

Update of /cvsroot/common/import/imagemagick/magick
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv28190

Added Files:
	ImageMagick.ico Make.com 
Log Message:
Import of Imagemagick

--- NEW FILE: ImageMagick.ico ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: Make.com ---
$!
$! Make ImageMagick image utilities for VMS.
$!
$ define/nolog MAGICK [-.magick]
$ define/nolog WAND [-.wand]
$ copy config.h_vms magick-config.h
$ copy xwdfile.h_vms xwdfile.h
$
$if (f$trnlnm("X11") .eqs. "") then define/nolog X11 decw$include:
$compile_options="/nodebug/optimize"
$if (f$search("sys$system:decc$compiler.exe") .nes. "") 
$then     ! VAX with DEC C
$  compile_options="/decc/nodebug/optimize/warning=(disable=rightshiftovr)"
$else     ! VAX with VAX C
$define/nolog lnk$library sys$library:vaxcrtl
$define/nolog sys sys$share
$endif
$if (f$getsyi("HW_MODEL") .gt. 1023)
$then     ! Alpha with DEC C
$  define/nolog sys decc$library_include
$  compile_options="/nodebug/optimize/prefix=all/warning=(disable=rightshiftovr)/name=(as_is,short)/float=ieee
$endif
$
$write sys$output "Making Magick..."
$call Make animate.c
$call Make annotate.c
$call Make artifact.c
$call Make blob.c
$call Make cache.c
$call Make cache-view.c
$call Make cipher.c
$call Make client.c
$call Make coder.c
$call Make color.c
$call Make colorspace.c
$call Make compare.c
$call Make composite.c
$call Make compress.c
$call Make configure.c
$call Make constitute.c
$call Make decorate.c
$call Make delegate.c
$call Make deprecate.c
$call Make display.c
$call Make distort.c
$call Make draw.c
$call Make effect.c
$call Make enhance.c
$call Make exception.c
$call Make fx.c
$call Make gem.c
$call Make geometry.c
$call Make hashmap.c
$call Make identify.c
$call Make image.c
$call Make layer.c
$call Make list.c
$call Make locale.c
$call Make log.c
$call Make magic.c
$call Make magick.c
$call Make matrix.c
$call Make memory.c
$call Make mime.c
$call Make module.c
$call Make monitor.c
$call Make montage.c
$call Make option.c
$call Make paint.c
$call Make pixel.c
$call Make prepress.c
$call Make property.c
$call Make PreRvIcccm.c
$call Make profile.c
$call Make quantize.c
$call Make quantum.c
$call Make quantum-export.c
$call Make quantum-import.c
$call Make random.c
$call Make registry.c
$call Make resample.c
$call Make resize.c
$call Make resource.c
$call Make segment.c
$call Make semaphore.c
$call Make shear.c
$call Make signature.c
$call Make splay-tree.c
$call Make static.c
$call Make statistic.c
$call Make stream.c
$call Make string.c
$call Make thread.c
$call Make timer.c
$call Make token.c
$call Make transform.c
$call Make threshold.c
$call Make type.c
$call Make utility.c
$call Make version.c
$call Make vms.c
$call Make widget.c
$call Make xml-tree.c
$call Make xwindow.c
$ set default [-.filters]
$ call Make analyze.c
$ set default [-.wand]
$ call Make drawing-wand.c
$ call Make pixel-wand.c
$ call Make pixel-view.c
$ call Make conjure.c
$ call Make convert.c
$ call Make import.c
$ call Make mogrify.c
$ copy animate.c animate-wand.c
$ call make animate-wand.c
$ copy compare.c compare-wand.c
$ call make compare-wand.c
$ copy composite.c composite-wand.c
$ call make composite-wand.c
$ copy display.c display-wand.c
$ call make display-wand.c
$ copy identify.c identify-wand.c
$ call make identify-wand.c
$ copy montage.c montage-wand.c
$ call make montage-wand.c
$ set default [-.magick]
$ deass magick
$ deass wand
$library/create libMagick.olb -
  animate, annotate, artifact, blob, cache, cache-view, cipher, client, coder, -
  color, colorspace, compare, composite, compress, configure, -
  constitute, decorate, delegate, deprecate, display, distort, draw, -
  effect, enhance, exception, fx, gem, geometry, hashmap, identify, image, -
  layer, list, locale, log, magic, magick, matrix, memory, mime, module, -
  monitor, montage, option, paint, pixel, PreRvIcccm, profile, quantize, -
  quantum,quantum-export,quantum-import,random, registry, resample, resize, -
  resource, segment, semaphore, -
  shear, signature, splay-tree, static, stream, string, thread, timer, token, -
  transform, threshold, type, utility, version, vms, widget, xwindow, -
	statistic, prepress, property, xml-tree, -
	[-.filters]analyze,[-.wand]drawing-wand, pixel-wand, pixel-view, conjure, -
  convert,import, mogrify, animate-wand, compare-wand, composite-wand, -
  display-wand,identify-wand,montage-wand
$exit
$
$Make: subroutine
$!
$! Primitive MMS hack for DCL.
$!
$if (p1 .eqs. "") then exit
$source_file=f$search(f$parse(p1,".c"))
$if (source_file .nes. "")
$then
$  object_file=f$parse(source_file,,,"name")+".obj"
$  object_file=f$search( object_file )
$  if (object_file .nes. "")
$  then
$    object_time=f$file_attribute(object_file,"cdt")
$    source_time=f$file_attribute(source_file,"cdt")
$    if (f$cvtime(object_time) .lts. f$cvtime(source_time)) then -
$      object_file=""
$  endif
$  if (object_file .eqs. "")
$  then
$    write sys$output "Compiling ",p1
$    cc'compile_options'/include_directory=([-],[-.magick],[-.jpeg],[-.png], -
       [-.tiff],[-.ttf],[-.zlib]) 'source_file'  
$  endif
$endif
$exit
$endsubroutine


From ebala at helixcommunity.org  Thu Sep 10 11:36:38 2009
From: ebala at helixcommunity.org (ebala@helixcommunity.org)
Date: Thu Sep 10 20:40:11 2009
Subject: [Common-cvs] import/imagemagick/xlib X11_stubs.c, 1.1,
	1.2 Makefile.in, 1.1, 1.2 .cvsignore, 1.1, 1.2 Makefile.am, 1.1, 1.2
Message-ID: 

Update of /cvsroot/common/import/imagemagick/xlib
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv28219

Added Files:
	X11_stubs.c Makefile.in .cvsignore Makefile.am 
Log Message:
Import of Imagemagick

--- NEW FILE: .cvsignore ---
configure

--- NEW FILE: Makefile.in ---
# Makefile.in generated automatically by automake 1.4 from Makefile.am

# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.

# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.

#
#  Automake Makefile for the X11 stubs library
#
# Copyright (C) 2000 ImageMagick Studio, a non-profit organization dedicated
# to making software imaging solutions freely available.
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files ("ImageMagick"),
# to deal in ImageMagick without restriction, including without limitation
# the rights to use, copy, modify, merge, publish, distribute, sublicense
# and/or sell copies of ImageMagick, and to permit persons to whom the
# ImageMagick is furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of ImageMagick.
#
# Licensor ("ImageMagick Studio LLC") warrants that the copyright in and to
# the Software ("ImageMagick") is owned by ImageMagick Studio LLC or is
# distributed by ImageMagick Studio LLC under a valid current license.
# Except as expressly stated in the immediately preceding sentence,
# ImageMagick is provided by ImageMagick Studio LLC, distributors, and
# copyright owners "AS IS", without warranty of any kind, express or
# implied, including but not limited to the warranties of merchantability,
# fitness for a particular purpose and non-infringement.  In no event shall
# ImageMagick Studio LLC, contributors or copyright owners be liable for
# any claim, damages, or other liability, whether in an action of contract,
# tort or otherwise, arising from, out of or in connection with
# ImageMagick.
#
# Except as contained in this notice, the name of the ImageMagick Studio
# shall not be used in advertising or otherwise to promote the sale, use or
# other dealings in ImageMagick without prior written authorization from the
# ImageMagick Studio.
#
#  This file is currently maintained by Bob Friesenhahn,
#  bfriesen@simple.dallas.tx.us

# Don't require all the GNU mandated files
# Remove comment from no-dependencies for distributions compatable with
# traditional 'make'


SHELL = @SHELL@

srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
prefix = @prefix@
exec_prefix = @exec_prefix@

bindir = @bindir@
sbindir = @sbindir@
libexecdir = @libexecdir@
datadir = @datadir@
sysconfdir = @sysconfdir@
sharedstatedir = @sharedstatedir@
localstatedir = @localstatedir@
libdir = @libdir@
infodir = @infodir@
mandir = @mandir@
includedir = @includedir@
oldincludedir = /usr/include

DESTDIR =

pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@

top_builddir = .

ACLOCAL = @ACLOCAL@
AUTOCONF = @AUTOCONF@
AUTOMAKE = @AUTOMAKE@
AUTOHEADER = @AUTOHEADER@

INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
INSTALL_DATA = @INSTALL_DATA@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
transform = @program_transform_name@

NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
host_alias = @host_alias@
host_triplet = @host@
CC = @CC@
LIBTOOL = @LIBTOOL@
RANLIB = @RANLIB@

AUTOMAKE_OPTIONS = 1.2 foreign # no-dependencies

lib_LTLIBRARIES = @X11STUBSLANAME@

# Any library that is auto-configured into lib_LTLIBRARIES must be listed
# in EXTRA_LTLIBRARIES so that Automake can generate rules to build it.
# Furthermore, Automake does not assume a -rpath argument for such libraries
# so it must be added explicitly.
EXTRA_LTLIBRARIES = libX11_stubs.la
libX11_stubs_la_SOURCES = X11_stubs.c
libX11_stubs_la_LDFLAGS = -rpath $(libdir)

DISTDIRS = X11 unix

# Since we are building a library, no need for LIBS
LIBS = 
mkinstalldirs = $(SHELL) $(top_srcdir)/..//mkinstalldirs
CONFIG_CLEAN_FILES = 
LTLIBRARIES =  $(lib_LTLIBRARIES)


DEFS = @DEFS@ -I. -I$(srcdir) 
CPPFLAGS = @CPPFLAGS@
LDFLAGS = @LDFLAGS@
libX11_stubs_la_LIBADD = 
libX11_stubs_la_OBJECTS =  X11_stubs.lo
CFLAGS = @CFLAGS@
COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
CCLD = $(CC)
LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@
DIST_COMMON =  Makefile.am Makefile.in configure configure.in


PACKAGE = @PACKAGE@
VERSION = @VERSION@

DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)

TAR = gtar
GZIP_ENV = --best
DEP_FILES =  .deps/X11_stubs.P
SOURCES = $(libX11_stubs_la_SOURCES)
OBJECTS = $(libX11_stubs_la_OBJECTS)

all: all-redirect
.SUFFIXES:
.SUFFIXES: .S .c .lo .o .s
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) 
	cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile

Makefile: $(srcdir)/Makefile.in  $(top_builddir)/config.status $(BUILT_SOURCES)
	cd $(top_builddir) \
	  && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status


config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
	$(SHELL) ./config.status --recheck
$(srcdir)/configure: $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES)
	cd $(srcdir) && $(AUTOCONF)

mostlyclean-libLTLIBRARIES:

clean-libLTLIBRARIES:
	-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)

distclean-libLTLIBRARIES:

maintainer-clean-libLTLIBRARIES:

install-libLTLIBRARIES: $(lib_LTLIBRARIES)
	@$(NORMAL_INSTALL)
	$(mkinstalldirs) $(DESTDIR)$(libdir)
	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
	  if test -f $$p; then \
	    echo "$(LIBTOOL)  --mode=install $(INSTALL) $$p $(DESTDIR)$(libdir)/$$p"; \
	    $(LIBTOOL)  --mode=install $(INSTALL) $$p $(DESTDIR)$(libdir)/$$p; \
	  else :; fi; \
	done

uninstall-libLTLIBRARIES:
	@$(NORMAL_UNINSTALL)
	list='$(lib_LTLIBRARIES)'; for p in $$list; do \
	  $(LIBTOOL)  --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p; \
	done

.s.o:
	$(COMPILE) -c $<

.S.o:
	$(COMPILE) -c $<

mostlyclean-compile:
	-rm -f *.o core *.core

clean-compile:

distclean-compile:
	-rm -f *.tab.c

maintainer-clean-compile:

.s.lo:
	$(LIBTOOL) --mode=compile $(COMPILE) -c $<

.S.lo:
	$(LIBTOOL) --mode=compile $(COMPILE) -c $<

mostlyclean-libtool:
	-rm -f *.lo

clean-libtool:
	-rm -rf .libs _libs

distclean-libtool:

maintainer-clean-libtool:

libX11_stubs.la: $(libX11_stubs_la_OBJECTS) $(libX11_stubs_la_DEPENDENCIES)
	$(LINK)  $(libX11_stubs_la_LDFLAGS) $(libX11_stubs_la_OBJECTS) $(libX11_stubs_la_LIBADD) $(LIBS)

tags: TAGS

ID: $(HEADERS) $(SOURCES) $(LISP)
	list='$(SOURCES) $(HEADERS)'; \
	unique=`for i in $$list; do echo $$i; done | \
	  awk '    { files[$$0] = 1; } \
	       END { for (i in files) print i; }'`; \
	here=`pwd` && cd $(srcdir) \
	  && mkid -f$$here/ID $$unique $(LISP)

TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) $(LISP)
	tags=; \
	here=`pwd`; \
	list='$(SOURCES) $(HEADERS)'; \
	unique=`for i in $$list; do echo $$i; done | \
	  awk '    { files[$$0] = 1; } \
	       END { for (i in files) print i; }'`; \
	test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
	  || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags  $$unique $(LISP) -o $$here/TAGS)

mostlyclean-tags:

clean-tags:

distclean-tags:
	-rm -f TAGS ID

maintainer-clean-tags:

distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir)

# This target untars the dist file and tries a VPATH configuration.  Then
# it guarantees that the distribution is self-contained by making another
# tarfile.
distcheck: dist
	-rm -rf $(distdir)
	GZIP=$(GZIP_ENV) $(TAR) zxf $(distdir).tar.gz
	mkdir $(distdir)/=build
	mkdir $(distdir)/=inst
	dc_install_base=`cd $(distdir)/=inst && pwd`; \
	cd $(distdir)/=build \
	  && ../configure --srcdir=.. --prefix=$$dc_install_base \
	  && $(MAKE) $(AM_MAKEFLAGS) \
	  && $(MAKE) $(AM_MAKEFLAGS) dvi \
	  && $(MAKE) $(AM_MAKEFLAGS) check \
	  && $(MAKE) $(AM_MAKEFLAGS) install \
	  && $(MAKE) $(AM_MAKEFLAGS) installcheck \
	  && $(MAKE) $(AM_MAKEFLAGS) dist
	-rm -rf $(distdir)
	@banner="$(distdir).tar.gz is ready for distribution"; \
	dashes=`echo "$$banner" | sed s/./=/g`; \
	echo "$$dashes"; \
	echo "$$banner"; \
	echo "$$dashes"
dist: distdir
	-chmod -R a+r $(distdir)
	GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir)
	-rm -rf $(distdir)
dist-all: distdir
	-chmod -R a+r $(distdir)
	GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir)
	-rm -rf $(distdir)
distdir: $(DISTFILES)
	-rm -rf $(distdir)
	mkdir $(distdir)
	-chmod 777 $(distdir)
	here=`cd $(top_builddir) && pwd`; \
	top_distdir=`cd $(distdir) && pwd`; \
	distdir=`cd $(distdir) && pwd`; \
	cd $(top_srcdir) \
	  && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --foreign Makefile
	@for file in $(DISTFILES); do \
	  d=$(srcdir); \
	  if test -d $$d/$$file; then \
	    cp -pr $$/$$file $(distdir)/$$file; \
	  else \
	    test -f $(distdir)/$$file \
	    || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
	    || cp -p $$d/$$file $(distdir)/$$file || :; \
	  fi; \
	done
	$(MAKE) $(AM_MAKEFLAGS) top_distdir="$(top_distdir)" distdir="$(distdir)" dist-hook

DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :)

-include $(DEP_FILES)

mostlyclean-depend:

clean-depend:

distclean-depend:
	-rm -rf .deps

maintainer-clean-depend:

%.o: %.c
	@echo '$(COMPILE) -c $<'; \
	$(COMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
	@-cp .deps/$(*F).pp .deps/$(*F).P; \
	tr ' ' '\012' < .deps/$(*F).pp \
	  | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
	    >> .deps/$(*F).P; \
	rm .deps/$(*F).pp

%.lo: %.c
	@echo '$(LTCOMPILE) -c $<'; \
	$(LTCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
	@-sed -e 's/^\([^:]*\)\.o[ 	]*:/\1.lo \1.o :/' \
	  < .deps/$(*F).pp > .deps/$(*F).P; \
	tr ' ' '\012' < .deps/$(*F).pp \
	  | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
	    >> .deps/$(*F).P; \
	rm -f .deps/$(*F).pp
info-am:
info: info-am
dvi-am:
dvi: dvi-am
check-am: all-am
check: check-am
installcheck-am:
installcheck: installcheck-am
install-exec-am: install-libLTLIBRARIES
install-exec: install-exec-am

install-data-am:
install-data: install-data-am

install-am: all-am
	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
install: install-am
uninstall-am: uninstall-libLTLIBRARIES
uninstall: uninstall-am
all-am: Makefile $(LTLIBRARIES)
all-redirect: all-am
install-strip:
	$(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
installdirs:
	$(mkinstalldirs)  $(DESTDIR)$(libdir)


mostlyclean-generic:

clean-generic:

distclean-generic:
	-rm -f Makefile $(CONFIG_CLEAN_FILES)
	-rm -f config.cache config.log stamp-h stamp-h[0-9]*

maintainer-clean-generic:
mostlyclean-am:  mostlyclean-libLTLIBRARIES mostlyclean-compile \
		mostlyclean-libtool mostlyclean-tags mostlyclean-depend \
		mostlyclean-generic

mostlyclean: mostlyclean-am

clean-am:  clean-libLTLIBRARIES clean-compile clean-libtool clean-tags \
		clean-depend clean-generic mostlyclean-am

clean: clean-am

distclean-am:  distclean-libLTLIBRARIES distclean-compile \
		distclean-libtool distclean-tags distclean-depend \
		distclean-generic clean-am
	-rm -f libtool

distclean: distclean-am
	-rm -f config.status

maintainer-clean-am:  maintainer-clean-libLTLIBRARIES \
		maintainer-clean-compile maintainer-clean-libtool \
		maintainer-clean-tags maintainer-clean-depend \
		maintainer-clean-generic distclean-am
	@echo "This command is intended for maintainers to use;"
	@echo "it deletes files that may require special tools to rebuild."

maintainer-clean: maintainer-clean-am
	-rm -f config.status

.PHONY: mostlyclean-libLTLIBRARIES distclean-libLTLIBRARIES \
clean-libLTLIBRARIES maintainer-clean-libLTLIBRARIES \
uninstall-libLTLIBRARIES install-libLTLIBRARIES mostlyclean-compile \
distclean-compile clean-compile maintainer-clean-compile \
mostlyclean-libtool distclean-libtool clean-libtool \
maintainer-clean-libtool tags mostlyclean-tags distclean-tags \
clean-tags maintainer-clean-tags distdir mostlyclean-depend \
distclean-depend clean-depend maintainer-clean-depend info-am info \
dvi-am dvi check check-am installcheck-am installcheck install-exec-am \
install-exec install-data-am install-data install-am install \
uninstall-am uninstall all-redirect all-am all installdirs \
mostlyclean-generic distclean-generic clean-generic \
maintainer-clean-generic clean mostlyclean distclean maintainer-clean

dist-hook:
	( \
	  builddir=`pwd` ; \
	  cd $(srcdir) && \
	  ( \
	    for dir in $(DISTDIRS) ; do \
	      find $$dir -depth -print | egrep -v '(~$$)' | cpio -pdum $$builddir/$(distdir) 2> /dev/null ; \
	    done \
	  ) \
	)

# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

--- NEW FILE: X11_stubs.c ---
/* $XConsortium: Xlib.h,v 11.237 94/09/01 18:44:49 kaleb Exp $ */
/* 

Copyright (c) 1985, 1986, 1987, 1991  X Consortium

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
[...7933 lines suppressed...]
    char            *specifier;     /* Resource specifier                   */
    XrmOptionKind   argKind;        /* Which style of option it is          */
    XPointer        value;          /* Value to provide if XrmoptionNoArg   */
} XrmOptionDescRec, *XrmOptionDescList;


#if defined(_VISUALC_)
extern MagickExport void XrmParseCommand(
#else
void XrmParseCommand(
#endif
#if NeedFunctionPrototypes
    XrmDatabase* a      /* database */,
    XrmOptionDescList b /* table */,
    int c               /* table_count */,
    _Xconst char* d     /* name */,
    int* e              /* argc_in_out */,
    char**      f       /* argv_in_out */                    
#endif
){}

--- NEW FILE: Makefile.am ---
#  Copyright 1999-2004 ImageMagick Studio LLC, a non-profit organization
#  dedicated to making software imaging solutions freely available.
#
#  You may not use this file except in compliance with the License.  You may
#  obtain a copy of the License at
#
#    http://www.imagemagick.org/www/Copyright.html
#
#  Unless required by applicable law or agreed to in writing, software
#  distributed under the License is distributed on an "AS IS" BASIS,
#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#  See the License for the specific language governing permissions and
#  limitations under the License.
#
#  Automake Makefile for the X11 stubs library.

DISTDIRS = X11 unix
dist-hook:
	( \
	  builddir=`pwd` ; \
	  cd $(srcdir) && \
	  ( \
	    for dir in $(DISTDIRS) ; do \
	      find $$dir -depth -print | egrep -v '(~$$)' | cpio -pdum $$builddir/$(distdir) 2> /dev/null ; \
	    done \
	  ) \
	)

# Since we are building a library, no need for LIBS
LIBS =



From ebala at helixcommunity.org  Thu Sep 10 11:36:38 2009
From: ebala at helixcommunity.org (ebala@helixcommunity.org)
Date: Thu Sep 10 20:40:11 2009
Subject: [Common-cvs] import/imagemagick/xlib X11_stubs.c, 1.1,
	1.2 Makefile.in, 1.1, 1.2 .cvsignore, 1.1, 1.2 Makefile.am, 1.1, 1.2
Message-ID: 

Update of /cvsroot/common/import/imagemagick/xlib
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv28219

Added Files:
	X11_stubs.c Makefile.in .cvsignore Makefile.am 
Log Message:
Import of Imagemagick

--- NEW FILE: .cvsignore ---
configure

--- NEW FILE: Makefile.in ---
# Makefile.in generated automatically by automake 1.4 from Makefile.am

# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.

# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.

#
#  Automake Makefile for the X11 stubs library
#
# Copyright (C) 2000 ImageMagick Studio, a non-profit organization dedicated
# to making software imaging solutions freely available.
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files ("ImageMagick"),
# to deal in ImageMagick without restriction, including without limitation
# the rights to use, copy, modify, merge, publish, distribute, sublicense
# and/or sell copies of ImageMagick, and to permit persons to whom the
# ImageMagick is furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of ImageMagick.
#
# Licensor ("ImageMagick Studio LLC") warrants that the copyright in and to
# the Software ("ImageMagick") is owned by ImageMagick Studio LLC or is
# distributed by ImageMagick Studio LLC under a valid current license.
# Except as expressly stated in the immediately preceding sentence,
# ImageMagick is provided by ImageMagick Studio LLC, distributors, and
# copyright owners "AS IS", without warranty of any kind, express or
# implied, including but not limited to the warranties of merchantability,
# fitness for a particular purpose and non-infringement.  In no event shall
# ImageMagick Studio LLC, contributors or copyright owners be liable for
# any claim, damages, or other liability, whether in an action of contract,
# tort or otherwise, arising from, out of or in connection with
# ImageMagick.
#
# Except as contained in this notice, the name of the ImageMagick Studio
# shall not be used in advertising or otherwise to promote the sale, use or
# other dealings in ImageMagick without prior written authorization from the
# ImageMagick Studio.
#
#  This file is currently maintained by Bob Friesenhahn,
#  bfriesen@simple.dallas.tx.us

# Don't require all the GNU mandated files
# Remove comment from no-dependencies for distributions compatable with
# traditional 'make'


SHELL = @SHELL@

srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
prefix = @prefix@
exec_prefix = @exec_prefix@

bindir = @bindir@
sbindir = @sbindir@
libexecdir = @libexecdir@
datadir = @datadir@
sysconfdir = @sysconfdir@
sharedstatedir = @sharedstatedir@
localstatedir = @localstatedir@
libdir = @libdir@
infodir = @infodir@
mandir = @mandir@
includedir = @includedir@
oldincludedir = /usr/include

DESTDIR =

pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@

top_builddir = .

ACLOCAL = @ACLOCAL@
AUTOCONF = @AUTOCONF@
AUTOMAKE = @AUTOMAKE@
AUTOHEADER = @AUTOHEADER@

INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
INSTALL_DATA = @INSTALL_DATA@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
transform = @program_transform_name@

NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
host_alias = @host_alias@
host_triplet = @host@
CC = @CC@
LIBTOOL = @LIBTOOL@
RANLIB = @RANLIB@

AUTOMAKE_OPTIONS = 1.2 foreign # no-dependencies

lib_LTLIBRARIES = @X11STUBSLANAME@

# Any library that is auto-configured into lib_LTLIBRARIES must be listed
# in EXTRA_LTLIBRARIES so that Automake can generate rules to build it.
# Furthermore, Automake does not assume a -rpath argument for such libraries
# so it must be added explicitly.
EXTRA_LTLIBRARIES = libX11_stubs.la
libX11_stubs_la_SOURCES = X11_stubs.c
libX11_stubs_la_LDFLAGS = -rpath $(libdir)

DISTDIRS = X11 unix

# Since we are building a library, no need for LIBS
LIBS = 
mkinstalldirs = $(SHELL) $(top_srcdir)/..//mkinstalldirs
CONFIG_CLEAN_FILES = 
LTLIBRARIES =  $(lib_LTLIBRARIES)


DEFS = @DEFS@ -I. -I$(srcdir) 
CPPFLAGS = @CPPFLAGS@
LDFLAGS = @LDFLAGS@
libX11_stubs_la_LIBADD = 
libX11_stubs_la_OBJECTS =  X11_stubs.lo
CFLAGS = @CFLAGS@
COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
CCLD = $(CC)
LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@
DIST_COMMON =  Makefile.am Makefile.in configure configure.in


PACKAGE = @PACKAGE@
VERSION = @VERSION@

DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)

TAR = gtar
GZIP_ENV = --best
DEP_FILES =  .deps/X11_stubs.P
SOURCES = $(libX11_stubs_la_SOURCES)
OBJECTS = $(libX11_stubs_la_OBJECTS)

all: all-redirect
.SUFFIXES:
.SUFFIXES: .S .c .lo .o .s
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) 
	cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile

Makefile: $(srcdir)/Makefile.in  $(top_builddir)/config.status $(BUILT_SOURCES)
	cd $(top_builddir) \
	  && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status


config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
	$(SHELL) ./config.status --recheck
$(srcdir)/configure: $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES)
	cd $(srcdir) && $(AUTOCONF)

mostlyclean-libLTLIBRARIES:

clean-libLTLIBRARIES:
	-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)

distclean-libLTLIBRARIES:

maintainer-clean-libLTLIBRARIES:

install-libLTLIBRARIES: $(lib_LTLIBRARIES)
	@$(NORMAL_INSTALL)
	$(mkinstalldirs) $(DESTDIR)$(libdir)
	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
	  if test -f $$p; then \
	    echo "$(LIBTOOL)  --mode=install $(INSTALL) $$p $(DESTDIR)$(libdir)/$$p"; \
	    $(LIBTOOL)  --mode=install $(INSTALL) $$p $(DESTDIR)$(libdir)/$$p; \
	  else :; fi; \
	done

uninstall-libLTLIBRARIES:
	@$(NORMAL_UNINSTALL)
	list='$(lib_LTLIBRARIES)'; for p in $$list; do \
	  $(LIBTOOL)  --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p; \
	done

.s.o:
	$(COMPILE) -c $<

.S.o:
	$(COMPILE) -c $<

mostlyclean-compile:
	-rm -f *.o core *.core

clean-compile:

distclean-compile:
	-rm -f *.tab.c

maintainer-clean-compile:

.s.lo:
	$(LIBTOOL) --mode=compile $(COMPILE) -c $<

.S.lo:
	$(LIBTOOL) --mode=compile $(COMPILE) -c $<

mostlyclean-libtool:
	-rm -f *.lo

clean-libtool:
	-rm -rf .libs _libs

distclean-libtool:

maintainer-clean-libtool:

libX11_stubs.la: $(libX11_stubs_la_OBJECTS) $(libX11_stubs_la_DEPENDENCIES)
	$(LINK)  $(libX11_stubs_la_LDFLAGS) $(libX11_stubs_la_OBJECTS) $(libX11_stubs_la_LIBADD) $(LIBS)

tags: TAGS

ID: $(HEADERS) $(SOURCES) $(LISP)
	list='$(SOURCES) $(HEADERS)'; \
	unique=`for i in $$list; do echo $$i; done | \
	  awk '    { files[$$0] = 1; } \
	       END { for (i in files) print i; }'`; \
	here=`pwd` && cd $(srcdir) \
	  && mkid -f$$here/ID $$unique $(LISP)

TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) $(LISP)
	tags=; \
	here=`pwd`; \
	list='$(SOURCES) $(HEADERS)'; \
	unique=`for i in $$list; do echo $$i; done | \
	  awk '    { files[$$0] = 1; } \
	       END { for (i in files) print i; }'`; \
	test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
	  || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags  $$unique $(LISP) -o $$here/TAGS)

mostlyclean-tags:

clean-tags:

distclean-tags:
	-rm -f TAGS ID

maintainer-clean-tags:

distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir)

# This target untars the dist file and tries a VPATH configuration.  Then
# it guarantees that the distribution is self-contained by making another
# tarfile.
distcheck: dist
	-rm -rf $(distdir)
	GZIP=$(GZIP_ENV) $(TAR) zxf $(distdir).tar.gz
	mkdir $(distdir)/=build
	mkdir $(distdir)/=inst
	dc_install_base=`cd $(distdir)/=inst && pwd`; \
	cd $(distdir)/=build \
	  && ../configure --srcdir=.. --prefix=$$dc_install_base \
	  && $(MAKE) $(AM_MAKEFLAGS) \
	  && $(MAKE) $(AM_MAKEFLAGS) dvi \
	  && $(MAKE) $(AM_MAKEFLAGS) check \
	  && $(MAKE) $(AM_MAKEFLAGS) install \
	  && $(MAKE) $(AM_MAKEFLAGS) installcheck \
	  && $(MAKE) $(AM_MAKEFLAGS) dist
	-rm -rf $(distdir)
	@banner="$(distdir).tar.gz is ready for distribution"; \
	dashes=`echo "$$banner" | sed s/./=/g`; \
	echo "$$dashes"; \
	echo "$$banner"; \
	echo "$$dashes"
dist: distdir
	-chmod -R a+r $(distdir)
	GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir)
	-rm -rf $(distdir)
dist-all: distdir
	-chmod -R a+r $(distdir)
	GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir)
	-rm -rf $(distdir)
distdir: $(DISTFILES)
	-rm -rf $(distdir)
	mkdir $(distdir)
	-chmod 777 $(distdir)
	here=`cd $(top_builddir) && pwd`; \
	top_distdir=`cd $(distdir) && pwd`; \
	distdir=`cd $(distdir) && pwd`; \
	cd $(top_srcdir) \
	  && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --foreign Makefile
	@for file in $(DISTFILES); do \
	  d=$(srcdir); \
	  if test -d $$d/$$file; then \
	    cp -pr $$/$$file $(distdir)/$$file; \
	  else \
	    test -f $(distdir)/$$file \
	    || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
	    || cp -p $$d/$$file $(distdir)/$$file || :; \
	  fi; \
	done
	$(MAKE) $(AM_MAKEFLAGS) top_distdir="$(top_distdir)" distdir="$(distdir)" dist-hook

DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :)

-include $(DEP_FILES)

mostlyclean-depend:

clean-depend:

distclean-depend:
	-rm -rf .deps

maintainer-clean-depend:

%.o: %.c
	@echo '$(COMPILE) -c $<'; \
	$(COMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
	@-cp .deps/$(*F).pp .deps/$(*F).P; \
	tr ' ' '\012' < .deps/$(*F).pp \
	  | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
	    >> .deps/$(*F).P; \
	rm .deps/$(*F).pp

%.lo: %.c
	@echo '$(LTCOMPILE) -c $<'; \
	$(LTCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
	@-sed -e 's/^\([^:]*\)\.o[ 	]*:/\1.lo \1.o :/' \
	  < .deps/$(*F).pp > .deps/$(*F).P; \
	tr ' ' '\012' < .deps/$(*F).pp \
	  | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
	    >> .deps/$(*F).P; \
	rm -f .deps/$(*F).pp
info-am:
info: info-am
dvi-am:
dvi: dvi-am
check-am: all-am
check: check-am
installcheck-am:
installcheck: installcheck-am
install-exec-am: install-libLTLIBRARIES
install-exec: install-exec-am

install-data-am:
install-data: install-data-am

install-am: all-am
	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
install: install-am
uninstall-am: uninstall-libLTLIBRARIES
uninstall: uninstall-am
all-am: Makefile $(LTLIBRARIES)
all-redirect: all-am
install-strip:
	$(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
installdirs:
	$(mkinstalldirs)  $(DESTDIR)$(libdir)


mostlyclean-generic:

clean-generic:

distclean-generic:
	-rm -f Makefile $(CONFIG_CLEAN_FILES)
	-rm -f config.cache config.log stamp-h stamp-h[0-9]*

maintainer-clean-generic:
mostlyclean-am:  mostlyclean-libLTLIBRARIES mostlyclean-compile \
		mostlyclean-libtool mostlyclean-tags mostlyclean-depend \
		mostlyclean-generic

mostlyclean: mostlyclean-am

clean-am:  clean-libLTLIBRARIES clean-compile clean-libtool clean-tags \
		clean-depend clean-generic mostlyclean-am

clean: clean-am

distclean-am:  distclean-libLTLIBRARIES distclean-compile \
		distclean-libtool distclean-tags distclean-depend \
		distclean-generic clean-am
	-rm -f libtool

distclean: distclean-am
	-rm -f config.status

maintainer-clean-am:  maintainer-clean-libLTLIBRARIES \
		maintainer-clean-compile maintainer-clean-libtool \
		maintainer-clean-tags maintainer-clean-depend \
		maintainer-clean-generic distclean-am
	@echo "This command is intended for maintainers to use;"
	@echo "it deletes files that may require special tools to rebuild."

maintainer-clean: maintainer-clean-am
	-rm -f config.status

.PHONY: mostlyclean-libLTLIBRARIES distclean-libLTLIBRARIES \
clean-libLTLIBRARIES maintainer-clean-libLTLIBRARIES \
uninstall-libLTLIBRARIES install-libLTLIBRARIES mostlyclean-compile \
distclean-compile clean-compile maintainer-clean-compile \
mostlyclean-libtool distclean-libtool clean-libtool \
maintainer-clean-libtool tags mostlyclean-tags distclean-tags \
clean-tags maintainer-clean-tags distdir mostlyclean-depend \
distclean-depend clean-depend maintainer-clean-depend info-am info \
dvi-am dvi check check-am installcheck-am installcheck install-exec-am \
install-exec install-data-am install-data install-am install \
uninstall-am uninstall all-redirect all-am all installdirs \
mostlyclean-generic distclean-generic clean-generic \
maintainer-clean-generic clean mostlyclean distclean maintainer-clean

dist-hook:
	( \
	  builddir=`pwd` ; \
	  cd $(srcdir) && \
	  ( \
	    for dir in $(DISTDIRS) ; do \
	      find $$dir -depth -print | egrep -v '(~$$)' | cpio -pdum $$builddir/$(distdir) 2> /dev/null ; \
	    done \
	  ) \
	)

# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

--- NEW FILE: X11_stubs.c ---
/* $XConsortium: Xlib.h,v 11.237 94/09/01 18:44:49 kaleb Exp $ */
/* 

Copyright (c) 1985, 1986, 1987, 1991  X Consortium

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
[...7933 lines suppressed...]
    char            *specifier;     /* Resource specifier                   */
    XrmOptionKind   argKind;        /* Which style of option it is          */
    XPointer        value;          /* Value to provide if XrmoptionNoArg   */
} XrmOptionDescRec, *XrmOptionDescList;


#if defined(_VISUALC_)
extern MagickExport void XrmParseCommand(
#else
void XrmParseCommand(
#endif
#if NeedFunctionPrototypes
    XrmDatabase* a      /* database */,
    XrmOptionDescList b /* table */,
    int c               /* table_count */,
    _Xconst char* d     /* name */,
    int* e              /* argc_in_out */,
    char**      f       /* argv_in_out */                    
#endif
){}

--- NEW FILE: Makefile.am ---
#  Copyright 1999-2004 ImageMagick Studio LLC, a non-profit organization
#  dedicated to making software imaging solutions freely available.
#
#  You may not use this file except in compliance with the License.  You may
#  obtain a copy of the License at
#
#    http://www.imagemagick.org/www/Copyright.html
#
#  Unless required by applicable law or agreed to in writing, software
#  distributed under the License is distributed on an "AS IS" BASIS,
#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#  See the License for the specific language governing permissions and
#  limitations under the License.
#
#  Automake Makefile for the X11 stubs library.

DISTDIRS = X11 unix
dist-hook:
	( \
	  builddir=`pwd` ; \
	  cd $(srcdir) && \
	  ( \
	    for dir in $(DISTDIRS) ; do \
	      find $$dir -depth -print | egrep -v '(~$$)' | cpio -pdum $$builddir/$(distdir) 2> /dev/null ; \
	    done \
	  ) \
	)

# Since we are building a library, no need for LIBS
LIBS =



From ebala at helixcommunity.org  Thu Sep 10 11:36:44 2009
From: ebala at helixcommunity.org (ebala@helixcommunity.org)
Date: Thu Sep 10 20:40:12 2009
Subject: [Common-cvs] 
	import/imagemagick/Magick++ AUTHORS, 1.1, 1.2 ChangeLog,
	1.1, 1.2 INSTALL, 1.1, 1.2 LICENSE, 1.1, 1.2 NEWS, 1.1,
	1.2 README, 1.1, 1.2 Makefile.am, 1.1,
	1.2 drawing-primitives.txt, 1.1, 1.2
Message-ID: 

Update of /cvsroot/common/import/imagemagick/Magick++
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv28250

Added Files:
	AUTHORS ChangeLog INSTALL LICENSE NEWS README Makefile.am 
	drawing-primitives.txt 
Log Message:
Import of Imagemagick

--- NEW FILE: LICENSE ---

Copyright 1999 - 2002 Bob Friesenhahn 
                                                                          
Permission is hereby granted, free of charge, to any person
obtaining a copy of the source files and associated documentation
files ("Magick++"), to deal in Magick++ without restriction,
including without limitation of the rights to use, copy, modify,
merge, publish, distribute, sublicense, and/or sell copies of
Magick++, and to permit persons to whom the Magick++ is furnished
to do so, subject to the following conditions:
                                                                          
This copyright notice shall be included in all copies or
substantial portions of Magick++. The copyright to Magick++ is
retained by its author and shall not be subsumed or replaced by any
other copyright.
                                                                          
The software is provided "as is", without warranty of any kind,
express or implied, including but not limited to the warranties of
merchantability, fitness for a particular purpose and
noninfringement. In no event shall Bob Friesenhahn be liable for
any claim, damages or other liability, whether in an action of
contract, tort or otherwise, arising from, out of or in connection
with Magick++ or the use or other dealings in Magick++.


--- NEW FILE: ChangeLog ---
2009-04-01  6.5.1-1 Cristy  
  * Add virtualPixelMethod() method for image and options, required for
    distort().

2008-09-09  6.4.3-7 Cristy  
  * Use ImagesToBlob() rather than ImageToBlob() for writeImages().

2007-10-02  6.3.6-7 Cristy  
  * Define USE_MAP for Magick++/tests/colorHistogram.cpp (patch provided by
    albert chin ).

2007-04-10  6.3.3-7 Cristy  
  * Add colorspaceType(RGBColorspace) to set RGB colorspace before an
    image read (useful to convert CMYK Potscript to RGB).

2006-02-05  6.3.2-3 Cristy  
  * Clear exception in throwException() method.

2006-01-16  6.3.2-0 Cristy  
[...1464 lines suppressed...]
1999-04-11  Bob Friesenhahn  

	* demo/flip.cpp (main): New file.  Demonstrates use of flipImage
 	function object as well as morphImages algorithm.

1999-04-10  Bob Friesenhahn  

	* tests/color.cpp : New file to support testing the Magick::Color
 	classes.

	* lib/MagickOptions.cpp: The ImageInfo filter member is now
 	ignored by ImageMagick (as of ImageMagick 4.2.2 April 10, 1998) so
 	support for setting it is removed. The Image filter member is
 	still updated. According to Cristy, this ImageMagick version
 	removes automatic sharpening of resized images.  The blur member
 	is added to the Image structure. A blur value < 1 causes the image
 	to be sharpened when resizing while a value > 1 leaves the image
 	blurry.  Magick++ does not yet support the blur member.



--- NEW FILE: drawing-primitives.txt ---
Summary of MVG Primitives and Syntax
====================================

MVG ignores all white-space between commands. This allows
multiple MVG commands per line. It is common convention to
terminate each MVG command with a new line to make MVG easier
to edit and read. This syntax description uses indentation in
MVG sequences to aid with understanding. Indentation is
supported but is not required.

Metafile wrapper syntax (to support stand-alone MVG files)
----------------------------------------------------------

  push graphic-context
   viewbox 0 0 width height
    [ any other MVG commands ]
  pop graphic-context


Pattern syntax (saving and restoring context)
---------------------------------------------

  push pattern id x,y width,height
   push graphic-context
    [ drawing commands ]
   pop graphic-context
  pop pattern

an example is (%s is a identifier string)

  push defs
   push pattern %s 10,10 20,20
    push graphic-context
     fill red
     rectangle 5,5 15,15
    pop graphic-context
    push graphic-context
     fill green
     rectangle 10,10 20,20
    pop graphic-context
   pop pattern
  pop defs

For image tiling use

  push pattern id x,y width,height
   image Copy ...
  pop pattern

Note you can use the pattern for either the fill or stroke like

  stroke url(#%s)

    or

  fill url(#%s)

Clip-path syntax
----------------

 The clip path defines a clipping area, where only the contained
 area will be drawn upon.  Areas outside of the clipping area are
 masked.

  push defs
   push clip-path %s
    push graphic-context
     rectangle 10,10 20,20
    pop graphic-context
   pop clip-path
  pop defs
  clip-path url(#%s)

Individual Drawing Primitives
=============================

affine sx,rx,ry,sy,tx,ty
arc x0,y0 x1,y1 a0,a1
bezier x0,y0  ...  xn,yn
circle originX,originY perimX,perimY
clip-path url(#%s)  (%s is the name of the clip path)
clip-rule (evenodd|nonzero)
clip-units (userSpace|userSpaceOnUse|objectBoundingBox)
color x,y (point|replace|floodfill|filltoborder|reset)
decorate (none|underline|overline|line-through)
ellipse centerX,centerY radiusX,radiusY arcStart,arcEnd
fill colorspec
fill-opacity opacity[%]
fill-rule (evenodd|nonzero)
font fontname
font-family familyname (e.g. "helvetica")
font-size pointsize
font-stretch (all|normal|ultra-condensed|extra-condensed|condensed|
              semi-condensed|semi-expanded|expanded|extra-expanded|
              ultra-expanded)
font-style (all|normal|italic|oblique)
font-weight (all|normal|bold|100|200|300|400|500|600|700|800|900)
gradient-units (userSpace|userSpaceOnUse|objectBoundingBox)
gravity (NorthWest|North|NorthEast|West|Center|East|SouthWest|
         South|SouthEast)
image (Add|Atop|Bumpmap|Clear|CopyBlue|CopyGreen|CopyOpacity|CopyRed|
       Copy|Difference|In|Minus|Multiply|Out|Over|Plus|Subtract|Xor)
       dest_x,dest_y dest_width,dest_height 'filename'
line startX,startY endX,endY
matte x,y (point|replace|floodfill|filltoborder|reset)
offset  ???
opacity value[%]
path 'SVG-compatible path arguments'
point x,y
polygon x1,y1, x2,y2, x3,y3, ..., xN,yN
polyline x1,y1, x2,y2, x3,y3, ..., xN,yN
pop clip-path
pop defs
pop gradient
pop graphic-context
pop pattern
push clip-path %s  (%s is the name of the clip path)
push defs
push gradient id linear x1,y1 x2,y2
push gradient id radial cx,cy fx,fy r
push graphic-context
push pattern id x,y width,height
rectangle upperLeftX,upperLeftY lowerRightX,lowerRightY
rotate angle
roundrectangle upperLeftX,upperLeftY lowerRightX,lowerRightY cornerWidth,cornerHeight
scale x,y
skewX angle
skewY angle
stop-color colorspec offset
stroke colorspec
stroke-antialias truth-value (0 or 1)
stroke-dasharray (none|comma-delimited-numeric-list)
stroke-dashoffset dashoffset
stroke-linecap (butt|round|square)
stroke-linejoin (butt|miter|round|square)
stroke-miterlimit limit
stroke-opacity opacity[%]
stroke-width linewidth
text x,y "some text"
text-antialias (0|1)
text-undercolor colorspec
translate x,y
viewbox x1 y1 x1 y2 (e.g. "viewbox 0 0 640 480")


--- NEW FILE: Makefile.am ---
#
# Top Makefile for Magick++
#
# Copyright Bob Friesenhahn, 1999, 2000, 2002, 2004, 2008
#

AM_CPPFLAGS += -I$(top_srcdir)/Magick++/lib

if WITH_MAGICK_PLUS_PLUS
MAGICKPP_LIBS = Magick++/lib/libMagick++.la
MAGICKPP_CHECK_PGRMS = $(MAGICKPP_CHECK_PGRMS_OPT)
MAGICKPP_MANS = $(MAGICKPP_MANS_OPT)
MAGICKPP_PKGCONFIG = $(MAGICKPP_PKGCONFIG_OPT)
MAGICKPP_SCRPTS = $(MAGICKPP_SCRIPTS_OPT)
MAGICKPP_TESTS = $(MAGICKPP_TEST_SCRIPTS_OPT)
MAGICKPP_TOP_INCHEADERS = $(MAGICKPP_TOP_INCHEADERS_OPT)
MAGICKPP_INCHEADERS = $(MAGICKPP_INCHEADERS_OPT)
else
MAGICKPP_LIBS = 
MAGICKPP_CHECK_PGRMS = 
MAGICKPP_MANS = 
MAGICKPP_PKGCONFIG = 
MAGICKPP_SCRPTS =
MAGICKPP_TESTS = 
MAGICKPP_TOP_INCHEADERS =
MAGICKPP_INCHEADERS =
endif

MAGICKPP_SCRIPTS_OPT = \
	Magick++/bin/Magick++-config

MAGICKPP_MANS_OPT = \
	Magick++/bin/Magick++-config.1

MAGICKPP_PKGCONFIG_OPT = \
	Magick++/lib/Magick++.pc \
	Magick++/lib/ImageMagick++.pc

MAGICKPP_TEST_SCRIPTS_OPT = \
	Magick++/tests/exceptions.sh \
	Magick++/tests/appendImages.sh \
	Magick++/tests/attributes.sh \
	Magick++/tests/averageImages.sh \
	Magick++/tests/coalesceImages.sh \
	Magick++/tests/coderInfo.sh \
	Magick++/tests/colorHistogram.sh \
	Magick++/tests/color.sh \
	Magick++/tests/montageImages.sh \
	Magick++/tests/morphImages.sh \
	Magick++/tests/readWriteBlob.sh \
	Magick++/tests/readWriteImages.sh \
	Magick++/demo/analyze.sh \
	Magick++/demo/button.sh \
	Magick++/demo/demo.sh \
	Magick++/demo/flip.sh \
	Magick++/demo/gravity.sh \
	Magick++/demo/piddle.sh \
	Magick++/demo/shapes.sh \
	Magick++/demo/zoom_bessel.sh \
	Magick++/demo/zoom_blackman.sh \
	Magick++/demo/zoom_box.sh \
	Magick++/demo/zoom_catrom.sh \
	Magick++/demo/zoom_cubic.sh \
	Magick++/demo/zoom_gaussian.sh \
	Magick++/demo/zoom_hamming.sh \
	Magick++/demo/zoom_hanning.sh \
	Magick++/demo/zoom_hermite.sh \
	Magick++/demo/zoom_lanczos.sh \
	Magick++/demo/zoom_mitchell.sh \
	Magick++/demo/zoom_point.sh \
	Magick++/demo/zoom_quadratic.sh \
	Magick++/demo/zoom_sample.sh \
	Magick++/demo/zoom_scale.sh \
	Magick++/demo/zoom_sinc.sh \
	Magick++/demo/zoom_triangle.sh

MAGICKPP_EXTRA_DIST = \
	Magick++/AUTHORS \
	Magick++/ChangeLog \
	Magick++/INSTALL \
	Magick++/NEWS \
	Magick++/README \
	Magick++/bin/Magick++-config.1 \
	Magick++/bin/Magick++-config.in \
	Magick++/lib/Magick++.pc.in \
	Magick++/lib/ImageMagick++.pc.in \
	Magick++/demo/model.miff \
	Magick++/demo/smile.miff \
	Magick++/demo/smile_anim.miff \
	Magick++/demo/tile.miff \
	$(MAGICKPP_TEST_SCRIPTS_OPT) \
	Magick++/tests/test_image.miff \
	Magick++/tests/test_image_anim.miff

MAGICKPP_CLEANFILES = \
	Magick++/demo/*_out.* \
	Magick++/demo/ir.out \
	Magick++/tests/colorHistogram.txt \
	Magick++/tests/testmagick_anim_out.miff \
	Magick++/tests/ir.out

Magick___lib_libMagick___la_SOURCES = \
	Magick++/lib/Blob.cpp \
	Magick++/lib/BlobRef.cpp \
	Magick++/lib/CoderInfo.cpp \
	Magick++/lib/Color.cpp \
	Magick++/lib/Drawable.cpp \
	Magick++/lib/Exception.cpp \
	Magick++/lib/Functions.cpp \
	Magick++/lib/Geometry.cpp \
	Magick++/lib/Image.cpp \
	Magick++/lib/ImageRef.cpp \
	Magick++/lib/Montage.cpp \
	Magick++/lib/Options.cpp \
	Magick++/lib/Pixels.cpp \
	Magick++/lib/STL.cpp \
	Magick++/lib/Thread.cpp \
	Magick++/lib/TypeMetric.cpp \
	Magick++/lib/Magick++.h \
	Magick++/lib/Magick++/Blob.h \
	Magick++/lib/Magick++/BlobRef.h \
	Magick++/lib/Magick++/CoderInfo.h \
	Magick++/lib/Magick++/Color.h \
	Magick++/lib/Magick++/Drawable.h \
	Magick++/lib/Magick++/Exception.h \
	Magick++/lib/Magick++/Functions.h \
	Magick++/lib/Magick++/Geometry.h \
	Magick++/lib/Magick++/Image.h \
	Magick++/lib/Magick++/ImageRef.h \
	Magick++/lib/Magick++/Include.h \
	Magick++/lib/Magick++/Montage.h \
	Magick++/lib/Magick++/Options.h \
	Magick++/lib/Magick++/Pixels.h \
	Magick++/lib/Magick++/STL.h \
	Magick++/lib/Magick++/Thread.h \
	Magick++/lib/Magick++/TypeMetric.h

magickpptopincdir = $(topincludedir)
magickpptopinc_HEADERS = $(MAGICKPP_TOP_INCHEADERS)

MAGICKPP_TOP_INCHEADERS_OPT = \
  Magick++/lib/Magick++.h

magickppincdir = $(topincludedir)/Magick++

magickppinc_HEADERS = $(MAGICKPP_INCHEADERS)

MAGICKPP_INCHEADERS_OPT = \
	Magick++/lib/Magick++/Blob.h \
	Magick++/lib/Magick++/CoderInfo.h \
	Magick++/lib/Magick++/Color.h \
	Magick++/lib/Magick++/Drawable.h \
	Magick++/lib/Magick++/Exception.h \
	Magick++/lib/Magick++/Geometry.h \
	Magick++/lib/Magick++/Image.h \
	Magick++/lib/Magick++/Include.h \
	Magick++/lib/Magick++/Montage.h \
	Magick++/lib/Magick++/Pixels.h \
	Magick++/lib/Magick++/STL.h \
	Magick++/lib/Magick++/TypeMetric.h

Magick___lib_libMagick___la_LDFLAGS = \
	-version-info $(MAGICK_LIBRARY_CURRENT):$(MAGICK_LIBRARY_REVISION):$(MAGICK_LIBRARY_AGE)
Magick___lib_libMagick___la_LIBADD = $(MAGICKCORE_LIBS) $(MAGICKWAND_LIBS)

MAGICKPP_CHECK_PGRMS_OPT = \
	Magick++/demo/analyze \
	Magick++/demo/button \
	Magick++/demo/demo \
	Magick++/demo/detrans \
	Magick++/demo/flip \
	Magick++/demo/gravity \
	Magick++/demo/piddle \
	Magick++/demo/shapes \
	Magick++/demo/zoom \
	Magick++/tests/appendImages \
	Magick++/tests/attributes \
	Magick++/tests/averageImages \
	Magick++/tests/coalesceImages \
	Magick++/tests/coderInfo \
	Magick++/tests/color \
	Magick++/tests/colorHistogram \
	Magick++/tests/exceptions \
	Magick++/tests/montageImages \
	Magick++/tests/morphImages \
	Magick++/tests/readWriteBlob \
	Magick++/tests/readWriteImages

Magick___demo_analyze_SOURCES		= Magick++/demo/analyze.cpp
Magick___demo_analyze_LDADD		= $(MAGICKPP_LIBS)

Magick___demo_button_SOURCES		= Magick++/demo/button.cpp
Magick___demo_button_LDADD		= $(MAGICKPP_LIBS)

Magick___demo_demo_SOURCES		= Magick++/demo/demo.cpp
Magick___demo_demo_LDADD		= $(MAGICKPP_LIBS)

Magick___demo_detrans_SOURCES		= Magick++/demo/detrans.cpp
Magick___demo_detrans_LDADD		= $(MAGICKPP_LIBS)

Magick___demo_flip_SOURCES		= Magick++/demo/flip.cpp
Magick___demo_flip_LDADD		= $(MAGICKPP_LIBS)

Magick___demo_gravity_SOURCES		= Magick++/demo/gravity.cpp
Magick___demo_gravity_LDADD		= $(MAGICKPP_LIBS)

Magick___demo_piddle_SOURCES		= Magick++/demo/piddle.cpp
Magick___demo_piddle_LDADD		= $(MAGICKPP_LIBS)

Magick___demo_shapes_SOURCES		= Magick++/demo/shapes.cpp
Magick___demo_shapes_LDADD		= $(MAGICKPP_LIBS)

Magick___demo_zoom_SOURCES		= Magick++/demo/zoom.cpp
Magick___demo_zoom_LDADD		= $(MAGICKPP_LIBS)

Magick___tests_appendImages_SOURCES	= Magick++/tests/appendImages.cpp
Magick___tests_appendImages_LDADD	= $(MAGICKPP_LIBS)

Magick___tests_attributes_SOURCES	= Magick++/tests/attributes.cpp
Magick___tests_attributes_LDADD		= $(MAGICKPP_LIBS)

Magick___tests_averageImages_SOURCES	= Magick++/tests/averageImages.cpp
Magick___tests_averageImages_LDADD	= $(MAGICKPP_LIBS)

Magick___tests_coalesceImages_SOURCES	= Magick++/tests/coalesceImages.cpp
Magick___tests_coalesceImages_LDADD	= $(MAGICKPP_LIBS)

Magick___tests_coderInfo_SOURCES	= Magick++/tests/coderInfo.cpp
Magick___tests_coderInfo_LDADD		= $(MAGICKPP_LIBS)

Magick___tests_color_SOURCES		= Magick++/tests/color.cpp
Magick___tests_color_LDADD		= $(MAGICKPP_LIBS)

Magick___tests_colorHistogram_SOURCES	= Magick++/tests/colorHistogram.cpp
Magick___tests_colorHistogram_LDADD	= $(MAGICKPP_LIBS)

Magick___tests_exceptions_SOURCES	= Magick++/tests/exceptions.cpp
Magick___tests_exceptions_LDADD		= $(MAGICKPP_LIBS)

Magick___tests_montageImages_SOURCES	= Magick++/tests/montageImages.cpp
Magick___tests_montageImages_LDADD	= $(MAGICKPP_LIBS)

Magick___tests_morphImages_SOURCES	= Magick++/tests/morphImages.cpp
Magick___tests_morphImages_LDADD	= $(MAGICKPP_LIBS)

Magick___tests_readWriteBlob_SOURCES	= Magick++/tests/readWriteBlob.cpp
Magick___tests_readWriteBlob_LDADD	= $(MAGICKPP_LIBS)

Magick___tests_readWriteImages_SOURCES	= Magick++/tests/readWriteImages.cpp
Magick___tests_readWriteImages_LDADD	= $(MAGICKPP_LIBS)


MAGICKPP_LOCAL_TARGETS = www/Magick++/NEWS.html www/Magick++/ChangeLog.html


--- NEW FILE: INSTALL ---


                             Installing Magick++

General

In order to compile Magick++ you must have access to a standard C++
implementation. The author uses  gcc 3.1 (GNU C++) which is available under
UNIX and under the Cygwin UNIX-emulation environment for Windows. Standards
compliant commercial C++ compilers should also work fine. Most modern C++
compilers for Microsoft Windows or the Mac should work (project files are
provided for Microsoft Visual C++ 6.0).

It was decided that Magick++ will be around for the long-haul, so its API
definition depends on valuable C++ features which should be common in all
current and future C++ compilers. The compiler must support the following
C++ standard features:

   * templates
   * static constructors
   * C++-style casts (e.g. static_cast)
   * bool type
   * string class ()
   * exceptions ()
   * namespaces
   * Standard Template Library (STL) (e.g. , )

The author has personally verified that Magick++ compiles and runs using the
following compiler/platform combinations:

                            Tested Configurations

       Operating System         Architecture             Compiler
 SunOS 5.6, 5.7, 5.8
 ("Solaris 2.6, 7, & 8)      SPARC             GCC 3.0.4
 SunOS 5.7 ("Solaris 7")     SPARC             Sun Workshop 5.0 C++

 SunOS 5.8 ("Solaris 8")     SPARC             Sun WorkShop 6 update 2 C++
                                               5.3
 FreeBSD 4.0                 Intel Pentium II  GCC 2.95

 Windows NT 4.0 SP6a         Intel Pentium II  Visual C++ 6.0 Standard
                                               Edition

 Windows XP                  Intel Pentium IV  Visual C++ 6.0 Standard
                                               Edition Service Pack 5
 Windows '98 + Cygwin 1.3.10 Intel Pentium III GCC 2.95.3-5
 Windows NT 4.0 SP6a         Intel Pentium II  GCC 2.95.3-5
 Windows XP + Cygwin 1.3.10  Intel Pentium IV  GCC 2.95.3-5

Users of Magick++ have reported that the following configurations work with
Magick++:

                      Other Known Working Configurations

 Operating
  System  Architecture    Compiler   Reported By
 Red Hat  i386 & alpha EGCS 1.1.2    Dr. Alexander Zimmermann
 Linux 6.0                           
 Red Hat  i386         GCC 2.95.2    Dr. Alexander Zimmermann
 Linux 7.0                           
 Red Hat  i386         GCC "2.96"    ???
 Linux 7.0             snapshot
 Red Hat                             Dr. Alexander Zimmermann
 Linux 7.Xi386 & alpha GCC 3.0       
 SGI IRIX MIPS         IRIX C++      Albert Chin-A-Young
 6.2, 6.5              7.3.1.2m      
 SunOS                 Sun WorkShop  Albert Chin-A-Young
 5.5.1    SPARC        CC 5.0        
 SunOS
 5.6, 5.7,SPARC        Sun Forte CC  Albert Chin-A-Young
 5.8                   5.3           
 HP-UX    PA-RISC      HP-UX aCC     Albert Chin-A-Young
 11.00                 A.03.30       
 Mac OS 9 PowerPC      CodeWarrior   Leonard Rosenthol 
                       Professional
                       Release 6
 Mac OS X              GCC 2.95.2
 10.1     PowerPC      (apple gcc    John Cristy
 "Darwin"              -926)

Please let me know if you have successfully built and executed Magick++
using a different configuration so that I can add to the table of verified
configurations.

  ------------------------------------------------------------------------

                                 Unix/Linux

Building From Source

Magick++ is now built using the ImageMagick configure script and Makefiles.
Please follow the installation instructions provided by its README.txt file.
The following instructions pertain to the Magick++ specific configuration
and build options.

To install ImageMagick plus Magick++ under Unix, installation should be
similar to

./configure [ --prefix=/prefix ]
make
make install

The library is currently named similar to 'libMagick++.a' (and/or
libMagick++.so.5.0.39) and is installed under prefix/lib while the headers
are installed with Magick++.h being installed in prefix/include and the
remaining headers in prefix/include/Magick++.

To influence the options the configure script chooses, you may specify
'make' option variables when running the configure script. For example, the
command


     ./configure CXX=CC CXXFLAGS=-O2 LIBS=-lposix

specifies additional options to the configure script.  The following table
shows the available options.

             Environment Variables That Effect Configure

     Make Option
      Variable                         Description

         CXX         Name of C++ compiler (e.g. 'CC -Xa') to use
                     compiler 'CC -Xa'
      CXXFLAGS       Compiler flags (e.g. '-g -O2') to compile with

      CPPFLAGS       Include paths (-I/somedir) to look for header
                     files
                     Library paths (-L/somedir) to look for
                     libraries. Systems that support the notion of a
       LDFLAGS       library run-path may additionally require
                     -R/somedir or '-rpath /somedir' in order to
                     find shared libraries at run time.
        LIBS         Extra libraries (-lsomelib) required to link

Installing Linux RPMs

Dr. Alexander Zimmermann maintains Linux RPMs of ImageMagick and Magick++.
These may be downloaded from
ftp://ftp.forwiss.uni-passau.de/pub/linux/local/ImageMagick/. This site is
mirrored periodically to the ImageMagick linux directory and from there to
the many ImageMagick and Linux mirror sites. Please note that the default
version of the C++ compiler delivered with the system may not be sufficient
to support Magick++. Use of GCC 2.95 or later is strongly recommended under
Linux.
  ------------------------------------------------------------------------

                       Windows '9X, NT, 2000, ME, & XP

Visual C++

Windows '95 through Windows XP are supported by the ImageMagick source
package for NT available in the 'win2k' subdirectory of the ImageMagick ftp
site (and mirrors).  The ImageMagick source package for NT provides sources
to ImageMagick, Magick++, add-on libraries (e.g. JPEG), and a ready-made
Visual C++ 6.0 build environment. Please read the configuration and build
instructions in README.txt (under the heading "Windows Win2K/95 VISUAL C++
6.0 COMPILATION") in order to build Magick++.

Cygwin & GCC

It is possible to build both ImageMagick and Magick++ under the Cygwin
Unix-emulation environment for Windows NT. Obtain and install Cgywin from
http://www.cygwin.com/ .   An X11R6 environment for Cygwin is available
from  http://www.cygwin.com/xfree/ .To build using Cygwin and GCC, follow
the instructions for building under Unix. ImageMagick and Magick++ do not
yet include support for building Windows DLLs under Cygwin so do not enable
dynamic libraries when building ImageMagick.

--- NEW FILE: AUTHORS ---
The author and maintainer of Magick++ is Bob Friesenhan
.

Many thanks to John Cristy for developing the powerful ImageMagick
package that Magick++ is based on and for enhancing ImageMagick API
features in order to allow a cleaner implementation.

Thanks to Bill Radcliffe  for his assistance with
getting Magick++ to compile under Visual C++, and for maintaining the
Windows build environment.

Thanks to Albert Chin-A-Young  for assisting
with compilation issues related to the SGI C++ compiler, for providing
access to the Sun C++ compiler, and for assistance with the configure
script.

Thanks to Leonard Rosenthol  for ensuring that
Magick++ compiles on the Mac.


--- NEW FILE: README ---

This is Magick++, the object-oriented C++ API to the ImageMagick
image-processing library, the most comprehensive open-source image
processing solution available. Read the release notes for Magick++.

Magick++ supports an object model which is inspired by PerlMagick.
Magick++ executes faster than PerlMagick since it is accessed from a
compiled language rather than from a scripting language. This makes it more
suitable for Web CGI programs which must start-up and execute quickly.
Images support implicit reference counting so that copy constructors and
assignment incur almost no cost. The cost of actually copying an image (if
necessary) is done just before modification and this copy is managed
automatically by Magick++. De-referenced copies are automatically deleted.
The image objects support value (rather than pointer)  semantics so it is
trivial to support multiple generations of an image in memory at one time.

Magick++ provides integrated support for the Standard Template Library (STL)
so that the powerful containers available (e.g. deque, vector, list, and
map)  can be used to write programs similar to those possible with PERL &
PerlMagick. STL-compatable template versions of ImageMagick's list-style
operations are provided so that operations may be performed on multiple
images stored in STL containers.

Documentation

Detailed documentation are provided for all Magick++ classes, class methods,
and template functions which comprise the API.

Obtaining Magick++

Magick++ is included as part of ImageMagick source releases and may be
retrieved via ftp or Subversion.

Installation

Once you have the sources available, follow these detailed installation
instructions for UNIX and Windows.

Usage

A helper script named Magick++-config is installed under Unix which assists
with recalling compilation options required to compile and link programs
which use Magick++.  For example, the following command will compile and
link the source file example.cpp to produce the executable example (notice
that quotes are backward quotes):

     c++ `Magick++-config --cxxflags --cppflags --ldflags --libs` \
       -o example example.cpp

Windows users may get started by manually editing a project file for one of
the Magick++ demo programs.

Reporting Bugs

Please report any bugs via the Magick++ Bug Tracking System at
http://www.imagemagick.org/discourse-server/.

Related Packages

Users who are interested in displaying their images at video game rates on a
wide number of platforms and graphic environments (e.g. Windows, X11, BeOS,
and Linux/CGI) may want to try PtcMagick, which provides a simple interface
between Magick++ and OpenPTC.

--- NEW FILE: NEWS ---
This file records noteworthy changes in Magick++.

(5.5.2)
  * Added adaptiveThreshold() method.
  * Added colorMapSize() method.
  * Added DrawablePushClipPath, DrawablePopClipPath, and DrawableClipPath.

(5.5.1)
  * Fixed a Color memory allocation problem which became evident when
    using the Magick++ DLL.
  * Completed implementation of Image textEncoding() method.  Oops!

(5.4.9)
  * Added the Image textEncoding() method and an encoding option to
    DrawableText to support specifying "UTF-8" (Unicode) text encoding.
  * Added the Image compare() method to support comparing two similar
    images and obtaining error values.
  * Magick++ compiles as a DLL under Visual C++ 7.0.

(5.4.8)
  * The image type() method now also specifies the output image type
    to use while writing.
  * Added a profile() method to Image to support adding, removing,
    and retrieving named embedded application profiles.
  * Magick++ compiles as a DLL under Visual C++ 6.0.

(5.4.7)
  * No changes to report.

(5.4.6)
  * Magick++ library no longer depends on C++ iostreams APIs.
  * Added DrawableTextUnderColor class to set text underbox color.

(5.4.5)
  * Drawable classes have been re-written to use ImageMagick's draw.h
    APIs.
  * Fixed a nasty bug when reporting some forms of errors.  The bug
    was causing an exception in error.c.
  * Template API implementation cleanup.
  * Rationalized some parameter types.
  * New method, Pixels::getConst() to obtain read-only pixels.
  * DrawableDashArray() prefers an array of type 'double' rather than
    'unsigned int'.  Please use the new form.
  * Composite images are output as embedded inlined Base64 when
    preparing MVG data.
  * Blob class supports encoding and decoding Base64 data.
  * New method, Image::ping to ping a Blob.

(5.4.4)
  * Fixed a bug in DrawableDashArray.
  * Numerous consistency improvements based on findings from Gimpel lint.
  * Added endian method to Image, and endianImage class to STL.h in
    order to support setting endian option for formats which support
    the notion (e.g. TIFF).
  * DrawableCompositeImage was not working.  Now it does.

(5.4.3)
  * Support selecting fonts via font-family, font-style, font-weight,
    and font-stretch via the DrawableFont class.
  * CoderInfo API change.  MatchType is scoped to CoderInfo class.
  * Bugfix for Magick::Exception memory leak.
  * Bugfix for DrawableGravity class (had stopped working).
  * Bugfix for Image antiAlias() method (wasn't working).
  * Reimplemented image registration code (which passes image via
    DrawableCompositeImage).

(5.4.2)
  * TypeMetric class revamped to match current ImageMagick type metrics
    definition.
  * Fixed possible stack corruption on some architectures when returning
    Color as a string.
  * DrawableCompositeImage can be constructed based on an Image in memory
    rather than just a filename.
  * Added Drawable objects (DrawablePushPattern & DrawablePopPattern)
    for definining arbitrary named patterns to be used for stroke and fill.
  * Added Image strokePattern() and fillPattern() methods for specifying
    image to use while drawing stroked object outlines and while filling
    objects, respectively.

(5.4.1)
  * Fixed memory leak in Image::draw().

  * Automatically cleans up ImageMagick allocations prior to process
    exit to avoid annoying memory leak tools.

(5.4.0)
  * Fixed bug when scaling from Quantum to double in derived Color classes.

  * Pass all input parameter strings as 'const std::string &' in Color class.

  * Added support for obtaining pixel indexes.

  * Implemented support for read-only pixels and pixel indexes.

  * Added Image boundingBox() method to return smallest bounding box
    enclosing non-border pixels.

(5.3.9)
  * New class, CoderInfo, to return information for a specified image
    format as well as the coderInfoList() template function to return
    the list of coders which match a specification.

  * User now may tell Blob updateNoCopy() what memory system (C or C++)
    the memory was allocated from.  Used to assume the C++ allocator.
    This resolves a bug on some platforms (e.g. Windows).

  * Added Image 'opacity' method (and STL opacityImage()) to set, or
    attenuate, image opacity.

  * Added Image 'type' method (and STL typeImage()) to set image
    representation type.

  * Image depth method now adjusts pixels to match specified image depth,
    and reports depth based on current image pixels.

(5.3.8)
  * New class 'TypeMetric' to contain font type metrics.

  * New Image method 'fontTypeMetrics()' to obtain font type metrics.

  * Image colorMap method automatically extends the colormap if index
    is past the end of the current colormap.

  * Added clipMask method to add a clip mask to the current
    image. Prevents modification to image pixels wherever the
    associated clip mask image is tranparent.

  * Documented methods which were added previously, but left
    undocumented.

(5.3.7)
  * No changes.

(5.3.6)
  * Adjusted parameters to 'edge' and 'medianFilter' to match
    equivalent libMagick functions.
  * Fixed a Montage bug which was not allowing color options to be unset.
  * Montage defaults are no longer taken from first Image in list.
  * Magick++ demo output looks like PerlMagick demo output again.

(5.3.5)
  * Default radius and sigma parameters were changed on the blur,
    charcoal, emboss, and sharpen methods to match ImageMagick defaults.
  * Fixes to Magick++ demos to restore appearance.
  * Added shave method for shaving edges from image (a form of crop).

(5.3.1-5.3.4)
  * No changes.

(5.3.0)
  * Released with ImageMagick 5.3.0
  * Bug fix. Under certain conditions, several annotation options
    were being reset.

(5.2.9)
  * Released with ImageMagick 5.2.9
  * Added fillRule method to Image class.

(5.2.8)
  * Released with ImageMagick 5.2.8
  * Added 'fill' and 'stroke' methods to Montage class.
  * Added 'erase' and 'strokeAntiAlias' methods to Image class.
  * Renamed Image class 'layer' method to 'channel'.
  * Support supplying composition rule to DrawableCompositeImage.

(5.2.7)
  * Released with ImageMagick 5.2.7
  * Added convolve and unsharpmask methods to Image.
  * Added deconstructImages and mosaicImages template functions.
  * Fixed handling of geometry parameter to annotate method.

(5.2.6)
  * Released with ImageMagick 5.2.6.
  * Added support for a SVG-style dash array and dash offset
    parameters (for drawing dashed lines).
  * Added support for setting the shape to be used at the end of open
    subpaths when they are stroked.
  * Added support for setting the shape to be used at the corners of
    paths (or other vector shapes) when they are stroked.
  * Added support for setting extension limit for miter joins.
  * Rotate text the proper way using an affine transform.

(5.2.5)
  * Released with ImageMagick 5.2.5.
  * Completely re-wrote drawable object classes in order to support
    all current ImageMagick drawing capabilities using a list-based paradigm.
    New drawing capabilities include coordinate transformations and the
    currently undocumented (but quite powerful) path capabilities.

(5.2.4)
  * Released with ImageMagick 5.2.4.
  * Magick++ is now built by the regular ImageMagick build process.
    when --with-magick_plus_plus is specified to configure.
  * Fixed bug with setting text drawing options.
  * Fixed API bug with colorize.  Options adjusted to match ImageMagick
    API change (API change was long ago).
  * Library compiles using Sun Workshop 5.0 compiler.  Linkage problems with
    some demos/tests due to libtool-related compiler/linker bug.
  * Compiles using Sun Forte 6.0 compiler.

(5.2.3)
  * Switched to new release numbering (match ImageMagick release number)
  * Released with ImageMagick 5.2.3.
  * Fixed bug in which the Image read method was not reporting
    warnings (only errors).
  * Parameter changes to blur, charcoal, emboss, and sharpen methods
    of the Image class to match equivalent ImageMagick API changes.
  * Parameter changes to blurImage, charcoalImage, embossImage, and
    sharpenImage STL functions in order to match equivalent ImageMagick
    API changes.

(0.9.5)
  * Released with ImageMagick 5.2.2.

(0.9.4)
  * Released with ImageMagick 5.2.1.
  * Bugfix to the Pixels GetIndexes() method.
  * Adapted to ImageMagick 5.2.1's revised matte channel interpretation.

(0.9.3)
  * Released with ImageMagick 5.2
  * New class 'Pixels' to support low-level pixel access in image. New
    API supports multiple pixel views into the same image.  Number of
    available pixel views limited to the number of image rows + 1.
  * Dramatically improved performance for text annotation and drawing.
  * Fix text annotation bug which did not allow spaces in annotation text.
  * Added gaussianBlurImage() method.
  * Fixed bug in floodFillTexture().
  * Re-worked error reporting methodology to use re-entrant error
    reporting rather than the previous method (based on call-backs)
    which required thread specific data.
  * Should be thread-safe under Win32 now.

(0.9.2)
  * Released with ImageMagick 5.1.1
  * Should be thread-safe when used with POSIX threads (pthreads).
  * Added methods getPixels, setPixels, syncPixels, readPixels, and
    writePixels, in order to provide low-level access to Image pixels.
  * Bugfix: size method was setting Options size, but not Image rows
    and columns.

(0.9.1)
  * Released with ImageMagick 5.1.0
  * Added additional constructors, read, and write methods for BLOBs
    to make BLOBs easier to use.
  * Added the medianFilter() method to Image.
  * Renamed transformColorSpace() to colorSpace() and added a
    colorSpace() accessor method.
  * Renamed psPageSize() to page(), which now properly returns the
    actual attribute from the image, rather than the image options.
    This is important in order to manipulate GIF animations.
  * Bug fixes.

(0.9)
  * Ported to ImageMagick 5.0.
  * BLOB sizes are now specified using size_t type.
  * Rotate() no longer accepts sharpen or crop options.
  * Shear() No longer accepts a crop option.
  * FontPointsize() now takes a double.
  * The condense, uncondense, and condensed methods have been removed
    since ImageMagick 5.0 no longer uses run-length encoding.
  * The quantizeError method has been removed since it never worked.
  * The cacheThreshold method is added to set the threshold of
    ImageMagick's image cache.

(0.8.9)
  * Released with ImageMagick 4.2.9
  * Blob reference counting was totally broken, leading to a memory
    leak if it was used.  Fixed by starting reference count from one
    rather than zero.

(0.8.8)
  * Fixed a Image constructor bug when constructing from a Blob

(0.8.7)
  * Bugfix: condensed() was returning wrong state.

(0.8.6)
  * Color is now based on ImageMagick's RunlengthPacket structure (via a
    pointer) so that it may eventually be used to represent an image
    pixel.  This is currently a work in progress.

(0.8.5)
  * Headers are now installed under prefix/include/Magick++ on Unix
    systems with the exception that Magick++.h is installed under
    prefix/include as it was before.  Programs which include Magick++.h
    (the documented approach) should not be impacted.
  * Image constructors to construct an image from a BLOB.
  * Image read and write methods to decode and encode images stored in a
    BLOB.  This allows reading/writing image "files" from/to memory rather
    than a traditional file.

(0.8.4)
  * New mapImages algorithm maps a sequence of images to the colormap of
    a provided image.
  * New quantizeImages algorithm computes and applies a common colormap
    to a sequence of images.

(0.8.3)
  * Ported to ImageMagick 4.2.6.
  * Blob supports default constructor.
  * New Blob method updateNoCopy() to support efficient initialization by
    derived class.

(0.8.2)
  * Uses libtool 1.3 to build library under Unix and Cygwin (static lib only).
  * Added Blob class to support supplying formatted binary data to methods.
  * Added support for setting ICC and IPTC profiles from a binary BLOB.
  * Added support for transformations of image data to/from alternate
    colorspace (e.g. CYMK).
  * Added support for 'pinging' an image (get image dimensions/size quickly).
  * Added 'uncondense' method to de-compress in-memory image data.
  * Added support for annotation using rotated text.

(0.8.1)
  * Added support for setting alpha in Magick::Color
  * Set/get color alpha in Magick::Image::pixelColor() for DirectClass images.

(0.8)
  * Transitioned to Beta
  * Improved Microsoft Visual C++ build environment.

(0.7.4)
  * Added animateImages() and displayImages() to MagickSTL.h.
  * Added function objects to support setting image attributes.

(0.7.3)
  * Image::penTexture() now takes Image reference rather than
    Image pointer.  Set Image to invalid using isValid(false)
    to unset texture.
  * Attribute methods that take Color, Geometry, Image, or string
    arguments may now unset the attribute by setting the state of
    the object to invalid using isValid(false), or the empty string
    (in the case of string).  This allows full control over ImageMagick
    attributes which are stored as C strings which may be set to NULL.
  * Updated for ImageMagick 4.2.1

(0.7.2)
  * Added STL function object support for all Image manipulation
    methods to support operating on all or part of the images
    stored in an STL container.

(0.7.1)
  * Added Coordinate class and methods in Drawable to support x,y
    coordinates.
  * Changed coordinate parameters from unsigned int to double in Drawable.
  * Changed polygon methods in Drawable to use STL list argument.
  * Added STL list based draw method to Image.
  * Changed Exception heirarchy to support Warning and Error sub-classes.
    Most exception class names have changed.

(0.7)
  * Updated for ImageMagick 4.2.0
  * Added support for flood-filling and drawing with texture.
  * Montage supported.
  * Oodles of bugs fixed.
  * Implemented image attribute tests.
  * Implemented PerlMagick 'demo' and 'shapes' demo programs in Magick++.
  * Some parameters re-ordered due to experience from writing demo programs.

(0.6)
  * Initial support for integrating image-list oriented operations with
    STL containers.

(0.5)
  * Compiles and runs under Unix using egcs release 1.1 or later.
  * Compiles and runs under Windows using Visual C++ 5.X or later.
  * Users of Magick++ API are not exposed to ImageMagick headers.
  * Magick++ API is namespaced under "Magick".
  * "Magick" prefix removed from object names.
  * User options are now completely contained within Image object.
    There is no longer a MagickOptions parameter to some methods.

(0.1)
  * All ImageMagick operations which operate on individual images are
    supported.
  * Image objects have value semantics, avoid unnecessary image
    copies through the use of reference counting, and may be compared
    via standard operators.
  * Geometry, color, annotations, and user-options are supported by
    separate classes.
  * Errors are reported synchronously via C++ exceptions.



From ebala at helixcommunity.org  Thu Sep 10 11:36:44 2009
From: ebala at helixcommunity.org (ebala@helixcommunity.org)
Date: Thu Sep 10 20:40:12 2009
Subject: [Common-cvs] 
	import/imagemagick/Magick++ AUTHORS, 1.1, 1.2 ChangeLog,
	1.1, 1.2 INSTALL, 1.1, 1.2 LICENSE, 1.1, 1.2 NEWS, 1.1,
	1.2 README, 1.1, 1.2 Makefile.am, 1.1,
	1.2 drawing-primitives.txt, 1.1, 1.2
Message-ID: 

Update of /cvsroot/common/import/imagemagick/Magick++
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv28250

Added Files:
	AUTHORS ChangeLog INSTALL LICENSE NEWS README Makefile.am 
	drawing-primitives.txt 
Log Message:
Import of Imagemagick

--- NEW FILE: LICENSE ---

Copyright 1999 - 2002 Bob Friesenhahn 
                                                                          
Permission is hereby granted, free of charge, to any person
obtaining a copy of the source files and associated documentation
files ("Magick++"), to deal in Magick++ without restriction,
including without limitation of the rights to use, copy, modify,
merge, publish, distribute, sublicense, and/or sell copies of
Magick++, and to permit persons to whom the Magick++ is furnished
to do so, subject to the following conditions:
                                                                          
This copyright notice shall be included in all copies or
substantial portions of Magick++. The copyright to Magick++ is
retained by its author and shall not be subsumed or replaced by any
other copyright.
                                                                          
The software is provided "as is", without warranty of any kind,
express or implied, including but not limited to the warranties of
merchantability, fitness for a particular purpose and
noninfringement. In no event shall Bob Friesenhahn be liable for
any claim, damages or other liability, whether in an action of
contract, tort or otherwise, arising from, out of or in connection
with Magick++ or the use or other dealings in Magick++.


--- NEW FILE: ChangeLog ---
2009-04-01  6.5.1-1 Cristy  
  * Add virtualPixelMethod() method for image and options, required for
    distort().

2008-09-09  6.4.3-7 Cristy  
  * Use ImagesToBlob() rather than ImageToBlob() for writeImages().

2007-10-02  6.3.6-7 Cristy  
  * Define USE_MAP for Magick++/tests/colorHistogram.cpp (patch provided by
    albert chin ).

2007-04-10  6.3.3-7 Cristy  
  * Add colorspaceType(RGBColorspace) to set RGB colorspace before an
    image read (useful to convert CMYK Potscript to RGB).

2006-02-05  6.3.2-3 Cristy  
  * Clear exception in throwException() method.

2006-01-16  6.3.2-0 Cristy  
[...1464 lines suppressed...]
1999-04-11  Bob Friesenhahn  

	* demo/flip.cpp (main): New file.  Demonstrates use of flipImage
 	function object as well as morphImages algorithm.

1999-04-10  Bob Friesenhahn  

	* tests/color.cpp : New file to support testing the Magick::Color
 	classes.

	* lib/MagickOptions.cpp: The ImageInfo filter member is now
 	ignored by ImageMagick (as of ImageMagick 4.2.2 April 10, 1998) so
 	support for setting it is removed. The Image filter member is
 	still updated. According to Cristy, this ImageMagick version
 	removes automatic sharpening of resized images.  The blur member
 	is added to the Image structure. A blur value < 1 causes the image
 	to be sharpened when resizing while a value > 1 leaves the image
 	blurry.  Magick++ does not yet support the blur member.



--- NEW FILE: drawing-primitives.txt ---
Summary of MVG Primitives and Syntax
====================================

MVG ignores all white-space between commands. This allows
multiple MVG commands per line. It is common convention to
terminate each MVG command with a new line to make MVG easier
to edit and read. This syntax description uses indentation in
MVG sequences to aid with understanding. Indentation is
supported but is not required.

Metafile wrapper syntax (to support stand-alone MVG files)
----------------------------------------------------------

  push graphic-context
   viewbox 0 0 width height
    [ any other MVG commands ]
  pop graphic-context


Pattern syntax (saving and restoring context)
---------------------------------------------

  push pattern id x,y width,height
   push graphic-context
    [ drawing commands ]
   pop graphic-context
  pop pattern

an example is (%s is a identifier string)

  push defs
   push pattern %s 10,10 20,20
    push graphic-context
     fill red
     rectangle 5,5 15,15
    pop graphic-context
    push graphic-context
     fill green
     rectangle 10,10 20,20
    pop graphic-context
   pop pattern
  pop defs

For image tiling use

  push pattern id x,y width,height
   image Copy ...
  pop pattern

Note you can use the pattern for either the fill or stroke like

  stroke url(#%s)

    or

  fill url(#%s)

Clip-path syntax
----------------

 The clip path defines a clipping area, where only the contained
 area will be drawn upon.  Areas outside of the clipping area are
 masked.

  push defs
   push clip-path %s
    push graphic-context
     rectangle 10,10 20,20
    pop graphic-context
   pop clip-path
  pop defs
  clip-path url(#%s)

Individual Drawing Primitives
=============================

affine sx,rx,ry,sy,tx,ty
arc x0,y0 x1,y1 a0,a1
bezier x0,y0  ...  xn,yn
circle originX,originY perimX,perimY
clip-path url(#%s)  (%s is the name of the clip path)
clip-rule (evenodd|nonzero)
clip-units (userSpace|userSpaceOnUse|objectBoundingBox)
color x,y (point|replace|floodfill|filltoborder|reset)
decorate (none|underline|overline|line-through)
ellipse centerX,centerY radiusX,radiusY arcStart,arcEnd
fill colorspec
fill-opacity opacity[%]
fill-rule (evenodd|nonzero)
font fontname
font-family familyname (e.g. "helvetica")
font-size pointsize
font-stretch (all|normal|ultra-condensed|extra-condensed|condensed|
              semi-condensed|semi-expanded|expanded|extra-expanded|
              ultra-expanded)
font-style (all|normal|italic|oblique)
font-weight (all|normal|bold|100|200|300|400|500|600|700|800|900)
gradient-units (userSpace|userSpaceOnUse|objectBoundingBox)
gravity (NorthWest|North|NorthEast|West|Center|East|SouthWest|
         South|SouthEast)
image (Add|Atop|Bumpmap|Clear|CopyBlue|CopyGreen|CopyOpacity|CopyRed|
       Copy|Difference|In|Minus|Multiply|Out|Over|Plus|Subtract|Xor)
       dest_x,dest_y dest_width,dest_height 'filename'
line startX,startY endX,endY
matte x,y (point|replace|floodfill|filltoborder|reset)
offset  ???
opacity value[%]
path 'SVG-compatible path arguments'
point x,y
polygon x1,y1, x2,y2, x3,y3, ..., xN,yN
polyline x1,y1, x2,y2, x3,y3, ..., xN,yN
pop clip-path
pop defs
pop gradient
pop graphic-context
pop pattern
push clip-path %s  (%s is the name of the clip path)
push defs
push gradient id linear x1,y1 x2,y2
push gradient id radial cx,cy fx,fy r
push graphic-context
push pattern id x,y width,height
rectangle upperLeftX,upperLeftY lowerRightX,lowerRightY
rotate angle
roundrectangle upperLeftX,upperLeftY lowerRightX,lowerRightY cornerWidth,cornerHeight
scale x,y
skewX angle
skewY angle
stop-color colorspec offset
stroke colorspec
stroke-antialias truth-value (0 or 1)
stroke-dasharray (none|comma-delimited-numeric-list)
stroke-dashoffset dashoffset
stroke-linecap (butt|round|square)
stroke-linejoin (butt|miter|round|square)
stroke-miterlimit limit
stroke-opacity opacity[%]
stroke-width linewidth
text x,y "some text"
text-antialias (0|1)
text-undercolor colorspec
translate x,y
viewbox x1 y1 x1 y2 (e.g. "viewbox 0 0 640 480")


--- NEW FILE: Makefile.am ---
#
# Top Makefile for Magick++
#
# Copyright Bob Friesenhahn, 1999, 2000, 2002, 2004, 2008
#

AM_CPPFLAGS += -I$(top_srcdir)/Magick++/lib

if WITH_MAGICK_PLUS_PLUS
MAGICKPP_LIBS = Magick++/lib/libMagick++.la
MAGICKPP_CHECK_PGRMS = $(MAGICKPP_CHECK_PGRMS_OPT)
MAGICKPP_MANS = $(MAGICKPP_MANS_OPT)
MAGICKPP_PKGCONFIG = $(MAGICKPP_PKGCONFIG_OPT)
MAGICKPP_SCRPTS = $(MAGICKPP_SCRIPTS_OPT)
MAGICKPP_TESTS = $(MAGICKPP_TEST_SCRIPTS_OPT)
MAGICKPP_TOP_INCHEADERS = $(MAGICKPP_TOP_INCHEADERS_OPT)
MAGICKPP_INCHEADERS = $(MAGICKPP_INCHEADERS_OPT)
else
MAGICKPP_LIBS = 
MAGICKPP_CHECK_PGRMS = 
MAGICKPP_MANS = 
MAGICKPP_PKGCONFIG = 
MAGICKPP_SCRPTS =
MAGICKPP_TESTS = 
MAGICKPP_TOP_INCHEADERS =
MAGICKPP_INCHEADERS =
endif

MAGICKPP_SCRIPTS_OPT = \
	Magick++/bin/Magick++-config

MAGICKPP_MANS_OPT = \
	Magick++/bin/Magick++-config.1

MAGICKPP_PKGCONFIG_OPT = \
	Magick++/lib/Magick++.pc \
	Magick++/lib/ImageMagick++.pc

MAGICKPP_TEST_SCRIPTS_OPT = \
	Magick++/tests/exceptions.sh \
	Magick++/tests/appendImages.sh \
	Magick++/tests/attributes.sh \
	Magick++/tests/averageImages.sh \
	Magick++/tests/coalesceImages.sh \
	Magick++/tests/coderInfo.sh \
	Magick++/tests/colorHistogram.sh \
	Magick++/tests/color.sh \
	Magick++/tests/montageImages.sh \
	Magick++/tests/morphImages.sh \
	Magick++/tests/readWriteBlob.sh \
	Magick++/tests/readWriteImages.sh \
	Magick++/demo/analyze.sh \
	Magick++/demo/button.sh \
	Magick++/demo/demo.sh \
	Magick++/demo/flip.sh \
	Magick++/demo/gravity.sh \
	Magick++/demo/piddle.sh \
	Magick++/demo/shapes.sh \
	Magick++/demo/zoom_bessel.sh \
	Magick++/demo/zoom_blackman.sh \
	Magick++/demo/zoom_box.sh \
	Magick++/demo/zoom_catrom.sh \
	Magick++/demo/zoom_cubic.sh \
	Magick++/demo/zoom_gaussian.sh \
	Magick++/demo/zoom_hamming.sh \
	Magick++/demo/zoom_hanning.sh \
	Magick++/demo/zoom_hermite.sh \
	Magick++/demo/zoom_lanczos.sh \
	Magick++/demo/zoom_mitchell.sh \
	Magick++/demo/zoom_point.sh \
	Magick++/demo/zoom_quadratic.sh \
	Magick++/demo/zoom_sample.sh \
	Magick++/demo/zoom_scale.sh \
	Magick++/demo/zoom_sinc.sh \
	Magick++/demo/zoom_triangle.sh

MAGICKPP_EXTRA_DIST = \
	Magick++/AUTHORS \
	Magick++/ChangeLog \
	Magick++/INSTALL \
	Magick++/NEWS \
	Magick++/README \
	Magick++/bin/Magick++-config.1 \
	Magick++/bin/Magick++-config.in \
	Magick++/lib/Magick++.pc.in \
	Magick++/lib/ImageMagick++.pc.in \
	Magick++/demo/model.miff \
	Magick++/demo/smile.miff \
	Magick++/demo/smile_anim.miff \
	Magick++/demo/tile.miff \
	$(MAGICKPP_TEST_SCRIPTS_OPT) \
	Magick++/tests/test_image.miff \
	Magick++/tests/test_image_anim.miff

MAGICKPP_CLEANFILES = \
	Magick++/demo/*_out.* \
	Magick++/demo/ir.out \
	Magick++/tests/colorHistogram.txt \
	Magick++/tests/testmagick_anim_out.miff \
	Magick++/tests/ir.out

Magick___lib_libMagick___la_SOURCES = \
	Magick++/lib/Blob.cpp \
	Magick++/lib/BlobRef.cpp \
	Magick++/lib/CoderInfo.cpp \
	Magick++/lib/Color.cpp \
	Magick++/lib/Drawable.cpp \
	Magick++/lib/Exception.cpp \
	Magick++/lib/Functions.cpp \
	Magick++/lib/Geometry.cpp \
	Magick++/lib/Image.cpp \
	Magick++/lib/ImageRef.cpp \
	Magick++/lib/Montage.cpp \
	Magick++/lib/Options.cpp \
	Magick++/lib/Pixels.cpp \
	Magick++/lib/STL.cpp \
	Magick++/lib/Thread.cpp \
	Magick++/lib/TypeMetric.cpp \
	Magick++/lib/Magick++.h \
	Magick++/lib/Magick++/Blob.h \
	Magick++/lib/Magick++/BlobRef.h \
	Magick++/lib/Magick++/CoderInfo.h \
	Magick++/lib/Magick++/Color.h \
	Magick++/lib/Magick++/Drawable.h \
	Magick++/lib/Magick++/Exception.h \
	Magick++/lib/Magick++/Functions.h \
	Magick++/lib/Magick++/Geometry.h \
	Magick++/lib/Magick++/Image.h \
	Magick++/lib/Magick++/ImageRef.h \
	Magick++/lib/Magick++/Include.h \
	Magick++/lib/Magick++/Montage.h \
	Magick++/lib/Magick++/Options.h \
	Magick++/lib/Magick++/Pixels.h \
	Magick++/lib/Magick++/STL.h \
	Magick++/lib/Magick++/Thread.h \
	Magick++/lib/Magick++/TypeMetric.h

magickpptopincdir = $(topincludedir)
magickpptopinc_HEADERS = $(MAGICKPP_TOP_INCHEADERS)

MAGICKPP_TOP_INCHEADERS_OPT = \
  Magick++/lib/Magick++.h

magickppincdir = $(topincludedir)/Magick++

magickppinc_HEADERS = $(MAGICKPP_INCHEADERS)

MAGICKPP_INCHEADERS_OPT = \
	Magick++/lib/Magick++/Blob.h \
	Magick++/lib/Magick++/CoderInfo.h \
	Magick++/lib/Magick++/Color.h \
	Magick++/lib/Magick++/Drawable.h \
	Magick++/lib/Magick++/Exception.h \
	Magick++/lib/Magick++/Geometry.h \
	Magick++/lib/Magick++/Image.h \
	Magick++/lib/Magick++/Include.h \
	Magick++/lib/Magick++/Montage.h \
	Magick++/lib/Magick++/Pixels.h \
	Magick++/lib/Magick++/STL.h \
	Magick++/lib/Magick++/TypeMetric.h

Magick___lib_libMagick___la_LDFLAGS = \
	-version-info $(MAGICK_LIBRARY_CURRENT):$(MAGICK_LIBRARY_REVISION):$(MAGICK_LIBRARY_AGE)
Magick___lib_libMagick___la_LIBADD = $(MAGICKCORE_LIBS) $(MAGICKWAND_LIBS)

MAGICKPP_CHECK_PGRMS_OPT = \
	Magick++/demo/analyze \
	Magick++/demo/button \
	Magick++/demo/demo \
	Magick++/demo/detrans \
	Magick++/demo/flip \
	Magick++/demo/gravity \
	Magick++/demo/piddle \
	Magick++/demo/shapes \
	Magick++/demo/zoom \
	Magick++/tests/appendImages \
	Magick++/tests/attributes \
	Magick++/tests/averageImages \
	Magick++/tests/coalesceImages \
	Magick++/tests/coderInfo \
	Magick++/tests/color \
	Magick++/tests/colorHistogram \
	Magick++/tests/exceptions \
	Magick++/tests/montageImages \
	Magick++/tests/morphImages \
	Magick++/tests/readWriteBlob \
	Magick++/tests/readWriteImages

Magick___demo_analyze_SOURCES		= Magick++/demo/analyze.cpp
Magick___demo_analyze_LDADD		= $(MAGICKPP_LIBS)

Magick___demo_button_SOURCES		= Magick++/demo/button.cpp
Magick___demo_button_LDADD		= $(MAGICKPP_LIBS)

Magick___demo_demo_SOURCES		= Magick++/demo/demo.cpp
Magick___demo_demo_LDADD		= $(MAGICKPP_LIBS)

Magick___demo_detrans_SOURCES		= Magick++/demo/detrans.cpp
Magick___demo_detrans_LDADD		= $(MAGICKPP_LIBS)

Magick___demo_flip_SOURCES		= Magick++/demo/flip.cpp
Magick___demo_flip_LDADD		= $(MAGICKPP_LIBS)

Magick___demo_gravity_SOURCES		= Magick++/demo/gravity.cpp
Magick___demo_gravity_LDADD		= $(MAGICKPP_LIBS)

Magick___demo_piddle_SOURCES		= Magick++/demo/piddle.cpp
Magick___demo_piddle_LDADD		= $(MAGICKPP_LIBS)

Magick___demo_shapes_SOURCES		= Magick++/demo/shapes.cpp
Magick___demo_shapes_LDADD		= $(MAGICKPP_LIBS)

Magick___demo_zoom_SOURCES		= Magick++/demo/zoom.cpp
Magick___demo_zoom_LDADD		= $(MAGICKPP_LIBS)

Magick___tests_appendImages_SOURCES	= Magick++/tests/appendImages.cpp
Magick___tests_appendImages_LDADD	= $(MAGICKPP_LIBS)

Magick___tests_attributes_SOURCES	= Magick++/tests/attributes.cpp
Magick___tests_attributes_LDADD		= $(MAGICKPP_LIBS)

Magick___tests_averageImages_SOURCES	= Magick++/tests/averageImages.cpp
Magick___tests_averageImages_LDADD	= $(MAGICKPP_LIBS)

Magick___tests_coalesceImages_SOURCES	= Magick++/tests/coalesceImages.cpp
Magick___tests_coalesceImages_LDADD	= $(MAGICKPP_LIBS)

Magick___tests_coderInfo_SOURCES	= Magick++/tests/coderInfo.cpp
Magick___tests_coderInfo_LDADD		= $(MAGICKPP_LIBS)

Magick___tests_color_SOURCES		= Magick++/tests/color.cpp
Magick___tests_color_LDADD		= $(MAGICKPP_LIBS)

Magick___tests_colorHistogram_SOURCES	= Magick++/tests/colorHistogram.cpp
Magick___tests_colorHistogram_LDADD	= $(MAGICKPP_LIBS)

Magick___tests_exceptions_SOURCES	= Magick++/tests/exceptions.cpp
Magick___tests_exceptions_LDADD		= $(MAGICKPP_LIBS)

Magick___tests_montageImages_SOURCES	= Magick++/tests/montageImages.cpp
Magick___tests_montageImages_LDADD	= $(MAGICKPP_LIBS)

Magick___tests_morphImages_SOURCES	= Magick++/tests/morphImages.cpp
Magick___tests_morphImages_LDADD	= $(MAGICKPP_LIBS)

Magick___tests_readWriteBlob_SOURCES	= Magick++/tests/readWriteBlob.cpp
Magick___tests_readWriteBlob_LDADD	= $(MAGICKPP_LIBS)

Magick___tests_readWriteImages_SOURCES	= Magick++/tests/readWriteImages.cpp
Magick___tests_readWriteImages_LDADD	= $(MAGICKPP_LIBS)


MAGICKPP_LOCAL_TARGETS = www/Magick++/NEWS.html www/Magick++/ChangeLog.html


--- NEW FILE: INSTALL ---


                             Installing Magick++

General

In order to compile Magick++ you must have access to a standard C++
implementation. The author uses  gcc 3.1 (GNU C++) which is available under
UNIX and under the Cygwin UNIX-emulation environment for Windows. Standards
compliant commercial C++ compilers should also work fine. Most modern C++
compilers for Microsoft Windows or the Mac should work (project files are
provided for Microsoft Visual C++ 6.0).

It was decided that Magick++ will be around for the long-haul, so its API
definition depends on valuable C++ features which should be common in all
current and future C++ compilers. The compiler must support the following
C++ standard features:

   * templates
   * static constructors
   * C++-style casts (e.g. static_cast)
   * bool type
   * string class ()
   * exceptions ()
   * namespaces
   * Standard Template Library (STL) (e.g. , )

The author has personally verified that Magick++ compiles and runs using the
following compiler/platform combinations:

                            Tested Configurations

       Operating System         Architecture             Compiler
 SunOS 5.6, 5.7, 5.8
 ("Solaris 2.6, 7, & 8)      SPARC             GCC 3.0.4
 SunOS 5.7 ("Solaris 7")     SPARC             Sun Workshop 5.0 C++

 SunOS 5.8 ("Solaris 8")     SPARC             Sun WorkShop 6 update 2 C++
                                               5.3
 FreeBSD 4.0                 Intel Pentium II  GCC 2.95

 Windows NT 4.0 SP6a         Intel Pentium II  Visual C++ 6.0 Standard
                                               Edition

 Windows XP                  Intel Pentium IV  Visual C++ 6.0 Standard
                                               Edition Service Pack 5
 Windows '98 + Cygwin 1.3.10 Intel Pentium III GCC 2.95.3-5
 Windows NT 4.0 SP6a         Intel Pentium II  GCC 2.95.3-5
 Windows XP + Cygwin 1.3.10  Intel Pentium IV  GCC 2.95.3-5

Users of Magick++ have reported that the following configurations work with
Magick++:

                      Other Known Working Configurations

 Operating
  System  Architecture    Compiler   Reported By
 Red Hat  i386 & alpha EGCS 1.1.2    Dr. Alexander Zimmermann
 Linux 6.0                           
 Red Hat  i386         GCC 2.95.2    Dr. Alexander Zimmermann
 Linux 7.0                           
 Red Hat  i386         GCC "2.96"    ???
 Linux 7.0             snapshot
 Red Hat                             Dr. Alexander Zimmermann
 Linux 7.Xi386 & alpha GCC 3.0       
 SGI IRIX MIPS         IRIX C++      Albert Chin-A-Young
 6.2, 6.5              7.3.1.2m      
 SunOS                 Sun WorkShop  Albert Chin-A-Young
 5.5.1    SPARC        CC 5.0        
 SunOS
 5.6, 5.7,SPARC        Sun Forte CC  Albert Chin-A-Young
 5.8                   5.3           
 HP-UX    PA-RISC      HP-UX aCC     Albert Chin-A-Young
 11.00                 A.03.30       
 Mac OS 9 PowerPC      CodeWarrior   Leonard Rosenthol 
                       Professional
                       Release 6
 Mac OS X              GCC 2.95.2
 10.1     PowerPC      (apple gcc    John Cristy
 "Darwin"              -926)

Please let me know if you have successfully built and executed Magick++
using a different configuration so that I can add to the table of verified
configurations.

  ------------------------------------------------------------------------

                                 Unix/Linux

Building From Source

Magick++ is now built using the ImageMagick configure script and Makefiles.
Please follow the installation instructions provided by its README.txt file.
The following instructions pertain to the Magick++ specific configuration
and build options.

To install ImageMagick plus Magick++ under Unix, installation should be
similar to

./configure [ --prefix=/prefix ]
make
make install

The library is currently named similar to 'libMagick++.a' (and/or
libMagick++.so.5.0.39) and is installed under prefix/lib while the headers
are installed with Magick++.h being installed in prefix/include and the
remaining headers in prefix/include/Magick++.

To influence the options the configure script chooses, you may specify
'make' option variables when running the configure script. For example, the
command


     ./configure CXX=CC CXXFLAGS=-O2 LIBS=-lposix

specifies additional options to the configure script.  The following table
shows the available options.

             Environment Variables That Effect Configure

     Make Option
      Variable                         Description

         CXX         Name of C++ compiler (e.g. 'CC -Xa') to use
                     compiler 'CC -Xa'
      CXXFLAGS       Compiler flags (e.g. '-g -O2') to compile with

      CPPFLAGS       Include paths (-I/somedir) to look for header
                     files
                     Library paths (-L/somedir) to look for
                     libraries. Systems that support the notion of a
       LDFLAGS       library run-path may additionally require
                     -R/somedir or '-rpath /somedir' in order to
                     find shared libraries at run time.
        LIBS         Extra libraries (-lsomelib) required to link

Installing Linux RPMs

Dr. Alexander Zimmermann maintains Linux RPMs of ImageMagick and Magick++.
These may be downloaded from
ftp://ftp.forwiss.uni-passau.de/pub/linux/local/ImageMagick/. This site is
mirrored periodically to the ImageMagick linux directory and from there to
the many ImageMagick and Linux mirror sites. Please note that the default
version of the C++ compiler delivered with the system may not be sufficient
to support Magick++. Use of GCC 2.95 or later is strongly recommended under
Linux.
  ------------------------------------------------------------------------

                       Windows '9X, NT, 2000, ME, & XP

Visual C++

Windows '95 through Windows XP are supported by the ImageMagick source
package for NT available in the 'win2k' subdirectory of the ImageMagick ftp
site (and mirrors).  The ImageMagick source package for NT provides sources
to ImageMagick, Magick++, add-on libraries (e.g. JPEG), and a ready-made
Visual C++ 6.0 build environment. Please read the configuration and build
instructions in README.txt (under the heading "Windows Win2K/95 VISUAL C++
6.0 COMPILATION") in order to build Magick++.

Cygwin & GCC

It is possible to build both ImageMagick and Magick++ under the Cygwin
Unix-emulation environment for Windows NT. Obtain and install Cgywin from
http://www.cygwin.com/ .   An X11R6 environment for Cygwin is available
from  http://www.cygwin.com/xfree/ .To build using Cygwin and GCC, follow
the instructions for building under Unix. ImageMagick and Magick++ do not
yet include support for building Windows DLLs under Cygwin so do not enable
dynamic libraries when building ImageMagick.

--- NEW FILE: AUTHORS ---
The author and maintainer of Magick++ is Bob Friesenhan
.

Many thanks to John Cristy for developing the powerful ImageMagick
package that Magick++ is based on and for enhancing ImageMagick API
features in order to allow a cleaner implementation.

Thanks to Bill Radcliffe  for his assistance with
getting Magick++ to compile under Visual C++, and for maintaining the
Windows build environment.

Thanks to Albert Chin-A-Young  for assisting
with compilation issues related to the SGI C++ compiler, for providing
access to the Sun C++ compiler, and for assistance with the configure
script.

Thanks to Leonard Rosenthol  for ensuring that
Magick++ compiles on the Mac.


--- NEW FILE: README ---

This is Magick++, the object-oriented C++ API to the ImageMagick
image-processing library, the most comprehensive open-source image
processing solution available. Read the release notes for Magick++.

Magick++ supports an object model which is inspired by PerlMagick.
Magick++ executes faster than PerlMagick since it is accessed from a
compiled language rather than from a scripting language. This makes it more
suitable for Web CGI programs which must start-up and execute quickly.
Images support implicit reference counting so that copy constructors and
assignment incur almost no cost. The cost of actually copying an image (if
necessary) is done just before modification and this copy is managed
automatically by Magick++. De-referenced copies are automatically deleted.
The image objects support value (rather than pointer)  semantics so it is
trivial to support multiple generations of an image in memory at one time.

Magick++ provides integrated support for the Standard Template Library (STL)
so that the powerful containers available (e.g. deque, vector, list, and
map)  can be used to write programs similar to those possible with PERL &
PerlMagick. STL-compatable template versions of ImageMagick's list-style
operations are provided so that operations may be performed on multiple
images stored in STL containers.

Documentation

Detailed documentation are provided for all Magick++ classes, class methods,
and template functions which comprise the API.

Obtaining Magick++

Magick++ is included as part of ImageMagick source releases and may be
retrieved via ftp or Subversion.

Installation

Once you have the sources available, follow these detailed installation
instructions for UNIX and Windows.

Usage

A helper script named Magick++-config is installed under Unix which assists
with recalling compilation options required to compile and link programs
which use Magick++.  For example, the following command will compile and
link the source file example.cpp to produce the executable example (notice
that quotes are backward quotes):

     c++ `Magick++-config --cxxflags --cppflags --ldflags --libs` \
       -o example example.cpp

Windows users may get started by manually editing a project file for one of
the Magick++ demo programs.

Reporting Bugs

Please report any bugs via the Magick++ Bug Tracking System at
http://www.imagemagick.org/discourse-server/.

Related Packages

Users who are interested in displaying their images at video game rates on a
wide number of platforms and graphic environments (e.g. Windows, X11, BeOS,
and Linux/CGI) may want to try PtcMagick, which provides a simple interface
between Magick++ and OpenPTC.

--- NEW FILE: NEWS ---
This file records noteworthy changes in Magick++.

(5.5.2)
  * Added adaptiveThreshold() method.
  * Added colorMapSize() method.
  * Added DrawablePushClipPath, DrawablePopClipPath, and DrawableClipPath.

(5.5.1)
  * Fixed a Color memory allocation problem which became evident when
    using the Magick++ DLL.
  * Completed implementation of Image textEncoding() method.  Oops!

(5.4.9)
  * Added the Image textEncoding() method and an encoding option to
    DrawableText to support specifying "UTF-8" (Unicode) text encoding.
  * Added the Image compare() method to support comparing two similar
    images and obtaining error values.
  * Magick++ compiles as a DLL under Visual C++ 7.0.

(5.4.8)
  * The image type() method now also specifies the output image type
    to use while writing.
  * Added a profile() method to Image to support adding, removing,
    and retrieving named embedded application profiles.
  * Magick++ compiles as a DLL under Visual C++ 6.0.

(5.4.7)
  * No changes to report.

(5.4.6)
  * Magick++ library no longer depends on C++ iostreams APIs.
  * Added DrawableTextUnderColor class to set text underbox color.

(5.4.5)
  * Drawable classes have been re-written to use ImageMagick's draw.h
    APIs.
  * Fixed a nasty bug when reporting some forms of errors.  The bug
    was causing an exception in error.c.
  * Template API implementation cleanup.
  * Rationalized some parameter types.
  * New method, Pixels::getConst() to obtain read-only pixels.
  * DrawableDashArray() prefers an array of type 'double' rather than
    'unsigned int'.  Please use the new form.
  * Composite images are output as embedded inlined Base64 when
    preparing MVG data.
  * Blob class supports encoding and decoding Base64 data.
  * New method, Image::ping to ping a Blob.

(5.4.4)
  * Fixed a bug in DrawableDashArray.
  * Numerous consistency improvements based on findings from Gimpel lint.
  * Added endian method to Image, and endianImage class to STL.h in
    order to support setting endian option for formats which support
    the notion (e.g. TIFF).
  * DrawableCompositeImage was not working.  Now it does.

(5.4.3)
  * Support selecting fonts via font-family, font-style, font-weight,
    and font-stretch via the DrawableFont class.
  * CoderInfo API change.  MatchType is scoped to CoderInfo class.
  * Bugfix for Magick::Exception memory leak.
  * Bugfix for DrawableGravity class (had stopped working).
  * Bugfix for Image antiAlias() method (wasn't working).
  * Reimplemented image registration code (which passes image via
    DrawableCompositeImage).

(5.4.2)
  * TypeMetric class revamped to match current ImageMagick type metrics
    definition.
  * Fixed possible stack corruption on some architectures when returning
    Color as a string.
  * DrawableCompositeImage can be constructed based on an Image in memory
    rather than just a filename.
  * Added Drawable objects (DrawablePushPattern & DrawablePopPattern)
    for definining arbitrary named patterns to be used for stroke and fill.
  * Added Image strokePattern() and fillPattern() methods for specifying
    image to use while drawing stroked object outlines and while filling
    objects, respectively.

(5.4.1)
  * Fixed memory leak in Image::draw().

  * Automatically cleans up ImageMagick allocations prior to process
    exit to avoid annoying memory leak tools.

(5.4.0)
  * Fixed bug when scaling from Quantum to double in derived Color classes.

  * Pass all input parameter strings as 'const std::string &' in Color class.

  * Added support for obtaining pixel indexes.

  * Implemented support for read-only pixels and pixel indexes.

  * Added Image boundingBox() method to return smallest bounding box
    enclosing non-border pixels.

(5.3.9)
  * New class, CoderInfo, to return information for a specified image
    format as well as the coderInfoList() template function to return
    the list of coders which match a specification.

  * User now may tell Blob updateNoCopy() what memory system (C or C++)
    the memory was allocated from.  Used to assume the C++ allocator.
    This resolves a bug on some platforms (e.g. Windows).

  * Added Image 'opacity' method (and STL opacityImage()) to set, or
    attenuate, image opacity.

  * Added Image 'type' method (and STL typeImage()) to set image
    representation type.

  * Image depth method now adjusts pixels to match specified image depth,
    and reports depth based on current image pixels.

(5.3.8)
  * New class 'TypeMetric' to contain font type metrics.

  * New Image method 'fontTypeMetrics()' to obtain font type metrics.

  * Image colorMap method automatically extends the colormap if index
    is past the end of the current colormap.

  * Added clipMask method to add a clip mask to the current
    image. Prevents modification to image pixels wherever the
    associated clip mask image is tranparent.

  * Documented methods which were added previously, but left
    undocumented.

(5.3.7)
  * No changes.

(5.3.6)
  * Adjusted parameters to 'edge' and 'medianFilter' to match
    equivalent libMagick functions.
  * Fixed a Montage bug which was not allowing color options to be unset.
  * Montage defaults are no longer taken from first Image in list.
  * Magick++ demo output looks like PerlMagick demo output again.

(5.3.5)
  * Default radius and sigma parameters were changed on the blur,
    charcoal, emboss, and sharpen methods to match ImageMagick defaults.
  * Fixes to Magick++ demos to restore appearance.
  * Added shave method for shaving edges from image (a form of crop).

(5.3.1-5.3.4)
  * No changes.

(5.3.0)
  * Released with ImageMagick 5.3.0
  * Bug fix. Under certain conditions, several annotation options
    were being reset.

(5.2.9)
  * Released with ImageMagick 5.2.9
  * Added fillRule method to Image class.

(5.2.8)
  * Released with ImageMagick 5.2.8
  * Added 'fill' and 'stroke' methods to Montage class.
  * Added 'erase' and 'strokeAntiAlias' methods to Image class.
  * Renamed Image class 'layer' method to 'channel'.
  * Support supplying composition rule to DrawableCompositeImage.

(5.2.7)
  * Released with ImageMagick 5.2.7
  * Added convolve and unsharpmask methods to Image.
  * Added deconstructImages and mosaicImages template functions.
  * Fixed handling of geometry parameter to annotate method.

(5.2.6)
  * Released with ImageMagick 5.2.6.
  * Added support for a SVG-style dash array and dash offset
    parameters (for drawing dashed lines).
  * Added support for setting the shape to be used at the end of open
    subpaths when they are stroked.
  * Added support for setting the shape to be used at the corners of
    paths (or other vector shapes) when they are stroked.
  * Added support for setting extension limit for miter joins.
  * Rotate text the proper way using an affine transform.

(5.2.5)
  * Released with ImageMagick 5.2.5.
  * Completely re-wrote drawable object classes in order to support
    all current ImageMagick drawing capabilities using a list-based paradigm.
    New drawing capabilities include coordinate transformations and the
    currently undocumented (but quite powerful) path capabilities.

(5.2.4)
  * Released with ImageMagick 5.2.4.
  * Magick++ is now built by the regular ImageMagick build process.
    when --with-magick_plus_plus is specified to configure.
  * Fixed bug with setting text drawing options.
  * Fixed API bug with colorize.  Options adjusted to match ImageMagick
    API change (API change was long ago).
  * Library compiles using Sun Workshop 5.0 compiler.  Linkage problems with
    some demos/tests due to libtool-related compiler/linker bug.
  * Compiles using Sun Forte 6.0 compiler.

(5.2.3)
  * Switched to new release numbering (match ImageMagick release number)
  * Released with ImageMagick 5.2.3.
  * Fixed bug in which the Image read method was not reporting
    warnings (only errors).
  * Parameter changes to blur, charcoal, emboss, and sharpen methods
    of the Image class to match equivalent ImageMagick API changes.
  * Parameter changes to blurImage, charcoalImage, embossImage, and
    sharpenImage STL functions in order to match equivalent ImageMagick
    API changes.

(0.9.5)
  * Released with ImageMagick 5.2.2.

(0.9.4)
  * Released with ImageMagick 5.2.1.
  * Bugfix to the Pixels GetIndexes() method.
  * Adapted to ImageMagick 5.2.1's revised matte channel interpretation.

(0.9.3)
  * Released with ImageMagick 5.2
  * New class 'Pixels' to support low-level pixel access in image. New
    API supports multiple pixel views into the same image.  Number of
    available pixel views limited to the number of image rows + 1.
  * Dramatically improved performance for text annotation and drawing.
  * Fix text annotation bug which did not allow spaces in annotation text.
  * Added gaussianBlurImage() method.
  * Fixed bug in floodFillTexture().
  * Re-worked error reporting methodology to use re-entrant error
    reporting rather than the previous method (based on call-backs)
    which required thread specific data.
  * Should be thread-safe under Win32 now.

(0.9.2)
  * Released with ImageMagick 5.1.1
  * Should be thread-safe when used with POSIX threads (pthreads).
  * Added methods getPixels, setPixels, syncPixels, readPixels, and
    writePixels, in order to provide low-level access to Image pixels.
  * Bugfix: size method was setting Options size, but not Image rows
    and columns.

(0.9.1)
  * Released with ImageMagick 5.1.0
  * Added additional constructors, read, and write methods for BLOBs
    to make BLOBs easier to use.
  * Added the medianFilter() method to Image.
  * Renamed transformColorSpace() to colorSpace() and added a
    colorSpace() accessor method.
  * Renamed psPageSize() to page(), which now properly returns the
    actual attribute from the image, rather than the image options.
    This is important in order to manipulate GIF animations.
  * Bug fixes.

(0.9)
  * Ported to ImageMagick 5.0.
  * BLOB sizes are now specified using size_t type.
  * Rotate() no longer accepts sharpen or crop options.
  * Shear() No longer accepts a crop option.
  * FontPointsize() now takes a double.
  * The condense, uncondense, and condensed methods have been removed
    since ImageMagick 5.0 no longer uses run-length encoding.
  * The quantizeError method has been removed since it never worked.
  * The cacheThreshold method is added to set the threshold of
    ImageMagick's image cache.

(0.8.9)
  * Released with ImageMagick 4.2.9
  * Blob reference counting was totally broken, leading to a memory
    leak if it was used.  Fixed by starting reference count from one
    rather than zero.

(0.8.8)
  * Fixed a Image constructor bug when constructing from a Blob

(0.8.7)
  * Bugfix: condensed() was returning wrong state.

(0.8.6)
  * Color is now based on ImageMagick's RunlengthPacket structure (via a
    pointer) so that it may eventually be used to represent an image
    pixel.  This is currently a work in progress.

(0.8.5)
  * Headers are now installed under prefix/include/Magick++ on Unix
    systems with the exception that Magick++.h is installed under
    prefix/include as it was before.  Programs which include Magick++.h
    (the documented approach) should not be impacted.
  * Image constructors to construct an image from a BLOB.
  * Image read and write methods to decode and encode images stored in a
    BLOB.  This allows reading/writing image "files" from/to memory rather
    than a traditional file.

(0.8.4)
  * New mapImages algorithm maps a sequence of images to the colormap of
    a provided image.
  * New quantizeImages algorithm computes and applies a common colormap
    to a sequence of images.

(0.8.3)
  * Ported to ImageMagick 4.2.6.
  * Blob supports default constructor.
  * New Blob method updateNoCopy() to support efficient initialization by
    derived class.

(0.8.2)
  * Uses libtool 1.3 to build library under Unix and Cygwin (static lib only).
  * Added Blob class to support supplying formatted binary data to methods.
  * Added support for setting ICC and IPTC profiles from a binary BLOB.
  * Added support for transformations of image data to/from alternate
    colorspace (e.g. CYMK).
  * Added support for 'pinging' an image (get image dimensions/size quickly).
  * Added 'uncondense' method to de-compress in-memory image data.
  * Added support for annotation using rotated text.

(0.8.1)
  * Added support for setting alpha in Magick::Color
  * Set/get color alpha in Magick::Image::pixelColor() for DirectClass images.

(0.8)
  * Transitioned to Beta
  * Improved Microsoft Visual C++ build environment.

(0.7.4)
  * Added animateImages() and displayImages() to MagickSTL.h.
  * Added function objects to support setting image attributes.

(0.7.3)
  * Image::penTexture() now takes Image reference rather than
    Image pointer.  Set Image to invalid using isValid(false)
    to unset texture.
  * Attribute methods that take Color, Geometry, Image, or string
    arguments may now unset the attribute by setting the state of
    the object to invalid using isValid(false), or the empty string
    (in the case of string).  This allows full control over ImageMagick
    attributes which are stored as C strings which may be set to NULL.
  * Updated for ImageMagick 4.2.1

(0.7.2)
  * Added STL function object support for all Image manipulation
    methods to support operating on all or part of the images
    stored in an STL container.

(0.7.1)
  * Added Coordinate class and methods in Drawable to support x,y
    coordinates.
  * Changed coordinate parameters from unsigned int to double in Drawable.
  * Changed polygon methods in Drawable to use STL list argument.
  * Added STL list based draw method to Image.
  * Changed Exception heirarchy to support Warning and Error sub-classes.
    Most exception class names have changed.

(0.7)
  * Updated for ImageMagick 4.2.0
  * Added support for flood-filling and drawing with texture.
  * Montage supported.
  * Oodles of bugs fixed.
  * Implemented image attribute tests.
  * Implemented PerlMagick 'demo' and 'shapes' demo programs in Magick++.
  * Some parameters re-ordered due to experience from writing demo programs.

(0.6)
  * Initial support for integrating image-list oriented operations with
    STL containers.

(0.5)
  * Compiles and runs under Unix using egcs release 1.1 or later.
  * Compiles and runs under Windows using Visual C++ 5.X or later.
  * Users of Magick++ API are not exposed to ImageMagick headers.
  * Magick++ API is namespaced under "Magick".
  * "Magick" prefix removed from object names.
  * User options are now completely contained within Image object.
    There is no longer a MagickOptions parameter to some methods.

(0.1)
  * All ImageMagick operations which operate on individual images are
    supported.
  * Image objects have value semantics, avoid unnecessary image
    copies through the use of reference counting, and may be compared
    via standard operators.
  * Geometry, color, annotations, and user-options are supported by
    separate classes.
  * Errors are reported synchronously via C++ exceptions.



From ebala at helixcommunity.org  Thu Sep 10 11:36:54 2009
From: ebala at helixcommunity.org (ebala@helixcommunity.org)
Date: Thu Sep 10 20:40:13 2009
Subject: [Common-cvs] import/imagemagick/Magick++/lib/Magick++ Blob.h, 1.1,
	1.2 BlobRef.h, 1.1, 1.2 CoderInfo.h, 1.1, 1.2 Color.h, 1.1,
	1.2 Drawable.h, 1.1, 1.2 Exception.h, 1.1, 1.2 Functions.h,
	1.1, 1.2 Geometry.h, 1.1, 1.2 Image.h, 1.1, 1.2 ImageRef.h,
	1.1, 1.2 Include.h, 1.1, 1.2 Montage.h, 1.1, 1.2 Options.h,
	1.1, 1.2 Pixels.h, 1.1, 1.2 STL.h, 1.1, 1.2 Thread.h, 1.1,
	1.2 TypeMetric.h, 1.1, 1.2 Makefile.am, 1.1, 1.2
Message-ID: 

Update of /cvsroot/common/import/imagemagick/Magick++/lib/Magick++
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv28330

Added Files:
	Blob.h BlobRef.h CoderInfo.h Color.h Drawable.h Exception.h 
	Functions.h Geometry.h Image.h ImageRef.h Include.h Montage.h 
	Options.h Pixels.h STL.h Thread.h TypeMetric.h Makefile.am 
Log Message:
Import of Imagemagick

--- NEW FILE: STL.h ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2000, 2001, 2002, 2003
//
// Definition and implementation of template functions for using
// Magick::Image with STL containers.
//

#ifndef Magick_STL_header
#define Magick_STL_header

#include "Magick++/Include.h"
#include 
#include 
#include 
#include 
#include 

#include "Magick++/CoderInfo.h"
[...2343 lines suppressed...]
    linkImages( first_, last_ );

    MagickCore::ExceptionInfo exceptionInfo;
    MagickCore::GetExceptionInfo( &exceptionInfo );
    size_t length = 2048; // Efficient size for small images
    void* data = MagickCore::ImagesToBlob( first_->imageInfo(),
					 first_->image(),
					 &length,
					 &exceptionInfo);
    blob_->updateNoCopy( data, length, Magick::Blob::MallocAllocator );

    unlinkImages( first_, last_ );

    throwException( exceptionInfo );
    (void) MagickCore::DestroyExceptionInfo( &exceptionInfo );
  }

} // namespace Magick

#endif // Magick_STL_header

--- NEW FILE: Options.h ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2000, 2001, 2002, 2003
//
// Definition of Options
//
// Options which may be applied to an image. These options are the
// equivalent of options supplied to ImageMagick utilities.
//
// This is an internal implementation class and is not part of the
// Magick++ API
//

#if !defined(Magick_Options_header)
#define Magick_Options_header

#include "Magick++/Include.h"
#include 
#include "Magick++/Color.h"
#include "Magick++/Geometry.h"
#include "Magick++/Drawable.h"

namespace Magick
{
  class MagickDLLDecl Image;

  class Options
  {

  public:
    Options( void );
    Options( const Options& options_ );
    ~Options();

    // Remove pixel aliasing
    void            antiAlias( bool flag_ );
    bool            antiAlias( void ) const;
    
    // Join images into a single multi-image file
    void            adjoin ( bool flag_ );
    bool            adjoin ( void ) const;
    
    // Image background color
    void            backgroundColor ( const Color &color_ );
    Color           backgroundColor ( void ) const;
    
    // Name of texture image to tile onto the image background
    void            backgroundTexture ( const std::string &backgroundTexture_ );
    std::string     backgroundTexture ( void ) const;
    
    // Image border color
    void            borderColor ( const Color &color_ );
    Color           borderColor ( void ) const;
    
    // Text bounding-box base color (default none)
    void            boxColor ( const Color &boxColor_ );
    Color           boxColor ( void ) const;
    
    // Colors within this distance are considered equal
    void            colorFuzz ( double fuzz_ );
    double          colorFuzz ( void ) const;
    
    // Image colorspace scheme
    void            colorspaceType ( ColorspaceType colorspace_ );
    ColorspaceType   colorspaceType ( void ) const;
    
    // Compression type ( NoCompression, BZipCompression,
    // FaxCompression, JPEGCompression, LZWCompression,
    // RLECompression, or ZipCompression )
    void            compressType ( CompressionType compressType_ );
    CompressionType compressType ( void ) const;

    // Enable printing of debug messages from ImageMagick
    void            debug ( bool flag_ );
    bool            debug ( void ) const;
    
    // Vertical and horizontal resolution in pixels of the image
    void            density ( const Geometry &geomery_ );
    Geometry        density ( void ) const;

    // Image depth (8 or 16)
    void            depth ( unsigned int depth_ );
    unsigned int    depth ( void ) const;

    // Endianness (little like Intel or big like SPARC) for image
    // formats which support endian-specific options.
    void            endian ( EndianType endian_ );
    EndianType      endian ( void ) const;

    // Image filename to read or write
    void            fileName ( const std::string &fileName_ );
    std::string     fileName ( void ) const;

    // Color to use when filling drawn objects
    void            fillColor ( const Color &fillColor_ );
    Color           fillColor ( void ) const;

    // Fill pattern
    void            fillPattern ( const MagickCore::Image *fillPattern_ );
    const MagickCore::Image* fillPattern ( void  ) const;

    // Rule to use when filling drawn objects
    void            fillRule ( const FillRule &fillRule_ );
    FillRule        fillRule ( void ) const;

    // Font name
    void            font ( const std::string &font_ );
    std::string     font ( void ) const;

    // Font point size
    void            fontPointsize ( double pointSize_ );
    double          fontPointsize ( void ) const;
    
    std::string     format ( void ) const;

    // Image interlace scheme
    void            interlaceType ( InterlaceType interlace_ );
    InterlaceType   interlaceType ( void ) const;
    
   // Image format to write or read
    void            magick ( const std::string &magick_ );
    std::string     magick ( void ) const;
    
    // Transparent color
    void            matteColor ( const Color &matteColor_ );
    Color           matteColor ( void ) const;

   // Write as a monochrome image
    void            monochrome ( bool monochromeFlag_ );
    bool            monochrome ( void ) const;

    // Preferred size and location of an image canvas.
    void            page ( const Geometry &pageSize_ );
    Geometry        page ( void ) const;

    // Desired image quality factor
    void            quality ( unsigned int quality_ );
    unsigned int    quality ( void ) const;
    
    // Maximum number of colors to quantize to
    void            quantizeColors ( unsigned int colors_ );
    unsigned int    quantizeColors ( void ) const;
    
    // Colorspace to quantize in.
    void            quantizeColorSpace ( ColorspaceType colorSpace_ );
    ColorspaceType  quantizeColorSpace ( void ) const;
    
    // Dither image during quantization.
    void            quantizeDither ( bool ditherFlag_ );
    bool            quantizeDither ( void ) const;
    
    // Quantization tree-depth
    void            quantizeTreeDepth ( unsigned int treeDepth_ );
    unsigned int    quantizeTreeDepth ( void ) const;

    // Units of resolution to interpret density
    void            resolutionUnits ( ResolutionType resolutionUnits_ );
    ResolutionType  resolutionUnits ( void ) const;

    // Image sampling factor
    void            samplingFactor ( const std::string &samplingFactor_ );
    std::string     samplingFactor ( void ) const;

    // Image size (required for raw formats)
    void            size ( const Geometry &geometry_ );
    Geometry        size ( void ) const;

    // enabled/disable stroke anti-aliasing
    void            strokeAntiAlias( bool flag_ );
    bool            strokeAntiAlias( void ) const ;

    // Color to use when drawing object outlines
    void            strokeColor ( const Color &strokeColor_ );
    Color           strokeColor ( void ) const;

    // Control the pattern of dashes and gaps used to stroke
    // paths. The strokeDashArray represents a list of numbers that
    // specify the lengths of alternating dashes and gaps in user
    // units. If an odd number of values is provided, then the list of
    // values is repeated to yield an even number of values.
    void            strokeDashArray ( const double* strokeDashArray_ );
    const double*   strokeDashArray ( void ) const;

    // While drawing using strokeDashArray, specify distance into the dash
    // pattern to start the dash (default 0).
    void            strokeDashOffset ( double strokeDashOffset_ );
    double          strokeDashOffset ( void ) const;

    // Specify the shape to be used at the end of open subpaths when
    // they are stroked. Values of LineCap are UndefinedCap, ButtCap,
    // RoundCap, and SquareCap.
    void            strokeLineCap ( LineCap lineCap_ );
    LineCap         strokeLineCap ( void ) const;
    
    // Specify the shape to be used at the corners of paths (or other
    // vector shapes) when they are stroked. Values of LineJoin are
    // UndefinedJoin, MiterJoin, RoundJoin, and BevelJoin.
    void            strokeLineJoin ( LineJoin lineJoin_ );
    LineJoin        strokeLineJoin ( void ) const;

    // Specify miter limit. When two line segments meet at a sharp
    // angle and miter joins have been specified for 'lineJoin', it is
    // possible for the miter to extend far beyond the thickness of
    // the line stroking the path. The miterLimit' imposes a limit on
    // the ratio of the miter length to the 'stroke_width'. The default
    // value of this parameter is 4.
    void            strokeMiterLimit ( unsigned int miterLimit_ );
    unsigned int    strokeMiterLimit ( void ) const;

    // Pattern image to use for stroked outlines
    void            strokePattern ( const MagickCore::Image *strokePattern_ );
    const MagickCore::Image* strokePattern ( void  ) const;

   // Stroke width for drawing vector objects (default one)
    void            strokeWidth ( double strokeWidth_ );
    double          strokeWidth ( void ) const;

    void            subImage ( unsigned int subImage_ );
    unsigned int    subImage ( void ) const;

    // Sub-frame number to return
    void            subRange ( unsigned int subRange_ );
    unsigned int    subRange ( void ) const;

    // Annotation text encoding (e.g. "UTF-16")
    void            textEncoding ( const std::string &encoding_ );
    std::string     textEncoding ( void ) const;
    
    void            tileName ( const std::string &tileName_ );
    std::string     tileName ( void ) const;

    // Image representation type
    void            type ( const ImageType type_ );
    ImageType       type ( void ) const;

    // Origin of coordinate system to use when annotating with text or drawing
    void            transformOrigin ( double tx_, double ty_ );

    // Reset transformation parameters to default
    void            transformReset ( void );

    // Rotation to use when annotating with text or drawing
    void            transformRotation ( double angle_ );

    // Scale to use when annotating with text or drawing
    void            transformScale ( double sx_, double sy_ );

    // Skew to use in X axis when annotating with text or drawing
    void            transformSkewX ( double skewx_ );

    // Skew to use in Y axis when annotating with text or drawing
    void            transformSkewY ( double skewy_ );

    // Return verbose information about an image, or an operation
    void            verbose ( bool verboseFlag_ );
    bool            verbose ( void ) const;
    
    void            view ( const std::string &view_ );
    std::string     view ( void ) const;

    // Virtual pixel method.
    void            virtualPixelMethod ( VirtualPixelMethod virtual_pixel_method_ );
    VirtualPixelMethod virtualPixelMethod ( void ) const;

    // X11 display name
    void            x11Display ( const std::string &display_ );
    std::string     x11Display ( void ) const;
    
    //
    // Internal implementation methods.  Please do not use.
    //

    MagickCore::DrawInfo*       drawInfo( void );
    MagickCore::ImageInfo *     imageInfo( void );
    MagickCore::QuantizeInfo *  quantizeInfo( void );

    // Construct using raw structures
    Options( const MagickCore::ImageInfo* imageInfo_,
             const MagickCore::QuantizeInfo* quantizeInfo_,
             const MagickCore::DrawInfo* drawInfo_ );

  protected:

  private:
    
    // Assignment not supported
    Options& operator= ( const Options& );

    MagickCore::ImageInfo*        _imageInfo;
    MagickCore::QuantizeInfo*     _quantizeInfo;
    MagickCore::DrawInfo*         _drawInfo;
  };
} // namespace Magick

#endif // Magick_Options_header

--- NEW FILE: TypeMetric.h ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 2001, 2002
//
// TypeMetric Definition
//
// Container for font type metrics
//

#if !defined (Magick_TypeMetric_header)
#define Magick_TypeMetric_header

#include "Magick++/Include.h"

namespace Magick
{
  class MagickDLLDecl TypeMetric
  {
    friend class Image;
  public:
    
    TypeMetric ( void );
    ~TypeMetric ( void );

    // Ascent, the distance in pixels from the text baseline to the
    // highest/upper grid coordinate used to place an outline point.
    double         ascent ( void ) const;

    // Descent, the distance in pixels from the baseline to the lowest
    // grid coordinate used to place an outline point. Always a
    // negative value.
    double         descent ( void ) const;

    // Text width in pixels.
    double         textWidth ( void ) const;

    // Text height in pixels.
    double         textHeight ( void ) const;

    // Maximum horizontal advance in pixels.
    double         maxHorizontalAdvance ( void ) const;

    //
    // Public methods below this point are for Magick++ use only.
    //

  private:
    MagickCore::TypeMetric  _typeMetric;
  };
} // namespace Magick

//
// Inlines
//


#endif // Magick_TypeMetric_header

--- NEW FILE: Image.h ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2000, 2001, 2002, 2003
//
// Definition of Image, the representation of a single image in Magick++
//

#if !defined(Magick_Image_header)
#define Magick_Image_header

#include "Magick++/Include.h"
#include 
#include 
#include "Magick++/Blob.h"
#include "Magick++/Color.h"
#include "Magick++/Drawable.h"
#include "Magick++/Exception.h"
#include "Magick++/Geometry.h"
#include "Magick++/TypeMetric.h"
[...1340 lines suppressed...]

// Get image storage class
inline Magick::ClassType Magick::Image::classType ( void ) const
{
  return static_cast(constImage()->storage_class);
}

// Get number of image columns
inline unsigned int Magick::Image::columns ( void ) const
{
  return constImage()->columns;
}

// Get number of image rows
inline unsigned int Magick::Image::rows ( void ) const
{
  return constImage()->rows;
}

#endif // Magick_Image_header

--- NEW FILE: Montage.h ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2000, 2001, 2002, 2003
//
// Definition of Montage class used to specify montage options.
//

#if !defined(Magick_Montage_header)
#define Magick_Montage_header

#include "Magick++/Include.h"
#include 
#include "Magick++/Color.h"
#include "Magick++/Geometry.h"

//
// Basic (Un-framed) Montage
//
namespace Magick
{
  class MagickDLLDecl Montage
  {
  public:
    Montage( void );
    virtual ~Montage( void );
    
    void              backgroundColor ( const Color &backgroundColor_ );
    Color             backgroundColor ( void ) const;
    
    void              compose ( CompositeOperator compose_ );
    CompositeOperator compose ( void ) const;
    
    void              fileName( const std::string &fileName_ );
    std::string       fileName( void ) const;

    void              fillColor ( const Color &fill_ );
    Color             fillColor ( void ) const;

    void              font ( const std::string &font_ );
    std::string       font ( void ) const;
    
    void              geometry ( const Geometry &geometry_ );
    Geometry          geometry ( void ) const;
    
    void              gravity ( GravityType gravity_ );
    GravityType       gravity ( void ) const;
    
    // Apply as attribute to all images before montage
    void              label( const std::string &label_ );
    std::string       label( void ) const;

    // Same as fill color
    void              penColor ( const Color &pen_ );
    Color             penColor ( void ) const;
    
    void              pointSize ( unsigned int pointSize_ );
    unsigned int      pointSize ( void ) const;
    
    void              shadow ( bool shadow_ );
    bool              shadow ( void ) const;

    void              strokeColor ( const Color &stroke_ );
    Color             strokeColor ( void ) const;

    void              texture ( const std::string &texture_ );
    std::string       texture ( void ) const;
    
    void              tile ( const Geometry &tile_ );
    Geometry          tile ( void ) const;
    
    void              title ( const std::string &title_ );
    std::string       title ( void ) const;
    
    // Apply to montage with TransparentPaintImage()
    void              transparentColor ( const Color &transparentColor_ );
    Color             transparentColor ( void ) const;

    //
    // Implementation methods/members
    //

    // Update elements in existing MontageInfo structure
    virtual void      updateMontageInfo ( MagickCore::MontageInfo &montageInfo_ ) const;
        
  protected:

  private:
    Color             _backgroundColor;   // Color that thumbnails are composed on
    CompositeOperator _compose;           // Composition algorithm to use (e.g. ReplaceCompositeOp)
    std::string       _fileName;          // Filename to save montages to
    Color             _fill;              // Fill color
    std::string       _font;              // Label font
    Geometry          _geometry;          // Thumbnail width & height plus border width & height
    GravityType       _gravity;           // Thumbnail position (e.g. SouthWestGravity)
    std::string       _label;             // Thumbnail label (applied to image prior to montage)
    unsigned int      _pointSize;         // Font point size
    bool              _shadow;            // Enable drop-shadows on thumbnails
    Color             _stroke;            // Outline color
    std::string       _texture;           // Background texture image
    Geometry          _tile;              // Thumbnail rows and colmns
    std::string       _title;             // Montage title
    Color             _transparentColor;  // Transparent color
  };

  //
  // Montage With Frames (Extends Basic Montage)
  //
  class MagickDLLDecl MontageFramed : public Montage
  {
  public:
    MontageFramed ( void );
    /* virtual */ ~MontageFramed ( void );
    
    void           borderColor ( const Color &borderColor_ );
    Color          borderColor ( void ) const;
    
    void           borderWidth ( unsigned int borderWidth_ );
    unsigned int   borderWidth ( void ) const;
    
    void           frameGeometry ( const Geometry &frame_ );
    Geometry       frameGeometry ( void ) const;
    
    void           matteColor ( const Color &matteColor_ );
    Color          matteColor ( void ) const;

    //
    // Implementation methods/members
    //

    // Update elements in existing MontageInfo structure
    /* virtual */ void updateMontageInfo ( MagickCore::MontageInfo &montageInfo_ ) const;
    
  protected:

  private:
    
    Color          _borderColor;	// Frame border color
    unsigned int   _borderWidth;	// Pixels between thumbnail and surrounding frame
    Geometry       _frame;		// Frame geometry (width & height frame thickness)
    Color          _matteColor;		// Frame foreground color
  };
} // namespace Magick

//
// Inlines
//

//
// Implementation of Montage
//

inline void Magick::Montage::backgroundColor ( const Magick::Color &backgroundColor_ )
{
  _backgroundColor = backgroundColor_;
}
inline Magick::Color Magick::Montage::backgroundColor ( void ) const
{
  return _backgroundColor;
}

inline void Magick::Montage::compose ( Magick::CompositeOperator compose_ )
{
  _compose = compose_;
}
inline Magick::CompositeOperator Magick::Montage::compose ( void ) const
{
  return _compose;
}

inline void Magick::Montage::fileName( const std::string &fileName_ )
{
  _fileName = fileName_;
}
inline std::string Magick::Montage::fileName( void ) const
{
  return _fileName;
}

inline void Magick::Montage::fillColor ( const Color &fill_ )
{
  _fill=fill_;
}
inline Magick::Color Magick::Montage::fillColor ( void ) const
{
  return _fill;
}

inline void Magick::Montage::font ( const std::string &font_ )
{
  _font = font_;
}
inline std::string Magick::Montage::font ( void ) const
{
  return _font;
}

inline void Magick::Montage::geometry ( const Magick::Geometry &geometry_ )
{
  _geometry = geometry_;
}
inline Magick::Geometry Magick::Montage::geometry ( void ) const
{
  return _geometry;
}

inline void Magick::Montage::gravity ( Magick::GravityType gravity_ )
{
  _gravity = gravity_;
}
inline Magick::GravityType Magick::Montage::gravity ( void ) const
{
  return _gravity;
}

// Apply as attribute to all images before doing montage
inline void Magick::Montage::label( const std::string &label_ )
{
  _label = label_;
}
inline std::string Magick::Montage::label( void ) const
{
  return _label;
}

inline void Magick::Montage::penColor ( const Color &pen_ )
{
  _fill=pen_;
  _stroke=Color("none");
}
inline Magick::Color Magick::Montage::penColor ( void ) const
{
  return _fill;
}

inline void Magick::Montage::pointSize ( unsigned int pointSize_ )
{
  _pointSize = pointSize_;
}
inline unsigned int Magick::Montage::pointSize ( void ) const
{
  return _pointSize;
}

inline void Magick::Montage::shadow ( bool shadow_ )
{
  _shadow = shadow_;
}
inline bool Magick::Montage::shadow ( void ) const
{
  return _shadow;
}

inline void Magick::Montage::strokeColor ( const Color &stroke_ )
{
  _stroke=stroke_;
}
inline Magick::Color Magick::Montage::strokeColor ( void ) const
{
  return _stroke;
}

inline void Magick::Montage::texture ( const std::string &texture_ )
{
  _texture = texture_;
}
inline std::string Magick::Montage::texture ( void ) const
{
  return _texture;
}

inline void Magick::Montage::tile ( const Geometry &tile_ )
{
  _tile = tile_;
}
inline Magick::Geometry Magick::Montage::tile ( void ) const
{
  return _tile;
}

inline void Magick::Montage::title ( const std::string &title_ )
{
  _title = title_;
}
inline std::string Magick::Montage::title ( void ) const
{
  return _title;
}

// Applied after the fact to montage with TransparentPaintImage()
inline void Magick::Montage::transparentColor ( const Magick::Color &transparentColor_ )
{
  _transparentColor = transparentColor_;
}
inline Magick::Color Magick::Montage::transparentColor ( void ) const
{
  return _transparentColor;
}

//
// Implementation of MontageFramed
//

inline void Magick::MontageFramed::borderColor ( const Magick::Color &borderColor_ )
{
  _borderColor = borderColor_;
}
inline Magick::Color Magick::MontageFramed::borderColor ( void ) const
{
  return _borderColor;
}

inline void Magick::MontageFramed::borderWidth ( unsigned int borderWidth_ )
{
  _borderWidth = borderWidth_;
}
inline unsigned int Magick::MontageFramed::borderWidth ( void ) const
{
  return _borderWidth;
}

inline void Magick::MontageFramed::frameGeometry ( const Magick::Geometry &frame_ )
{
  _frame = frame_;
}
inline Magick::Geometry Magick::MontageFramed::frameGeometry ( void ) const
{
  return _frame;
}

inline void Magick::MontageFramed::matteColor ( const Magick::Color &matteColor_ )
{
  _matteColor = matteColor_;
}
inline Magick::Color Magick::MontageFramed::matteColor ( void ) const
{
  return _matteColor;
}

#endif // Magick_Montage_header

--- NEW FILE: Blob.h ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2000, 2001, 2002
//
// Reference counted container class for Binary Large Objects (BLOBs)
//

#if !defined(Magick_BlobRef_header)
#define Magick_BlobRef_header

#include "Magick++/Include.h"
#include 

namespace Magick
{
  // Forward decl
  class BlobRef;

  class MagickDLLDecl Blob
  {

  public:

    enum Allocator
    {
      MallocAllocator,
      NewAllocator
    };

    // Default constructor
    Blob ( void );

    // Construct object with data, making a copy of the supplied data.
    Blob ( const void* data_, size_t length_ );

    // Copy constructor (reference counted)
    Blob ( const Blob& blob_ );

    // Destructor (reference counted)
    virtual       ~Blob ();

    // Assignment operator (reference counted)
    Blob&         operator= ( const Blob& blob_ );

    // Update object contents from Base64-encoded string representation.
    void          base64 ( const std::string base64_ );
    // Return Base64-encoded string representation.
    std::string   base64 ( void );

    // Update object contents, making a copy of the supplied data.
    // Any existing data in the object is deallocated.
    void          update ( const void* data_, size_t length_ );

    // Update object contents, using supplied pointer directly (no
    // copy). Any existing data in the object is deallocated.  The user
    // must ensure that the pointer supplied is not deleted or
    // otherwise modified after it has been supplied to this method.
    // Specify allocator_ as "MallocAllocator" if memory is allocated
    // via the C language malloc() function, or "NewAllocator" if
    // memory is allocated via C++ 'new'.
    void          updateNoCopy ( void* data_, size_t length_,
                                 Allocator allocator_ = NewAllocator );

    // Obtain pointer to data. The user should never try to modify or
    // free this data since the Blob class manages its own data. The
    // user must be finished with the data before allowing the Blob to
    // be destroyed since the pointer is invalid once the Blob is
    // destroyed.
    const void*   data ( void ) const;

    // Obtain data length
    size_t length ( void ) const;

  protected:

  private:
    BlobRef * _blobRef;
  };

} // namespace Magick

#endif // Magick_BlobRef_header

--- NEW FILE: Thread.h ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2000, 2001, 2003
//
// Definition of types and classes to support threads
//
// This class is a Magick++ implementation class and is not intended
// for use by end-users.
// 
#if !defined (Magick_Thread_header)
#define Magick_Thread_header

#include "Magick++/Include.h"

#if defined(_VISUALC_)
#include 
#if defined(_MT)
struct win32_mutex {
	HANDLE id;
};

// This is a binary semphore -- increase for a counting semaphore
#define MAXSEMLEN	1
#endif // defined(_MT)
#endif // defined(_VISUALC_)

#if defined(MAGICKCORE_HAVE_PTHREAD)
# include 
#endif // defined(MAGICKCORE_HAVE_PTHREAD)

namespace Magick
{
  // Mutex lock wrapper
  class MagickDLLDecl MutexLock
  {
  public:
    // Default constructor
    MutexLock(void);

    // Destructor
    ~MutexLock(void);

    // Lock mutex
    void lock(void);

    // Unlock mutex
    void unlock(void);

  private:

    // Don't support copy constructor
    MutexLock ( const MutexLock& original_ );
    
    // Don't support assignment
    MutexLock& operator = ( const MutexLock& original_ );

#if defined(MAGICKCORE_HAVE_PTHREAD)
    pthread_mutex_t  _mutex;
#endif
#if defined(_MT) && defined(_VISUALC_)
    win32_mutex  _mutex;
#endif
  };

  // Lock mutex while object is in scope
  class MagickDLLDecl Lock
  {
  public:
    // Construct with mutex lock (locks mutex)
    Lock( MutexLock *mutexLock_ );

    // Destrutor (unlocks mutex)
    ~Lock( void );
  private:

    // Don't support copy constructor
    Lock ( const Lock& original_ );
    
    // Don't support assignment
    Lock& operator = ( const Lock& original_ );

    MutexLock* _mutexLock;
  };
}

// Construct with mutex lock (locks mutex)
inline Magick::Lock::Lock( MutexLock *mutexLock_ )
  : _mutexLock(mutexLock_)
{
  _mutexLock->lock();
}

// Destrutor (unlocks mutex)
inline Magick::Lock::~Lock( void )
{
  _mutexLock->unlock();
  _mutexLock=0;
}

#endif // Magick_Thread_header

--- NEW FILE: CoderInfo.h ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 2001, 2002, 2003
//
// CoderInfo Definition
//
// Container for image format support information.
//

#if !defined (Magick_CoderInfo_header)
#define Magick_CoderInfo_header

#include "Magick++/Include.h"
#include 

namespace Magick
{
  class MagickDLLDecl CoderInfo
  {
  public:

    enum MatchType {
      AnyMatch,		// match any coder
      TrueMatch,	// match coder if true
      FalseMatch	// match coder if false
    };

    CoderInfo ( const std::string &name_ );
    ~CoderInfo ( void );

    // Format name
    std::string name( void ) const;

    // Format description
    std::string description( void ) const;

    // Format is readable
    bool isReadable( void ) const;

    // Format is writeable
    bool isWritable( void ) const;

    // Format supports multiple frames
    bool isMultiFrame( void ) const;

    //
    // Implemementation methods
    //
    CoderInfo ( const MagickCore::MagickInfo *magickInfo_ );

  private:

    // Default constructor (not supported)
    CoderInfo ( void );

    // Copy constructor (not supported)
    //    CoderInfo ( const CoderInfo &coder_ );

    // Assignment operator (not supported)
    CoderInfo& operator= (const CoderInfo &coder_ );

    std::string		_name;
    std::string		_description;
    bool		_isReadable;
    bool		_isWritable;
    bool		_isMultiFrame;
    
  };
} // namespace Magick

//
// Inlines
//


#endif // Magick_CoderInfo_header

--- NEW FILE: ImageRef.h ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2000, 2001, 2002
//
// Definition of an Image reference
//
// This is a private implementation class which should never be
// referenced by any user code.
//

#if !defined(Magick_ImageRef_header)
#define Magick_ImageRef_header

#include "Magick++/Include.h"
#include "Magick++/Thread.h"

namespace Magick
{
  class Options;

  //
  // Reference counted access to Image *
  //
  class MagickDLLDecl ImageRef {
    friend class Image; 
  private:
    // Construct with an image pointer and default options
    ImageRef ( MagickCore::Image * image_ );
    // Construct with an image pointer and options
    ImageRef ( MagickCore::Image * image_, const Options * options_ );
    // Construct with null image and default options
    ImageRef ( void );
    // Destroy image and options
    ~ImageRef ( void );

    // Copy constructor and assignment are not supported
    ImageRef(const ImageRef&);
    ImageRef& operator=(const ImageRef&);
    
    void                 image ( MagickCore::Image * image_ );
    MagickCore::Image *&  image ( void );
    
    void                 options ( Options * options_ );
    Options *            options ( void );

    void                 id ( const long id_ );
    long                 id ( void ) const;
    
    MagickCore::Image *   _image;    // ImageMagick Image
    Options *            _options;  // User-specified options
    long                 _id;       // Registry ID (-1 if not registered)
    int                  _refCount; // Reference count
    MutexLock            _mutexLock;// Mutex lock
  };

} // end of namespace Magick

//
// Inlines
//

// Retrieve image from reference
inline MagickCore::Image *& Magick::ImageRef::image ( void )
{
  return _image;
}

// Retrieve Options from reference
inline Magick::Options * Magick::ImageRef::options ( void )
{
  return _options;
}

// Retrieve registration id from reference
inline long Magick::ImageRef::id ( void ) const
{
  return _id;
}

#endif // Magick_ImageRef_header

--- NEW FILE: Include.h ---
// This may look like C code, but it is really -*- C++ -*-
//
// Copyright Bob Friesenhahn, 1999, 2000, 2001, 2002
//
// Inclusion of ImageMagick headers (with namespace magic)

#ifndef Magick_Include_header
#define Magick_Include_header

#if !defined(_MAGICK_CONFIG_H)
# define _MAGICK_CONFIG_H
# if !defined(vms) && !defined(macintosh)
#  include "magick/magick-config.h"
# else
#  include "magick-config.h"
# endif
# undef inline // Remove possible definition from config.h
# undef class
#endif

// Needed for stdio FILE
#include 
#include 
#include 
#include 

#if defined(MAGICKCORE_HAVE_SYS_TYPES_H)
# include 
#endif

#if defined(macintosh)
#  include   /* Needed for off_t */
#endif

#if defined(__BORLANDC__)
# include  /* Borland C++ Builder 4.0 requirement */
#endif // defined(__BORLANDC__)

//
// Include ImageMagick headers into namespace "MagickCore". If
// MAGICKCORE_IMPLEMENTATION is defined, include ImageMagick development
// headers.  This scheme minimizes the possibility of conflict with
// user code.
//
namespace MagickCore
{
#include 
#include 
#undef inline // Remove possible definition from config.h

#undef class
}

//
// Provide appropriate DLL imports/exports for Visual C++,
// Borland C++Builder and MinGW builds.
//
#if defined(WIN32) && !defined(__CYGWIN__) && !defined(__MINGW32__)
# define MagickCplusPlusDLLSupported
#endif
#if defined(MagickCplusPlusDLLSupported)
#  if defined(_MT) && defined(_DLL) && !defined(_LIB) && !defined(STATIC_MAGICK)
//
// In a native Windows build, the following defines are used:
//
//   _MT         = Multithreaded
//   _DLL        = Using code is part of a DLL
//   _LIB        = Using code is being built as a library.
//   _MAGICKMOD_ = Build uses loadable modules (Magick++ does not care about this)
//
// In the case where ImageMagick is built as a static library but the
// using code is dynamic, STATIC_MAGICK may be defined in the project to
// override triggering dynamic library behavior.
//
#    define MagickDLLBuild
#    if defined(_VISUALC_)
#      pragma warning( disable: 4273 )  /* Disable the stupid dll linkage warnings */
#      pragma warning( disable: 4251 )
#    endif
#    if !defined(MAGICKCORE_IMPLEMENTATION)
#      define MagickDLLDecl __declspec(dllimport)
#      define MagickDLLDeclExtern extern __declspec(dllimport)
#      if defined(_VISUALC_)
#        pragma message( "Magick++ lib DLL import" )
#      endif
#    else
#      if defined(__BORLANDC__)
#        define MagickDLLDecl __declspec(dllexport)
#        define MagickDLLDeclExtern __declspec(dllexport)
#        pragma message( "BCBMagick++ lib DLL export" )
#      else
#        define MagickDLLDecl __declspec(dllexport)
#        define MagickDLLDeclExtern extern __declspec(dllexport)
#      endif
#      if defined(_VISUALC_)
#        pragma message( "Magick++ lib DLL export" )
#      endif
#    endif
#  else
#    define MagickDLLDecl
#    define MagickDLLDeclExtern
#    if defined(_VISUALC_)
#      pragma message( "Magick++ lib static interface" )
#    endif
#  endif
#else
#  define MagickDLLDecl
#  define MagickDLLDeclExtern
#endif

#if defined(WIN32) && defined(_VISUALC_)
#  pragma warning(disable : 4996) /* function deprecation warnings */
#endif

//
// Import ImageMagick symbols and types which are used as part of the
// Magick++ API definition into namespace "Magick".
//
namespace Magick
{
  // The datatype for an RGB component
  using MagickCore::Quantum;
  using MagickCore::MagickSizeType;

  // Boolean types
  using MagickCore::MagickBooleanType;
  using MagickCore::MagickFalse;
  using MagickCore::MagickTrue;

  // Image class types
  using MagickCore::ClassType;
  using MagickCore::UndefinedClass;
  using MagickCore::DirectClass;
  using MagickCore::PseudoClass;
  
  // Channel types
  using MagickCore::ChannelType;
  using MagickCore::UndefinedChannel;
  using MagickCore::RedChannel;
  using MagickCore::CyanChannel;
  using MagickCore::GreenChannel;
  using MagickCore::MagentaChannel;
  using MagickCore::BlueChannel;
  using MagickCore::YellowChannel;
  using MagickCore::OpacityChannel;
  using MagickCore::Bl