dotgnu-pnet-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Dotgnu-pnet-commits] CVS: pnetlib/System.Drawing/Imaging BitmapData.cs


From: Rhys Weatherley <address@hidden>
Subject: [Dotgnu-pnet-commits] CVS: pnetlib/System.Drawing/Imaging BitmapData.cs,NONE,1.1 ColorAdjustType.cs,NONE,1.1 ColorChannelFlag.cs,NONE,1.1 ColorMap.cs,NONE,1.1 ColorMapType.cs,NONE,1.1 ColorMatrix.cs,NONE,1.1 ColorMatrixFlag.cs,NONE,1.1 ColorMode.cs,NONE,1.1 ColorPalette.cs,NONE,1.1 EmfPlusRecordType.cs,NONE,1.1 EmfType.cs,NONE,1.1 Encoder.cs,NONE,1.1 EncoderParameter.cs,NONE,1.1 EncoderParameterValueType.cs,NONE,1.1 EncoderParameters.cs,NONE,1.1 EncoderValue.cs,NONE,1.1 FrameDimension.cs,NONE,1.1 ImageAttributes.cs,NONE,1.1 ImageCodecFlags.cs,NONE,1.1 ImageCodecInfo.cs,NONE,1.1 ImageFlags.cs,NONE,1.1 ImageFormat.cs,NONE,1.1 ImageLockMode.cs,NONE,1.1 Makefile,NONE,1.1 MetaHeader.cs,NONE,1.1 Metafile.cs,NONE,1.1 MetafileFrameUnit.cs,NONE,1.1 MetafileHeader.cs,NONE,1.1 MetafileType.cs,NONE,1.1 PaletteFlags.cs,NONE,1.1 PixelFormat.cs,NONE,1.1 PlayRecordCallback.cs,NONE,1.1 PropertyItem.cs,NONE,1.1 WmfPlaceableFileHeader.cs,NONE,1.1
Date: Sat, 07 Jun 2003 18:41:00 -0400

Update of /cvsroot/dotgnu-pnet/pnetlib/System.Drawing/Imaging
In directory subversions:/tmp/cvs-serv12618/System.Drawing/Imaging

Added Files:
        BitmapData.cs ColorAdjustType.cs ColorChannelFlag.cs 
        ColorMap.cs ColorMapType.cs ColorMatrix.cs ColorMatrixFlag.cs 
        ColorMode.cs ColorPalette.cs EmfPlusRecordType.cs EmfType.cs 
        Encoder.cs EncoderParameter.cs EncoderParameterValueType.cs 
        EncoderParameters.cs EncoderValue.cs FrameDimension.cs 
        ImageAttributes.cs ImageCodecFlags.cs ImageCodecInfo.cs 
        ImageFlags.cs ImageFormat.cs ImageLockMode.cs Makefile 
        MetaHeader.cs Metafile.cs MetafileFrameUnit.cs 
        MetafileHeader.cs MetafileType.cs PaletteFlags.cs 
        PixelFormat.cs PlayRecordCallback.cs PropertyItem.cs 
        WmfPlaceableFileHeader.cs 
Log Message:


Add the "System.Drawing" and "System.Drawing.Xsharp" assemblies.


--- NEW FILE ---
/*
 * BitmapData.cs - Implementation of the
 *                      "System.Drawing.Imaging.BitmapData" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Drawing.Imaging
{

public sealed class BitmapData
{
        // Internal state.
        private int height;
        private PixelFormat pixelFormat;
        private int reserved;
        private IntPtr scan0;
        private int stride;
        private int width;

        // Constructor.
        public BitmapData() {}

        // Get or set this object's properties.
        public int Height
                        {
                                get
                                {
                                        return height;
                                }
                                set
                                {
                                        height = value;
                                }
                        }
        public PixelFormat PixelFormat
                        {
                                get
                                {
                                        return pixelFormat;
                                }
                                set
                                {
                                        pixelFormat = value;
                                }
                        }
        public int Reserved
                        {
                                get
                                {
                                        return reserved;
                                }
                                set
                                {
                                        reserved = value;
                                }
                        }
        public IntPtr Scan0
                        {
                                get
                                {
                                        return scan0;
                                }
                                set
                                {
                                        scan0 = value;
                                }
                        }
        public int Stride
                        {
                                get
                                {
                                        return stride;
                                }
                                set
                                {
                                        stride = value;
                                }
                        }
        public int Width
                        {
                                get
                                {
                                        return width;
                                }
                                set
                                {
                                        width = value;
                                }
                        }

}; // class BitmapData

}; // namespace System.Drawing.Imaging

--- NEW FILE ---
/*
 * ColorAdjustType.cs - Implementation of the
 *                      "System.Drawing.Imaging.ColorAdjustType" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Drawing.Imaging
{

public enum ColorAdjustType
{
        Default         = 0,
        Bitmap          = 1,
        Brush           = 2,
        Pen                     = 3,
        Text            = 4,
        Count           = 5,
        Any                     = 6

}; // enum ColorAdjustType

}; // namespace System.Drawing.Imaging

--- NEW FILE ---
/*
 * ColorChannelFlag.cs - Implementation of the
 *                      "System.Drawing.Imaging.ColorChannelFlag" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Drawing.Imaging
{

public enum ColorChannelFlag
{
        ColorChannelC    = 0,
        ColorChannelM    = 1,
        ColorChannelY    = 2,
        ColorChannelK    = 3,
        ColorChannelLast = 4,

}; // enum ColorChannelFlag

}; // namespace System.Drawing.Imaging

--- NEW FILE ---
/*
 * ColorMap.cs - Implementation of the
 *                      "System.Drawing.Imaging.ColorMap" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Drawing.Imaging
{

public sealed class ColorMap
{
        // Internal state.
        private Color newColor;
        private Color oldColor;

        // Constructor.
        public ColorMap() {}

        // Get or set this object's properties.
        public Color NewColor
                        {
                                get
                                {
                                        return newColor;
                                }
                                set
                                {
                                        newColor = value;
                                }
                        }
        public Color OldColor
                        {
                                get
                                {
                                        return oldColor;
                                }
                                set
                                {
                                        oldColor = value;
                                }
                        }

}; // class ColorMap

}; // namespace System.Drawing.Imaging

--- NEW FILE ---
/*
 * ColorMapType.cs - Implementation of the
 *                      "System.Drawing.Imaging.ColorMapType" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Drawing.Imaging
{

public enum ColorMapType
{
        Default = 0,
        Brush   = 1

}; // enum ColorMapType

}; // namespace System.Drawing.Imaging

--- NEW FILE ---
/*
 * ColorMatrix.cs - Implementation of the
 *                      "System.Drawing.Imaging.ColorMatrix" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Drawing.Imaging
{

public sealed class ColorMatrix
{
        // Internal state.
        private float m00, m01, m02, m03, m04;
        private float m10, m11, m12, m13, m14;
        private float m20, m21, m22, m23, m24;
        private float m30, m31, m32, m33, m34;
        private float m40, m41, m42, m43, m44;

        // Constructor.
        public ColorMatrix()
                        {
                                // Set up the 5x5 identity matrix as the 
default value.
                                m00 = 1.0f; m01 = 0.0f; m02 = 0.0f; m03 = 0.0f; 
m04 = 0.0f;
                                m10 = 0.0f; m11 = 1.0f; m12 = 0.0f; m13 = 0.0f; 
m14 = 0.0f;
                                m20 = 0.0f; m21 = 0.0f; m22 = 1.0f; m23 = 0.0f; 
m24 = 0.0f;
                                m30 = 0.0f; m31 = 0.0f; m32 = 0.0f; m33 = 1.0f; 
m34 = 0.0f;
                                m40 = 0.0f; m41 = 0.0f; m42 = 0.0f; m43 = 0.0f; 
m44 = 1.0f;
                        }
        [CLSCompliant(false)]
        public ColorMatrix(float[][] newColorMatrix)
                        {
                                m00 = newColorMatrix[0][0];
                                m01 = newColorMatrix[0][1];
                                m02 = newColorMatrix[0][2];
                                m03 = newColorMatrix[0][3];
                                m04 = newColorMatrix[0][4];
                                m10 = newColorMatrix[1][0];
                                m11 = newColorMatrix[1][1];
                                m12 = newColorMatrix[1][2];
                                m13 = newColorMatrix[1][3];
                                m14 = newColorMatrix[1][4];
                                m20 = newColorMatrix[2][0];
                                m21 = newColorMatrix[2][1];
                                m22 = newColorMatrix[2][2];
                                m23 = newColorMatrix[2][3];
                                m24 = newColorMatrix[2][4];
                                m30 = newColorMatrix[3][0];
                                m31 = newColorMatrix[3][1];
                                m32 = newColorMatrix[3][2];
                                m33 = newColorMatrix[3][3];
                                m34 = newColorMatrix[3][4];
                                m40 = newColorMatrix[4][0];
                                m41 = newColorMatrix[4][1];
                                m42 = newColorMatrix[4][2];
                                m43 = newColorMatrix[4][3];
                                m44 = newColorMatrix[4][4];
                        }

        // Get or set this object's properties.
        public float this[int row, int column]
                        {
                                get
                                {
                                        switch(row * 5 + column)
                                        {
                                                case 0 * 5 + 0:         return 
m00;
                                                case 0 * 5 + 1:         return 
m01;
                                                case 0 * 5 + 2:         return 
m02;
                                                case 0 * 5 + 3:         return 
m03;
                                                case 0 * 5 + 4:         return 
m04;
                                                case 1 * 5 + 0:         return 
m10;
                                                case 1 * 5 + 1:         return 
m11;
                                                case 1 * 5 + 2:         return 
m12;
                                                case 1 * 5 + 3:         return 
m13;
                                                case 1 * 5 + 4:         return 
m14;
                                                case 2 * 5 + 0:         return 
m20;
                                                case 2 * 5 + 1:         return 
m21;
                                                case 2 * 5 + 2:         return 
m22;
                                                case 2 * 5 + 3:         return 
m23;
                                                case 2 * 5 + 4:         return 
m24;
                                                case 3 * 5 + 0:         return 
m30;
                                                case 3 * 5 + 1:         return 
m31;
                                                case 3 * 5 + 2:         return 
m32;
                                                case 3 * 5 + 3:         return 
m33;
                                                case 3 * 5 + 4:         return 
m34;
                                                case 4 * 5 + 0:         return 
m40;
                                                case 4 * 5 + 1:         return 
m41;
                                                case 4 * 5 + 2:         return 
m42;
                                                case 4 * 5 + 3:         return 
m43;
                                                case 4 * 5 + 4:         return 
m44;
                                                default:                        
return 0.0f;
                                        }
                                }
                                set
                                {
                                        switch(row * 5 + column)
                                        {
                                                case 0 * 5 + 0:         m00 = 
value; break;
                                                case 0 * 5 + 1:         m01 = 
value; break;
                                                case 0 * 5 + 2:         m02 = 
value; break;
                                                case 0 * 5 + 3:         m03 = 
value; break;
                                                case 0 * 5 + 4:         m04 = 
value; break;
                                                case 1 * 5 + 0:         m10 = 
value; break;
                                                case 1 * 5 + 1:         m11 = 
value; break;
                                                case 1 * 5 + 2:         m12 = 
value; break;
                                                case 1 * 5 + 3:         m13 = 
value; break;
                                                case 1 * 5 + 4:         m14 = 
value; break;
                                                case 2 * 5 + 0:         m20 = 
value; break;
                                                case 2 * 5 + 1:         m21 = 
value; break;
                                                case 2 * 5 + 2:         m22 = 
value; break;
                                                case 2 * 5 + 3:         m23 = 
value; break;
                                                case 2 * 5 + 4:         m24 = 
value; break;
                                                case 3 * 5 + 0:         m30 = 
value; break;
                                                case 3 * 5 + 1:         m31 = 
value; break;
                                                case 3 * 5 + 2:         m32 = 
value; break;
                                                case 3 * 5 + 3:         m33 = 
value; break;
                                                case 3 * 5 + 4:         m34 = 
value; break;
                                                case 4 * 5 + 0:         m40 = 
value; break;
                                                case 4 * 5 + 1:         m41 = 
value; break;
                                                case 4 * 5 + 2:         m42 = 
value; break;
                                                case 4 * 5 + 3:         m43 = 
value; break;
                                                case 4 * 5 + 4:         m44 = 
value; break;
                                        }
                                }
                        }
        public float Matrix00
                        {
                                get
                                {
                                        return m00;
                                }
                                set
                                {
                                        m00 = value;
                                }
                        }
        public float Matrix01
                        {
                                get
                                {
                                        return m01;
                                }
                                set
                                {
                                        m01 = value;
                                }
                        }
        public float Matrix02
                        {
                                get
                                {
                                        return m02;
                                }
                                set
                                {
                                        m02 = value;
                                }
                        }
        public float Matrix03
                        {
                                get
                                {
                                        return m03;
                                }
                                set
                                {
                                        m03 = value;
                                }
                        }
        public float Matrix04
                        {
                                get
                                {
                                        return m04;
                                }
                                set
                                {
                                        m04 = value;
                                }
                        }
        public float Matrix10
                        {
                                get
                                {
                                        return m10;
                                }
                                set
                                {
                                        m10 = value;
                                }
                        }
        public float Matrix11
                        {
                                get
                                {
                                        return m11;
                                }
                                set
                                {
                                        m11 = value;
                                }
                        }
        public float Matrix12
                        {
                                get
                                {
                                        return m12;
                                }
                                set
                                {
                                        m12 = value;
                                }
                        }
        public float Matrix13
                        {
                                get
                                {
                                        return m13;
                                }
                                set
                                {
                                        m13 = value;
                                }
                        }
        public float Matrix14
                        {
                                get
                                {
                                        return m14;
                                }
                                set
                                {
                                        m14 = value;
                                }
                        }
        public float Matrix20
                        {
                                get
                                {
                                        return m20;
                                }
                                set
                                {
                                        m20 = value;
                                }
                        }
        public float Matrix21
                        {
                                get
                                {
                                        return m21;
                                }
                                set
                                {
                                        m21 = value;
                                }
                        }
        public float Matrix22
                        {
                                get
                                {
                                        return m22;
                                }
                                set
                                {
                                        m22 = value;
                                }
                        }
        public float Matrix23
                        {
                                get
                                {
                                        return m23;
                                }
                                set
                                {
                                        m23 = value;
                                }
                        }
        public float Matrix24
                        {
                                get
                                {
                                        return m24;
                                }
                                set
                                {
                                        m24 = value;
                                }
                        }
        public float Matrix30
                        {
                                get
                                {
                                        return m30;
                                }
                                set
                                {
                                        m30 = value;
                                }
                        }
        public float Matrix31
                        {
                                get
                                {
                                        return m31;
                                }
                                set
                                {
                                        m31 = value;
                                }
                        }
        public float Matrix32
                        {
                                get
                                {
                                        return m32;
                                }
                                set
                                {
                                        m32 = value;
                                }
                        }
        public float Matrix33
                        {
                                get
                                {
                                        return m33;
                                }
                                set
                                {
                                        m33 = value;
                                }
                        }
        public float Matrix34
                        {
                                get
                                {
                                        return m34;
                                }
                                set
                                {
                                        m34 = value;
                                }
                        }
        public float Matrix40
                        {
                                get
                                {
                                        return m40;
                                }
                                set
                                {
                                        m40 = value;
                                }
                        }
        public float Matrix41
                        {
                                get
                                {
                                        return m41;
                                }
                                set
                                {
                                        m41 = value;
                                }
                        }
        public float Matrix42
                        {
                                get
                                {
                                        return m42;
                                }
                                set
                                {
                                        m42 = value;
                                }
                        }
        public float Matrix43
                        {
                                get
                                {
                                        return m43;
                                }
                                set
                                {
                                        m43 = value;
                                }
                        }
        public float Matrix44
                        {
                                get
                                {
                                        return m44;
                                }
                                set
                                {
                                        m44 = value;
                                }
                        }

}; // class ColorMatrix

}; // namespace System.Drawing.Imaging

--- NEW FILE ---
/*
 * ColorMatrixFlag.cs - Implementation of the
 *                      "System.Drawing.Imaging.ColorMatrixFlag" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Drawing.Imaging
{

public enum ColorMatrixFlag
{
        Default   = 0,
        SkipGrays = 1,
        AltGrays  = 2

}; // enum ColorMatrixFlag

}; // namespace System.Drawing.Imaging

--- NEW FILE ---
/*
 * ColorMode.cs - Implementation of the
 *                      "System.Drawing.Imaging.ColorMode" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Drawing.Imaging
{

public enum ColorMode
{
        Argb32Mode = 0,
        Argb64Mode = 1

}; // enum ColorMode

}; // namespace System.Drawing.Imaging

--- NEW FILE ---
/*
 * ColorPalette.cs - Implementation of the
 *                      "System.Drawing.Imaging.ColorPalette" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Drawing.Imaging
{

public sealed class ColorPalette
{
        // Internal state.
        private Color[] entries;
        private int flags;

        // Constructor.
        internal ColorPalette(Color[] entries, int flags)
                        {
                                this.entries = entries;
                                this.flags = flags;
                        }

        // Get this object's properties.
        public Color[] Entries
                        {
                                get
                                {
                                        return entries;
                                }
                        }
        public int Flags
                        {
                                get
                                {
                                        return flags;
                                }
                        }

}; // class ColorPalette

}; // namespace System.Drawing.Imaging

--- NEW FILE ---
/*
 * EmfPlusRecordType.cs - Implementation of the
 *                      "System.Drawing.Imaging.EmfPlusRecordType" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Drawing.Imaging
{

public enum EmfPlusRecordType
{
        EmfMin                                          = 1,
        EmfHeader                                       = 1,
        EmfPolyBezier                           = 2,
        EmfPolygon                                      = 3,
        EmfPolyline                                     = 4,
        EmfPolyBezierTo                         = 5,
        EmfPolyLineTo                           = 6,
        EmfPolyPolyline                         = 7,
        EmfPolyPolygon                          = 8,
        EmfSetWindowExtEx                       = 9,
        EmfSetWindowOrgEx                       = 10,
        EmfSetViewportExtEx                     = 11,
        EmfSetViewportOrgEx                     = 12,
        EmfSetBrushOrgEx                        = 13,
        EmfEof                                          = 14,
        EmfSetPixelV                            = 15,
        EmfSetMapperFlags                       = 16,
        EmfSetMapMode                           = 17,
        EmfSetBkMode                            = 18,
        EmfSetPolyFillMode                      = 19,
        EmfSetROP2                                      = 20,
        EmfSetStretchBltMode            = 21,
        EmfSetTextAlign                         = 22,
        EmfSetColorAdjustment           = 23,
        EmfSetTextColor                         = 24,
        EmfSetBkColor                           = 25,
        EmfOffsetClipRgn                        = 26,
        EmfMoveToEx                                     = 27,
        EmfSetMetaRgn                           = 28,
        EmfExcludeClipRect                      = 29,
        EmfIntersectClipRect            = 30,
        EmfScaleViewportExtEx           = 31,
        EmfScaleWindowExtEx                     = 32,
        EmfSaveDC                                       = 33,
        EmfRestoreDC                            = 34,
        EmfSetWorldTransform            = 35,
        EmfModifyWorldTransform         = 36,
        EmfSelectObject                         = 37,
        EmfCreatePen                            = 38,
        EmfCreateBrushIndirect          = 39,
        EmfDeleteObject                         = 40,
        EmfAngleArc                                     = 41,
        EmfEllipse                                      = 42,
        EmfRectangle                            = 43,
        EmfRoundRect                            = 44,
        EmfRoundArc                                     = 45,
        EmfChord                                        = 46,
        EmfPie                                          = 47,
        EmfSelectPalette                        = 48,
        EmfCreatePalette                        = 49,
        EmfSetPaletteEntries            = 50,
        EmfResizePalette                        = 51,
        EmfRealizePalette                       = 52,
        EmfExtFloodFill                         = 53,
        EmfLineTo                                       = 54,
        EmfArcTo                                        = 55,
        EmfPolyDraw                                     = 56,
        EmfSetArcDirection                      = 57,
        EmfSetMiterLimit                        = 58,
        EmfBeginPath                            = 59,
        EmfEndPath                                      = 60,
        EmfCloseFigure                          = 61,
        EmfFillPath                                     = 62,
        EmfStrokeAndFillPath            = 63,
        EmfStrokePath                           = 64,
        EmfFlattenPath                          = 65,
        EmfWidenPath                            = 66,
        EmfSelectClipPath                       = 67,
        EmfAbortPath                            = 68,
        EmfReserved069                          = 69,
        EmfGdiComment                           = 70,
        EmfFillRgn                                      = 71,
        EmfFrameRgn                                     = 72,
        EmfInvertRgn                            = 73,
        EmfPaintRgn                                     = 74,
        EmfExtSelectClipRgn                     = 75,
        EmfBitBlt                                       = 76,
        EmfStretchBlt                           = 77,
        EmfMaskBlt                                      = 78,
        EmfPlgBlt                                       = 79,
        EmfSetDIBitsToDevice            = 80,
        EmfStretchDIBits                        = 81,
        EmfExtCreateFontIndirect        = 82,
        EmfExtTextOutA                          = 83,
        EmfExtTextOutW                          = 84,
        EmfPolyBezier16                         = 85,
        EmfPolygon16                            = 86,
        EmfPolyline16                           = 87,
        EmfPolyBezierTo16                       = 88,
        EmfPolylineTo16                         = 89,
        EmfPolyPolyline16                       = 90,
        EmfPolyPolygon16                        = 91,
        EmfPolyDraw16                           = 92,
        EmfCreateMonoBrush                      = 93,
        EmfCreateDibPatternBrushPt      = 94,
        EmfExtCreatePen                         = 95,
        EmfPolyTextOutA                         = 96,
        EmfPolyTextOutW                         = 97,
        EmfSetIcmMode                           = 98,
        EmfCreateColorSpace                     = 99,
        EmfSetColorSpace                        = 100,
        EmfDeleteColorSpace                     = 101,
        EmfGlsRecord                            = 102,
        EmfGlsBoundedRecord                     = 103,
        EmfPixelFormat                          = 104,
        EmfDrawEscape                           = 105,
        EmfExtEscape                            = 106,
        EmfStartDoc                                     = 107,
        EmfSmallTextOut                         = 108,
        EmfForceUfiMapping                      = 109,
        EmfNamedEscpae                          = 110,
        EmfColorCorrectPalette          = 111,
        EmfSetIcmProfileA                       = 112,
        EmfSetIcmProfileW                       = 113,
        EmfAlphaBlend                           = 114,
        EmfSetLayout                            = 115,
        EmfTransparentBlt                       = 116,
        EmfReserved117                          = 117,
        EmfGradientFill                         = 118,
        EmfSetLinkedUfis                        = 119,
        EmfSetTextJustification         = 120,
        EmfColorMatchToTargetW          = 121,
        EmfCreateColorSpaceW            = 122,
        EmfPlusRecordBase                       = 16384,
        Invalid                                         = 16384,
        Min                                                     = 16385,
        Header                                          = 16385,
        EndOfFile                                       = 16386,
        Comment                                         = 16387,
        GetDC                                           = 16388,
        MultiFormatStart                        = 16389,
        MultiFormatSection                      = 16390,
        MultiFormatEnd                          = 16391,
        Object                                          = 16392,
        Clear                                           = 16393,
        FillRects                                       = 16394,
        DrawRects                                       = 16395,
        FillPolygon                                     = 16396,
        DrawLines                                       = 16397,
        FillEllipse                                     = 16398,
        DrawEllipse                                     = 16399,
        FillPie                                         = 16400,
        DrawPie                                         = 16401,
        DrawArc                                         = 16402,
        FillRegion                                      = 16403,
        FillPath                                        = 16404,
        DrawPath                                        = 16405,
        FillClosedCurve                         = 16406,
        DrawClosedCurve                         = 16407,
        DrawCurve                                       = 16408,
        DrawBeziers                                     = 16409,
        DrawImage                                       = 16410,
        DrawImagePoints                         = 16411,
        DrawString                                      = 16412,
        SetRenderingOrigin                      = 16413,
        SetAntiAliasMode                        = 16414,
        SetTextRenderingHint            = 16415,
        SetTextContrast                         = 16416,
        SetInterpolationMode            = 16417,
        SetPixelOffsetMode                      = 16418,
        SetCompositingMode                      = 16419,
        SetCompositingQuality           = 16420,
        Save                                            = 16421,
        Restore                                         = 16422,
        BeginContainer                          = 16423,
        BeginContainerNoParams          = 16424,
        EndContainer                            = 16425,
        SetWorldTransform                       = 16426,
        ResetWorldTransform                     = 16427,
        MultiplyWorldTransform          = 16428,
        TranslateWorldTransform         = 16429,
        ScaleWorldTransform                     = 16430,
        RotateWorldTransform            = 16431,
        SetPageTransform                        = 16432,
        ResetClip                                       = 16433,
        SetClipRect                                     = 16434,
        SetClipPath                                     = 16435,
        SetClipRegion                           = 16436,
        OffsetClip                                      = 16437,
        DrawDriverString                        = 16438,
        Max                                                     = 16438,
        Total                                           = 16439,
        WmfRecordBase                           = 65536,
        WmfSaveDC                                       = 65566,
        WmfRealizePalette                       = 65589,
        WmfSetPalEntries                        = 65591,
        WmfCreatePalette                        = 65783,
        WmfSetBkMode                            = 65794,
        WmfSetMapMode                           = 65795,
        WmfSetROP2                                      = 65796,
        WmfSetRelAbs                            = 65797,
        WmfSetPolyFillMode                      = 65798,
        WmfSetStretchBltMode            = 65799,
        WmfSetTextCharExtra                     = 65800,
        WmfRestoreDC                            = 65831,
        WmfInvertRegion                         = 65834,
        WmfPaintRegion                          = 65835,
        WmfSelectClipRegion                     = 65836,
        WmfSelectObject                         = 65837,
        WmfSetTextAlign                         = 65838,
        WmfResizePalette                        = 65849,
        WmfDibCreatePatternBrush        = 65858,
        WmfSetLayout                            = 65865,
        WmfDeleteObject                         = 66032,
        WmfCreatePatternBrush           = 66041,
        WmfSetBkColor                           = 66049,
        WmfSetTextColor                         = 66057,
        WmfSetTextJustification         = 66058,
        WmfSetWindowOrg                         = 66059,
        WmfSetWindowExt                         = 66060,
        WmfSetViewportOrg                       = 66061,
        WmfSetViewportExt                       = 66062,
        WmfOffsetWindowOrg                      = 66063,
        WmfOffsetViewportOrg            = 66065,
        WmfLineTo                                       = 66067,
        WmfMoveTo                                       = 66068,
        WmfOffsetCilpRgn                        = 66080,
        WmfFillRegion                           = 66088,
        WmfSetMapperFlags                       = 66097,
        WmfSelectPalette                        = 66100,
        WmfCreatePenIndirect            = 66298,
        WmfCreateFontIndirect           = 66299,
        WmfCreateBrushIndirect          = 66300,
        WmfPolygon                                      = 66340,
        WmfPolyline                                     = 66341,
        WmfScaleWindowExt                       = 66576,
        WmfScaleViewportExt                     = 66578,
        WmfExcludeClipRect                      = 66581,
        WmfIntersectClipRect            = 66582,
        WmfFloodFill                            = 66585,
        WmfEllipse                                      = 66584,
        WmfRectangle                            = 66587,
        WmfSetPixel                                     = 66591,
        WmfFrameRegion                          = 66601,
        WmfAnimatePalette                       = 66614,
        WmfTextOut                                      = 66849,
        WmfPolyPolygon                          = 66872,
        WmfExtFloodFill                         = 66888,
        WmfRoundRect                            = 67100,
        WmfPatBlt                                       = 67101,
        WmfEscape                                       = 67110,
        WmfCreateRegion                         = 67327,
        WmfArc                                          = 67607,
        WmfPie                                          = 67610,
        WmfChord                                        = 67632,
        WmfBitBlt                                       = 67874,
        WmfDibBitBlt                            = 67904,
        WmfExtTextOut                           = 68146,
        WmfStretchBlt                           = 68387,
        WmfDibStretchBlt                        = 68417,
        WmfSetDibToDev                          = 68915,
        WmfStretchDib                           = 69443

}; // enum EmfPlusRecordType

}; // namespace System.Drawing.Imaging

--- NEW FILE ---
/*
 * EmfType.cs - Implementation of the
 *                      "System.Drawing.Imaging.EmfType" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Drawing.Imaging
{

public enum EmfType
{
        EmfOnly     = 3,
        EmfPlusOnly = 4,
        EmfPlusDual = 5

}; // enum EmfType

}; // namespace System.Drawing.Imaging

--- NEW FILE ---
/*
 * Encoder.cs - Implementation of the
 *                      "System.Drawing.Imaging.Encoder" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Drawing.Imaging
{

public sealed class Encoder
{
        // Internal state.
        private Guid guid;

        // Standard encoders.
        public static readonly Encoder ChrominanceTable =
                        new Encoder
                                (new 
Guid("{f2e455dc-09b3-4316-8260-676ada32481c}"));
        public static readonly Encoder ColorDepth =
                        new Encoder
                                (new 
Guid("{66087055-ad66-4c7c-9a18-38a2310b8337}"));
        public static readonly Encoder Compression =
                        new Encoder
                                (new 
Guid("{e09d739d-ccd4-44ee-8eba-3fbf8be4fc58}"));
        public static readonly Encoder LuminanceTable =
                        new Encoder
                                (new 
Guid("{edb33bce-0266-4a77-b904-27216099e717}"));
        public static readonly Encoder Quality =
                        new Encoder
                                (new 
Guid("{1d5be4b5-fa4a-452d-9cdd-5db35105e7eb}"));
        public static readonly Encoder RenderMethod =
                        new Encoder
                                (new 
Guid("{6d42c53a-229a-4825-8bb7-5c99e2b9a8b8}"));
        public static readonly Encoder ScanMethod =
                        new Encoder
                                (new 
Guid("{3a4e2661-3109-4e56-8536-42c156e7dcfa}"));
        public static readonly Encoder Transformation =
                        new Encoder
                                (new 
Guid("{8d0eb2d1-a58e-4ea8-aa14-108074b7b6f9}"));
        public static readonly Encoder Version =
                        new Encoder
                                (new 
Guid("{24d18c76-814a-41a4-bf53-1c219cccf797}"));

        // Constructor.
        public Encoder(Guid guid)
                        {
                                this.guid = guid;
                        }

        // Get the GUID of this encoder.
        public Guid Guid
                        {
                                get
                                {
                                        return guid;
                                }
                        }

}; // class Encoder

}; // namespace System.Drawing.Imaging

--- NEW FILE ---
/*
 * EncoderParameter.cs - Implementation of the
 *                      "System.Drawing.Imaging.EncoderParameter" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Drawing.Imaging
{

public sealed class EncoderParameter : IDisposable
{
        // Storage for a tuple of values.
        private sealed class Tuple
        {
                // Accessible state.
                public Object value1;
                public Object value2;
                public Object value3;
                public Object value4;

                // Constructor.
                public Tuple(Object value1, Object value2)
                                {
                                        this.value1 = value1;
                                        this.value2 = value2;
                                }
                public Tuple(Object value1, Object value2,
                                         Object value3, Object value4)
                                {
                                        this.value1 = value1;
                                        this.value2 = value2;
                                        this.value3 = value3;
                                        this.value4 = value4;
                                }

        }; // class Tuple

        // Internal state.
        private Guid encoder;
        private int numberOfValues;
        private EncoderParameterValueType type;
        private Object value;

        // Constructors.
        public EncoderParameter(Encoder encoder, byte value)
                        {
                                this.encoder = encoder.Guid;
                                this.numberOfValues = 1;
                                this.type = 
EncoderParameterValueType.ValueTypeByte;
                                this.value = value;
                        }
        public EncoderParameter(Encoder encoder, byte value, bool undefined)
                        {
                                this.encoder = encoder.Guid;
                                this.numberOfValues = 1;
                                this.type = (undefined ?
                                                          
EncoderParameterValueType.ValueTypeUndefined :
                                                          
EncoderParameterValueType.ValueTypeByte);
                                this.value = value;
                        }
        public EncoderParameter(Encoder encoder, byte[] value)
                        {
                                this.encoder = encoder.Guid;
                                this.numberOfValues = value.Length;
                                this.type = 
EncoderParameterValueType.ValueTypeByte;
                                this.value = value;
                        }
        public EncoderParameter(Encoder encoder, byte[] value, bool undefined)
                        {
                                this.encoder = encoder.Guid;
                                this.numberOfValues = value.Length;
                                this.type = (undefined ?
                                                          
EncoderParameterValueType.ValueTypeUndefined :
                                                          
EncoderParameterValueType.ValueTypeByte);
                                this.value = value;
                        }
        public EncoderParameter(Encoder encoder, short value)
                        {
                                this.encoder = encoder.Guid;
                                this.numberOfValues = 1;
                                this.type = 
EncoderParameterValueType.ValueTypeShort;
                                this.value = value;
                        }
        public EncoderParameter(Encoder encoder, short[] value)
                        {
                                this.encoder = encoder.Guid;
                                this.numberOfValues = value.Length;
                                this.type = 
EncoderParameterValueType.ValueTypeShort;
                                this.value = value;
                        }
        public EncoderParameter(Encoder encoder, long value)
                        {
                                this.encoder = encoder.Guid;
                                this.numberOfValues = 1;
                                this.type = 
EncoderParameterValueType.ValueTypeLong;
                                this.value = value;
                        }
        public EncoderParameter(Encoder encoder, long[] value)
                        {
                                this.encoder = encoder.Guid;
                                this.numberOfValues = value.Length;
                                this.type = 
EncoderParameterValueType.ValueTypeLong;
                                this.value = value;
                        }
        public EncoderParameter(Encoder encoder, String value)
                        {
                                this.encoder = encoder.Guid;
                                this.numberOfValues = value.Length + 1;
                                this.type = 
EncoderParameterValueType.ValueTypeAscii;
                                this.value = value;
                        }
        public EncoderParameter(Encoder encoder, int numerator, int denominator)
                        {
                                this.encoder = encoder.Guid;
                                this.numberOfValues = 1;
                                this.type = 
EncoderParameterValueType.ValueTypeRational;
                                this.value = new Tuple(numerator, denominator);
                        }
        public EncoderParameter(Encoder encoder, int[] numerator,
                                                        int[] denominator)
                        {
                                this.encoder = encoder.Guid;
                                this.numberOfValues = numerator.Length;
                                this.type = 
EncoderParameterValueType.ValueTypeRational;
                                this.value = new Tuple(numerator, denominator);
                        }
        public EncoderParameter(Encoder encoder, long rangebegin, long rangeend)
                        {
                                this.encoder = encoder.Guid;
                                this.numberOfValues = 1;
                                this.type = 
EncoderParameterValueType.ValueTypeLongRange;
                                this.value = new Tuple(rangebegin, rangeend);
                        }
        public EncoderParameter(Encoder encoder, long[] rangebegin,
                                                        long[] rangeend)
                        {
                                this.encoder = encoder.Guid;
                                this.numberOfValues = rangebegin.Length;
                                this.type = 
EncoderParameterValueType.ValueTypeLongRange;
                                this.value = new Tuple(rangebegin, rangeend);
                        }
        public EncoderParameter(Encoder encoder, int NumberOfValues,
                                                        int Type, int Value)
                        {
                                this.encoder = encoder.Guid;
                                this.numberOfValues = NumberOfValues;
                                this.type = (EncoderParameterValueType)Type;
                                this.value = Value;
                        }
        public EncoderParameter(Encoder encoder, int numerator1, int 
denominator1,
                                                        int numerator2, int 
denominator2)
                        {
                                this.encoder = encoder.Guid;
                                this.numberOfValues = 1;
                                this.type = 
EncoderParameterValueType.ValueTypeRationalRange;
                                this.value = new Tuple(numerator1, denominator1,
                                                                           
numerator2, denominator2);
                        }
        public EncoderParameter(Encoder encoder, int[] numerator1,
                                                        int[] denominator1, 
int[] numerator2,
                                                        int[] denominator2)
                        {
                                this.encoder = encoder.Guid;
                                this.numberOfValues = numerator1.Length;
                                this.type = 
EncoderParameterValueType.ValueTypeRationalRange;
                                this.value = new Tuple(numerator1, denominator1,
                                                                           
numerator2, denominator2);
                        }

        // Destructor.
        ~EncoderParameter()
                        {
                                // Nothing to do here in this implementation.
                        }

        // Get or set this object's properties.
        public Encoder Encoder
                        {
                                get
                                {
                                        return new Encoder(encoder);
                                }
                                set
                                {
                                        encoder = value.Guid;
                                }
                        }
        public int NumberOfValues
                        {
                                get
                                {
                                        return numberOfValues;
                                }
                        }
        public EncoderParameterValueType Type
                        {
                                get
                                {
                                        return type;
                                }
                        }
        public EncoderParameterValueType ValueType
                        {
                                get
                                {
                                        // For some reason, the API defines two 
ways
                                        // of obtaining the same value.
                                        return type;
                                }
                        }

        // Dispose this object.
        public void Dispose()
                        {
                                // Nothing to do here in this implementation.
                                GC.SuppressFinalize(this);
                        }

}; // class EncoderParameter

}; // namespace System.Drawing.Imaging

--- NEW FILE ---
/*
 * EncoderParameterValueType.cs - Implementation of the
 *                      "System.Drawing.Imaging.EncoderParameterValueType" 
class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Drawing.Imaging
{

public enum EncoderParameterValueType
{
        ValueTypeByte                   = 1,
        ValueTypeAscii                  = 2,
        ValueTypeShort                  = 3,
        ValueTypeLong                   = 4,
        ValueTypeRational               = 5,
        ValueTypeLongRange              = 6,
        ValueTypeUndefined              = 7,
        ValueTypeRationalRange  = 8

}; // enum EncoderParameterValueType

}; // namespace System.Drawing.Imaging

--- NEW FILE ---
/*
 * EncoderParameters.cs - Implementation of the
 *                      "System.Drawing.Imaging.EncoderParameters" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Drawing.Imaging
{

public sealed class EncoderParameters : IDisposable
{
        // Internal state.
        private EncoderParameter[] parameters;

        // Constructors.
        public EncoderParameters()
                        {
                                parameters = new EncoderParameter [1];
                        }
        public EncoderParameters(int count)
                        {
                                parameters = new EncoderParameter [count];
                        }

        // Get or set the parameter array.
        public EncoderParameter[] Param
                        {
                                get
                                {
                                        return parameters;
                                }
                                set
                                {
                                        parameters = value;
                                }
                        }

        // Dispose this object.
        public void Dispose()
                        {
                                parameters = null;
                                GC.SuppressFinalize(this);
                        }

}; // class EncoderParameters

}; // namespace System.Drawing.Imaging

--- NEW FILE ---
/*
 * EncoderValue.cs - Implementation of the
 *                      "System.Drawing.Imaging.EncoderValue" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Drawing.Imaging
{

public enum EncoderValue
{
        ColorTypeCMYK                           = 0,
        ColorTypeYCCK                           = 1,
        CompressionLZW                          = 2,
        CompressionCCITT3                       = 3,
        CompressionCCITT4                       = 4,
        CompressionRle                          = 5,
        CompressionNone                         = 6,
        ScanMethodInterlaced            = 7,
        ScanMethodNonInterlaced         = 8,
        VersionGif87                            = 9,
        VersionGif89                            = 10,
        RenderProgressive                       = 11,
        RenderNonProgressive            = 12,
        TransformRotate90                       = 13,
        TransformRotate180                      = 14,
        TransformRotate270                      = 15,
        TransformFlipHorizontal         = 16,
        TransformFlipVertical           = 17,
        MultiFrame                                      = 18,
        LastFrame                                       = 19,
        Flush                                           = 20,
        FrameDimensionTime                      = 21,
        FrameDimensionResolution        = 22,
        FrameDimensionPage                      = 23

}; // enum EncoderValue

}; // namespace System.Drawing.Imaging

--- NEW FILE ---
/*
 * FrameDimension.cs - Implementation of the
 *                      "System.Drawing.Imaging.FrameDimension" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Drawing.Imaging
{

public sealed class FrameDimension
{
        // Internal state.
        private Guid guid;
        private static readonly FrameDimension page =
                        new FrameDimension
                                (new 
Guid("{7462dc86-6180-4c7e-8e3f-ee7333a7a483}"));
        private static readonly FrameDimension resolution =
                        new FrameDimension
                                (new 
Guid("{84236f7b-3bd3-428f-8dab-4ea1439ca315}"));
        private static readonly FrameDimension time =
                        new FrameDimension
                                (new 
Guid("{6aedbd6d-3fb5-418a-83a6-7f45229dc872}"));

        // Constructor.
        public FrameDimension(Guid guid)
                        {
                                this.guid = guid;
                        }

        // Get the GUID for this object.
        public Guid Guid
                        {
                                get
                                {
                                        return guid;
                                }
                        }

        // Get standard frame dimension objects.
        public static FrameDimension Page
                        {
                                get
                                {
                                        return page;
                                }
                        }
        public static FrameDimension Resolution
                        {
                                get
                                {
                                        return resolution;
                                }
                        }
        public static FrameDimension Time
                        {
                                get
                                {
                                        return time;
                                }
                        }

        // Determine if two objects are equal.
        public override bool Equals(Object obj)
                        {
                                FrameDimension other = (obj as FrameDimension);
                                if(other != null)
                                {
                                        return guid.Equals(other.guid);
                                }
                                else
                                {
                                        return false;
                                }
                        }

        // Get the hash code for this object.
        public override int GetHashCode()
                        {
                                return guid.GetHashCode();
                        }

        // Convert this object into a string.
        public override String ToString()
                        {
                                if(this == page)
                                {
                                        return "Page";
                                }
                                else if(this == resolution)
                                {
                                        return "Resolution";
                                }
                                else if(this == time)
                                {
                                        return "Time";
                                }
                                else
                                {
                                        return "[FrameDimension: " + 
guid.ToString() + "]";
                                }
                        }

}; // class FrameDimension

}; // namespace System.Drawing.Imaging

--- NEW FILE ---
/*
 * ImageAttributes.cs - Implementation of the
 *                      "System.Drawing.Imaging.ImageAttributes" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Drawing.Imaging
{

using System.Drawing.Drawing2D;

public sealed class ImageAttributes : ICloneable, IDisposable
{
        // Attribute information for a particular ColorAdjustType value.
        private sealed class AttributeInfo : ICloneable
        {
                // Accessible state.
                public AttributeInfo next;
                public ColorAdjustType type;
                public Color colorLow;
                public Color colorHigh;
                public ColorMatrix colorMatrix;
                public ColorMatrix grayMatrix;
                public ColorMatrixFlag matrixFlags;
                public float gamma;
                public bool noOp;
                public ColorChannelFlag channelFlags;
                public String profile;
                public ColorMap[] map;
                public float threshold;

                // Constructor.
                public AttributeInfo(AttributeInfo next, ColorAdjustType type)
                                {
                                        this.next = next;
                                        this.type = type;
                                }

                // Clone this object.
                public Object Clone()
                                {
                                        AttributeInfo info = 
(AttributeInfo)(MemberwiseClone());
                                        if(next != null)
                                        {
                                                info.next = 
(AttributeInfo)(next.Clone());
                                        }
                                        return info;
                                }

        }; // class AttributeInfo

        // Internal state.
        private WrapMode mode;
        private Color color;
        private bool clamp;
        private AttributeInfo info;

        // Constructor.
        public ImageAttributes() {}

        // Destructor.
        ~ImageAttributes()
                        {
                                // Nothing to do here.
                        }

        // Get the attribute information for a specific ColorAdjustType value.
        private AttributeInfo GetInfo(ColorAdjustType type)
                        {
                                AttributeInfo current = info;
                                while(current != null)
                                {
                                        if(current.type == type)
                                        {
                                                return current;
                                        }
                                        current = current.next;
                                }
                                info = new AttributeInfo(info, type);
                                return info;
                        }

        // Clear the brush remap table.
        public void ClearBrushRemapTable()
                        {
                                ClearRemapTable(ColorAdjustType.Brush);
                        }

        // Clear color keys.
        public void ClearColorKey()
                        {
                                ClearColorKey(ColorAdjustType.Default);
                        }
        public void ClearColorKey(ColorAdjustType type)
                        {
                                AttributeInfo info = GetInfo(type);
                                info.colorLow = Color.Empty;
                                info.colorHigh = Color.Empty;
                        }

        // Clear color matrices.
        public void ClearColorMatrix()
                        {
                                ClearColorMatrix(ColorAdjustType.Default);
                        }
        public void ClearColorMatrix(ColorAdjustType type)
                        {
                                AttributeInfo info = GetInfo(type);
                                info.colorMatrix = null;
                                info.grayMatrix = null;
                                info.matrixFlags = ColorMatrixFlag.Default;
                        }

        // Disable gamma correction.
        public void ClearGamma()
                        {
                                ClearGamma(ColorAdjustType.Default);
                        }
        public void ClearGamma(ColorAdjustType type)
                        {
                                GetInfo(type).gamma = 0.0f;
                        }

        // Clear the NoOp setting.
        public void ClearNoOp()
                        {
                                ClearNoOp(ColorAdjustType.Default);
                        }
        public void ClearNoOp(ColorAdjustType type)
                        {
                                GetInfo(type).noOp = false;
                        }

        // Clear the output channel setting.
        public void ClearOutputChannel()
                        {
                                ClearOutputChannel(ColorAdjustType.Default);
                        }
        public void ClearOutputChannel(ColorAdjustType type)
                        {
                                GetInfo(type).channelFlags = 
ColorChannelFlag.ColorChannelC;
                        }

        // Clear the output channel color profile setting.
        public void ClearOutputChannelColorProfile()
                        {
                                
ClearOutputChannelColorProfile(ColorAdjustType.Default);
                        }
        public void ClearOutputChannelColorProfile(ColorAdjustType type)
                        {
                                GetInfo(type).profile = null;
                        }

        // Clear the remap table.
        public void ClearRemapTable()
                        {
                                ClearRemapTable(ColorAdjustType.Default);
                        }
        public void ClearRemapTable(ColorAdjustType type)
                        {
                                GetInfo(type).map = null;
                        }

        // Clear the threshold setting.
        public void ClearThreshold()
                        {
                                ClearThreshold(ColorAdjustType.Default);
                        }
        public void ClearThreshold(ColorAdjustType type)
                        {
                                GetInfo(type).threshold = 0.0f;
                        }

        // Clone this object.
        public Object Clone()
                        {
                                ImageAttributes attrs = 
(ImageAttributes)(MemberwiseClone());
                                if(info != null)
                                {
                                        attrs.info = 
(AttributeInfo)(info.Clone());
                                }
                                return attrs;
                        }

        // Dispose of this object.
        public void Dispose()
                        {
                                info = null;
                                GC.SuppressFinalize(this);
                        }

        // Adjust a palette according to a color adjustment type.
        [TODO]
        public void GetAdjustedPalette(ColorPalette palette, ColorAdjustType 
type)
                        {
                                // TODO
                        }

        // Set the brush remap table.
        public void SetBrushRemapTable(ColorMap[] map)
                        {
                                SetRemapTable(map, ColorAdjustType.Brush);
                        }

        // Set a color key.
        public void SetColorKey(Color colorLow, Color colorHigh)
                        {
                                SetColorKey(colorLow, colorHigh, 
ColorAdjustType.Default);
                        }
        public void SetColorKey(Color colorLow, Color colorHigh,
                                                        ColorAdjustType type)
                        {
                                AttributeInfo info = GetInfo(type);
                                info.colorLow = colorLow;
                                info.colorHigh = colorHigh;
                        }

        // Set color matrices.
        public void SetColorMatrices(ColorMatrix newColorMatrix,
                                                                 ColorMatrix 
grayMatrix)
                        {
                                SetColorMatrices(newColorMatrix, grayMatrix,
                                                                 
ColorMatrixFlag.Default,
                                                                 
ColorAdjustType.Default);
                        }
        public void SetColorMatrices(ColorMatrix newColorMatrix,
                                                                 ColorMatrix 
grayMatrix,
                                                                 
ColorMatrixFlag flags)
                        {
                                SetColorMatrices(newColorMatrix, grayMatrix, 
flags,
                                                                 
ColorAdjustType.Default);
                        }
        public void SetColorMatrices(ColorMatrix newColorMatrix,
                                                                 ColorMatrix 
grayMatrix,
                                                                 
ColorMatrixFlag flags,
                                                                 
ColorAdjustType type)
                        {
                                AttributeInfo info = GetInfo(type);
                                info.colorMatrix = newColorMatrix;
                                info.grayMatrix = grayMatrix;
                                info.matrixFlags = flags;
                        }

        // Set a gamma setting.
        public void SetGamma(float gamma)
                        {
                                SetGamma(gamma, ColorAdjustType.Default);
                        }
        public void SetGamma(float gamma, ColorAdjustType type)
                        {
                                GetInfo(type).gamma = gamma;
                        }

        // Set the no-operation flag.
        public void SetNoOp()
                        {
                                SetNoOp(ColorAdjustType.Default);
                        }
        public void SetNoOp(ColorAdjustType type)
                        {
                                GetInfo(type).noOp = true;
                        }

        // Set an output channel setting.
        public void SetOutputChannel(ColorChannelFlag flags)
                        {
                                SetOutputChannel(flags, 
ColorAdjustType.Default);
                        }
        public void SetOutputChannel(ColorChannelFlag flags, ColorAdjustType 
type)
                        {
                                GetInfo(type).channelFlags = flags;
                        }

        // Set an output channel color profile setting.
        public void SetOutputChannelColorProfile(String colorProfileFilename)
                        {
                                
SetOutputChannelColorProfile(colorProfileFilename,
                                                                                
         ColorAdjustType.Default);
                        }
        public void SetOutputChannelColorProfile(String colorProfileFilename,
                                                                                
         ColorAdjustType type)
                        {
                                GetInfo(type).profile = colorProfileFilename;
                        }

        // Set a color remap table.
        public void SetRemapTable(ColorMap[] map)
                        {
                                SetRemapTable(map, ColorAdjustType.Default);
                        }
        public void SetRemapTable(ColorMap[] map, ColorAdjustType type)
                        {
                                GetInfo(type).map = map;
                        }

        // Set the threshold setting.
        public void SetThreshold(float threshold)
                        {
                                SetThreshold(threshold, 
ColorAdjustType.Default);
                        }
        public void SetThreshold(float threshold, ColorAdjustType type)
                        {
                                GetInfo(type).threshold = threshold;
                        }

        // Set the texture wrapping mode.
        public void SetWrapMode(WrapMode mode)
                        {
                                SetWrapMode(mode, Color.Empty, false);
                        }
        public void SetWrapMode(WrapMode mode, Color color)
                        {
                                SetWrapMode(mode, color, false);
                        }
        public void SetWrapMode(WrapMode mode, Color color, bool clamp)
                        {
                                this.mode = mode;
                                this.color = color;
                                this.clamp = clamp;
                        }

}; // class ImageAttributes

}; // namespace System.Drawing.Imaging

--- NEW FILE ---
/*
 * ImageCodecFlags.cs - Implementation of the
 *                      "System.Drawing.Imaging.ImageCodecFlags" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Drawing.Imaging
{

[Flags]
public enum ImageCodecFlags
{
        Encoder                 = 0x00000001,
        Decoder                 = 0x00000002,
        SupportBitmap   = 0x00000004,
        SupportVector   = 0x00000008,
        SeekableEncode  = 0x00000010,
        BlockingDecoder = 0x00000020,
        Builtin                 = 0x00010000,
        System                  = 0x00020000,
        User                    = 0x00040000

}; // enum ImageCodecFlags

}; // namespace System.Drawing.Imaging

--- NEW FILE ---
/*
 * ImageCodecInfo.cs - Implementation of the
 *                      "System.Drawing.Imaging.ImageCodecInfo" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Drawing.Imaging
{

using System.Runtime.InteropServices;

[ComVisible(false)]
public sealed class ImageCodecInfo
{
        // Internal state.
        private Guid clsid;
        private String codecName;
        private String dllName;
        private String filenameExtension;
        private ImageCodecFlags flags;
        private String formatDescription;
        private Guid formatId;
        private String mimeType;
        private byte[][] signatureMasks;
        private byte[][] signaturePatterns;
        private int version;

        // Constructor.
        internal ImageCodecInfo() {}

        // Get or set this object's properties.
        public Guid Clsid
                        {
                                get
                                {
                                        return clsid;
                                }
                                set
                                {
                                        clsid = value;
                                }
                        }
        public String CodecName
                        {
                                get
                                {
                                        return codecName;
                                }
                                set
                                {
                                        codecName = value;
                                }
                        }
        public String DllName
                        {
                                get
                                {
                                        return dllName;
                                }
                                set
                                {
                                        dllName = value;
                                }
                        }
        public String FilenameExtension
                        {
                                get
                                {
                                        return filenameExtension;
                                }
                                set
                                {
                                        filenameExtension = value;
                                }
                        }
        public ImageCodecFlags Flags
                        {
                                get
                                {
                                        return flags;
                                }
                                set
                                {
                                        flags = value;
                                }
                        }
        public String FormatDescription
                        {
                                get
                                {
                                        return formatDescription;
                                }
                                set
                                {
                                        formatDescription = value;
                                }
                        }
        public Guid FormatID
                        {
                                get
                                {
                                        return formatId;
                                }
                                set
                                {
                                        formatId = value;
                                }
                        }
        public String MimeType
                        {
                                get
                                {
                                        return mimeType;
                                }
                                set
                                {
                                        mimeType = value;
                                }
                        }
        [CLSCompliant(false)]
        public byte[][] SignatureMasks
                        {
                                get
                                {
                                        return signatureMasks;
                                }
                                set
                                {
                                        signatureMasks = value;
                                }
                        }
        [CLSCompliant(false)]
        public byte[][] SignaturePatterns
                        {
                                get
                                {
                                        return signaturePatterns;
                                }
                                set
                                {
                                        signaturePatterns = value;
                                }
                        }
        public int Version
                        {
                                get
                                {
                                        return version;
                                }
                                set
                                {
                                        version = value;
                                }
                        }

        // Find all image decoders.
        [TODO]
        public static ImageCodecInfo[] GetImageDecoders()
                        {
                                // TODO
                                return null;
                        }

        // Find all image encoders.
        [TODO]
        public static ImageCodecInfo[] GetImageEncoders()
                        {
                                // TODO
                                return null;
                        }

}; // class ImageCodecInfo

}; // namespace System.Drawing.Imaging

--- NEW FILE ---
/*
 * ImageFlags.cs - Implementation of the
 *                      "System.Drawing.Imaging.ImageFlags" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Drawing.Imaging
{

[Flags]
public enum ImageFlags
{
        Scalable                        = 0x00000001,
        None                            = 0x00000000,
        HasAlpha                        = 0x00000002,
        HasTranslucent          = 0x00000004,
        PartiallyScalable       = 0x00000008,
        ColorSpaceRgb           = 0x00000010,
        ColorSpaceCmyk          = 0x00000020,
        ColorSpaceGray          = 0x00000040,
        ColorSpaceYcbcr         = 0x00000080,
        ColorSpaceYcck          = 0x00000100,
        HasRealDpi                      = 0x00001000,
        HasRealPixelSize        = 0x00002000,
        ReadOnly                        = 0x00010000,
        Caching                         = 0x00020000

}; // enum ImageFlags

}; // namespace System.Drawing.Imaging

--- NEW FILE ---
/*
 * ImageFormat.cs - Implementation of the
 *                      "System.Drawing.Imaging.ImageFormat" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Drawing.Imaging
{

public sealed class ImageFormat
{
        // Internal state.
        private Guid guid;
        private static readonly ImageFormat bmp =
                        new ImageFormat
                                (new 
Guid("{b96b3cab-0728-11d3-9d7b-0000f81ef32e}"));
        private static readonly ImageFormat emf =
                        new ImageFormat
                                (new 
Guid("{b96b3cac-0728-11d3-9d7b-0000f81ef32e}"));
        private static readonly ImageFormat exif =
                        new ImageFormat
                                (new 
Guid("{b96b3cb2-0728-11d3-9d7b-0000f81ef32e}"));
        private static readonly ImageFormat gif =
                        new ImageFormat
                                (new 
Guid("{b96b3cb0-0728-11d3-9d7b-0000f81ef32e}"));
        private static readonly ImageFormat icon =
                        new ImageFormat
                                (new 
Guid("{b96b3cb5-0728-11d3-9d7b-0000f81ef32e}"));
        private static readonly ImageFormat jpeg =
                        new ImageFormat
                                (new 
Guid("{b96b3cae-0728-11d3-9d7b-0000f81ef32e}"));
        private static readonly ImageFormat memoryBmp =
                        new ImageFormat
                                (new 
Guid("{b96b3caa-0728-11d3-9d7b-0000f81ef32e}"));
        private static readonly ImageFormat png =
                        new ImageFormat
                                (new 
Guid("{b96b3caf-0728-11d3-9d7b-0000f81ef32e}"));
        private static readonly ImageFormat tiff =
                        new ImageFormat
                                (new 
Guid("{b96b3cb1-0728-11d3-9d7b-0000f81ef32e}"));
        private static readonly ImageFormat wmf =
                        new ImageFormat
                                (new 
Guid("{b96b3cad-0728-11d3-9d7b-0000f81ef32e}"));

        // Constructor.
        public ImageFormat(Guid guid)
                        {
                                this.guid = guid;
                        }

        // Get the GUID for this image format.
        public Guid Guid
                        {
                                get
                                {
                                        return guid;
                                }
                        }

        // Standard image formats.
        public static ImageFormat Bmp
                        {
                                get
                                {
                                        return bmp;
                                }
                        }
        public static ImageFormat Emf
                        {
                                get
                                {
                                        return emf;
                                }
                        }
        public static ImageFormat Exif
                        {
                                get
                                {
                                        return exif;
                                }
                        }
        public static ImageFormat Gif
                        {
                                get
                                {
                                        return gif;
                                }
                        }
        public static ImageFormat Icon
                        {
                                get
                                {
                                        return icon;
                                }
                        }
        public static ImageFormat Jpeg
                        {
                                get
                                {
                                        return jpeg;
                                }
                        }
        public static ImageFormat MemoryBmp
                        {
                                get
                                {
                                        return memoryBmp;
                                }
                        }
        public static ImageFormat Png
                        {
                                get
                                {
                                        return png;
                                }
                        }
        public static ImageFormat Tiff
                        {
                                get
                                {
                                        return tiff;
                                }
                        }
        public static ImageFormat Wmf
                        {
                                get
                                {
                                        return wmf;
                                }
                        }

        // Determine if two objects are equal.
        public override bool Equals(Object obj)
                        {
                                ImageFormat other = (obj as ImageFormat);
                                if(other != null)
                                {
                                        return (other.guid.Equals(guid));
                                }
                                else
                                {
                                        return false;
                                }
                        }

        // Get the hash code for this object.
        public override int GetHashCode()
                        {
                                return guid.GetHashCode();
                        }

        // Convert this object into a string.
        public override String ToString()
                        {
                                if(this == bmp)
                                {
                                        return "Bmp";
                                }
                                else if(this == emf)
                                {
                                        return "Emf";
                                }
                                else if(this == exif)
                                {
                                        return "Exif";
                                }
                                else if(this == gif)
                                {
                                        return "Gif";
                                }
                                else if(this == icon)
                                {
                                        return "Icon";
                                }
                                else if(this == jpeg)
                                {
                                        return "Jpeg";
                                }
                                else if(this == memoryBmp)
                                {
                                        return "MemoryBMP";
                                }
                                else if(this == png)
                                {
                                        return "Png";
                                }
                                else if(this == tiff)
                                {
                                        return "Tiff";
                                }
                                else if(this == wmf)
                                {
                                        return "Wmf";
                                }
                                else
                                {
                                        return "[ImageFormat: " + 
guid.ToString() + "]";
                                }
                        }

}; // class ImageFormat

}; // namespace System.Drawing.Imaging

--- NEW FILE ---
/*
 * ImageLockMode.cs - Implementation of the
 *                      "System.Drawing.Imaging.ImageLockMode" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Drawing.Imaging
{

public enum ImageLockMode
{
        ReadOnly                = 1,
        WriteOnly               = 2,
        ReadWrite               = 3,
        UserInputBuffer = 4

}; // enum ImageLockMode

}; // namespace System.Drawing.Imaging

--- NEW FILE ---

all:
        (cd ..; make)

--- NEW FILE ---
/*
 * MetaHeader.cs - Implementation of the
 *                      "System.Drawing.Imaging.MetaHeader" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Drawing.Imaging
{

public sealed class MetaHeader
{
        // Internal state.
        private short headerSize;
        private short noObjects;
        private short noParameters;
        private short type;
        private short version;
        private int maxRecord;
        private int size;

        // Constructor.
        public MetaHeader() {}

        // Get or set this object's properties.
        public short HeaderSize
                        {
                                get
                                {
                                        return headerSize;
                                }
                                set
                                {
                                        headerSize = value;
                                }
                        }
        public int MaxRecord
                        {
                                get
                                {
                                        return maxRecord;
                                }
                                set
                                {
                                        maxRecord = value;
                                }
                        }
        public short NoObjects
                        {
                                get
                                {
                                        return noObjects;
                                }
                                set
                                {
                                        noObjects = value;
                                }
                        }
        public short NoParameters
                        {
                                get
                                {
                                        return noParameters;
                                }
                                set
                                {
                                        noParameters = value;
                                }
                        }
        public int Size
                        {
                                get
                                {
                                        return size;
                                }
                                set
                                {
                                        size = value;
                                }
                        }
        public short Type
                        {
                                get
                                {
                                        return type;
                                }
                                set
                                {
                                        type = value;
                                }
                        }
        public short Version
                        {
                                get
                                {
                                        return version;
                                }
                                set
                                {
                                        version = value;
                                }
                        }

}; // class MetaHeader

}; // namespace System.Drawing.Imaging

--- NEW FILE ---
/*
 * Metafile.cs - Implementation of the
 *                      "System.Drawing.Imaging.Metafile" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Drawing.Imaging
{

using System.IO;
using System.Runtime.InteropServices;

[Serializable]
[ComVisible(false)]
public sealed class Metafile : Image
{
        // Internal state.

        // Main constructor variants.
        [TODO]
        public Metafile(IntPtr henhmetafile, bool deleteEmf)
                        {
                                // TODO
                        }
        [TODO]
        public Metafile(IntPtr hmetafile, WmfPlaceableFileHeader wmfHeader,
                                        bool deleteWmf)
                        {
                                // TODO
                        }
        [TODO]
        public Metafile(IntPtr referenceHdc, EmfType type, String description)
                        {
                                // TODO
                        }
        [TODO]
        public Metafile(IntPtr referenceHdc, Rectangle frameRect,
                                        MetafileFrameUnit frameUnit, EmfType 
type,
                                        String description)
                        {
                                // TODO
                        }
        [TODO]
        public Metafile(IntPtr referenceHdc, RectangleF frameRect,
                                        MetafileFrameUnit frameUnit, EmfType 
type,
                                        String description)
                        {
                                // TODO
                        }
        [TODO]
        public Metafile(Stream stream, IntPtr referenceHdc,
                                        EmfType type, String description)
                        {
                                // TODO
                        }
        [TODO]
        public Metafile(Stream stream, IntPtr referenceHdc,
                                        Rectangle frameRect, MetafileFrameUnit 
frameUnit,
                                        EmfType type, String description)
                        {
                                // TODO
                        }
        [TODO]
        public Metafile(Stream stream, IntPtr referenceHdc,
                                        RectangleF frameRect, MetafileFrameUnit 
frameUnit,
                                        EmfType type, String description)
                        {
                                // TODO
                        }
        [TODO]
        public Metafile(String fileName, IntPtr referenceHdc,
                                        EmfType type, String description)
                        {
                                // TODO
                        }
        [TODO]
        public Metafile(String fileName, IntPtr referenceHdc,
                                        Rectangle frameRect, MetafileFrameUnit 
frameUnit,
                                        EmfType type, String description)
                        {
                                // TODO
                        }
        [TODO]
        public Metafile(String fileName, IntPtr referenceHdc,
                                        RectangleF frameRect, MetafileFrameUnit 
frameUnit,
                                        EmfType type, String description)
                        {
                                // TODO
                        }

        // Convenience wrappers for the main constructors.
        public Metafile(IntPtr hmetafile, WmfPlaceableFileHeader wmfHeader)
                        : this(hmetafile, wmfHeader, false) {}
        public Metafile(IntPtr referenceHdc, EmfType emfType)
                        : this(referenceHdc, emfType, null) {}
        public Metafile(IntPtr referenceHdc, Rectangle frameRect)
                        : this(referenceHdc, frameRect, 
MetafileFrameUnit.GdiCompatible,
                               EmfType.EmfPlusDual, null) {}
        public Metafile(IntPtr referenceHdc, RectangleF frameRect)
                        : this(referenceHdc, frameRect, 
MetafileFrameUnit.GdiCompatible,
                               EmfType.EmfPlusDual, null) {}
        public Metafile(IntPtr referenceHdc, Rectangle frameRect,
                                        MetafileFrameUnit frameUnit)
                        : this(referenceHdc, frameRect, frameUnit,
                               EmfType.EmfPlusDual, null) {}
        public Metafile(IntPtr referenceHdc, RectangleF frameRect,
                                        MetafileFrameUnit frameUnit)
                        : this(referenceHdc, frameRect, frameUnit,
                               EmfType.EmfPlusDual, null) {}
        public Metafile(IntPtr referenceHdc, Rectangle frameRect,
                                        MetafileFrameUnit frameUnit, EmfType 
type)
                        : this(referenceHdc, frameRect, frameUnit, type, null) 
{}
        public Metafile(IntPtr referenceHdc, RectangleF frameRect,
                                        MetafileFrameUnit frameUnit, EmfType 
type)
                        : this(referenceHdc, frameRect, frameUnit, type, null) 
{}
        public Metafile(Stream stream)
                        : this(stream, IntPtr.Zero, EmfType.EmfPlusDual, null) 
{}
        public Metafile(Stream stream, IntPtr referenceHdc)
                        : this(stream, referenceHdc, EmfType.EmfPlusDual, null) 
{}
        public Metafile(Stream stream, IntPtr referenceHdc, EmfType type)
                        : this(stream, referenceHdc, type, null) {}
        public Metafile(Stream stream, IntPtr referenceHdc, Rectangle frameRect)
                        : this(stream, referenceHdc, frameRect,
                                   MetafileFrameUnit.GdiCompatible,
                                   EmfType.EmfPlusDual, null) {}
        public Metafile(Stream stream, IntPtr referenceHdc, RectangleF 
frameRect)
                        : this(stream, referenceHdc, frameRect,
                                   MetafileFrameUnit.GdiCompatible,
                                   EmfType.EmfPlusDual, null) {}
        public Metafile(Stream stream, IntPtr referenceHdc,
                                        Rectangle frameRect, MetafileFrameUnit 
frameUnit)
                        : this(stream, referenceHdc, frameRect, frameUnit,
                                   EmfType.EmfPlusDual, null) {}
        public Metafile(Stream stream, IntPtr referenceHdc,
                                        RectangleF frameRect, MetafileFrameUnit 
frameUnit)
                        : this(stream, referenceHdc, frameRect, frameUnit,
                                   EmfType.EmfPlusDual, null) {}
        public Metafile(Stream stream, IntPtr referenceHdc,
                                        Rectangle frameRect, MetafileFrameUnit 
frameUnit,
                                        EmfType type)
                        : this(stream, referenceHdc, frameRect, frameUnit, 
type, null) {}
        public Metafile(Stream stream, IntPtr referenceHdc,
                                        RectangleF frameRect, MetafileFrameUnit 
frameUnit,
                                        EmfType type)
                        : this(stream, referenceHdc, frameRect, frameUnit, 
type, null) {}
        public Metafile(String fileName)
                        : this(fileName, IntPtr.Zero, EmfType.EmfPlusDual, 
null) {}
        public Metafile(String fileName, IntPtr referenceHdc)
                        : this(fileName, referenceHdc, EmfType.EmfPlusDual, 
null) {}
        public Metafile(String fileName, IntPtr referenceHdc, EmfType type)
                        : this(fileName, referenceHdc, type, null) {}
        public Metafile(String fileName, IntPtr referenceHdc, Rectangle 
frameRect)
                        : this(fileName, referenceHdc, frameRect,
                                   MetafileFrameUnit.GdiCompatible,
                                   EmfType.EmfPlusDual, null) {}
        public Metafile(String fileName, IntPtr referenceHdc, RectangleF 
frameRect)
                        : this(fileName, referenceHdc, frameRect,
                                   MetafileFrameUnit.GdiCompatible,
                                   EmfType.EmfPlusDual, null) {}
        public Metafile(String fileName, IntPtr referenceHdc,
                                        Rectangle frameRect, MetafileFrameUnit 
frameUnit)
                        : this(fileName, referenceHdc, frameRect, frameUnit,
                                   EmfType.EmfPlusDual, null) {}
        public Metafile(String fileName, IntPtr referenceHdc,
                                        RectangleF frameRect, MetafileFrameUnit 
frameUnit)
                        : this(fileName, referenceHdc, frameRect, frameUnit,
                                   EmfType.EmfPlusDual, null) {}
        public Metafile(String fileName, IntPtr referenceHdc,
                                        Rectangle frameRect, MetafileFrameUnit 
frameUnit,
                                        EmfType type)
                        : this(fileName, referenceHdc, frameRect, frameUnit, 
type, null) {}
        public Metafile(String fileName, IntPtr referenceHdc,
                                        RectangleF frameRect, MetafileFrameUnit 
frameUnit,
                                        EmfType type)
                        : this(fileName, referenceHdc, frameRect, frameUnit, 
type, null) {}
        public Metafile(String fileName, IntPtr referenceHdc,
                                        Rectangle frameRect, MetafileFrameUnit 
frameUnit,
                                        String description)
                        : this(fileName, referenceHdc, frameRect, frameUnit,
                                   EmfType.EmfPlusDual, description) {}
        public Metafile(String fileName, IntPtr referenceHdc,
                                        RectangleF frameRect, MetafileFrameUnit 
frameUnit,
                                        String description)
                        : this(fileName, referenceHdc, frameRect, frameUnit,
                                   EmfType.EmfPlusDual, description) {}

        // Detach this Metafile object.  Used by "GetMetafileHeader" wrappers.
        [TODO]
        private void Detach()
                        {
                                // TODO
                        }

        // Get the Windows enhanced metafile pointer.
        [TODO]
        public IntPtr Gethenhmetafile()
                        {
                                // TODO
                                return IntPtr.Zero;
                        }

        // Get metafile header information.
        [TODO]
        public MetafileHeader GetMetafileHeader()
                        {
                                // TODO
                                return null;
                        }

        // Convenience wrappers for "GetMetafileHeader".
        public static MetafileHeader GetMetafileHeader(IntPtr henhmetafile)
                        {
                                Metafile file = new Metafile(henhmetafile, 
false);
                                MetafileHeader header = 
file.GetMetafileHeader();
                                file.Detach();
                                return header;
                        }
        public static MetafileHeader GetMetafileHeader(Stream stream)
                        {
                                Metafile file = new Metafile(stream);
                                MetafileHeader header = 
file.GetMetafileHeader();
                                file.Detach();
                                return header;
                        }
        public static MetafileHeader GetMetafileHeader(String fileName)
                        {
                                Metafile file = new Metafile(fileName);
                                MetafileHeader header = 
file.GetMetafileHeader();
                                file.Detach();
                                return header;
                        }
        public static MetafileHeader GetMetafileHeader
                                (IntPtr hmetafile, WmfPlaceableFileHeader 
wmfHeader)
                        {
                                Metafile file = new Metafile(hmetafile, 
wmfHeader);
                                MetafileHeader header = 
file.GetMetafileHeader();
                                file.Detach();
                                return header;
                        }

        // Play a metafile record.
        [TODO]
        public void PlayRecord(EmfPlusRecordType recordType,
                                                   int flags, int dataSize, 
byte[] data)
                        {
                                // TODO
                        }

}; // class Metafile

}; // namespace System.Drawing.Imaging

--- NEW FILE ---
/*
 * MetafileFrameUnit.cs - Implementation of the
 *                      "System.Drawing.Imaging.MetafileFrameUnit" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Drawing.Imaging
{

public enum MetafileFrameUnit
{
        Pixel                   = 2,
        Point                   = 3,
        Inch                    = 4,
        Document                = 5,
        Millimeter              = 6,
        GdiCompatible   = 7

}; // enum MetafileFrameUnit

}; // namespace System.Drawing.Imaging

--- NEW FILE ---
/*
 * MetafileHeader.cs - Implementation of the
 *                      "System.Drawing.Imaging.MetafileHeader" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Drawing.Imaging
{

public sealed class MetafileHeader
{
        // Internal state.

        // Constructor.
        internal MetafileHeader() {}

        // Get this object's properties.
        [TODO]
        public Rectangle Bounds
                        {
                                get
                                {
                                        // TODO
                                        return Rectangle.Empty;
                                }
                        }
        [TODO]
        public float DpiX
                        {
                                get
                                {
                                        // TODO
                                        return 0.0f;
                                }
                        }
        [TODO]
        public float DpiY
                        {
                                get
                                {
                                        // TODO
                                        return 0.0f;
                                }
                        }
        [TODO]
        public int EmfPlusHeaderSize
                        {
                                get
                                {
                                        // TODO
                                        return 0;
                                }
                        }
        [TODO]
        public int LogicalDpiX
                        {
                                get
                                {
                                        // TODO
                                        return 0;
                                }
                        }
        [TODO]
        public int LogicalDpiY
                        {
                                get
                                {
                                        // TODO
                                        return 0;
                                }
                        }
        [TODO]
        public int MetafileSize
                        {
                                get
                                {
                                        // TODO
                                        return 0;
                                }
                        }
        [TODO]
        public MetafileType Type
                        {
                                get
                                {
                                        // TODO
                                        return MetafileType.Invalid;
                                }
                        }
        [TODO]
        public int Version
                        {
                                get
                                {
                                        // TODO
                                        return 0;
                                }
                        }
        [TODO]
        public MetaHeader WmfHeader
                        {
                                get
                                {
                                        // TODO
                                        return null;
                                }
                        }

        // Determine if the metafile is device dependent.
        [TODO]
        public bool IsDisplay()
                        {
                                // TODO
                                return false;
                        }

        // Determine if this is an "Emf" metafile.
        public bool IsEmf()
                        {
                                return (Type == MetafileType.Emf);
                        }

        // Determine if this is an "Emf" or "EmfPlus" metafile.
        public bool IsEmfOrEmfPlus()
                        {
                                MetafileType type = Type;
                                return (type == MetafileType.Emf ||
                                                type == 
MetafileType.EmfPlusOnly ||
                                                type == 
MetafileType.EmfPlusDual);
                        }

        // Determine if this is an "EmfPlus" metafile.
        public bool IsEmfPlus()
                        {
                                MetafileType type = Type;
                                return (type == MetafileType.EmfPlusOnly ||
                                                type == 
MetafileType.EmfPlusDual);
                        }

        // Determine if this is an "EmfPlusDual" metafile.
        public bool IsEmfPlusDual()
                        {
                                return (Type == MetafileType.EmfPlusDual);
                        }

        // Determine if this is an "EmfPlusOnly" metafile.
        public bool IsEmfPlusOnly()
                        {
                                return (Type == MetafileType.EmfPlusOnly);
                        }

        // Determine if this is a "Wmf" metafile.
        public bool IsWmf()
                        {
                                MetafileType type = Type;
                                return (type == MetafileType.Wmf ||
                                                type == 
MetafileType.WmfPlaceable);
                        }

        // Determine if this is a "WmfPlaceable" metafile.
        public bool IsWmfPlaceable()
                        {
                                return (Type == MetafileType.WmfPlaceable);
                        }

}; // class MetafileHeader

}; // namespace System.Drawing.Imaging

--- NEW FILE ---
/*
 * MetafileType.cs - Implementation of the
 *                      "System.Drawing.Imaging.MetafileType" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Drawing.Imaging
{

public enum MetafileType
{
        Invalid                 = 0,
        Wmf                             = 1,
        WmfPlaceable    = 2,
        Emf                             = 3,
        EmfPlusOnly             = 4,
        EmfPlusDual             = 5

}; // enum MetafileType

}; // namespace System.Drawing.Imaging

--- NEW FILE ---
/*
 * PaletteFlags.cs - Implementation of the
 *                      "System.Drawing.Imaging.PaletteFlags" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Drawing.Imaging
{

public enum PaletteFlags
{
        HasAlpha        = 0x0001,
        GrayScale       = 0x0002,
        Halftone        = 0x0004

}; // enum PaletteFlags

}; // namespace System.Drawing.Imaging

--- NEW FILE ---
/*
 * PixelFormat.cs - Implementation of the
 *                      "System.Drawing.Imaging.PixelFormat" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Drawing.Imaging
{

public enum PixelFormat
{
        Undefined                               = 0x00000000,
        DontCare                                = 0x00000000,
        Max                                             = 0x0000000F,
        Indexed                                 = 0x00010000,
        Gdi                                             = 0x00020000,
        Format16bppRgb555               = 0x00021005,
        Format16bppRgb565               = 0x00021006,
        Format24bppRgb                  = 0x00021808,
        Format32bppRgb                  = 0x00022009,
        Format1bppIndexed               = 0x00030101,
        Format4bppIndexed               = 0x00030402,
        Format8bppIndexed               = 0x00030803,
        Alpha                                   = 0x00040000,
        Format16bppArgb1555             = 0x00061007,
        PAlpha                                  = 0x00080000,
        Format32bppPArgb                = 0x000E200B,
        Extended                                = 0x00100000,
        Format16bppGrayScale    = 0x00101004,
        Format48bppRgb                  = 0x0010300C,
        Format64bppPArgb                = 0x001C400E,
        Canonical                               = 0x00200000,
        Format32bppArgb                 = 0x0026200A,
        Format64bppArgb                 = 0x0034400D

}; // enum PixelFormat

}; // namespace System.Drawing.Imaging

--- NEW FILE ---
/*
 * PlayRecordCallback.cs - Implementation of the
 *                      "System.Drawing.Imaging.PlayRecordCallback" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Drawing.Imaging
{

[Serializable]
public delegate void PlayRecordCallback(EmfPlusRecordType recordType,
                                                                                
int flags, int dataSize,
                                                                                
IntPtr recordData);

}; // namespace System.Drawing.Imaging

--- NEW FILE ---
/*
 * PropertyItem.cs - Implementation of the
 *                      "System.Drawing.Imaging.PropertyItem" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Drawing.Imaging
{

public sealed class PropertyItem
{
        // Internal state.
        private int id;
        private int len;
        private short type;
        private byte[] value;

        // Constructor.
        internal PropertyItem() {}

        // Get or set this object's properties.
        public int Id
                        {
                                get
                                {
                                        return id;
                                }
                                set
                                {
                                        id = value;
                                }
                        }
        public int Len
                        {
                                get
                                {
                                        return len;
                                }
                                set
                                {
                                        len = value;
                                }
                        }
        public short Type
                        {
                                get
                                {
                                        return type;
                                }
                                set
                                {
                                        type = value;
                                }
                        }
        public byte[] Value
                        {
                                get
                                {
                                        return value;
                                }
                                set
                                {
                                        value = value;
                                }
                        }

}; // class PropertyItem

}; // namespace System.Drawing.Imaging

--- NEW FILE ---
/*
 * WmfPlaceableFileHeader.cs - Implementation of the
 *                      "System.Drawing.Imaging.WmfPlaceableFileHeader" class.
 *
 * Copyright (C) 2003  Southern Storm Software, Pty Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

namespace System.Drawing.Imaging
{

public sealed class WmfPlaceableFileHeader
{
        // Internal state.
        private short bboxBottom;
        private short bboxLeft;
        private short bboxRight;
        private short bboxTop;
        private short checksum;
        private short hmf;
        private short inch;
        private int key;
        private int reserved;

        // Constructor.
        public WmfPlaceableFileHeader()
                        {
                                key = (int)0x9AC6CDD7;
                        }

        // Get or set this object's properties.
        public short BboxBottom
                        {
                                get
                                {
                                        return bboxBottom;
                                }
                                set
                                {
                                        bboxBottom = value;
                                }
                        }
        public short BboxLeft
                        {
                                get
                                {
                                        return bboxLeft;
                                }
                                set
                                {
                                        bboxLeft = value;
                                }
                        }
        public short BboxRight
                        {
                                get
                                {
                                        return bboxRight;
                                }
                                set
                                {
                                        bboxRight = value;
                                }
                        }
        public short BboxTop
                        {
                                get
                                {
                                        return bboxTop;
                                }
                                set
                                {
                                        bboxTop = value;
                                }
                        }
        public short Checksum
                        {
                                get
                                {
                                        return checksum;
                                }
                                set
                                {
                                        checksum = value;
                                }
                        }
        public short Hmf
                        {
                                get
                                {
                                        return hmf;
                                }
                                set
                                {
                                        hmf = value;
                                }
                        }
        public short Inch
                        {
                                get
                                {
                                        return inch;
                                }
                                set
                                {
                                        inch = value;
                                }
                        }
        public int Key
                        {
                                get
                                {
                                        return key;
                                }
                                set
                                {
                                        key = value;
                                }
                        }
        public int Reserved
                        {
                                get
                                {
                                        return reserved;
                                }
                                set
                                {
                                        reserved = value;
                                }
                        }

}; // class WmfPlaceableFileHeader

}; // namespace System.Drawing.Imaging





reply via email to

[Prev in Thread] Current Thread [Next in Thread]