Sophie

Sophie

distrib > Mandriva > current > x86_64 > by-pkgid > 35cb15fcf677c2c78ebe6c340d88c43a > files > 6

lib64gdiplus-devel-2.6.4-1.1mdv2010.1.x86_64.rpm

2010-04-12  Sebastien Pouliot  <sebastien@ximian.com>

	* pngcodec.c: SuSE provided patch for newer libpng (1.4.x). Made
	to be backward compatible with 1.2.x
	[Backport r155275]

2010-03-26  Miguel de Icaza  <miguel@novell.com>

	* Apply patch from Matthew Metnetsky which fixes 590503,
	GdipCloneImage not cloning the properties.

2010-01-13  Sebastien Pouliot  <sebastien@ximian.com>

	* tiffcodec.c: Don't call TIFFClose with a NULL value. Fix #569940
	[Backport r149475]

2009-08-19  Jeffrey Stedfast  <fejj@novell.com>

	* font.c (gdip_get_fontfamily_details_from_freetype): Fixed to use
	values much closer to those returned by GDI+ based on work done in
	Moonlight.

2009-03-20  Tom Hindle <tom_hindle@sil.org>

	* graphics.c: Allow GdipCreateFromHDC to work on the HDC of objects 
	previousy created with GdipCreateFromHDC. Also allow GdipCreateFromHDC
	to work with gtMemoryBitmap types.

2009-01-28  Sebastien Pouliot  <sebastien@ximian.com>

	* image.c: Revert last change wrt resolution

2009-01-02  Sebastien Pouliot  <sebastien@ximian.com>

	* image.c: Adjust image width/height wrt its resolution before 
	drawing (this can be used to scale a picture).
	* bitmap.c: Add more validations to GdipBitmapSetResolution
	[Fix bug #434583]

2008-12-23  Sebastien Pouliot  <sebastien@ximian.com>

	* text.c (GdipMeasureCharacterRanges): Don't handle empty (zero)
	width or height at this early stage.
	* text-cairo.c: Handle negative/zero width/height to match MS GDI+
	[Fix bug #449971]

2008-11-07  Sebastien Pouliot  <sebastien@ximian.com>

	* graphics-cairo.c (make_arc): Only compute start points if we
	actually need them.
	* graphics-path.c (append_arcs): Fix arcs computation like this
	was done for #410459 (draw) but in this case we need to keep the
	direction/increment since the points are part of a path.
	[Fix bug #442428]

2008-10-30  Sebastien Pouliot  <sebastien@ximian.com>

	* region-bitmap.c (reduce): Fix skipping a color channel while
	reducing the bitmap to 1bpp (provided by David Binderman)
	[Fix bug #440127]

2008-09-03  Sebastien Pouliot  <sebastien@ximian.com>

	* general.c: Compute intermediate start/end points correctly on an
	open curve. Patch by Marek Habersack

2008-09-02  Sebastien Pouliot  <sebastien@ximian.com>

	* graphics-path.c: Add support to compress points (skip on of two 
	identical consecutive points) under some special cases.

2008-08-11  Sebastien Pouliot  <sebastien@ximian.com>

	* image.c: Remove buggy loop in gdip_bitmap_clone which allocates way
	too much memory when cloning an image with multiple frames (and only
	free one of them).
	[Fix bug #411454]

2008-08-04  Sebastien Pouliot  <sebastien@ximian.com>

	* graphics-cairo.c: (make_arcs) Simplify logic so the increment is
	always positive. Fix arcs going in the wrong direction (wihtout more
	code).
	[Fix bug #410459]

2008-08-04  Sebastien Pouliot  <sebastien@ximian.com> 

	* pen.c: Pen minimal visual size is 1.0 pixel (whatever the scaling).
	[Fix bug #410466]

2008-08-04  Sebastien Pouliot  <sebastien@ximian.com>

	* graphics-cairo.c: Only stroke using a 1.0 width line. Also close
	the path before filling.
	[Fix bug #413461]

2008-07-18  Sebastien Pouliot  <sebastien@ximian.com>

	* graphics-cairo.c: Don't stroke when filling (required to match
	GDI+ behavior) when the graphic is being scaled (since the pen's
	thickness is scaled too).
	[Fix bug #410124]

2008-07-17  Sebastien Pouliot  <sebastien@ximian.com>

	* graphics-private.h: Add definition for gdip_is_scaled
	* general.c: Remove static from gdip_is_scaled
	* graphics-cairo.c: Don't apply AA offset to Ellipses and Pies
	if the graphic is being scaled.
	[Fix bug #409672]

2008-07-07  Sebastien Pouliot  <sebastien@ximian.com>

	* font.c: Clone GpFontFamily when creating a new font.
	[Fix https://bugs.launchpad.net/ubuntu/+source/mono/+bug/246376]

2008-06-27  Sebastien Pouliot  <sebastien@ximian.com> 

	* region.c: Handle the case were we compute a negative Height 
	value while building the rectangle list for exclude.
	[Fix bug #402613]

2008-04-25  Sebastien Pouliot  <sebastien@ximian.com> 

	* region.c: Normalize rectangles (apply negative width and height
	to X, Y) before doing binary operations	on them.
	[Fix second part of bug #383878]

2008-04-25  Sebastien Pouliot  <sebastien@ximian.com>

	* region.c: Fix possible crash in Complement.
	[Fix part of bug #383878]

2008-04-21  Sebastien Pouliot  <sebastien@ximian.com>

	* general-private.h: Don't clamp values for Cairo >= 1.6 since 
	the fixed point values are now kept in the 24/8 format.
	* graphics-private.h: Change the CAIRO_AA_OFFSET_X from 1.0 to 
	0.5 for Cairo >= 1.6.
	* graphics-cairo.c: Revert earlier AA tweaks (r100945) as it 
	broke rectangles and the change to CAIRO_AA_OFFSET_X does the 
	required fixes.
	[Fix bug #381737]
	* graphics-path.c: IsVisible X offset still needs to be 1.0 
	(whatever version of Cairo being used).

2008-04-18  Jeffrey Stedfast  <fejj@novell.com>

	* text-cairo.c (MeasureString): #include <ctype.h> for isspace()
	and also do proper casting so that we don't run into problems on
	non-GNU systems.

2008-04-18  Sebastien Pouliot  <sebastien@ximian.com>

	* pngcodec.c: If PNG_INCH_CONVERSIONS is not defined (old libpng)
	then manual compute resolution. If none is available fall back to
	screen resolution. Fix bug #381169

2008-04-16  Sebastien Pouliot  <sebastien@ximian.com>

	* graphics-cairo.c: Tweak AA (since looks like Cairo 1.6 tweaked
	it too ;-). Probably not complete but this fix SD unit tests.

2008-04-03  Sebastien Pouliot  <sebastien@ximian.com>

	* image.c: Copy (and later restore) the original matrix before 
	applying any "local" change inside GdipDrawImageRect. Fix 
	bug #376855

2008-02-14  Geoff Norton  <gnorton@novell.com>

	* carbon-private.c: Display automatic dpi detection for now, its
	causing too many problems.

2008-01-23  Geoff Norton  <gnorton@novell.com>

	* Makefile.am: Add carbon-private.* to the build.
	* general.c: Use gdip_get_display_dpi_carbon to get dpi on the mac
	* graphics.c: Rename GdipCreateFromQuartz_macosx to
	GdipCreateFromContext_macosx
	* carbon-private.c: A mac specific implementation to get the
	horizontal and vertical dpi of a display.

2007-12-22  Geoff Norton  <gnorton@novell.com>

	* graphics-private.h:  Revert the CAIRO_AA change as it caused
	regressions in the testsuite and improperly layed out controls.

2007-12-04  Geoff Norton  <gnorton@novell.com>

	* general.c:  Optimize the code path to only check the environment
	variable once for dpi detection on the Mac.

2007-11-16  Sebastien Pouliot  <sebastien@ximian.com>

	* graphics-cairo.c: If we need to stroke, before filling, then we
	must preserve the path. Fix bug #342074.

2007-11-15  Geoff Norton  <gnorton@novell.com>

	* general.c: If we're running on the Carbon driver avoid the call
	to XOpenDisplay.  This fixes a deadlock race condition on Leopard
	as well as prevents X11 from opening when we start MWF apps.

2007-11-07  Geoff Norton  <gnorton@novell.com>

	* graphics-private.h: Add CGImageRelease prototype.
	* graphics.c: Free the CGImageRef after copying it to our display
	context.  Fixes a massive memory leak in the Mac backend

2007-11-01  Sebastien Pouliot  <sebastien@ximian.com>

	* font.c: Fix font face selection (typo) and ensure the font-family
	doesn't cache a version without bold and/or italics. Fix #338207
	* pen.c: Fix pen scaling (either X or Y) by 0. MS GDI+ produce a thin
	line while Cairo would return an error. Fix bug #338233
	* text-pango-private.h: Add ctype.h include to remove warning about
	isspace.

2007-10-31  Sebastien Pouliot  <sebastien@ximian.com> 

	* graphics-path.c: Avoid computing the start point coord unless we
	need them later. Add URL for formula used here.

2007-10-30  Sebastien Pouliot  <sebastien@ximian.com> 

	* lineargradientbrush.c: Remove small (+1) cosmetic fix that breaks
	severely when a scale transform is applied to the gradient. Fix bug
	#325178

2007-10-30  Sebastien Pouliot  <sebastien@ximian.com>

	* graphics.c: Remove gdip_plot_path (duplicate) function.
	* graphics-cairo.c|h: Change [gdip_]convert_fill_mode visibility.
	* graphics-path.c: Remove old code used for Is[Outline]Visible 
	functions and use the cairo functions (with some adjustments). This
	fix bug #325502 (ellipse didn't work). This should also fix some 
	cases where GpGraphics should have been used for the check.

2007-10-29  Sebastien Pouliot  <sebastien@ximian.com>

	* lineargradientbrush.c: Nullify linear->pattern since we can return
	from the function without creating a new pattern (i.e. stall pointer)

2007-10-17  Geoff Norton  <gnorton@novell.com>

	* graphics.c: Construct the quartz surface with a image backend so all
	cairo operations can complete without failure.  We blit the image to the
	real cgContext when Flush () is called.
	* graphics-private.h: Set CAIRO_AA_OFFSET_X to 0.5 when running on a Mac.
	Add cg_context to Graphics structure when built with the Quartz surface
	so we can blit the resultant image to the real context.
	Add declarations for the CoreGraphics structures we need for the blitting.
	Add declarations for the CoreGraphics / cairo functions we need to call for
	blitting.

2007-08-13  Sebastien Pouliot  <sebastien@ximian.com>

	* text-pango.c: Ensure we can use the results of MeasureString to 
	DrawString and get the same results.

2007-08-13  Sebastien Pouliot  <sebastien@ximian.com> 

	* text.notes: New. Notes about text rendering.
	* text-cairo.c: Add correct support for MeasureTrailingSpaces
	* text-pango.c: Optimize the case where the font is underlined and
	HotkeyPrefixShow is used.

2007-08-10  Sebastien Pouliot  <sebastien@ximian.com>

	* graphics-path.c: Reuse gdip_pango_setup_layout for paths (needs
	testing).
	* text-pango.c | text-pango-private.h: Make API usable for 
	GdipAddPathString and free (unref) the PangoLayout.

2007-08-09  Sebastien Pouliot  <sebastien@ximian.com>

	* font.c | font-private.h: Refactor font code to work with either
	Cairo+FreeType or Pango+FreeType.
	* graphics-path.c: Adjust for Pango/Cairo rendering in AddString. The
	Pango part isn't yet done.
	* text.c: switch between Cairo or Pango rendering at compile time.
	* text-cairo.c | text-cairo-private.h: Define out if pengo rendering
	is active.
	* text-pango.c | text-pango-private.h: New. Pango rendering using the
	high-level API (PangoLayout). Not all options are supported (but then our
	Cairo-based rendering never supported all of them either ;-)
	* Makefile.am: Add text-pango.c and text-pango-private.h to the build.

2007-08-02  Sebastien Pouliot  <sebastien@ximian.com>

	* text-cairo.c: Reverting patch for bug #78777 to fix bug #81572. 
	Fixed the "height" part of bug #78777 (LF isn't on the line you expect
	it to be). The X position is off because LF aren't characters anymore
	(and this mess with the ranges).

2007-08-01  Sebastien Pouliot  <sebastien@ximian.com>

	* text-cairo-private.h | text-cairo.c: Fix MeasureCharacterRanges 
	inconsistentency (#77496), i.e. missing descent, without (hopefully)
	breaking everything else.

2007-08-01  Sebastien Pouliot  <sebastien@ximian.com> 

	* bitmap.c: Use [g|s]et_pixel_bgra macros inside premul function to
	avoid endian issues.
	* font.c | fontfamily.h: Added GdipCloneFontFamily (fix #80845);

2007-07-31  Sebastien Pouliot  <sebastien@ximian.com>

	* bitmap.c: Ensure proper initialization of palette when locking a 
	bitmap. Make more use of gdip_palette_clone function.
	* region.c: Add special case for to exclude path/regions from 
	infinity. Updated patch from Yves Bastide. Fix #81833.

2007-07-31  Sebastien Pouliot  <sebastien@ximian.com> 

	* graphics-path.c: Simplify GdipClosePathFigure.
	* text-[cairo|metafile]-private.h: Hide internal functions.

2007-07-31  Sebastien Pouliot  <sebastien@ximian.com>

	* graphics-path.c: Reverse PathTypes. Patch by Yves Bastide. 
	Fix #81859.

2007-07-30  Sebastien Pouliot  <sebastien@ximian.com>

	* graphics-path.c: Avoid allocations/freeing of memory when reversing
	the array of points.

2007-07-30  Sebastien Pouliot  <sebastien@ximian.com> 

	* bitmap.c: Added global functions to deal with pre-multiplication.
	* bitmap-private.h: New prototypes for pre-multiplication.
	* texturebrush.c: If required by the format pre-multiply the alpha
	value of the brush bitmap before it's use as a pattern. Fix #81828.
	Cleaned-up some unused variables but there's still too much 
	duplication for my taste (added TODO).

2007-07-30  Sebastien Pouliot  <sebastien@ximian.com>

	* graphics-cairo.c: Fix DrawPath offset (bug #82202) and correctly
	fill the path (which includes stroking in this case).

2007-07-05  Sebastien Pouliot  <sebastien@ximian.com>

	* imageattributes.c: Re-fix alpha.

2007-07-03  Sebastien Pouliot  <sebastien@ximian.com>

	* graphics-path.c: Add missing checks in GdipGetPath[Types|Points]
	functions (based on parts of #81859 patch by Yves Bastide).
	* region.c: Add a few shortcuts to empty paths|regions combined with 
	an infinite regions (based on parts of #81833 patch by Yves Bastide).

2007-06-21  Sebastien Pouliot  <sebastien@ximian.com> 

	* imageattributes.c: Fix "too clever" optimization with alpha when 
	applying a ColorMatrix.

2007-06-21  Sebastien Pouliot  <sebastien@ximian.com>

	* customlinecap.c: Fix #81829 to allow either a fill or stroke path 
	when creating a GpCustomLineCap.

2007-06-21  Sebastien Pouliot  <sebastien@ximian.com> 

	* codecs.h, GdiPlusFlat.h, image.h, dstream.c: Fix #81845 to allow 
	using with C++ compilers and -Werror. Patch by Yves Bastide.

2007-06-21  Sebastien Pouliot  <sebastien@ximian.com>

	* graphics.h: Add missing GdipGetClip prototype. Fix #81844. Patch by
	Yves Bastide. 

2007-06-21  Sebastien Pouliot  <sebastien@ximian.com> 

	* general.c|h: Fix signature for GdiplusShutdown. Fix bug #81842.

2007-06-21  Sebastien Pouliot  <sebastien@ximian.com>

	* bitmap.c, bmpcodec.c, icocodec.c, imageattributes.c, image.c,
	jpegcodec.c, pngcodec.c, tiffcodec.c, gdipenums.h: Fix PixelFormat*Rgb
	(and Argb) to PixelFormat*RGB (and ARGB) to match MS GDI+ definitions.
	Patch by Yves Bastide. Fix #81841

2007-06-05  Sebastien Pouliot  <sebastien@ximian.com> 

	* emfcodec.c, metafile-private.h, wmfcodec.c, wmfcodec.h: ++ is unsafe
	to use with the GUINTx_FROM_LE macro. Also avoid macro re-declarations

2007-05-30  Sebastien Pouliot  <sebastien@ximian.com> 

	* gifcodec.c: Add support for interlaced GIF. Fix bug #81773
	* imageattributes.c: Add support for ColorMatrixFlags and Gray 
	ColorMatrix (quite popular based on MoMA reports);
	* imageattributes-private.h: Add the gray color matrix and the color
	matrix flags into the GpImageAttribute structure.

2007-05-28  Sebastien Pouliot  <sebastien@ximian.com> 

	* graphics-cairo.c: Adjust the x,y position (-1,-1) when the pen's 
	length is a multiple of 2. This makes the rectangle drawing match MS
	implementation. Also fix cairo_DrawRectanglesI to use anti-aliasing
	(like all drawing functions should do).
	* graphics-cairo-private.h: Add macro to check if a coordinate
	correction is required for the specified pen's width.

2007-05-25  Sebastien Pouliot  <sebastien@ximian.com> 

	* general-private.h: Don't optimize convertions when printing.
	* text-cairo.c: Ensuew we converting coordinates when printing. Fix 
	bug #81708

2007-05-24  Sebastien Pouliot  <sebastien@ximian.com> 

	* graphics-cairo.c: Don't use antialiasing on clipping paths. Fix bug
	#81721.
	* image.c: Implement GdipDrawImagePointsRect[I] functions.

2007-05-23  Sebastien Pouliot  <sebastien@ximian.com>

	* pngcodec.c: Add correct support for 2bpp PNG images (promoted to 
	32bpp ARGB) and fixed palette for 4bpp images. Fix bug #81674.

2007-05-22  Sebastien Pouliot  <sebastien@ximian.com>

	* graphics.c: Fix GdipCreateFromHDC to return OutOfMemory if HDC is 
	NULL. This match MS behavior as seen in (unfixed) bug #81709.

2007-05-17  Sebastien Pouliot  <sebastien@ximian.com> 

	* general-private.h: Define G_MININT16 and G_MAXINT16 when not 
	available on a platform.

2007-05-17  Sebastien Pouliot  <sebastien@ximian.com>

	* emfcodec.c: Don't play empty but valid (e.g. recording) metafiles.
	* graphics.c: Move cairo code to graphics-cairo.c and switch functions
	between the cairo and metafile backends.
	* graphics-private.h: Add the required data for the metafile backend.
	* graphics-cairo.c: New file. Moved cairo-based stuff from graphics.c.
	* graphics-cairo-private.h: New. header to cairo graphics functions.
	* graphics-metafile.c: New. Metafile graphics recording functions.
	* graphics-metafile-private.h: New. header to metafile graphics 
	functions.
	* image.c: Allow creating GpGraphics contexts on a recording metafile.
	* metafile.c: Starting support for recording.
	* metafile-private.h: Add data/functions required for recording.
	* text.c: Move non-validation code (i.e. cairo code) into text-cairo.c
	* text.h: Add copyrights header.
	* text-cairo.c: New file. Moved cairo-based stuff from text.c.
	* text-cairo-private.h: New. header to cairo-based text functions.
	* text-metafile.c: New. Metafile-based text rendering.
	* text-metafile-private.h: New. header to metafile text functions.
	* Makefile.am: Add new files, remove old one.

2007-05-15  Sebastien Pouliot  <sebastien@ximian.com>

	* graphics-private.h: Add macro to check for position overflows.
	* image.c: Check for negative width/height values and overflows 
	in function GdipDrawImageRect (not applicable to metafiles). 
	Check GpUnit inside function GdipDrawImageRectRect.

2007-05-12  Miguel de Icaza  <miguel@novell.com>

	* image.c (GdipDrawImageRect): Passing a width or height of 0 is a
	no-op on Windows.   Prevents Cairo from setting an INVALID_MATRIX
	error (the Paint.NET reported bug).

2007-05-08  Sebastien Pouliot  <sebastien@ximian.com>

	* bitmap.c|bitmap-private.h: Add new gdip_create_greyscale_palette
	function to avoid duplicate work in codecs.
	* jpegcodec.c: Fix support for 8bpp indexed greyscale images (#81552).
	* pngcodec.c: Use new greyscale palette function.

2007-05-03  Sebastien Pouliot  <sebastien@ximian.com>

	* print.c: Fix headers inclusion (and re-enable that code).

2007-04-26  Sebastien Pouliot  <sebastien@ximian.com>

	* metafile.c|h: Add delegate-based GdipRecordMetafile... functions 
	to replace the IStream COM based functions outside of Windows.

2007-04-26  Sebastien Pouliot  <sebastien@ximian.com> 

	* gifcodec.c: Add image.h so we can build (stubs) without libgif
	* jpegcodec.c: Add image.h and dtream.h so we can build (stubs) 
	without libjpeg and move up "extern GUID GdipEncoderQuality".
	* tiffcodec.c: Add image.h so we can build (stubs) without libtiff

2007-04-26  Sebastien Pouliot  <sebastien@ximian.com>

	* emfcodec.h: Include metafile-private.h
	* emfplus.h: Include metafile-private.h
	* graphics.c: Correct API wrt public API
	* graphics.h: Clean up public API (and include missing stuff)
	* gdiplus-private.h: Add typedef for GpMetafile
	* image.c: Include metafile-private.h
	* metafile.c: Add GdipRecordMetafile{Filename][I] functions.
	* metafile.h: Add new record functions. Remove private stuff (into new
	private header) and win32 definitions.
	* metafile-private.h: New file. Private header.
	* win32structs.h: Add metafile public here
	* wmfcodec.h: Include metafile-private.h
	* Makefile.am: Add new metafile-private.h to the build/dist

2007-04-25  Sebastien Pouliot  <sebastien@ximian.com>

	* pngcodec.c: Fix compilation when old headers are used (e.g. rh9 and
	our debian 3.1 builds on arm and sparc).

2007-04-24  Sebastien Pouliot  <sebastien@ximian.com> 

	* font.c: Use guint16 instead of UINT16.
	* font-family.h: Use guint16 instead of UINT16.
	* win32structs.h: Remove UINT16 definition. It's also present in some 
	libjpeg headers and some compilers don't like it's redeclaration.

2007-04-24  Sebastien Pouliot  <sebastien@ximian.com>

	* adjustablearrowcap.c: Header/types adjustments.
	* adjustablearrowcap.h: New file. Public header.
	* adjustablearrowcap-private.h: New file. Private header.
	* alpha-premul-table.inc: Types adjustment.
	* bmpcodec.c|h: Header/types adjustments.
	* bitmap.c: Header/types adjustments.
	* bitmap.h: New file. Public header.
	* bitmap-private.h: New file. Private header.
	* brush.c: Header adjustments.
	* brush.h: Move private stuff out.
	* brush-private.h: New file. Private header.
	* codecs.h: New file. Contains public codec declarations.
	* codecs-private.h: New file. Private header.
	* customlinecap.c: Header adjustments. 
	* customlinecap.h: Move private stuff out, move public stuff in.
	* customlinecap-private.h: New file. Private header.
	* dstream.c|h: Header adjustments. 
	* emfcodec.c|h: Header/types adjustments.
	* emfplus.h: Header adjustments.
	* font.c: Header/types adjustments.
	* font.h: New file. Public header.
	* fontcollection.h: New file. Public header.
	* fontcollection-private.h: New file. Private header.
	* fontfamily.h: New file. Public header.
	* fontfamily-private.h: New file. Private header.
	* gdip.h: Deprecated. Public and private stuff has been moved into 
	different header files to avoid more errors in the future and make it
	easier to use libgdiplus as a library.
	* gdipenums.h: New file. Contains (only) public enums.
	* gdipstructs.h: New file. Contains (only) public types.
	* gdiplus-private.h: New file. Main private include file.
	* GdiPlusFlat.h: New file. This is *the* header file to include from
	C/C++ projects (i.e. the only one that match MS filenames). Makes it
	easier not to use internal/private (i.e. changing) libgdiplus stuff.
	* general.c: Move public types to public header. Use FcFini if 
	available. Remove DEBUG_MEMLEAKS code (valgrind is much better).
	* general.h: Updated to contain only public stuff.
	* gifcodec.c|h: Header/types adjustments.
	* graphics.c: Header/types adjustments. [Draw|Measure]String functions
	have moved into text.c source file.
	* graphics.h: Move private stuff out and move public stuff in.
	* graphics-path.c: Header/types adjustments.
	* graphics-path.h: Move GpPathIterator functions into their own header 
	file. Moved internal functions into private header file.
	* graphics-path-private.h: New file. Private header.
	* graphics-pathiterator.c: Header/types adjustments.
	* graphics-pathiterator.h: New file. Public header.
	* graphics-pathiterator-private.h: New file. Private header.
	* graphics-private.h: New file. Private header.
	* hatchbrush.c: Header/types adjustments.
	* hatchbrush.h: Move private definitions into a separate header file.
	* hatchbrush-private.h: New file. Private header.
	* icocodec.c|h: Header/types adjustments.
	* image.c: Header/types adjustments. Move codec GUID into codec source
	files.
	* image.h: New file to replace gdipImage.h but contains only public 
	and semi-public stuff.
	* image-private.h: New file. Private header.
	* imageattributes.c: Header/types adjustments. 
	* imageattributes.h: New file. Public header.
	* imageattributes-private.h: New file. Private header.
	* jpegcodec.c|h: Header/types adjustments.
	* lineargradientbrush.c: Header adjustments. 
	* lineargradientbrush.h: Moved private stuff into it's own header file
	* lineargradientbrush-private.h: New file. Private header.
	* matrix.c: Header adjustments and inline matrix_equals.
	* matrix.h: Move private stuff out, move public stuff in.
	* matrix-private.h: New file. Private header.
	* metafile.c|h: Header/types adjustments. 
	* pen.c: Header/types adjustments. 
	* pen.h: New file. Public header.
	* pen-private.h: New file. Private header.
	* pathgradientbrush.c: Header adjustments.
	* pathgradientbrush.h: Move private stuff out.
	* pathgradientbrush-private.h: New file. Private header.
	* pngcodec.c|h: Header/types adjustments. 
	* region.c: Header adjustments.
	* region.h: Move private stuff out.
	* region-bitmap.c|h: Header/types adjustments.
	* region-path-tree.c|h: Header/types adjustments.
	* region-private.h: New file. Private header.
	* solidbrush.c: Header/types adjustments.
	* solidbrush.h: Move private stuff out.
	* solidbrush-private.h: New file. Private header.
	* stringformat.c: Header/types adjustments.
	* stringformat.h: New file. Public header.
	* text.c: New file. [Draw|Mesure]String is moved here. This will help
	having an alternate implementation of them.
	* text.h: New file. Public header.
	* text-private.h: New file. Private header.
	* texturebrush.c: Header/types adjustments.
	* texturebrush.h: Header/types adjustments.
	* texturebrush-private.h: Move private stuff out.
	* tiffcodec.c|h: Header/types adjustments.
	* win32structs.h: New file that contains win32 definitions required by
	libgdiplus.
	* wmfcodec.c|h: Header/types adjustments.
	* Makefile.am: Add new files to the build.

2007-04-23  Sebastien Pouliot  <sebastien@ximian.com>

	* bitmap.c: Use a macro to calculate aligned stride.
	* bmpcodec.c: Use a macro to calculate aligned stride.
	* gdip.h: Remove dependency on pixman.h as the alignment is always
	done on 4 bytes (32 bits) for all architectures.
	* general.h: Add macro to calculate aligned stride.
	* gifcodec.c: Use a macro to calculate aligned stride.
	* icocodec.c: Use a macro to calculate aligned stride.
	* pngcodec.c: Use a macro to calculate aligned stride.

2007-04-16  Sebastien Pouliot  <sebastien@ximian.com>

	* bitmap.c: Complete (hopefully) endian fixes.

2007-04-16  Sebastien Pouliot  <sebastien@ximian.com> 

	* bitmap.c: Report correct error for GdipBitmap[Get|Set]Pixel on a
	16bpp grayscale bitmap.

2007-04-13  Sebastien Pouliot  <sebastien@ximian.com> 

	* bitmap.c: Fix more endian issues in GdipLockBits and GdipUnlockBits
	and remove a few unrequired masks.

2007-04-13  Sebastien Pouliot  <sebastien@ximian.com>

	* bitmap.c: Fix endian issues in GdipLockBits and GdipUnlockBits.
	* gdip.h: Add macros for setting BRG values in a buffer.

2007-04-12  Sebastien Pouliot  <sebastien@ximian.com> 

	* bitmap.c: Ensure we don't get out of bounds by one byte when using
	the 24bbp/3bytes mode. Fix a possible leak in GdipBitmapLockBits (e.g.
	if the pixel format convertion doesn't work). The 2.0 API allows a 
	test case to be built to validate this.

2007-04-12  Sebastien Pouliot  <sebastien@ximian.com>

	* bitmap.c: Complete the fix for #79246, the previous code was 
	mishandling the fact that Cairo use 4 bytes for 24bpp while GDI+ is
	using only 3 bytes (so converting between format isn't only get and
	set operations).
	* gdip.h: Remove unused structures x11drv_escape_codes and
	GpLinePointF. Add define for GBD_TRUE24BPP used to tag a GpBitmapData
	that use 3 bytes for 24bpp (GDI+) versus 4 bytes (Cairo).

2007-04-11  Sebastien Pouliot  <sebastien@ximian.com>

	* bitmap.c: Fix 24/32 mixup between GDI+ requirements and Cairo inner
	working. Fix bug #80681 and parts of bug #79246.

2007-04-09  Sebastien Pouliot  <sebastien@ximian.com>

	* bmpcodec.c: Fix 32bpp RGB support not to use the (unused) alpha byte
	in the file since it can contains junk.

2007-04-05  Sebastien Pouliot  <sebastien@ximian.com>

	* font.c: Remove internal (and unused) GdipGetHfont (not in GDI+).
	Fix GdipCreateFont signature (GpFontStyle isn't defined in GDI+). Fix
	(precise) GdipGetLogFont[A|W] signatures.
	* gdip.h: Remove unused GpCachedFont (doesn't exists in GDI+). Fix
	signature for GdipCreateFont.
	* tiffcodec.c: Change two functions to static to remove their symbols.

2007-04-05  Sebastien Pouliot  <sebastien@ximian.com>

	* metafile.c: Stretch correctly to the metafile size.

2007-04-04  Sebastien Pouliot  <sebastien@ximian.com>

	* bmpcodec.c: Remove extra symbols introduced in last change.

2007-04-04  Sebastien Pouliot  <sebastien@ximian.com> 

	* bmpcodec.c|h: Refactor reading to use ImageSource so metafiles can
	reuse the codec to load bitmaps.
	* emfcodec.c: Update reading to ImageSource.
	* icocodec.c: Update reading to ImageSource.
	* metafile.c|h: Implement StretchDIBits for #81178. Update reading to 
	ImageSource.
	* wmfcodec.c: Update reading to ImageSource.

2007-04-04  Sebastien Pouliot  <sebastien@ximian.com>

	* image.c: Hack around codec signature detection to add support for 
	non-placeable WMF metafiles (which MS GDI+ supports even if no codec
	signature match them). Also add a second hack to report a different 
	image format than the one used to decode the image (non-placeable WMF
	are reported as EMF).

2007-04-03  Sebastien Pouliot  <sebastien@ximian.com> 

	* The great static-fication and hidden-ization of private symbols
	inside libgdiplus. This brings us much closer to the real GDI+ API.

2007-04-03  Sebastien Pouliot  <sebastien@ximian.com>

	* cairo-embed.h: Rename *all* cairo_* symbols into mono_cairo_*.
	Should fix bug #81279.

2007-04-02  Sebastien Pouliot  <sebastien@ximian.com> 

	* font.c: Avoid locking multiple time for the same font family (e.g.
	when asking for GetHeight). Make sure we're setting cellascent and 
	celldescent even if the horizontal table isn't available. This also 
	simplify the code and has better error handling. Added better error 
	handling in GdipGetFontHeight and GdipGetFontHeightGivenDPI functions.

2007-04-02  Sebastien Pouliot  <sebastien@ximian.com>

	* font.c: Change some functions to static and remove unused function.
	* graphics.c: Remove unused externs.

2007-03-30  Sebastien Pouliot  <sebastien@ximian.com>

	* jpegcodec.c: Ensure we throw the "right" exception on the managed
	side when an invalid file is read. Fix #80980

2007-03-30  Sebastien Pouliot  <sebastien@ximian.com> 

	* brush.c: Change contract between GdipDeleteBrush and the destroy
	function of the specialized brushes. The NULL check and the GdipFree
	of the brush is now done centrally.
	* hatchbrush.c: Simplify with new contract.
	* lineargradientbrush.c: Simplify with new contract.
	* pathgradientbrush.c: Simplify with new contract.
	* solidbrush.c: Simplify with new contract.
	* texturebrush.c: Simplify with new contract.

2007-03-30  Sebastien Pouliot  <sebastien@ximian.com>

	* pen.c: Update solid brush color (if used) when the pen color is 
	changed. Fix #81266. Change GdipGetPenBrushFill to return a clone of 
	the brush and not the original one.
	* tiffcodec.c: Fix TIFFSetField as it requires at least two parameters
	(count & type) when used for TIFFTAG_EXTRASAMPLES. Fix valgrind
	warning.

2007-03-29  Sebastien Pouliot  <sebastien@ximian.com> 

	* bmpcodec.h: Use __attribute__ ((packed)) instead of #pragma pack(2)
	to make this work on the ARM architecture.
	* metafile.h: Use __attribute__ ((packed)) instead of #pragma pack(2)
	in the hope this construct works on the ARM architecture.
	* tiffcodec.c: Fix TIFF crashes on SPARC (it's amazing what an integer
	can do to get promoted).

2007-03-23  Sebastien Pouliot  <sebastien@ximian.com> 

	* jpegcodec.c: Re-enable sigsetjmp to handle malformed JPEG files.
	Also don't try to load EXIF data if loading failed. Fix bug #80980.
	* metafile.c: More endian fixes (EMF headers)

2007-03-22  Sebastien Pouliot  <sebastien@ximian.com>

	* emfcodec.h: Some endian fixes.
	* metafile.c: Some endian fixes.
	* wmfcodec.c: Some endian fixes.

2007-03-21  Sebastien Pouliot  <sebastien@ximian.com>

	* emfcodec.c: Process ModifyWorldTransform and modify GdiComment to be
	reusable to detect between "classic" EMF and EMF+/dual.
	* Makefile.am: Add emfplus.g|h to the build/dist.
	* metafile.c|h: Fixed display bounds. Added detection of EMF+ (and 
	dual) metafiles. Added ModifyWorldTransform function and a few other
	TODO.
	* wmfcodec.c: Process SaveDC, RestoreDC, SetStretchBltMode and
	StretchDIBits records.

2007-03-21  Sebastien Pouliot  <sebastien@ximian.com> 

	* emfplus.c|h: Starting point of the EMF+ (and dual) handling.

2007-03-21  Sebastien Pouliot  <sebastien@ximian.com>

	* pen.c: Ensure we never clear the 'changed' flag when setting pen's
	properties. Issue #81102 found (and patch) by Choe Hwanjin.

2007-03-20  Chris Toshok  <toshok@ximian.com>

	* graphics.c (GdipDeleteGraphics): if this is an X drawable,
	ignore any errors we get destroying the surface.  Works around a
	bug in the RENDER X server support, where the cairo pictures are
	freed when the drawable/window is destroyed (and so cairo's calls
	to XRenderFreePicture fail with errors).

2007-03-20  Sebastien Pouliot  <sebastien@ximian.com>

	* emfcodec.h: Add some definitions.
	* gdip.h: Remove gdip_graphics_init prototype.
	* general.c: Remove unused stuff.
	* graphics.c: Make gdip_graphics_init static.
	* wmfcodec.h: Add some definitions.

2007-03-19  Sebastien Pouliot  <sebastien@ximian.com>

	* bitmap.c: Exclude unused code and made some function static.
	* gdip.h: Remove un-shared function.
	* font.c: Fix free in free_cached_pattern to release the 'key' memory
	(no leak) and not the 'value' memory (double-free). Found/patch by 
	Choe Hwanjin.

2007-03-15  Sebastien Pouliot  <sebastien@ximian.com> 

	* gdip.h: Add some missing prototypes to avoid compiler warnings.

2007-03-14  Sebastien Pouliot  <sebastien@ximian.com> 

	* image.c: Return InvalidParameter when loading an unknown file format
	from a stream. System.Drawing will throw the "correct" exception from 
	this error code.
	* metafile.c: Fix DPI (purfect ;-) and improve bounds calculations.

2007-03-13  Sebastien Pouliot  <sebastien@ximian.com>

	* image.c: Fix codec signature compare when more than one signature-
	mask exists (e.g. GIF87 files). Fix codec signature length to match the
	(very large) EMF requirement (44 bytes).
	* gdipImage.h: Add define for MAX_CODEC_SIG_LENGTH

2007-03-13  Sebastien Pouliot  <sebastien@ximian.com> 

	* bitmap.c: Added comment about the special allocation of ColorPalette
	where Count == 0 (CID273).
	* image.c: Added comment about the special allocation of ColorPalette
	where Count == 0 (CID272).
	* metafile.c: Delete possibly allocated pen if invalid (CID279).
	Free metafile context if the metafile type is invalid (CID280).
	* region.c: In gdip_is_rect_infinite make sure rect can never be 
	dereferenced (CID276).

2007-03-08  Sebastien Pouliot  <sebastien@ximian.com> 

	* emfcodec.c|h: Initial (i.e. subset of) EMF parser/player.
	* metafile.c|h: Shared metafile code, like setup, play & cleanup 
	functions and a lot of "record" functions (which looks like the old
	GDI32 API).
	* wmfcodec.c|h: Initial (i.e. subset of) WMF parser/player.

2007-03-08  Sebastien Pouliot  <sebastien@ximian.com>

	* gdip.h: Add some missing prototypes to avoid compiler warnings.
	* image.c: Change drawing metafiles not to require a surface (it will 
	be played on the existing one).

2007-02-27  Sebastien Pouliot  <sebastien@ximian.com>

	* gdip.h: Add some missing prototypes to avoid compiler warnings.
	* texturebrush.cs: Reworked GdipCreateTexture to use the data from the
	cloned image (and not the original). Simplified GdipCreateTexture2I to
	reuse bitmap functions and call GdipCreateTexture. Fix bug #80971.

2007-02-26  Sebastien Pouliot  <sebastien@ximian.com>

	* region.c: Change GdipGetRegionHRgn to return a pointer to a *clone*
	of the region as this better match MS implementation (multiple calls
	return different HRGN). It also means that each of them must be freed
	individually (or this will leak memory).

2007-02-22  Sebastien Pouliot  <sebastien@ximian.com>

	* image.c: Fix DrawImage* functions when using indexed bitmaps.

2007-02-21  Sebastien Pouliot  <sebastien@ximian.com>

	* emfcodec.c|h: Minor update to compile image.c changes.
	* image.c: Updated all functions to allow them to work on metafiles
	(i.e. don't touch the bitmap data).
	* Makefile.am: Add new files to the build.
	* metafile.c|h: New. Skeleton to make image.c changes compile.
	* print.c: Moved non-GDI+ (but public) print functions here (from 
	image.c).
	* wmfcodec.c|h: Minor update to compile image.c changes.

2007-02-16  Sebastien Pouliot  <sebastien@ximian.com>

	* bitmap.c: Refactor to match upcoming metafile definitions.
	* gdip.h: Update gdip_bitmap_dispose definition to return GpStatus.
	* gdipImage.h: Remove get_image_format definition, it's now static.
	* image.c: Rewrite get_image_format to use the codec info (and remove
	"uneasy" FIXME). Remove unused gdip_image_clone function. Refactor 
	Dispose and Clone functions for upcoming metafile support. Fix GUID to
	ImageFormat for icons.
	* tiffcodec.c: Add missing signatures and mask to TIFF ImageCodecInfo.

2007-02-15  Sebastien Pouliot  <sebastien@ximian.com>

	* graphics.c, graphics-path.c, region-bitmap.c, tiffcodec.c: Patch
	from Dmitriy Lukinov to fix compilation when using gcc 2.95 (and
	other old C compilers). #80844

2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>

	* bitmap.c: Fix default palettes values (8bpp), flags and encoding
	(RGB versus BGRA).
	* gdip.h: Add color palette flags required to fix palettes.

2007-02-13  Sebastien Pouliot  <sebastien@ximian.com>

	* bmpcodec.c: MS generates what looks like invalid (or undocumented) 
	16bpp bitmaps for storing ImageList bitmaps. The header is bad 
	(missing BI_BITFIELDS), there is no ARGB masks and the last line of
	the bitmap is incomplete. Fix bug #80797.

2007-02-08  Sebastien Pouliot  <sebastien@ximian.com>

	* matrix.h: Add macros gdip_matrix_get_[x|y]_scale
	* region.c: Fix matrix operations on infinite region (the result is
	always an infinite region). Optimize the transform when the matrix is
	only a scale (or a scale+translate) to avoid converting a rectangular
	based region into a bitmap based region (fix #80758).

2007-02-07  Sebastien Pouliot  <sebastien@ximian.com>

	* bmpcodec.c: Fix #80751 for that aren't reversed (bug introduced
	when refactoring for icon support).

2007-02-05  Sebastien Pouliot  <sebastien@ximian.com> 

	* cairo-embed.h: Redefine used cairo symbols to avoid coexistance
	problems with Gtk+ 2.8 (and later). Fix bug #
	* gdip.h: Rework includes, remove unused cairo_matrix typedef.
	* general.c: Remove cairo.h from includes.
	* Makefile.am: Add cairo-embed.h to the build.

2007-02-01  Sebastien Pouliot  <sebastien@ximian.com> 

	* general.c|h: Add iround (from graphics-path.c);
	* graphics.c: Apply world transformations to bounds and fix function
	GdipGetVisibleClipBounds to use the clipping region. Fix bug #78958;
	* graphics-path.c: Remove iround (moved to general.c);
	* region-bitmap.c: Fix typo;

2007-02-01  Sebastien Pouliot  <sebastien@ximian.com>

	* pngcodec.c: Fix codec to return UnknownImageFormat and display a
	warning when loading an image with more than 32bpp. #80693. 

2007-01-31  Sebastien Pouliot  <sebastien@ximian.com>

	* graphics.c: Fix bug #80680 to make MeasureString handle trailing 
	spaces like MS GDI+

2007-01-19  Sebastien Pouliot  <sebastien@ximian.com> 

	* bitmap.c: Fix GdipLoadImageFromFile to return OutOfMemory (like MS
	GDI+) when the file isn't found.
	* image.c: Change GdipCreateBitmapFromFile[ICM] to still return (see
	previous fix) InvalidParameter if the file isn't found (again to match
	MS GDI+). Not sure why FileNotFound was defined as an error code :-|

2007-01-19  Sebastien Pouliot  <sebastien@ximian.com>

	* graphics.c: Remove extern declaration for gdip_get_cairo_filter
	* image.c: Fix #77181 by using the pattern (not the surface) to get
	the interpolation modes to work. Of course the modes are limited by 
	what's available in cairo/pixman (i.e. two modes).
	* general.h: Add prototype for gdip_get_cairo_filter.

2007-01-18  Sebastien Pouliot  <sebastien@ximian.com>

	* bitmap.c: Handle the case where we're asked to create 15/16 bpp 
	bitmaps. In this case the returned bitmap is a 32bpp RGB (no alpha)
	which, somewhat, match MS GDI+ when it loads such images.
	* bmpcodec.c: Switch 15/16 bpp to 32bpp RGB (instead of 24) for the
	same reasons.

2007-01-18  Sebastien Pouliot  <sebastien@ximian.com> 

	* icocodec.c: Add support for 24bpp icons with the alpha 1-bit.
	* image.c: GdipGetImageGraphicsContext only works for 24bpp and more.

2007-01-17  Sebastien Pouliot  <sebastien@ximian.com> 

	* bmpcodec.c: Add support for loading 16bpp bitmaps (555 or 565).
	Cairo deprecated CAIRO_FORMAT_RGB16_565 so we promote the bitmaps
	into 24bpp RGB bitmaps.
	* bmpcodec.h: Add new structures for V4 bitmap headers.

2007-01-17  Sebastien Pouliot  <sebastien@ximian.com>

	* bmpcodec.c: Avoid potential double-free if the image is invalid.

2007-01-15  Sebastien Pouliot  <sebastien@ximian.com>

	* bitmap.c: Clone the bitmap on GdipCreateBitmapFromHBITMAP too. This 
	ensure multiple GpBitmap objects can be created from a single HBITMAP.
	* icocodec.c: Add support for 32bpp icons (aka XP icons).

2007-01-12  Sebastien Pouliot  <sebastien@ximian.com>

	* icocodec.c: Fix another endian issue and free the bitmap (not just
	the palette) in case of an error.

2007-01-12  Sebastien Pouliot  <sebastien@ximian.com> 

	* bitmap.c: Fix HBITMAP support in GdipCreateBitmapFromHBITMAP and 
	GdipCreateHBITMAPFromBitmap functions so an HBITMAP can survive the
	deletion of the GpBitmap structure. Implement GdipCreateBitmapFromHICON
	and GdipCreateHICONFromBitmap functions. See comments about freeing
	the memory associated with HBITMAP and HICON.
	* gdip.h: Add new undocumented ImageFlag to match MS results.
	* icocodec.c: Fix endianess when reading the ICONDIRENTRY.

2007-01-11  Sebastien Pouliot  <sebastien@ximian.com>

	* bitmap.c: Fix GdipCreateBitmapFromScan0 to initialize the flags to 2
	(HasAlpha) if the format supports alpha;
	* image.c: Copy all palette (including flags and count) in function
	GdipSetImagePalette. Re-adjust the size if the palette size is 
	different. Fix palette handling not to return errors for an unexisting
	palette (but return a default empty one).

2007-01-10  Sebastien Pouliot  <sebastien@ximian.com>

	* bmpcodec.c|h: Refactor some decoding code to share with the ICON 
	decoder.
	* icocodec.c|h: Implement icon decoder, reusing some parts of the BMP
	 codec.
	* image.c: Add ICON format support to GdipLoadImageFromDelegate_linux.

2007-01-08  Sebastien Pouliot  <sebastien@ximian.com>

	* bmpcodec.c: Add missing SigPattern and SigMask to codec;
	* emfcodec.c|h: New. Plumbing to add the new EMF codec;
	* gdip.h: Add SHORT type. Add new GUID for ICO, WMF and EMF codecs;
	* gdipImage.h: Add include files for new codecs;
	* general.c: Update call to codecs initialization;
	* gifcodec.c: Add missing SigPattern and SigMask to codec;
	* icocodec.c|h: New. Plumbing to add the new ICO codec;
	* image.c: CHange codecs structure to allow a different number of 
	encoders and decoders.
	* jpegcodec.c: Add missing SigPattern and SigMask to codec;
	* pngcodec.c: Add missing SigPattern and SigMask to codec;
	* wmfcodec.c|h: New. Plumbing to add the new WMF codec;
	* Makefile.am: Add new files for codecs;

2007-01-03  Sebastien Pouliot  <sebastien@ximian.com>

	* alpha-premul-table.inc: New. Table that contains all values of
	256x256 divised by 255. This allows to avoid a division and three 
	multiplications for each pixel that requires alpha to be pre-multiplied
	into the RGB values.
	* general.c|h: Include/make available the premultiplied table.
	* imageattributes.c: Use the table when applying a ColorMatrix;
	* pngcodec.c: Use the table when loading PNG images with alpha. Also
	ensure we're setting the alpha flag correctly for non-palette bitmaps.
	Fix bug #79297 and #80366.

2007-01-02  Chris Toshok  <toshok@ximian.com>

	* general.c (gdip_get_display_dpi): we don't want to get what the
	rest of X assumes is the dpi.  we want the actual dpi of the
	screen, so that we can correctly map to the actual size of fonts
	when the user asks for a particular size.  This removes the need
	for the hack of setting the SWF DefaultFont to be 8pt instead of
	8.25pt to get things to line up.

2006-12-21  Sebastien Pouliot  <sebastien@ximian.com>

	* imageattributes.c: Fix bug #80323 for ColorMatrix containing alpha
	values (Cairo uses pre-multiplied alpha which we weren't providing). 
	Improved performance by about 30% (in the supplied sample).

2006-12-16  Miguel de Icaza  <miguel@novell.com>

	* jpegcodec.c: Do not load exif information if there was an error
	loading the file.

2006-11-10  Sebastien Pouliot  <sebastien@ximian.com>

	* general.c: Fix utf8_to_ucs2 to process all the first 65536 chars
	(not just the first 4096). Patch by choe.hwanjin@gmail.com
	* graphics.c: When measuring a string and if data is provided, 
	initialize data->has_hotkeys to FALSE.

2006-10-20  Sebastien Pouliot  <sebastien@ximian.com>

	* general.c: Don't delete the font cache hash table unless it was 
	created (which removes the glib runtime errors). This can occurs 
	when doing a C application using libgdiplus.

2006-10-18  Sebastien Pouliot  <sebastien@ximian.com>

	* graphics.c: In MeasureString check for bounding box height when 
	calculating the	number of characters to be drawn.

2006-10-17  Sebastien Pouliot  <sebastien@ximian.com>

	* graphics.c: Another fix to StringAlignmentCenter when a single
	character is drawn (#79685). This adjust the band-aid done for #79573
	awaiting a bigger rewrite (to move alignement from drawing to measure)

2006-10-16  Sebastien Pouliot  <sebastien@ximian.com> 

	* graphics.h: Define G_MAXINT32 ourselves (if undefined).

2006-10-12  Sebastien Pouliot  <sebastien@ximian.com> 

	* gdip.h: Remove stuff related to string measurements.
	* graphics.h: New. Add stuff specific to string measurements.
	* graphics.c: Refactor the string measurement code. There are now
	one (not two) methods to measure a string and one (splitted from
	measure) to draw the string. Doesn't fix any bug in itself but it
	already makes it much clearer what some problems are (e.g. alignment).
	* Makefile.am: Add new graphics.h file to the build.

2006-10-12  Sebastien Pouliot  <sebastien@ximian.com>

	* graphics.c: Remove parts of r60164 added for LinkLabel. It can't 
	work because we're loosing the start lines in the ranges. Actually we
	are still duplicating some measurement code and we'll need to merge 
	both routine if we want accuracy.

2006-10-11  Sebastien Pouliot  <sebastien@ximian.com>

	* general.h: Add SAFE_FLOAT_TO_INT32 macro.
	* graphics.c: Fix the cases where we convert an int to float (inside
	System.Drawing) then reconvert this value to an integer inside 
	libgdiplus. Values like Int32.MaxValue would return as negative due to
	overflow. Fix bug #79643.

2006-10-06  Sebastien Pouliot  <sebastien@ximian.com> 

	* font.c: Always zeroize LOGFONT facename even when we error out. This
	removes a lot of warnings from valgrind when running unit tests.
	* graphics.c: '.' can also be used as a wrap point. Fix bug #79594.

2006-10-05  Sebastien Pouliot  <sebastien@ximian.com>

	* graphics.c: Fix StringAlignmentCenter in GdipDrawString. Half fix 
	 (#79573) and half band-aid against possible random memory access.

2006-10-02  Sebastien Pouliot  <sebastien@ximian.com> 

	* graphics-path.c: Use correct function to free memory (spotted by 
	Gonzalo).
	* image.c: Fix compiler warning (signess);
	* texturebrush.c: Fix compiler warning (undefined symbol);

2006-09-29  Sebastien Pouliot  <sebastien@ximian.com>

	* graphics-path.c: Fixed GdipReverse loop, don't reverse path types and
	free the original point list being replaced.

2006-09-28  Jackson Harper  <jackson@ximian.com>

	* jpegcodec.c: Fix signature for the #if no libjpeg block.

2006-09-28  Sebastien Pouliot  <sebastien@ximian.com>

	* graphics.c: Re-fix the wrapping case (r58401) if bug #77699 (causing
	an endless loop in DrawString) to avoid memory corruption.

2006-09-22  Sebastien Pouliot  <sebastien@ximian.com>

	* graphics.c: (GdipMeasureCharacterRanges) Ensure we're always freeing
	strDetails when we return. Don't return Ok unless the status is Ok.
	Optimize conversions (done only if required). Handle HotKeyPrefix 

2006-09-21  Sebastien Pouliot  <sebastien@ximian.com>

	* stringformat.c: Don't clone by pointer assignement (sigh). Reuse 
	GdipCreateStringFormat to implement GdipStringFormatGetGenericDefault
	and GdipStringFormatGetGenericTypographic. Fix negative count in 
	GdipSetStringFormatTabStops to reset values properly.

2006-09-21  Sebastien Pouliot  <sebastien@ximian.com> 

	* stringformat.c: In GdipSetStringFormatMeasurableCharacterRanges we
	now check for negative rangeCount (InvalidParameter) and rangeCount 
	over 32 (ValueOverflow).
	* texturebrush.c: Only apply the inverted texture matrix if one is set
	(i.e. don't multiply by the graphic matrix). This should fix
	parts of #79300 (looks right like the old patch) and the texture
	sample still works correctly.

2006-09-20  Sebastien Pouliot  <sebastien@ximian.com>

	* texturebrush.c: Revert last patch as it breaks the texture sample
	and didn't fix the original issue #79300.

2006-09-19  Sebastien Pouliot  <sebastien@ximian.com>

	* graphics.c: Fix parameters checking order and remove duplicates
	checks in GdipMeasureCharacterRanges.
	* stringformat.c: Set defaults to match MS GDI+.

2006-09-18  Sebastien Pouliot  <sebastien@ximian.com>

	* graphics.c: Avoid unit conversions, when possible, when measuring
	or drawing strings. Fix both charactersFitted (not total string 
	length, see bug #76664) and linesFitted (floor) in MeasureOrDrawString

2006-09-16  Sebastien Pouliot  <sebastien@ximian.com> 

	* pngcodec.c: Fix 24bbp saving for big endian architectures.

2006-09-15  Sebastien Pouliot  <sebastien@ximian.com> 

	* bmpcodec.c: Remove non working code for big endian architectures.
	* graphics.c: Fix bug #79173 (multi-line labels/DrawText) by reverting
	part of r62329 for bug #78777 (MeasureCharacterRanges bug).

2006-09-15  Sebastien Pouliot  <sebastien@ximian.com>

	* pngcodec.c: Format32bppRgb is a 4bpp format.
	* tiffcodec.c: Format32bppRgb is a 4bpp format.

2006-09-14  Sebastien Pouliot  <sebastien@ximian.com>

	* bitmap.c: Fix error reporting in GdipBitmapUnlockBits.

2006-09-13  Sebastien Pouliot  <sebastien@ximian.com>

	* general.h: Add/Move macros gdip_near_zero and gdip_near_one 
	(from matrix.h) to avoid comparison between floating points value.
	* graphics.c: (make_arcs) Make sure the additional angle isn't near
	zero as this will results in NaN values and break rendering (#78999)
	* graphics-path.c: (append_arcs) Make sure the additional angle isn't 
	near zero as this will results in NaN values and break rendering
	* matrix.h: Remove macros and include general.h

2006-09-12  Sebastien Pouliot  <sebastien@ximian.com>

	* general.c: Don't apply the anti-aliasing offsets if we asked Cairo
	to scale it's rendering (not the best solution but better than the 
	current one where 0 scaled 100 times equals 50).

2006-09-08  Jonathan Gilbert  <logic@deltaq.org>

	* bmpcodec.c: Fix the pixel format used when loading 32-bit BMP
	files -- they were being loaded as Format32bppArgb, but MS's
	GDIPLUS.DLL returns Format32bppRgb Bitmap objects. The alpha
	data is still loaded, and work-arounds involving copying the
	raw data over to another Bitmap object with the Format32bppArgb
	pixel format should work here too.

2006-09-07  Chris Toshok  <toshok@ximian.com>

	* texturebrush.c (gdip_texture_setup): remove the matrix
	manipulation here.  fixes 79300.

2006-08-31  Sebastien Pouliot  <sebastien@ximian.com> 

	* jpegcodec.c: Avoid memory overwrite in the processing loop - this 
	messed up the first two lines (processed backward) of most JPEG files.
	* texturebrush.c: Test application shows the rotation to be identical
	between Cairo and GDI+.

2006-08-30  Sebastien Pouliot  <sebastien@ximian.com>

	* texturebrush.c: Fix image copying when only a part of the original
	image is required for the brush (no cloning here).

2006-08-29  Sebastien Pouliot  <sebastien@ximian.com>

	* bitmap.c: Reintroduce WORDS_BIGENDIAN for performance reasons.
	* general.c: Remove duplicate macros.
	* graphics.c: Fix stupid typo in make_curve :(

2006-08-28  Sebastien Pouliot  <sebastien@ximian.com> 

	* bitmap.c: Remove WORDS_BIGENDIAN block and use endian-correct macro.
	* texturebrush.c: Fix three cases (CID #249-251) where we didn't free 
	memory correctly when a error (like an out of memory) occured.

2006-08-27  Sebastien Pouliot  <sebastien@ximian.com>

	* bitmap.c: Fix endianess issues in locked bitmap.

2006-08-25  Sebastien Pouliot  <sebastien@ximian.com> 

	* gdip.h: Macro get_pixel_bgra is endian safe.

2006-08-25  Sebastien Pouliot  <sebastien@ximian.com>

	* gdi.h: Add missing GDIPCONST to both GpColorMatrix parameters for
	function GdipSetImageAttributesColorMatrix;
	* imageattributes.c: Fix parameter validation on function
	GdipSetImageAttributesColorMatrix, as colorMatrix can only be NULL if
	enableFlag is FALSE. Added TODO for unimplemented features.

2006-08-24  Sebastien Pouliot  <sebastien@ximian.com> 

	* region-path-tree.c: Fix some endian bug when deserializing a tree.
	* texturebrush.c: Adjust source for matrix and rectangle changes. 
	Ensure we're always cloning (correctly) the image (i.e. no pointer 
	assignment). Review parameter checks. Fix GdipGetTextureImage to 
	return a clone of the image. Fix some leaks detected with valgrind.
	* texturebrush.h: Changed GpTexture not to require extra memory 
	allocations for the matrix and the rectangle (it simplifies the code
	and help avoid leaks).

2006-08-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* dstream.c: (read_from_buffer) return the number of bytes actually
	copied from the stream buffer.

2006-08-23  Sebastien Pouliot  <sebastien@ximian.com>

	* general.c: Don't manipulate individual bytes when converting ucs4 to
	ucs2.
	* graphics.c: In GdipFillRegion ensure the GpGraphics and GpImage are 
	correctly freed even if their allocation function didn't return Ok.
	* region.c: Fix endian bug when reading region data type;

2006-08-22  Sebastien Pouliot  <sebastien@ximian.com> 

	* bitmap.c: Added annotations for allocation functions.
	* brush.c: Added annotations for allocation functions.
	* imageattributes.c: Added annotations for allocation functions. Added
	some out of memory checks.
	* image.c: Added annotations for allocation functions. Fixed some 
	parameters checks.
	* pathgradientbrush.c: Added annotations for allocation functions.
	* stringformat.c: Added annotations for allocation functions.
	* texturebrush.c: Added annotations for allocation functions.

2006-08-22  Sebastien Pouliot  <sebastien@ximian.com>

	* graphics-path.c: Ensure (3) that we delete a GraphicsPath even if
	it's cloning failed (e.g. memory could have been allocated).
	* pathgradientbrush.c: Ensure that we delete a GraphicsPath even if
	it's creation failed (e.g. memory could have been allocated).
	* region.c: Ensure that we delete a GraphicsPath even if it's creation
	failed (e.g. memory could have been allocated).

2006-08-21  Sebastien Pouliot  <sebastien@ximian.com>

	* graphics-path.h: Export gdip_path_has_curve to avoid code 
	duplication.
	* graphics-path.c: Remove all g_return_val_if_fail. Added annotations 
	for allocation function.
	* graphics-pathiterator.c: Simplify GdipPathIterHasCurve by reusing 
	code from graphics.c.

2006-08-19  Sebastien Pouliot  <sebastien@ximian.com>

	* graphics-pathiterator.c: Fix all function to deal with a NULL path
	supplied when creating an iterator. Remove all g_return_val_if_fail. 
	Added annotations for allocation function.

2006-08-18  Sebastien Pouliot  <sebastien@ximian.com>

	* matrix.c: Fix a division by zero case when a rectangle is supplied.

2006-08-17  Sebastien Pouliot  <sebastien@ximian.com>

	* matrix.c: Remove use of g_return_val_if_fail. Added annotations for
	allocation functions.

2006-08-16  Sebastien Pouliot  <sebastien@ximian.com>

	* graphics-path.c: In GdipAddPathString ensure we are freeing the font
	even if the creation call status code isn't Ok.
	* jpegcodec.c: Remove use of g_return_val_if_fail. Add annotations 
	about dead code which isn't totally dead (setjmp/goto).
	* pngcodec.c: Add annotation about dead code which isn't totally dead 
	(setjmp/goto).
	* tiffcodec.c: Add annotation about dead code.

2006-08-16  Peter Dennis Bartok  <pbartok@novell.com>

	* tiffcodec.c: Fixed c+p error. Thanks to coverity for catching that

2006-08-16  Sebastien Pouliot  <sebastien@ximian.com>

	* graphics.c: Try an annotation inside a function.
	* image.c: Remove use of g_return_val_if_fail.

2006-08-15  Sebastien Pouliot  <sebastien@ximian.com> 

	* adjustablearrowcap.c: Remove use of g_return_val_if_fail. Added 
	annotation for allocation functions.
	* font.c: In create_fontfamily_from_name changed default status code
	to FamilyNotFound (instead of OutOfMemory). Added more checks for 
	OutOfMemory conditions (e.g. after calls to ucs2_to_utf8). Added 
	annotation for allocation functions.
	* hatchbrush.c: Remove use of g_return_val_if_fail. Added annotation 
	for allocation functions.
	* lineargradientbrush.c: Remove use of g_return_val_if_fail. Added 
	annotation for allocation functions.

2006-08-14  Sebastien Pouliot  <sebastien@ximian.com>

	* customlinecap.c: Remove use of g_return_val_if_fail. Added 
	annotation for allocation functions. Fix cloning.
	* gdip.h|image.c: Fix some public API signatures (int -> UINT);
	* graphics.c: Replace two forgotten g_return_val_if_fail.
	* pen.c: Remove use of g_return_val_if_fail. Added annotation for 
	allocation functions. Fixed allocations to make sure an allocated
	pen is returned only if status == Ok.
	* solidbrush.c: Remove use of g_return_val_if_fail. Added annotation
	for allocation functions.

2006-08-13  Sebastien Pouliot  <sebastien@ximian.com>

	* graphics.c: In GdipSetClipRect, ensure the temporary region gets 
	deleted even if it's creation has failed. Added annotation for 
	allocation functions.
	* region.c: Fix annotation for GdipCreateRegion.

2006-08-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* dstream.[ch]: read from a stream using delegates, buffers the input
	and keeps EXIF data buffer around.

	* bmpcodec.[ch]: use dstream_t to take advantage of the buffering
	capabilities, as this codec does a lot of small reads.
	
	* image.c: use dstream_t for BMP and JPEG stream reading.

	* jpegcodec.[ch]: use dstream. Load EXIF data if available.

	* gdipImage.h: fill the gaps for PropertyTagType.
	* Makefile.am: added new files.

2006-08-12  Duncan Mak  <duncan@novell.com>

	* graphics.c (GdipDrawPolygon, GdipDrawClosedCurve2): Add checks
	for cases when count is less than two, that's an InvalidParameter.

	* graphics.c: In all cases where convert_points is used, check
	that count must be greater than zero.

2006-08-11  Duncan Mak  <duncan@novell.com>

	* graphics.c (GdipSetTextContrast): The accepted range for
	'contrast' was between 0 and 14 before. The docs on MSDN says it
	should be between 0 and 12 instead.

2006-08-10  Duncan Mak  <duncan@novell.com>

	* graphics.c: Rewrote all NULL checks without using
	g_return_val_if_fail.

2006-08-11  Sebastien Pouliot  <sebastien@ximian.com> 

	* font.c: Yet another fix to gdip_logfont_from_font to match MS
	behaviour more closely (and hopefully fix unit tests under Windows)
	* region.c: Coverity function annotation worked (it removed a false 
	positive) and found more possible problems (like the unlikely case
	where we return an error but did allocate memory). Added more 
	annotations.

2006-08-10  Sebastien Pouliot  <sebastien@ximian.com> 

	* region.c: Test to see if this help remove a false positive.
	* graphics.c: Don't loose track of user supplied tension in function
	GdipDrawClosedCurve2I.
	* graphics-path.c: Fix stupid typo made after removing that 
	unrequired line.

2006-08-10  Sebastien Pouliot  <sebastien@ximian.com> 

	* graphics-path.c: Avoid temporary memory allocation to convert int 
	into floats in GdipAddPathLine2I, GdipAddPathBeziersI and 
	GdipAddPathBeziersI functions. Remove (now) unnecessary int_to_floats
	function. Replace calloc calls with GdipCalloc. Remove useless line in
	GdipAddPathCurve2.
	* pathgradientbrush.c: Fix GdipCreatePathGradientFromPath to return 
	the same value as GDI+.

2006-08-10  Sebastien Pouliot  <sebastien@ximian.com>

	* graphics.c: s/CONVERTION/CONVERSION/ (alp)
	* general.c: s/CONVERTION/CONVERSION/ (alp)
	* image.c: s/CONVERTION/CONVERSION/ (alp)
	* general.h: s/CONVERTION/CONVERSION/ (alp)
	* region.c: s/CONVERTION/CONVERSION/ (alp)
	* region-bitmap.c: s/CONVERTION/CONVERSION/ (alp)
	* matrix.c: Changed some null checks not to print warnings during unit
	tests.
	* graphics-path.c: Fix GdipWidenPath to return the same value as GDI+.
	Changed some null checks not to print warnings during unit tests.

2006-08-10  Sebastien Pouliot  <sebastien@ximian.com>

	* font.c: Deal with gdip_unit_conversion being a function.
	* general.c: Add OPTIMIZE_CONVERTION to help avoid a floating point 
	division and multiplication when converting units (in the case where
	source == target). Added gdip_cairo_rectangle, gdip_cairo_move_to, 
	gdip_cairo_line_to and gdip_cairo_curve_to to deal with the 15bits
	width/height limits (more to come). Added checks for memory allocation
	failures.
	* general.h: New. Stop polluting gdip.h with internal macros and 
	prototypes.
	* graphics.c: Use OPTIMIZE_CONVERTION before doing unit	convertions.
	Removed gdip_unit[x|y]_convgr and gdip_convgr_unit[x|y] functions. 
	They are now macros inside general.h. Changed gdip_unit_conversion to 
	be a function (cleaner and easier for macros). Updated all calls to 
	cairo_move_to, cairo_line_to, cairo_curve_to and cairo_rectangle to 
	use the new gdip_* functions (that deals with coordinate limits, unit
	convertion and antialiasing).
	* image.c: Use OPTIMIZE_CONVERTION (or similar) before doing unit
	convertions. Fix typo in GdipDrawImageRectRect where srcwidth wasn't
	set and destoryed the dstwidth value.
	* Makefile.am: Add general.h to the build.

2006-08-09  Sebastien Pouliot  <sebastien@ximian.com> 

	* graphics.c: Added more memory allocation failure checks. Be more
	careful when disposing resources inside GdipDeleteGraphics.
	* graphics-path.c: Changed null check not to print warnings during
	unit tests. Added more memory allocation failure checks.
	* general.c: Added more memory allocation failure checks.
	* font.c: Remove deadcode (CID 234) introduced by the last fix. 

2006-08-08  Sebastien Pouliot  <sebastien@ximian.com>

	* region.c: Fix exclude on rectangular region to work with negative
	positions (X, Y).

2006-08-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* image.c: don't leak file_name if we fail to open it.

2006-08-07  Sebastien Pouliot  <sebastien@ximian.com>

	* general.c: Avoid double initialization (e.g. multiple appdomains)
	which would, for example, double the number of image codecs.

2006-08-05  Sebastien Pouliot  <sebastien@ximian.com>

	* graphics.c: Changed null check not to print warnings during unit 
	tests.
	* font.c: logFont->lfCharSet is always 0 from GDI+ (but it's
	returned as 1 inside System.Drawing). Fix Mono/Windows test failure.

2006-08-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* bitmap.c: allocate 32-bits space for 24bpp when locking as ReadOnly
	or ReadWrite too.

2006-08-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* bitmap.c: the destination format for a 24bpp RGB image has 32 bits
	internally.

2006-08-04  Sebastien Pouliot  <sebastien@ximian.com>

	* graphics-path.c: match GDI+ return value (requires fix to SD);
	* pathgradientbrush.c: match GDI+ return value (requires fix to SD);
	* pen.c: match GDI+ return value (requires fix to SD). Changed some
	null checks not to print warnings during unit tests.

2006-08-03  Sebastien Pouliot  <sebastien@ximian.com>

	* font.c: match GDI+ return value (requires fix to SD);
	* region.c: match GDI+ return value (requires fix to SD);

2006-08-03  Chris Toshok  <toshok@ximian.com>

	* graphics.c (make_arc): this was a pain in the butt to find.  fix
	the weird drawing bugs we've been seeing in the ellipse code by
	using fabs() instead of abs(), as the latter truncates to an int.
	(make_arcs): more abs -> fabs.
	(make_pie): same.

	* graphics-path.c: make analogous s/abs/fabs changes here.

2006-08-03  Duncan Mak  <duncan@novell.com>

	* graphics.c (make_pie):
	* graphics-path.c (GdipAddPathPie): Don't draw pie edges when we
	will be drawing an ellipse (i.e. when sweepAngle >= 360).

2006-08-01  Sebastien Pouliot  <sebastien@ximian.com>

	* tiffcodec.c: Fix typo to cause crashes when a tiff file has 
	properties (#78886). Fix a leak by calling TIFFRGBAImageEnd.

2006-07-31  Peter Dennis Bartok  <pbartok@novell.com>

	* gifcodec.c (gdip_save_gif_image): Remove unneeded line causing
	  buffer overflow.

2006-07-24  Alexander Olk  <alex.olk@googlemail.com>

	* graphics.c: Don't SIGSEGV when making polygons. The last point
	in the array is count-1 not count.

2006-07-21  Chris Toshok  <toshok@ximian.com>

	* image.c: include cairo-features.h so CAIRO_HAS_PS_SURFACE will
	be defined if we have it.

2006-07-07  Sebastien Pouliot  <sebastien@ximian.com> 

	* gifcodec.c: Return a GenericError in gdip_save_gif_image if the
	pixel_format isn't a know value. This makes sure cmap_size is always
	initialized (before being used).
	* region-bitmap.c: Don't show up a warning if we're cloning a region
	containing an empty graphicpath (as it is normal that no bitmap would 
	be required);
	* tiffcodec.c: Make sure we don't dereference a NULL pointer inside
	gdip_load_tiff_image (and properly return OutOfMemory).

2006-07-06  Chris Toshok  <toshok@ximian.com>

	* graphics.c (CalculateStringWidths): don't do the cairo call if
	we're dealing with a \n, as cairo says its extent is 7 pixels
	wide.
	(MeasureOrDrawString): add LineHeight to CursorY on a NEWLINE, not
	LineHeight * LineFeeds.
	(MeasureString): same.
	(GdipMeasureCharacterRanges): don't add strDetail[j].X/Y twice
	when creating the charRect.

2006-07-06  Sebastien Pouliot  <sebastien@ximian.com> 

	* brush.c: Remove empty and unused gdip_brush_destroy;
	* image.c: Add missing calls to cairo_pattern_destroy when a previous
	call to cairo_pattern_reference is made on a pattern;
	* solidbrush.c: Add missing NULL checks for GdipCreateSolidFill and
	GdipGetSolidFillColor functions and remove duplicate checks for 
	gdip_solidfill_destroy and gdip_solidfill_clone functions.

2006-07-06  Sebastien Pouliot  <sebastien@ximian.com>

	* image.c: Add missing NULL check to GdipDisposeImage.

2006-07-04  Sebastien Pouliot  <sebastien@ximian.com>

	* pen.c: Fix #78742 where an error occurs when we use a pen's width of
	0 (not a real value) with a dash style.

2006-06-29  Sebastien Pouliot  <sebastien@ximian.com>

	* region.c: Report OutOfMemory condition in GdipCloneRegion. Ensure 
	all memory is freed from the tree used in GdipCombineRegion* functions
	and avoid some memory alloc/free when possible.

2006-06-28  Sebastien Pouliot  <sebastien@ximian.com>

	* font.c: Make sure GdipGetLogFont[A|W] always initialize the LOGFONT
	structure correctly - even if it must return an error. Fix #78721.

2006-06-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* bitmap.c: avoid invalid read when we have a 24bpp format.

2006-06-26  Sebastien Pouliot  <sebastien@ximian.com>

	* font.c: Don't read past allocated memory.
	* hatchbrush.c: Don't both add a reference when cloning and set 
	base.changed to TRUE (kept the latter);
	* pen.c: (Again) Don't free, but delete, the brush to ensure it's own 
	data gets freed (e.g. the pattern for hatch brushes).

2006-06-22  Sebastien Pouliot  <sebastien@ximian.com>

	* pathgradientbrush.c: Avoid memory allocations (that were never freed
	anyway) when creating path gradients. Fix valgrind detected leaks when 
	running unit tests.
	* pen.c: Don't free, but delete, the brush to ensure it's own data 
	gets freed (e.g. the pattern for hatch brushes).

2006-06-15 Wade Berrier <wberrier@novell.com>

	* general.c: Remove dlfnc.h since it's currently not used (this was 
	also a deprecated api on mac 10.4)
	* Makefile.am: Remove -Werror (Originally for the above issue in general.c,
	but twas decided to remove it anyway)

2006-06-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* bitmap.c: align the stride to pixman_bits_t in LockBits.

2006-06-08  Sebastien Pouliot  <sebastien@ximian.com>

	* graphics-path.c: Implemented GdipIsVisiblePathPoint[I] functions
	(except for some cases where a GpGraphics is supplied and used).
	* hatchbrush.c|h: Fix parts of #78159 where the hatches visual output
	doesn't match MS. This works better with newer X version (e.g. SuSE10)
	than older ones (e.g. NLD9).

2006-06-07  Sebastien Pouliot  <sebastien@ximian.com>

	* graphics-path.c|h: Implemented GdipIsOutlineVisiblePathPoint[I]
	functions (except for some cases where a GpGraphics is supplied).

2006-06-06  Sebastien Pouliot  <sebastien@ximian.com>

	* graphics-path.c|h: Fix declarations (missing GpPen parameter) for 
	GdipIsOutlineVisiblePathPoint[I] functions.

2006-06-05  Sebastien Pouliot  <sebastien@ximian.com>

	* region.c: Fix region-region intersection with infinity (can't have 
	an infinite bitmap but this is identical to unioning with empty ;-) 
	and add some shortcuts for other special cases.

2006-06-02  Sebastien Pouliot  <sebastien@ximian.com>

	* graphics-path.c: Changed GdipWidenPath and GdipWrapPath to show a
	warning and return Ok instead of NotImplemented (to avoid crash in 
	PDN).
	* region.c: Fixed clone when the region is empty. Added error checking
	in GdipCombineRegionRect if path creation fails.

2006-06-01  Sebastien Pouliot  <sebastien@ximian.com> 

	* general.c: FcFini was introduced in fontconfig 2.2.91 and we support
	earlier versions.

2006-05-31  Sebastien Pouliot  <sebastien@ximian.com> 

	* font.c: Added a cache for FcPattern to avoid calling (the very slow)
	FcFontMatch over and over again when no FontCollection is supplied.
	* general.c: Added code to clear and free the cache at shutdown.
	* gdip.h: Added prototype for gdip_font_clear_pattern_cache.

2006-05-31  Sebastien Pouliot  <sebastien@ximian.com>

	* font.c: Added mutexes for handling the generic (reference counted)
	fonts (serif, sans-serif, monospace) and when dealing the fontconfig's
	FcConfig (which isn't thread-safe and fails under heavy usage in 
	ASP.NET).
	* general.c: Added calls to fontconfig's FcInit and FcFini in 
	GdiplusStartup and GdiplusShutdown functions.

2006-05-30  Sebastien Pouliot  <sebastien@ximian.com>

	* font.c: Added more error checking when calling fontconfig API.

2006-05-29  Sebastien Pouliot  <sebastien@ximian.com>

	* hatchbrush.c: Ensure we're freeing everything if no more memory can
	be allocated.

2006-05-26  Sebastien Pouliot  <sebastien@ximian.com>

	* font.c: (GdipCreateFontFamilyFromName) Don't free string before 
	calling FcPatternDestroy. This fix an occasional SIGSEGV (only seen 
	under XSP2).

2006-05-25  Sebastien Pouliot  <sebastien@ximian.com>

	* graphics.c: Implemented GdipSetClipHrgn before finding out (at test
	time that it's not exposed thru System.Drawing.dll).
	* region.c: Implement GdipGetRegionHRgn and GdipCreateRegionHrgn. This
	fix a possible double dispose in S.D.

2006-05-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* image.c:
	* bitmap.c:
	* gdip.h: added MEMBMP, its GUID and the mapping from that in-memory
	format to file type when saving. This changes the default bitmap
	RawFormat to MemoryBmp and its default file format to PNG.

2006-05-24  Sebastien Pouliot  <sebastien@ximian.com> 

	* graphics.c: Remove some warning display from S.D. unit tests.
	* lineargradientbrush.c: Remove some warning display from S.D. unit 
	tests.

2006-05-24  Sebastien Pouliot  <sebastien@ximian.com>

	* hatchbrush.c|h: Large patch to reduce code duplication and add 
	missing	(and fix bad) error checking. *No* visual changes (or fixes) 
	in the hatch output (yet) and valgrinded.

2006-05-24  Sebastien Pouliot  <sebastien@ximian.com> 
 
	* bitmap.c: Zeroize allocated bitmap memory. Fix #78478
	* brush.c: Make sure we check for NULL before using any pointer.
	* pen.c: Clone the supplied brush in the GdipCreatePen2 function (as 
	the user may dispose of it anytime).

2006-05-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* gifcodec.c: support 'combine' animated gifs and top/left positioning
	of frames. Last part of the fixes for bug #77247.

2006-05-23 Jordi Mas i Hernandez  <jordimash@gmail.com>
	
	* font.c:  removes libgdiplus dependency against Cairo 
	_cairo_toy_font_face_create API function. Change to make 
	Cairo 1.2 linkable with libgdiplus.

2006-05-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* gifcodec.c: null terminate the byte array passed to
	gdip_bitmapdata_property_add_ASCII to avoid an invalid memory read.

2006-05-21  Sebastien Pouliot  <sebastien@ximian.com>

	* hatchbrush.c: Check all pointers for NULL.

2006-05-19 Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* bmpcodec.c: fix bfSize for 24bpp.

2006-05-19 Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* bmpcodec.c: now we're able to roundtrip a 24bpp bmp file. Don't create
	the cairo surface when loading the image. Remove unused (obsolete?)
	gdip_bitmap_save_bmp().

2006-05-19 Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* bitmap.c: don't leak the allocated 'scan0' when converting indexed
	to RGB.

2006-05-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* bmpcodec.c: don't change the PixelFormat to 32bpp when it's a 24bpp.
	* image.c: 24bpp bitmaps are 4-bytes (cairo dixit).
	Fixes the 24bpp test again.

2006-05-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* bitmap.c: speed up the 8bppIndexed -> 32bpp conversion.

2006-05-17  Sebastien Pouliot  <sebastien@ximian.com>

	* gdip.h: Added GpDashCap dash_cap to GpPen. It's not used (visually)
	but this way we can keep track of it (unit tests).
	* pen.c: Multiple fixes to match new unit tests:
	- fix DashStyleCustom style to use the current DashPattern (no reset);
	- don't accept non-invertible matrices in GdipMultiplyPenTransform and
	  GdipSetPenTransform;
	- set the minimum miter limit to 1.0 in GdipSetPenMiterLimit (whatever
	  the value supplied);
	- fix some error conditions to return the correct error code and also
	  track some unimplemented stuff (rather than throwing);

2006-05-15  Sebastien Pouliot  <sebastien@ximian.com>

	* pen.c: Added an hack to keep the "bad" behaviour in the most common
	MWF usage (i.e. where the badness isn't visible).

2006-05-15  Sebastien Pouliot  <sebastien@ximian.com> 

	* pen.c: Revert the change from r52463. This looks better only when 
	the pen's width is 1 (but looks worse in other cases). This fix both
	bug #77976 (dash style) and #78059 (double pixel). Also remove a FIXME
	which is no more required with this fix.

2006-05-12  Sebastien Pouliot  <sebastien@ximian.com> 

	* image.c: (GdipSaveImageToFile) don't access image->type before the
	NULL check for image. (GdipLoadImageFromDelegate_linux, 
	GdipLoadImageFromFile) ensure result isn't NULL before using it.
	* graphics-path.c: Fix misnamed GdipAdd*Path*String[I] API (#78383)
	* region.c: Fixed the case where an infinite region was unioned with
	a rectangle (and didn't result in infinity).

2006-05-12  Peter Dennis Bartok  <pbartok@novell.com>

	* graphics.c (MeasureOrDrawString): Only make every character a
	  wrappoint if we're single-line and have char trimming (#78336)

2006-05-12  Peter Dennis Bartok  <pbartok@novell.com> 

	* region.c (gdip_combine_union): Hack to allow adding rectangles
	  with negative x/y coordinates. This method should probably
	  be reworked properly, not assuming negative values have a 
	  special meaning.

2006-05-12  Sebastien Pouliot  <sebastien@ximian.com> 

	* bitmap.c: (GdipCreateBitmapFromScan0) make sure we're not gonna use
	the default_palette if NULL. (GdipBitmapLockBits) don't use srcRect
	pointer before it's NULL check. (gdip_propertyitems_clone) free result
	before returning OutOfMemory. (GdipCloneBitmapAreaI) add missing call 
	to gdip_bitmap_dispose in fail.
	* gdip.h: Change GpPen.matrix to cairo_matrix_t (to avoid unrequired
	allocation/free).
	* graphics-path.c: (GdipGetPathWorldBounds) free workpath in the 
	special case where weonly have a single element after flattening.
	(GdipAddString) added checks for invalid font and NULL layoutRect. 
	(gdip_convert_bezier_to_lines) removed impossible special case.
	* lineargradientbrush.c: Ensure we always free the structures we 
	allocated in case we hit an error.
	* pathgradientbrush.c: Ensure we always free the structures we 
	allocated in case we hit an error.
	* pen.c: Updated code to avoid multiple dynamic creation and deletion 
	of GpMatrix.
	* region.c: (GdipCreateRegionRgnData) make sure we free the GpRegion
	in all error cases. (gdip_combine_complement) avoid possible double
	free.
	* stringformat.c: (GdipGetStringFormatTabStops) don't use the format
	pointer before it's NULL check.

2006-05-11  Sebastien Pouliot  <sebastien@ximian.com> 

	* graphics.c: (GdipCreateFromHDC) check for memory allocation failure
	before using the pointer. (GdipSetClipGraphics) honor the combineMode
	parameter (in this case by reusing the GdipSetClipRegion function).
	* graphics-path.c: (GdipAddString) it is possible that some memory is
	allocated by cairo even if the *_create call fails - so we must call
	the corresponding *_destroy function on failure to create.
	* matrix.c: (GdipCreateMatrix3) Ensure we call GdipFree in case of an 
	error (where we do not return the allocated matrix).

2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>

	* pathgradientbrush.c: Sadly Cairo doesn't support path-based 
	gradients. Added support for a special case where we can use cairo's
	radial gradient. Otherwise we continue to fill using the center color.

2006-05-09  Sebastien Pouliot  <sebastien@ximian.com>

	* pathgradientbrush.c: Apply tricks, knowledge and unit tests from
	lineargradientbrush as a starting point (i.e. it doesn't fix anything
	visually but I like those foundations better ;-)
	* pathgradientbrush.h: Change transform and rectangle not to require
	extra memory allocations (always allocated, static size).

2006-05-08  Sebastien Pouliot  <sebastien@ximian.com>

	* graphics-path.c: Added pen support to GdipGetPathWorldBounds as the
	result doesn't have to be very precise (see test cases). Fixed 
	GdipWidenPath to return OutOfMemory if the supplied path as a single
	point (seems to be a bug, reported as FDBK49685). Fixed GdipWarpPath
	to reset (empty) the path in the same case (again to match MS);

2006-05-05  Sebastien Pouliot  <sebastien@ximian.com>

	* lineargradientbrush.c: Changed atanf for atan (for older SunOS);
	* graphics-path.c: Changed GdipGetPathWorldBounds to get better 
	results when curves are used (much better than MS GDI+). Reduced
	memory allocations. Pen support is still missing.

2006-05-04  Sebastien Pouliot  <sebastien@ximian.com> 

	* graphics.c: Fix the default (parameter-less) BeginContainer by
	introducing a previous_matrix inside GpGraphics. Keeping the effective
	matrix from the previous container (or the original graphics) allow us
	to substract it when a call to GdipGetWorldTransform is made.

2006-05-04  Sebastien Pouliot  <sebastien@ximian.com>
 
	* graphics.c: Removed the reset on the matrix when begining a new 
	container (this is half-right, but better vistually than the current
	reset). Added a FIXME in GdipGetWorldTransform as it won't return the
	correct results inside a container. Added MonoTODO to Gdip[Get|Set]
	PixelOffsetMode as we do not use the value inside libgdiplus (and 
	changing it should affect other values).
	* region.c: Fixed bug #78284 when doing a transform on an empty 
	region. Also ensure we convert empty region as the some structures
	are assumed to be allocated after the conversion.
	* region-bitmap.c: Allow region bitmaps with 0 width and/or height
	as this is a valid case (i.e. they aren't too big to render ;-).

2006-05-03  Sebastien Pouliot  <sebastien@ximian.com> 

	* lineargradientbrush.c: Applied patch for #78185 from Bill Holmes
	to add support for scalable angle. Changed a bit to use the new
	matrix function.
	* matrix.c|h: Added a new function to avoid code duplication when 
	creating a matrix from a rectangle and 3 points.

2006-05-02  Peter Dennis Bartok  <pbartok@novell.com> 

	* bitmap.cs: Only mark the bitmap as own if we actually allocated it
	  (fixes crash exposed by pdn)

2006-05-02  Sebastien Pouliot  <sebastien@ximian.com> 

	* gdip.h: Changed GpGraphicsContainer to uint (so it match how we are
	using the Save/Restore functions). Added text_contrast to GpState and
	GpGraphics (even if it's not really used ATM). Added missing 
	prototypes for GdipBeginContainer[2][I] functions.
	* graphics.c: Implemented GdipBeginContainer2 and GdipEndContainer 
	functions. Added partial implementation for GdipBeginContainer2 and 
	GdipBeginContainerI as they don't support the extra parameters 
	(rectangle and units). Added the code to set/get text contrast with
	Gdip[Get|Set]TextContrast to help the unit test (but it's not being
	"visually" used).

2006-05-01  Peter Dennis Bartok  <pbartok@novell.com> 

	* graphics.c (GdipMeasureCharacterRanges): Now considers string
	  alignment (which is needed for properly aligned LinkLabels)

2006-05-01  Peter Dennis Bartok  <pbartok@novell.com>

	* bitmap.c (gdip_pixel_stream_set_next): Fixed wrong shifting. 

2006-05-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* pngcodec.c: don't loop forever on truncated images. Fixes bug #78213.
	Patch by Pavel Sakowski.

2006-05-01  Sebastien Pouliot  <sebastien@ximian.com> 

	* graphics.c: Updated and completed Duncan's patch for #76907. We now
	support the offset and numOfSegments parameters of GdipAddPathCurve3.

2006-05-01  Sebastien Pouliot  <sebastien@ximian.com>

	* graphics.c: Updated and completed Duncan's patch for #76907. We now
	support the offset and numOfSegments parameters of GdipDrawCurve3.
	* lineargradientbrush.c: Applied patch for #78179 from Bill Holmes
	which fixes gradients created using 2 points (and not a rectangle).
	Also removed two (now) unused functions in the source code.

2006-04-30  Peter Dennis Bartok  <pbartok@novell.com>

	* image.c: If an attribute changes scan0, it will (now) also change
	  the pixel_format. Save the original so we can properly restore
	  when done.
	* imageattributes.c: Set the pixel_format of our work-bitmap to
	  32bppArgb (since most our methods need alpha and the provided
	  format might not have alpha)

2006-04-30  Peter Dennis Bartok  <pbartok@novell.com> 

	* pngcodec.c: Make sure the alpha bit makes it over to the bitmapdata

2006-04-30  Peter Dennis Bartok  <pbartok@novell.com>

	* pngcodec.c: We were handling transparency wrong. The transtable
	  runs alongside the palette (but possibly shorter), providing
	  the alpha value for the corresponding palette entry

2006-04-29  Peter Dennis Bartok  <pbartok@novell.com>

	* pngcodec.c: Added reading of select png properties. I might have
	  missed some additional we can support, but for the images I had for
	  testing we return all the same properties as MS. Still need to
	  add saving so we can roundtrip. This replaces the previous hack
	* bitmap.c (gdip_bitmapdata_property_add_short): Fixed to match
	  other xxx_add_xxx methods, removed length and pointer requirement
	* gdip.h: Updated prototype
	* tiffcodec: 
	  - Fixed whitepoint reading; we were only readying X
	  - Fixed storage type and size for TransferFunction

2006-04-29  Peter Dennis Bartok  <pbartok@novell.com> 

	* pngcodec.c: Returning fake comment (for pdn) until we read
	  real properties in png

2006-04-29  Peter Dennis Bartok  <pbartok@novell.com>

	* bitmap.c (gdip_pixel_stream_set_next): The previous 24bit patch
	  ignored that for 32bit copies we need to fill 4 bytes and the first
	  is not blue, but the alpha value, everything is shifted one byte.

2006-04-29  Peter Dennis Bartok  <pbartok@novell.com> 

	* tiffcodec.c: Added a workaround for a broken TIFF I've encountered
	  (winforms/img/multipage.tif) to prevent us from crashing

2006-04-29  Peter Dennis Bartok  <pbartok@novell.com>

	* gifcodec.c: Comments are not null-terminated, we need
	  to copy the string into a buffer with a null terminator before
	  storing them in our properties (Fixes #78181)

2006-04-29  Sebastien Pouliot  <sebastien@ximian.com> 

	* font.c: gdip_cairo_ft_font_lock_face can return NULL is some cases,
	like when the file fonts.conf is missing. We now check for the NULL
	value eveywhere the lock is used and issue a warning (console) about
	the failure. Fix bug #78237.
	* graphics.c: Check for NULL from gdip_cairo_ft_font_lock_face.

2006-04-27  Sebastien Pouliot  <sebastien@ximian.com> 

	* graphics.c: Added MonoTODO because we're not using the 
	numberOfSegments parameter in GdipDrawCurve3[I] functions.
	* graphics-path.c: Fixed AddPathCurve* functions to deal (in some 
	cases) with curve specified with two points (with strangely not the 
	same behaviour as DrawCurve). Added more checks for memory allocation
	failures. Added MonoTODO because we're not using the numberOfSegments
	parameter in GdipAddPathCurve3[I] functions.

2006-04-27  Sebastien Pouliot  <sebastien@ximian.com>

	* graphics.c: Add missing checks in GdipDrawCurve3. Also add a corner
	case where GdipDrawCurve[2][I] (but not GdipDrawCurve3) functions 
	allows to draw lines (curves with two points).

2006-04-27  Peter Dennis Bartok  <pbartok@novell.com>

	* pngcodec.c, bmpcodec.c: Missed a few vars in BIG_ENDIAN codepath 
	  when doing the image rewrite

2006-04-27  Sebastien Pouliot  <sebastien@ximian.com>

	* gdip.h, graphics.c: Fix prototypes for GdipDrawCurve3 and 
	GdipDrawCurve3I functions (float to int). The System.Drawing wrappers
	are correct. This is the first part of Duncan's patch for #76907.

2006-04-27  Sebastien Pouliot  <sebastien@ximian.com> 

	* graphics-path.h: Add prototypes for GdipAddString and GdipAddStringI
	* graphics-path.c: Add a basic implementation for GdipAddString[I]
	which use the path Cairo builds to get the font path outlines. Some
	options aren't yet supported (e.g. StringFormat) and would require 
	some refactoring of the DrawString code.

2006-04-26  Sebastien Pouliot  <sebastien@ximian.com> 
 
	* image.c: GdipLoadImageFromFile returns OutOfMemory when a file 
	format is unkown (like a text file, an EXE...). This makes S.D.
	throw an OutOfMemoryException (which is MS compatible).

2006-04-26  Sebastien Pouliot  <sebastien@ximian.com>

	* image.c: Patch by Bill Holmes to fix bug #75063. This correctly
	implement all cases (including rotation) when points are given as 
	positions to draw an image.

2006-04-26 Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* bmpcodec.c: for 32bpp on little endian platforms, we can use memcpy
	here.
	* bitmap.c: special case for 24bppRgb in LockBits, as
	gdip_get_pixel_format_bpp returns 32bpp for it. Fixes bug #76193.

2006-04-26  Sebastien Pouliot  <sebastien@ximian.com> 
 
	* lineargradientbrush.c: Fix some angles that were still in degrees
	(when converted from LinearGradientMode).

2006-04-26  Sebastien Pouliot  <sebastien@ximian.com>

	* lineargradientbrush.c: Applied patch for #78185 from Bill Holmes
	(billholmes54@gmail.com). This implements correctly the FlipX, FlipY
	and FlipXY modes and removes an incorrect check in 
	GdipGetLineTransform.

2006-04-24  Sebastien Pouliot  <sebastien@ximian.com>

	* lineargradientbrush.c: Second patch from Bill Holmes (and friends)
	which redo my complex matrix setup into a simpler one with much better
	results.

2006-04-24  Sebastien Pouliot  <sebastien@ximian.com> 
 
	* lineargradientbrush.c: Avoid the unrequired allocations for the 
	rectangle and the matrix. Avoid multiple convertion of the angle from
	degrees to radians. Fix angle calculation when the gradient is built
	from two points.

2006-04-24  Sebastien Pouliot  <sebastien@ximian.com>

	* lineargradientbrush.c: Gradients are now much better looking using
	a patch from Bill Holmes.

2006-04-22 Alexander Olk <alex.olk@googlemail.com>

	* image.c: Fixed build for warning: control reaches end of non-void
	  function in GdipGetPropertyIdList

2006-04-21  Peter Dennis Bartok  <pbartok@novell.com>

	* bitmap.c (gdip_bitmap_clone_data_rect): Now calculating the size of
	  the new bitmap based on source parameters if the new bitmap is
	  just being created. This fixes the failing Bitmap.Clone() unit test.

2006-04-21  Peter Dennis Bartok  <pbartok@novell.com> 

	* image.c: Implemented GetPropertyIdList

2006-04-21  Sebastien Pouliot  <sebastien@ximian.com>

	* graphics.c: Fixes to clipping when resetting (resets the clipping
	matrix) and when setting the matrix (to apply inverted matrix).
	* gdip.h: Added missing prototypes for clipping.

2006-04-21 Alexander Olk <alex.olk@googlemail.com>

	* tiffcodec.c: Fixed the build for "older" gcc versions. They don't
	  like uint32 pointers when they expect guint32 pointers in
	  gdip_property_get_long

2006-04-21 Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* imageattributes.c: don't apply the color matrix to transparent pixels.
	Now the disabled toolbar buttons in sharpchess are displayed correctly.

2006-04-20  Peter Dennis Bartok  <pbartok@novell.com> 

	* tiffcodec.c: Cleaned up unused stuff

2006-04-20  Peter Dennis Bartok  <pbartok@novell.com>

	* tiffcodec.c:
	  - Added reading and setting of dpi when loading image
	  - Now distinguishes between images with or without alpha and sets
	    the appropriate image flags when loading tiff images
	  - Added ability to save images as RGB instead of ARGB if the flags
	    indicate it's ok to do so
	  - Added saving of properties associated with each picture (we now
	    successfully roundrip images)
	  - Setting the TIFF Error and Warning handler to NULL to suppress
	    error and warning output on the console
	* gdip.h: Added prototypes for property getters
	* bitmap.c: Implemented property getter helper methods to allow
	  codecs to easily translate saved properties for saving

2006-04-20  Peter Dennis Bartok  <pbartok@novell.com> 

	* tiffcodec.c:
	  - Switched from passing the file pointer to passing the
	    filename for saving. Apparently when a FILE is fdreopen()ed
	    it doesn't seek properly anymore, and we need the ability to
	    seek when saving multi-file images
	  - Moved page counter inside page loop
	  - Added definition for the private Exif IFD tag (for those using
	    older versions of TIFFLIB)
	* image.c: We no longer pass a file pointer for saving TIFF files,
	  instead we pass the target filename
	* tiffcodec.h: Changed prototype to match tiffcodec.c

2006-04-20  Peter Dennis Bartok  <pbartok@novell.com>

	* gdipImage.h: Fixed typo in tag name
	* tiffcodec.c: Implemented reading of TIFF tags and translating
	  them into properties.

2006-04-20  Sebastien Pouliot  <sebastien@ximian.com>

	* lineargradientbrush.h: Added DEFAULT_GRADIENT_ANGLE constant.
	* lineargradientbrush.c: Simplify brush creation and fixed initial 
	matrix calculations. Fixed matrix operations functions. Don't create 
	an extra surface in create_tile_linear (other wrap mode still need to
	be updated). This is "closer" to the real thing (much better results
	in ZedGraph) but there are still issue mainly with rotations.

2006-04-20  Peter Dennis Bartok  <pbartok@novell.com>

	* gifcodec.c: Loader is now alpha/transparency aware and always sets
	  up the palette with alpha set. If transparent color is specified,
	  the the matching palette entry alpha is set to zero.
	* bitmap.c (gdip_bitmap_indexed_to_rgb): Now properly handles palettes
	  with alpha values.

2006-04-20  Peter Dennis Bartok  <pbartok@novell.com> 

	* gdip.h: Added transparent tracking field to BitmapData
	* bitmap.c: Added copying new transparent field to bitmap cloning
	* gifcodec.c: 
	  - Now reads transparency color from ext block and stores in BitmapData
	  - Now writes transparency, loop, delay and comment properties
	    back out when saving. We can now roundtrip our gif properties

2006-04-20  Peter Dennis Bartok  <pbartok@novell.com> 

	* image.c: Implemented all GdipGetProperty, GdipSetProperty and 
	  GdipRemoveProperty functions.
	* gdipImage.h: 
	  - Added PropertyTag and PropertyTagType enums
	  - Fixed wrong GdipGetPropertyItem prototype
	* bitmap.c:
	  - Implemented gdip_bitmapdata_property_xxx helper methods for
	    manipulating property data associated with a bitmap
	  - gdip_bitmapdata_clone now sets appropriate image_flags
	* gdip.h: Added prototypes for new functions in bitmap.c
	* gifcodec.c:
	  - Added GGifSlurpMono, AddExtensionBlockMono and FreeExtensionMono
	    functions derived from libgif, to work around libgif bug that 
	    prevents us from retrieving any extensions after the last image 
	    block (where it seems certain apps place their comments)
	  - Added handling of trailing extension block, adding comments in
	    that block will cause all images in the frame to have the
	    comment
	  - Added reading of LoopCounter, and subsequent storing as property
	  - Horizontal and vertical DPI are now retrieved from display

2006-04-20  Peter Dennis Bartok  <pbartok@novell.com>

        * bmpcodec.c, general.c, image.c, jpegcodec.c, tiffcodec.c,
          imageattributes.c, gdipImage.h, region-bitmap.c, gifcodec.c,
          texturebrush.c, pngcodec.c, gdip.h:
          - Changed BitmapData, FrameData, GpImage and GpBitmap structures
            to more accurately reflect gdiplus behaviour; removed broken
            dual frame and single bitmap concept, instead everything is
            organized into frames, with an active bitmap designating the
            currently used bitmap.
          - Added property components to BitmapData to allow implementing
            properties per bitmap
          - Updated all image related code to use new structures
          - Lots of added sanity checks and logic bug fixes
          - Fixed up sources to use tabs instead of spaces (png, jpeg) and
            removed buttloads of trailing whitespace on lines in all files
          - Rewrote gif load and save methods to properly deal with animation,
            transparency and reading/storing animation delay times
          - Streamlined many functions, removed deep nesting, introduced
            single point of error handling for each encoder and decoder
          - Now allows for disparate sizes of bitmaps in a single frame
          - Implemented ImageLockModeUserInputBuf for GdipBitmapLockBits and
            several other unimplemented features

2006-04-19 Gonzalo Paniagua Javier <gonzalo@ximian.com>

        * bmpcodec.c: fixed same error that Peter fixed in his last commit, but
          different place.

2006-04-19  Sebastien Pouliot  <sebastien@ximian.com>

        * graphics-path.c: Avoid, when possible (i.e. null/identity), matrix
          calculations in GdipTransformPath (which gets inherited by every call
          using it). Also added a OutOfMemory check in GdipTransformPath if
          points can't be allocated. Added common path preparation (flattening
          and/or matrix) to GdipWindingModeOutline, GdipWidenPath and
          GdipWarpPath.

2006-04-19  Peter Dennis Bartok  <pbartok@novell.com>

        * bmpcodec.c: Fixed common math error when adding values to
          pointers. Was causing nasty memory overwrites when saving bmps.

2006-04-18  Peter Dennis Bartok  <pbartok@novell.com>

	* general.cs (MeasureOrDrawString): Remove padding from bounding
	  rectangle calculations. It is causing issues with AutoHeight
	  controls not matching MS

2006-04-18  Sebastien Pouliot  <sebastien@ximian.com>

	* gdip.h: Add prototype for gdip_get_pattern_status function.
	* general.c: Added a new function to check the status of a cairo
	pattern (check for NULL isn't enough). If invalid the pattern will
	be destroyed.

2006-04-13  Sebastien Pouliot  <sebastien@ximian.com>

	* font.c: Keep a static collection for the system font that will be
	leaked (on purpose, see comments). Added missing initialization 
	(allocation) and nullification (freeing) to avoid using bad references 
	(which also helps to get better results from valgrind). Reworked 
	GdipPrivateAddMemoryFont to return the error codes leading to the 
	expected exceptions in the System.Drawing.dll unit tests.

2006-04-13  Sebastien Pouliot  <sebastien@ximian.com> 
 
	* matrix.c|h: Fix public API signatures to use BOOL (not int).
	* region.c: Give a better chance to revert to a simpler (rectangular) 
	region in GdipCombineRegionRect.

2006-04-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* pngcodec.c: don't use any filter (makes the saved image smaller) and
	generate sRGB,gAMA and cHRM information as MS does.

2006-04-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* pngcodec.c: no need for gdip_stream_png_source, just pass the function
	pointer.

2006-04-11  Sebastien Pouliot  <sebastien@ximian.com>

	* graphics.c: Fixed bug #77129 where we shouldn't draw (or fill)
	rectangle(s) with either a negative width or height.

2006-04-10  Sebastien Pouliot  <sebastien@ximian.com>

	* matrix.c: Fixed misimplemented GdipCreateMatrix3[I]. Reworked 
	allocations to report OutOfMemory conditions.

2006-04-07  Sebastien Pouliot  <sebastien@ximian.com>

	* region-bitmap.c: Changed free for GdipFree. Removed unused variable.

2006-04-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* imageattributes.c:
	(gdip_process_bitmap_attributes): the default fallback condition was
	wrong and caused the function to not process or incorrectly process the
	attributes, as it either used the default attributes or did nothing on
	the bitmap. It works now (tested with BitMap.MakeTransparent() and using
	"imageAttr.SetColorKey (color, color, ColorAdjustType.Bitmap);").


2006-04-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>

	* bmpcodec.c: fix offset when saving to a file and speed up writing
	the palette (15% faster saving).

2006-03-31  Peter Dennis Bartok  <pbartok@novell.com>

	* graphics.c:
	  - Removed reset of clip_matrix whenever the clip is reset, since
	    the matrix still would apply were another clip rectangle set
	    later
	  - Fixed signature of several methods from UINT to int, to match
	    MS signature. Fixes TextBox not displaying the first char

2006-03-31  Sebastien Pouliot  <sebastien@ximian.com> 

	* graphics-path.c: Don't read past the end of the allocated points
	structure.

2006-03-30  Sebastien Pouliot  <sebastien@ximian.com> 

	* graphics.c: Check that the matrix is invertible in function
	GdipMultiplyWorldTransform. Fix typo for return value in function
	GdipScaleWorldTransform.
	* lineargradientbrush.c: Avoid memory allocation for GpRectF in 
	function GdipCreateLineBrushFromRectI. Reduce the number of calls 
	between GdipCreateLineBrush* functions.

2006-03-30  Sebastien Pouliot  <sebastien@ximian.com>
 
	* lineargradientbrush.c: Fixed cloning (points and count). Added 
	better error handling for cairo_pattern_create_linear. Check that the
	matrix is invertible in GdipSetLineTransform.
	* matrix.c: Matrix identity isn't an equality test and accept a margin
	for errors/precision.

2006-03-29  Sebastien Pouliot  <sebastien@ximian.com> 

	* graphics-path.c: Ensure we start/close figures correctly in every
	GdipAddPath* functions. Unit tests confirms the new behaviours.

2006-03-28  Peter Dennis Bartok  <pbartok@novell.com>

	* graphics.c (GdipSetPageUnit): We should be able to set all
	  units. Not sure why that code was there. (Fixes #77829)

2006-03-28  Sebastien Pouliot  <sebastien@ximian.com> 

	* gdip.h: Added new member clip_matrix for GpState;
	* graphics.c: Add the clipping matrix to the information saved by 
	GdipSaveGraphics and restored by GdipRestoreGraphics.

2006-03-27  Sebastien Pouliot  <sebastien@ximian.com> 
 
	* gifcodec.c: Added missing DGifCloseFile to reclaim memory.

2006-03-27  Sebastien Pouliot  <sebastien@ximian.com>

	* gdip.h: Added new member clip_matrix for GpGraphics;
	* graphics.c: Make sure the applied transforms to the graphics are 
	also affecting the clipping;
	* matrix.h: New macro to reverse the order to apply the matrix;

2006-03-27  Sebastien Pouliot  <sebastien@ximian.com> 

	* matrix.c: GdipIsMatrixInvertible shouldn't invert the matrix!

2006-03-26  Sebastien Pouliot  <sebastien@ximian.com> 

	* graphics.c: Add support for complex (after binary operations) 
	clipping paths. Hackish but I don't see any alternative...
	* matrix.h: New. Header file for private region functions.
	* matrix.c: Added private functions for gdip_is_matrix_empty (moved
	from region.c) and gdip_is_matrix_a_translation (to enable an 
	optimization).
	* region.c: Adjusted code for the renamed gdip_is_matrix_empty. Added
	a optimization to call GdipTranslateRegion from GdipTransformRegion if
	the matrix only does a translation. This allows to skip "rectangle to 
	path" convertion and the invalidation/creation of a region bitmap.
	* Makefile.am: Added the new matrix.h header file to the build.

2006-03-25  Sebastien Pouliot  <sebastien@ximian.com> 
 
	* gdip.h: Add missing prototypes for GdipTranslateClip[I] functions.
	* graphics.c: Adjust anti-aliasing so that graphics can draw thin 
	lines in SmoothingModeAntiAlias and SmoothingModeHighQuality modes
	(thanks to Peter Bartok).
	* graphics-path.c: Fix GdipTransformPath when the path is empty (to
	return Ok, not an error).

2006-03-25  Sebastien Pouliot  <sebastien@ximian.com> 

	* gdip.h: Added new structures required for path tree (GpPathTree) and
	regions bitmaps (GpRegionBitmap).
	* gdipImage.h: Added prototype for GdipGetImageGraphicsContext.
	* graphics.c: Re-implement GdipFillRegion to use the alpha bitmap
	provided for by region-bitmap. Correct clipping wrt infinite regions.
	* region.c: Adjust existing API to use the bitmap regions for path 
	based regions, while keeping the existing code for rectangular based
	regions.
	* region.h: New. Header file for private region functions.
	* region-bitmap.c|h: New. Code to generate bitmap for regions and the
	binary operators on them (union, intersection, exclude, complement, 
	xor).
	* region-path-tree.c|h: New. Code to create and manipulate trees of
	path with binary operators. This allows to re-create any region from
	a small set of serialized data.
	* Makefile.am: Add the new files to the build.

2006-03-23  Peter Dennis Bartok  <pbartok@novell.com>

	* graphics.c (MeasureOrDrawString): Avoid trying to draw 0-length 
	  lines (fixes #77699)

2006-03-23  Sebastien Pouliot  <sebastien@ximian.com> 
 
	* lineargradientbrush.c: Set the count value when cloning and Free the
	matrix when destroying the brush.

2006-03-23  Sebastien Pouliot  <sebastien@ximian.com>

	* lineargradientbrush.c: Don't lose the original context 'ct' when
	flipping and free the new context. Remove obsoleted comments.

2006-03-22  Peter Dennis Bartok  <pbartok@novell.com>

	* font.c:
	  - GdipDeletePrivateFontCollection: No longer free's the passed
	    variable but instead the memory the passed var points to, since
	    that's what's been allocated. Sigh.
	  - GdipDeletePrivateFontCollection: Only destroy the FcFontSet and
	    FcConfig if we have one allocated.
	  - GdipDeleteFontFamily: Only free the pattern if it's actually
	    been allocated.
	  - GdipGetFontCollectionFamilyList: Where do I begin? It was very
	    much broken and memory was not handled right, with bad overwrites.
	    It now properly writes the font families to the pointers it's
	    supposed to. Got a bit simpler in the process.

2006-03-22  Peter Dennis Bartok  <pbartok@novell.com> 

	* image.c:
	  - GdipDrawImageRect: Dropping the save/restore and putting
	    in the proper fix for Digger and other apps not drawing properly
	    after drawing an image.
	  - GdipDrawImagePoints: Saving/Restoring the original source pattern

2006-03-22  Peter Dennis Bartok  <pbartok@novell.com>

	* image.c (GdipDrawImageRectRect): We're now properly saving and 
	  restoring the original source pattern (fixes #77438)
	* imageattributes.c: Setting copied pointer to null to avoid 
	  double usage

2006-03-22  Peter Dennis Bartok  <pbartok@novell.com> 

	* image.c:
	  - GdipDisposeImage: Single-frame images will have the
	    frameDimensionList[].frames pointer point to the image's BitmapData
	    block. We now consider that fact and free the image BitmapData only
	    if it wasn't also part of the frames list (and was free'd there)
	  - Removed a useless call to cairo that caused a leak but had no
	    effect on rendering
	* bitmap.c:
	  - gdip_bitmap_clone: Resetting all pointers to null after copying
	    BitmapData. Otherwise the surface will get used without proper
	    refcounting, and we would illegally free the memory off the wrong
	    object.
	  - GdipCloneBitmapAreaI: Eliminated intermediate stack var and memcpy
	  - GdipCreateBitmapFromHBITMAP: Cloning the whole image instead of
	    just the bitmap part. That way we also get the palette, etc.

2006-03-22  Sebastien Pouliot  <sebastien@ximian.com>

	* lineargradientbrush.c: Don't needlessly allocate GpPointF structures
	in GdipCreateLineBrushI. Fix pointers when accesing a brush matrix in
	GdipGetLineTransform and GdipSetLineTransform. Fix error handling in 
	GdipMultiplyLineTransform (to match GDI+).

2006-03-21  Sebastien Pouliot  <sebastien@ximian.com>

	* imageattributes.c: Allocate enough memory before copying GpColorMap 
	in GdipSetImageAttributesRemapTable. Also handle mapSize ==0 case and 
	OutOfMemory condition.
	* region.c: Calling gdip_add_rect_to_array reallocate the array so we
	must update the recttrg variable.

2006-03-21  Sebastien Pouliot  <sebastien@ximian.com>

	* texturebrush.c: Don't keep a reference to the "image" (but Clone) in
	GdipCreateTexture (we're not the owner of it). Fixed all the _flip 
	functions that were broken (since the cairo 1.0 update ?).
	* image.c: Add a comment for a leak (it leak for texture clones but 
	crash elsewhere if freed).

2006-03-20  Peter Dennis Bartok  <pbartok@novell.com> 

	* font.c (gdip_cairo_ft_font_lock_face): Initialize the matrix to
	  avoid using uninitialized memory in cairo

2006-03-20  Sebastien Pouliot  <sebastien@ximian.com>

	* texturebrush.c: Ensure we destroy the matrix and the surface when
	disposing the brush. Add a reference to the surface when cloning.

2006-03-20  Sebastien Pouliot  <sebastien@ximian.com> 
 
	* font.c: Re-work font locking not to leak memory (and not to create
	a scaled font when unlocking).
	* graphics.c: Use CleanString (as String has been freed).

2006-03-20  Sebastien Pouliot  <sebastien@ximian.com>

	* graphics.c: Clear the clipping region before data copying into it.
	* region.c: Remove static from gdip_clear_region as we need it in
	graphics.c for clipping.

2006-03-20  Sebastien Pouliot  <sebastien@ximian.com> 
 
	* image.c: Free the filter in GdipGetImageGraphicsContext.
	* pen.c: Use the GDI+ call to create the matrix (GdipCreateMatrix).
	Delete the default (empty) matrix when cloning a pen. Delete the
	matrix when disposing of the pen.

2006-03-19  Sebastien Pouliot  <sebastien@ximian.com>

	* lineargradientbrush.c: The GpRect structure was never freed in 
	GdipCreateLineBrushFromRectWithAngleI. Now allocated on the stack.
	Temporary matrixes weren't freed in gdip_linear_gradient_setup and
	create_tile_linear functions.
	* image.c: Reordered code to avoid using memory we just freed in 
	gdip_get_imageformat_from_codec_clsid.

2006-03-18  Sebastien Pouliot  <sebastien@ximian.com>

	* image.c: Free the image palette on dispose. Also copy (not refer) 
	the palette when cloning the image (so we don't double-free it).

2006-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
 
	* general.c: Call XCloseDisplay after we convert the DPI string as we 
	do not own the 'val' pointer.
	* image.c: Destroy (cairo_pattern_destroy) the pattern we use as a 
	filter in GdipDrawImageRectRect.

2006-03-16  Sebastien Pouliot  <sebastien@ximian.com> 

	* pen.c: Delete the temporary matrix created during gdip_pen_setup.

2006-03-14  Sebastien Pouliot  <sebastien@ximian.com> 

	* matrix.c: Add missing validations on count parameters. Fix return 
	value for an invalid GpMatrixOrder in GdipMultiplyMatrix.

2006-03-14  Peter Dennis Bartok  <pbartok@novell.com> 

	* image.c (DrawImageRect): Added a cairo_save/cairo_restore to
	  fix the issue exposed by Digger (title score board background
	  not drawn when doing the FillRectangle)

2006-03-13  Sebastien Pouliot  <sebastien@ximian.com> 

	* graphics-path.c: Add missing checks for markers. This fixes some 
	issues (e.g. accesing item -1) and also reduce memory allocations for
	empty paths. Return Ok and display a warning when GdipAddString[I] is
	called (instead of returning NotImplemented).

2006-03-06  Jonathan Gilbert  <logic@deltaq.org>

	* pngcodec.c: Added block to handle saving of 8:8:8 images without
	  an alpha channel. The underlying encoding of the image includes
	  a filler byte, so that even Format24bppRgb is 32 bpp under the
	  hood, but when libpng is told to expect RGB data, it expects
	  only 24 bits per pixel, which was corrupting PNG output for
	  Format24bppRgb and Format32bppRgb.

2006-02-24  Sebastien Pouliot  <sebastien@ximian.com> 

	* graphics-path.c: Add missing free in a special case (only one 
	element) of GdipGetPathWorldBounds. Fix typo (X->Y) in 
	GdipGetPathWorldBoundsI.

2006-02-10  Peter Dennis Bartok  <pbartok@novell.com> 

	* font.cs:
	  - Switched GdipCreateFontFromHfont name to GdipCreateFontFromHfontA
	    to allow support charset-based naming when marshaling
	  - Implemented GdipCreateFontFromLogfontA and 
	    GdipCreateFontFromLogfontW

2006-02-08  Sebastien Pouliot  <sebastien@ximian.com> 

	* graphics.c: Added a missing cairo_set_fill_rule in FillPath (which
	fixes bug #77408. Changed DrawPath to use 0, 0 (like FillPath) so
	they both draw at the same place (no blanks) and also behave like 
	DrawRectangle(s) and FillRectangle(s) when compared side-by-side.

2006-02-03  Sebastien Pouliot  <sebastien@ximian.com> 

	* region.c: Fixed a case where gdip_combine_exclude wasn't excluding
	a rectangle if it was identical to the excluding one (see bug #77408
	for an example). Also in gdip_combine_xor we do not need to call 
	gdip_combine_exclude if there's no intersection between the rectangles

2006-02-01  Sebastien Pouliot  <sebastien@ximian.com> 
 
	* image.c: Added some missing argument checks. Implemented 
	GdipDrawImagePointRect to fix bug #77428.

2006-01-31  Sebastien Pouliot  <sebastien@ximian.com>

	* region.c: Added gdip_copy_region to help reusing region copying in
	GdipCloneRegion and GdipGetClip.
	* graphics.c: Fixed GdipGetClipBoundsI to get (not set) the clip. 
	GdipGetClip and GdipFillPath now works with non-rectangular regions. 
	Implemented GdipSetClipPath function. Added null checks for parameters
	in many functions.

2006-01-27  Sebastien Pouliot  <sebastien@ximian.com>

	* gdip.h: Remove duplicate (and identical) definition for LF_FACESIZE.
	* graphics.c: GdipFillRegion now works with non-rectangular regions by
	either calling GdipFillPath or GdipFillRectangles.
	* graphics-path.c: Implemented GdipFlattenPath be re-using Sodipodi's
	libnr nr_curve_flatten.
	* graphics-path.h: Added a recursion limit of 10 when flattening.
	* region.c: Added gdip_is_region_empty which works with any type of 
	region (rectangular or path based). Added special case support (empty
	and/or infinite region) in GdipCombineRegionPath. The common case is
	still missing. GdipTranslateRegion now works with non-rectangular 
	regions.

2006-01-27 Jordi Mas i Hernandez  <jordimash@gmail.com>
	
	* graphics.c:
	  - Fixes font size for printing
	  - Fixes unit conversions from diferent units
	* font.c, gdip.h
	  - Implements GdipGetFontHeight, GdipGetFontHeightGivenDPI and
	    GdipGetFontSize.		

2006-01-26  Sebastien Pouliot  <sebastien@ximian.com>

	* font.c: Use the reference count to [re-]created the generic font
	family (as the pointer isn't null after it is disposed).

2006-01-18  Peter Dennis Bartok  <pbartok@novell.com> 

	* jpegcodec.c: Upconvert an indexed image, to allow saving it;
	  added 1 and 4 bit as supported formats as well. This fixes #77270

2006-01-18  Peter Dennis Bartok  <pbartok@novell.com>

	* gdip.h: Switched GpRection.Cnt to int, to avoid signedness mismatch 
          problems

2006-01-18  Sebastien Pouliot  <sebastien@ximian.com>

	* graphics.c: Started adapting functions to recognize path based 
	regions (while keeping rectangular regions working).
	* region.c: Added function to convert a rectangle based region to a 
	path based region. Started adapting functions to recognize path based
	regions (while keeping rectangular regions working). Implemented 
	GdipCreateRegionRgnData, GdipGetRegionDataSize and GdipGetRegionData 
	(for both path and rectangle based regions).
	* gdip.h: Reordered some typedef to include a GpPath inside GpRegion. 
	Added export for GdipCreateRegionRgnData.

2006-01-17  Peter Dennis Bartok  <pbartok@novell.com>

	* graphics.c: If no trim flag is set we need to wrap, not trim. Every
	  character can be used as wrap character in that case. Fixes #76034

2006-01-16  Sebastien Pouliot  <sebastien@ximian.com>

	* graphics-path.c: Implemented GdipGetPathWorldBounds[I] minus Pen
	support.

2006-01-15 Jordi Mas i Hernandez  <jordimash@gmail.com>

	* graphics.c, image.c, gdip.h, general.c:
		- Implements PageUnit functionality
		- Converts units to Cairo user-space (postscript or display)
		- Each surface has its own x and y dpi
		- Allows setting Postscript dpy's

2006-01-13  Sebastien Pouliot  <sebastien@ximian.com>

	* graphics-path.c: Added checks for the number of points added when
	using AddBeziers (4 points for the first, 3 afterward) and the minimum
	of point required to add a Curve, ClosedCurve and a Polygon.

2006-01-01 Jordi Mas i Hernandez  <jordimash@gmail.com>

	* bitmap.c: Fixes 77131

2005-12-23  Peter Dennis Bartok  <pbartok@novell.com>

	* texturebrush.c: Added handling for indexed texture images

2005-12-22  Peter Dennis Bartok  <pbartok@novell.com>

	* texturebrush.c: Fixed generation of texturebrushes. Was seriously
	  broken

2005-12-22 Jordi Mas i Hernandez  <jordimash@gmail.com>

	* graphics.c: Postscript support for handle
	* image.c: Postscript drawble support for printing
	* gdip.h: Postscript Drawable

2005-12-09 Jordi Mas i Hernandez  <jordimash@gmail.com>

	* graphics.c, image.c: Unreference the surface properly. Now, we do 
	  not leak those and cairo_surface_finish is called.

2005-12-07 Jordi Mas i Hernandez  <jordimash@gmail.com>

	* graphics.c: Fixes 76923

2005-12-06  Peter Dennis Bartok  <pbartok@novell.com>

	* gdip.h:
	  - Removed old wine leftovers for bitmaps
	  - Added GpStatus return value to gdip_bitmap_clone()
	* bitmap.c:
	  - Added handling of failures to gdip_bitmap_clone(), including
	    returning a status
	  - Implemented the GdipCreateBitmapFromHBITMAP() and 
	    GdipCreateHBITMAPFromBitmap() functions. Like with other handles
	    the handle is equivalent to the gdi+ memory pointer

2005-12-05  Peter Dennis Bartok  <pbartok@novell.com>

	* gdip.h:
	  - Removed wine leftover
	  - Added LOGFONTA and LOGFONTW structures (for GdipGetLogFontX)
	  - Added face var to GpFont struct to remember face name
	* font.c:
	  - Implemented GdipGetLogFontA() and GdipGetLogFontW() functions
	  - Implemented GetGetFontFromHfont() function
	  - Droped wine leftovers and added code to remember (and free)
	    the face name of a font

2005-12-02  Jonathan Gilbert  <logic@deltaq.org>

	* bitmap.c: Fixed support for PixelFormat24bppRgb in pixel streams.
	  The count of bytes per pixel for pixel formats with depths of more
	  than 8 bits is now stored negated in the state->pixels_per_byte
	  member of the StreamingState structure.
	* gdip.h: Added comment explaining the meaning of negative values
	  in the pixels_per_byte member of struct StreamingState.
	* bitmap.c: Fixed the copying back of changed bitmap data in the
	  GdipBitmapUnlockBits() method. The condition was erroneously
	  checking for the presence of the GBD_READ_ONLY flag instead of its
	  absence.

2005-11-29  Duncan Mak  <duncan@novell.com>

	* graphics.c (make_arcs, make_pie):
	* graphics-path.c (append_arcs, GdipAddPathPie): Scale alpha and
	beta accordingly because GDI+ deals with elliptical arcs, instead
	of circular arcs.

	Thanks to Bertram Felgenhauer <int-e@gmx.de> from #cairo for
	helping me figure this out.

	This fully fixes #76846.

2005-11-29  Duncan Mak  <duncan@novell.com>

	* graphics.c (make_arcs):
	* graphics-path.c (append_arcs): Add a new flag 'enough' to
	signify that we're done drawing all the subarcs.

	This fixes #76846. Previously, the check for 'enough' incorrectly
	filters out sweep angles with a negative value (i.e. drawing
	'backwards').

2005-11-13  Miguel de Icaza  <miguel@novell.com>

	* image.c: Implement a little bit of mandolin.

2005-11-10  Geoff Norton  <gnorton@customerdna.com>

	* pngcodec.c:  Readd a removed but needed variable for big endian build

2005-11-08  Peter Dennis Bartok  <pbartok@novell.com>

	* gdip.h: Added aa offset vars and hatch origin vars
	* graphics.c:
	  - For all x and y coordinates that are passed to cairo, but not
	    used for fills we now add an offset if anti aliasing is turned
	    off.
	  - Fixed Get/SetRenderOrigin. It is supposed to track the origin
	    for dithering and hatchbrushes.
	* hatchbrush.c: 
	  - hatch lines are no longer are antialiased, except for the 
	    diagonal hatches, which are required to (Removes some fixmes)
	  - Using square cairo line caps for now, to get diagonal lines 
	    to connect
	  - Switched some numbers to more closely match MS again now that
	    we're turning AA off
	* pen.c: Work around cairo drawing a linecap for every element
	  of a dashed line

2005-11-07  Jackson Harper  <jackson@ximian.com>

	* pen.c: Set the width of dashes when creating the dashed array,
	cairo uses the values in the dashed array as the size of the
	dash. This fixes dashed lines with a width greater then 1.

2005-11-07  Kornél Pál  <kornelpal@hotmail.com>

	* bmpcodec.c: Load 32-bit bitmaps as Format32bppRgb.

2005-11-05 Jordi Mas i Hernandez  <jordimash@gmail.com>

	* graphics.c: Fixes 76111 (DrawString does not honor NoWrap)

2005-11-01  Peter Dennis Bartok  <pbartok@novell.com>

	* graphics.c: Implemented smoothing mode support. Now defaulting
	  to non-antialiased drawing

2005-11-01  Jonathan Chambers  <jonathan.chambers@ansys.com>

	* pen.c: LineCapFlat needs to translate to square cairo line caps
	  in order for line lengths to be correct when not aliased

2005-10-23  Jonathan Gilbert <logic@deltaq.org>

	* image.c: Renamed gdip_FlipX() and gdip_rotate_180_FlipX() to
	  gdip_flip_x() and gdip_flip_y() respectively.
	* image.c: Updated GdipDrawImageRectRect to call the functions by
	  their new names.
	* image.c: Renamed copy_pixel()'s third argument 'components' to
	  'size', as pixel components can be more than one byte in size.
	* image.c: Rewrote gdip_flip_x() to use only a single scan of buffer
	  space instead of redoing the entire image. Moved gdip_flip_x() to
	  be adjacent to gdip_flip_y().
	* image.c: Replaced gdip_rotate_90(), gdip_rotate_180(), and
	  gdip_rotate_270() with gdip_rotate_orthogonal_flip_x() which handles
	  all types of rotation and can also integrate a horizontal flip
	  into the rotation. All of the RotateFlipTypes can be reduced to a
	  clockwise rotation of a multiple of 90 degrees optionally followed
	  by a horizontal flip.
	* image.c: Added gdip_rotate_flip_packed_indexed() which does what
	  gdip_rotate_orthogonal_flip_x() does but for 1- and 4-bit Bitmaps,
	  where a single byte contains more than one pixel.
	* image.c: Reworked GdipImageRotateFlip to determine the rotation and
	  whether a flip is required first and then call one of the two core
	  rotation functions to do the appropriate operation.
	* bitmap.c, gdip.h: Moved the definition of the pixel stream code's
	  struct StreamingState from the middle of bitmap.c to gdip.h. The
	  functions were already being exported (non-static), but the
	  structure was inaccessible making pixel streams unusable outside of
	  bitmap.c.
	* gdip.h: Added prototypes for pixel stream functions so that they
	  could be used by gdip_rotate_flip_packed_indexed() in image.c.

2005-10-21  Miguel de Icaza  <miguel@novell.com>

	* hatchbrush.c (gdip_hatch_clone): Also copy and reference the
	brush.  This bug was identified by Zoltan's change to the runtime
	where segfaults in unmanaged code are not translated into
	NullReferences. 

2005-10-19 Jordi Mas i Hernandez  <jordi@ximian.com>

	* font.c: Make us more resistant to situations like bug #74761

2005-10-17 Ruediger Oertel <ro@suse.de>

	* gifcodec.c: Switching from libungif to libgif

2005-10-10 Jordi Mas i Hernandez  <jordi@ximian.com>

	* graphics.c: fixes line width issues when drawing underline/strikeout

2005-10-10 Jordi Mas i Hernandez  <jordi@ximian.com>

	* graphics.c: remove unused vars and dead code
	* font.c: remove unused vars
	* bmpcodec.c: remove unused vars
	* general.c: remove unused vars
	* pathgradientbrush.c: remove unused vars
	* image.c: remove unused vars
	* jpegcodec.c: remove unused vars
	* region.c: remove unused vars
	* tiffcodec.c: remove unused vars
	* imageattributes.c: remove unused vars
	* gifcodec.c: remove unused vars
	* texturebrush.c: remove unused vars
	* matrix.c: remove unused vars
	* customlinecap.c: remove unused vars
	* bitmap.c: remove unused vars
	* pen.c: remove unused vars
	* pngcodec.c: remove unused vars
	* graphics-path.c: remove unused vars
	* lineargradientbrush.c: remove unused vars

2005-10-06  Peter Dennis Bartok  <pbartok@novell.com>

	* adjustablearrowcap.c: Removed unused vars
	* bitmap.c: Removed unused vars
	* font.c: Switched 0 to NULL


2005-10-06  Peter Dennis Bartok  <pbartok@novell.com>

	* general.c: Fixed bug in ucs2 termation code; code assumed
	  a byte array, so we always terminated twice as many bytes in as
	  we wanted to. This was also causing 'random' crashes at much later
	  times since depending on the situation we'd write 0 past the end
	  of ucs2_len  (This is half of the bugfix for #74871 and #75534)

2005-10-06 Jordi Mas i Hernandez  <jordi@ximian.com>

	* gifcodec.c: Fixes a warning (an error since we use -Werror) when 
	using libgif 4.0)

2005-10-06 Jordi Mas i Hernandez  <jordi@ximian.com>

	* image.c: Partially fixes 75063
	* matrix.c: Some documentation about matrices

2005-10-03  Duncan Mak  <duncan@novell.com>

	* graphics.c (make_arcs):
	* graphics-path.c (append_arcs): Helper functions for dividing
	the arcs into smaller segments. Properly handles negative starting
	angles and sweep angles.

	* graphics-path.c (GdipAddPathArc, GdipAddPathPie): 
	* graphics.c (GdipDrawArc, make_pie): Simplified to make use of the
	new helper functions.

2005-09-20 Jordi Mas i Hernandez  <jordi@ximian.com>

	* image.c, gdip.h, image.c: Creates the surface and then creates the 
	graphics context. This is not only reduces the operations need it, also
	and more avoids to lose the values that we have init into cairo.

2005-09-21  Peter Dennis Bartok  <pbartok@novell.com>

	* bmpcodec.c: The alpha value in a indexed color table is never
	  valid. Since the indexed bitmap code uses the color value from
	  the table directly, we need to always set the alpha to 0xFF. This
	  matches MS behaviour (Custom cursors are a good testcase for this,
	  since they are generated through an intermediate BMP step)

2005-09-20 Jordi Mas i Hernandez  <jordi@ximian.com>

	* bitmap.c: Fixes bug 76152

2005-09-19  Peter Dennis Bartok  <pbartok@novell.com>

	* graphics.c: Remove AA setting; fixes bug #76135. Needs to have a save
	  restore of previous AA settings

2005-09-15 Jordi Mas i Hernandez  <jordi@ximian.com>

	* region.c: Speed ups CombineModeReplace mode and fixes setting Infite

2005-09-13 Jordi Mas i Hernandez  <jordi@ximian.com>

	* graphics.c:
	* gdip.h:
		- Fixes some default values
		- Fixes bug 76089
		- GdipRestoreGraphics and GdipSaveGraphics save all the status
		- Fixes pixelOffsetMode setting
	
2005-09-13 Jordi Mas i Hernandez  <jordi@ximian.com>

	* region.c: Fixes region for combine (used in clipping)

2005-09-12 Jordi Mas i Hernandez  <jordi@ximian.com>

	* font.c: Fixes font creation and italic issues, death code
	* general.c: Fixes font creation and italic issues, death code
	* gdip.h: Fixes font creation and italic issues, death code


2005-09-09 Jordi Mas i Hernandez  <jordi@ximian.com>

	* graphics.c: Implements GdipFlush

2005-09-08  Peter Dennis Bartok  <pbartok@novell.com>

	* graphics.c: 
	  - MeasureOrDrawString: Fixed underline/strikethrough calculations
	  - Removed old conditional code attempting to avoid cairo AA problems
	  - Implemented setting/getting of AntiAlias variables
	  - MeasureOrDrawString: Added code to handle font antialiasing 
	    options; still inoperative
	* gdip.h: Added fields to support antialias settings

2005-09-07 Jordi Mas i Hernandez  <jordi@ximian.com>

	* graphics.c: fixes cairo handles leaks
	* image.c: optimise and fix leaks

2005-09-06 Jordi Mas i Hernandez  <jordi@ximian.com>

	* graphics.c: Makes DrawString clipping not destroy previous clipping

2005-09-06 Jordi Mas i Hernandez  <jordi@ximian.com>

	* graphics.c: removes non-ansi comments or not longer need it
	* font.c: removes non-ansi comments or not longer need it
	* general.c: removes non-ansi comments or not longer need it
 	* image.c: removes non-ansi comments or not longer need it
	* pen.c: removes non-ansi comments or not longer need it
	* gdip.h: removes non-ansi comments or not longer need it
	* lineargradientbrush.c: removes non-ansi comments or not longer need it

2005-09-06 Jordi Mas i Hernandez  <jordi@ximian.com>

	* graphics.c: Clipping support

2005-09-06 Jordi Mas i Hernandez  <jordi@ximian.com>

	* graphics.c: several fixes to rect/region clipping operations
	* region.c: fixes and include CombineModeReplace  mode

2005-09-05 Jordi Mas i Hernandez  <jordi@ximian.com>

	* image.c: fixes return parameter and GdipLoadImageFromFileICM call
	* gdipImage.h: include GdipLoadImageFromFileICM definition
	* bitmap.c: new GDI calls
	* gdip.h: definitions

2005-08-26  Geoff Norton  <gnorton@customerdna.com>

	* graphics.c: Update the Quartz constructors for the new Cairo 1.0
	API calls

2005-08-26 Jordi Mas i Hernandez  <jordi@ximian.com>

	* lineargradientbrush.c: fixes issues with angle

2005-08-26  Peter Dennis Bartok  <pbartok@novell.com>

	* hatchbrush.c: Wouldn't it be nice to clean the cairo stuff when
	  destroying the brush

2005-08-26  Peter Dennis Bartok  <pbartok@novell.com>

	* image.c: Now scales/resizes images to destination rectangle
	* gdip.h: Removed gdip_cairo_set_surface_pattern() prototype
	* general.c: Removed gdip_cairo_set_surface_pattern() method, it's
	  no longer used

2005-08-26  Peter Dennis Bartok  <pbartok@novell.com>

	* gdip.h, general.c: Removed gdip_cairo_set_surface_pattern_with_extend
	  since it's no longer needed (replaced with less code directly in  
	  hatchbrush)

2005-08-26  Peter Dennis Bartok  <pbartok@novell.com>

	* hatchbrush.c: Fixed context leaks (We're also no longer 
	  abusing the passed cairo_t context as the pattern context)

2005-08-26  Peter Dennis Bartok  <pbartok@novell.com>

	* hatchbrush.c: Fixed 40% and plaid drawing, resolved ct corruption and
	  nesting bugs

2005-08-26  Hisham Mardam Bey <hisham.mardambey@gmail.com>

	* hatchbrush.c: remove extra paint calls and fix cairo_save/restore
	  calls.

2005-08-25  Peter Bartok  <pbartok@novell.com>

	* hatchbrush.c: Preventing 50% hatch brush ct from getting whacked 
	  (need to do all other styles as well)
	* lineargradientbrush.c:
	  - Fixed missing initialization of brush matrix
	  - Preventing cairo context from getting whacked

2005-08-25 Jordi Mas i Hernandez  <jordi@ximian.com>

	* image.c: fixes issues of images drawn on the wrong place

2005-08-25 Jordi Mas i Hernandez  <jordi@ximian.com>

	* graphics.c:
		- Fixes leaking on GdipDeleteGraphics
		- Fixes GdipGetDC bug exposed by Marek changes into graphics.cs

2005-08-25 Jordi Mas i Hernandez  <jordi@ximian.com>

	* hatchbrush.c: use correct enumerator for cairo calls
	* matrix.c: fixes GdipShearMatrix method

2005-08-25  Hisham Mardam Bey <hisham.mardambey@gmail.com>
       
        * hatchbrush.c: removed cairo_paint calls, we still have a few, must
	  look into them. Fixed remaining cairo_paint and patter problems.
	* general.c: added gdip_cairo_set_surface_pattern_with_extend
	* gdip.h: added gdip_cairo_set_surface_pattern_with_extend
       
2005-08-24  Peter Bartok  <pbartok@novell.com>

	* hatchbrush.c: Fixed 50% hatchbrush drawing. Still need to fix all
	  other 50 gazillion hatchbrushes :-(

2005-08-24  Peter Bartok  <pbartok@novell.com>

	* gdip.h: Removed prototypes for internal strikethrough and underline
	  functions; those are no longer used
	* font.c:
	  - Cairo switched to positive font descent number, fixed code to match
	  - Removed unused methods for strikethrough and underline; drawstring
	    handles that behaviour internally
	* graphics.c (DrawString): Cairo switched to positive descent values
	  for font extents, switched the code to handle that

2005-08-24 Jordi Mas i Hernandez  <jordi@ximian.com>

	* graphics.c: fixes gcc 4 warning
	* general.c: from_cairoformat_to_content function
	* texturebrush.c: fixes texture brushes
  	* matrix.c:
		* All the create function allocate the memory 
		* Fixes GdipCloneMatrix function	
		* Fixes GdipIsMatrixEqual 
		* Fixes GdipIsMatrixInvertible (always returned true) 
		* Fixes GdipGetMatrixElements (wrong order)

2005-08-24 Hisham Mardam Bey  <hisham.mardambey@gmail.com>

        * pen.c : remove debugging printf.

2005-08-24 Jordi Mas i Hernandez  <jordi@ximian.com>

	* hatchbrush.c, lineargradientbrush.c. Cairo has changed the format
	enum parameter for cairo_surface_create_similar. This fixes many samples
	not running. 

2005-08-23  Peter Bartok  <pbartok@novell.com>

	* graphics.c: The original CalculateStringWidths method was dependent
	  on FT and internal knowledge of cairo font matrix behaviour, and the
	  function broke with the newer cairo due to changes to this behaviour.
	  Renamed the original to CalculateStringWidthsUTF8 and wrote a new 
	  method which uses cairo_text_extents to calculate character widths. 
	  This is somewhat slower but works font-backend independent.
	* general.c: Added ucs2 to utf8 char encoder and decoder (allows
	  faster calculations than the malloc-dependent utf8 string functions)
	* gdip.h: Added prototypes for utf8 character functions

2005-08-22 Jordi Mas i Hernandez  <jordi@ximian.com>

	* region.c: fixes memory leaks
	* pen.c: releases the solid brush when is owned by us
	* gdip.h: releases the solid brush when is owned by us
	
2005-08-19  Zoltan Varga  <vargaz@freemail.hu>

	* gifcodec.c (gdip_save_gif_image_to_file): Fix compilation without GIF
	support.

2005-08-19 Jordi Mas i Hernandez  <jordi@ximian.com>

	* graphics.c: Standarize mem alloc/free with GdipAlloc/GdipFree
	* font.c: Standarize mem alloc/free with GdipAlloc/GdipFree
	* bmpcodec.c: Standarize mem alloc/free with GdipAlloc/GdipFree
	* general.c: Implement linked list to keep track of leaks
	* image.c: Standarize mem alloc/free with GdipAlloc/GdipFree
	* region.c: Standarize mem alloc/free with GdipAlloc/GdipFree
	* jpegcodec.c: Standarize mem alloc/free with GdipAlloc/GdipFree
	* imageattributes.c: Standarize mem alloc/free with GdipAlloc/GdipFree
	* gifcodec.c: Standarize mem alloc/free with GdipAlloc/GdipFree 
	* texturebrush.c: Standarize mem alloc/free with GdipAlloc/GdipFree
	* bitmap.c: Standarize mem alloc/free with GdipAlloc/GdipFree
	* stringformat.c: Standarize mem alloc/free with GdipAlloc/GdipFree
	* pen.c: Standarize mem alloc/free with GdipAlloc/GdipFree
	* gdip.h: define GdipCalloc
	* graphics-path.c: Standarize mem alloc/free with GdipAlloc/GdipFree

2005-08-19 Jordi Mas i Hernandez  <jordi@ximian.com>

	* bmpcodec.c: fixes codec for 24 bits bmps. It passes the tests again.

2005-08-18 Jordi Mas i Hernandez  <jordi@ximian.com>

	* graphics.c: C ANSI language fixes
	* bmpcodec.c:  C ANSI language fixes 
	* general.c:  C ANSI language fixes
	* tiffcodec.c:  C ANSI language fixes 
	* bitmap.c:  C ANSI language fixes 

2005-08-17 Jordi Mas i Hernandez  <jordi@ximian.com>

	* region.c: Rewritten region support

2005-08-10 Jordi Mas i Hernandez  <jordi@ximian.com>

	* region.c: Rewritten gdip_combine_intersect method

2005-08-09 Jordi Mas i Hernandez  <jordi@ximian.com>

	* region.c: Optimise union operation

2005-07-21  Duncan Mak  <duncan@novell.com>

	* graphics.c (make_pie): Fix #75475. Use sweepAngle (instead of
	endAngle) when drawing the arcs.

	"The arc always starts at 0. For the fill method the effect is that
	a pie ending at 360 will fill the whole circle..."	

	Patch from Patrick Michel <PBMichel@web.de>.
	
2005-07-01  Jonathan Gilbert  <logic@deltaq.org>

	* bitmap.c: Fixed bug in GdipCreateBitmapFromScan0's default palette
	  initialization. Corrected GdipBitmapGetPixel to permit the operation
	  on indexed bitmaps (uses pixel streams :-).

2005-06-30  Peter Bartok  <pbartok@novell.com>

	* general.c (ucs2_to_utf8): Added argument to allow specifying the
	  string length (to allow converting substrings)
	* graphics.c (MeasureOrDrawString, MeasureString): Fixed handling
	  of Tabs, now properly advances to the next valid tab stop, if
	  tabs are specified.
	* font.c, image.c: Changed usage of ucs2_to_utf8 to match new prototype
	* gdip.h:
	- Removed TabWidth from GpStringDetailStruct, was obsoleted by
	  tab-redo
	- Changed prototype of ucs2_to_utf8(), added length argument

2005-06-21  Geoff Norton  <gnorton@customerdna.com>

	* graphics.c (GdipCreateFromQuartz_macosx): Set the size of the
	context in the bounds structure.  Fixes #75326

2005-06-13  Peter Bartok  <pbartok@novell.com>

	* bitmap.c, image.c, gdip.h, bmpcodec.c, jpegcodec.c, tiffcodec.c,
	  gifcodec.c, gifcodec.h, pngcodec.c, pngcodec.h: Re-applied two 
	  previous changes, since #75254 is now fixed

2005-06-13  Peter Bartok  <pbartok@novell.com>

	* Rolled back last two checkins, to r45601, pre palette patch, due
	  to the regression caused with Icons (bug #75254)

2005-06-07  Geoff Norton  <gnorton@customerdna.com>

	* bmpcodec.c: 
	* image.c: Fix some (un)signed mismatch issues so that gdiplus
	will compile on gcc 4.0 again with -Werror

2005-05-30  Jonathan Gilbert  <logic@deltaq.org>

	* bitmap.c: Added indexed pixel formats to
	  gdip_is_a_supported_pixelformat().
	* bitmap.c: Added gdip_is_an_indexed_pixelformat(). Added its
	  prototype to gdip.h; not sure if this is the correct place.
	* bitmap.c: Added support for PixelFormat.Format4bppIndexed to
	  GdipCreateBitmapFromScan0 (maps to CAIRO_FORMAT_A8, like
	  PixelFormat.Format8bppIndexed). Palettes will be created
	  as needed. Bitmaps with a 4bpp indexed pixel format will be
	  given 256-entry ColorPalette structures, as the cairo_format
	  indicates 8-bit data.
	* bitmap.c: GdipCreateBitmapFromScan0 now computes stride for
	  indexed pixel formats differently, and does not convert
	  indexed pixel formats to 32-bit RGB. It also makes images with
	  32-bit pixel formats initially black instead of initially
	  transparent and fills the palette with the default values for
	  1-, 4- and 8-bpp indexed images.
	* bitmap.c: Added support for indexed images to
	  gdip_bitmap_clone_data_rect().
	* bitmap.c: Rewrote GdipBitmapLockBits () to be maintainable
	  while supporting indexed pixel formats. Added
	  gdip_can_window_without_copy (), gdip_is_a_32bit_pixelformat (),
	  gdip_make_alpha_opaque () and gdip_is_an_alpha_pixelformat ().
	* bitmap.c: Moved gdip_from_ARGB_to_RGB () and
	  gdip_from_RGB_to_ARGB () above gdip_bitmap_change_rect_pixel_format (),
	  so that gdip_bitmap_change_rect_pixel_format () can call them.
	* bitmap.c: Added struct StreamingState and methods
	  gdip_init_pixel_stream (), gdip_pixel_stream_has_next (),
	  gdip_pixel_stream_get_next () and gdip_pixel_stream_set_next () to
	  work with Bitmaps of various formats in an abstract way.
	  gdip_pixel_stream_get_next () returns and
	  gdip_pixel_stream_set_next () accepts 32-bit ARGB values for 15,
	  16, 24, 32, 48 and 64 bit formats and palette indices for 1, 4 and
	  8 bit formats. gdip_pixel_stream_get_next () and
	  gdip_pixel_stream_set_next () cannot be mixed; call either one or
	  the other on a given stream, but never both.
	* bitmap.c: Rewrote gdip_bitmap_change_rect_pixel_format to use
	  pixel streams, which adds support for indexed pixel formats and
	  increases maintainability.
	* bitmap.c: Added check to GdipBitmapSetPixel ensuring that
	  the bitmap is not indexed (despite what MSDN says, in
	  practice Microsoft's implementation rejects SetPixel on
	  indexed Bitmaps).
	* bitmap.c: Added gdip_convert_indexed_to_rgb (), which will
	  be used by the functions implementing DrawImage, since
	  gdip_bitmap_ensure_surface () is not compatible with indexed
	  image data.
	* image.c: Added support for indexed pixel formats in
	  GdipDrawImageRect and GdipDrawImageRectRect. The support is
	  for the image being drawn to be indexed, not the image
	  being drawn on. :-)
	* image.c: Implemented GdipGetImagePalette (),
	  GdipSetImagePalette () and GdipGetImagePaletteSize ().
	* bmpcodec.c: Corrected gdip_bitmap_fill_info_header ()'s
	  interpretation of pixel bit widths.
	* bmpcodec.c: Added include directive for gdipImage.h, for
	  utility function gdip_get_pixel_format_bpp ().
	* bmpcodec.c: Updated gdip_bitmap_save_bmp () to save the
	  palette for indexed bitmaps. Also modified the save function
	  to not swap bytes for indexed pixel formats on big-endian
	  architectures.
	* bmpcodec.c: Updated gdip_read_bmp_image_from_file_stream ()
	  to maintain 1, 4 and 8 bpp indexed data instead of converting
	  it on-the-fly to 32 bpp RGB data.
	* bmpcodec.c: Updated gdip_get_pixelformat () to translate
	  a bit width of 1 into Format1bppIndexed.
	* bmpcodec.c: Added support for decoding 4- and 8-bit RLE
	  bitmaps.
	* gifcodec.c: Updated gdip_save_gif_image () to support saving
	  indexed images. Also, an off-by-one error in the 32-bit ARGB
	  side of the encoder was corrected (the image was translated
	  left one pixel).
	* jpegcodec.c: Updated gdip_save_jpeg_image_internal () to
	  reject 8bpp indexed images that are not grayscale (the
	  previous behaviour was to assume all 8bpp indexed images
	  are grayscale).
	* tiffcodec.c: Updated gdip_save_tiff_image () to reject
	  indexed images as NotImplemented, for now at least.
	* pngcodec.c: Updated gdip_load_png_image_from_file_or_stream ()
	  to handle 1-, 4- and 8-bit PNG files separately, without
	  upsampling the data to 32-bit RBG.
	* gdip.h: Fixed the set_pixel_bgra () macro; a lack of
	  parentheses and no cast down to 'unsigned char' was making
	  expressions like set_pixel_bgra (&array[i], ...) fail to
	  compile, and it wasn't a proper statement; it could not be used
	  in a construct like "if (...) set_pixel_bgra(...); else ...;".

2005-05-25  Peter Bartok  <pbartok@novell.com>

	* graphics.c, font.c, image.c, general.c, gdip.h: Replaced UTF8/UTF16 
	  conversion with UCS2/UTF8 conversion (The MS APIs do not use UTF16)

2005-05-24  Duncan Mak  <duncan@novell.com>

	* graphics-path.c (append_arc): Append PathPointTypeLine instead
	of PathPointTypeStart, so that arcs will be joint properly. This
	fixes bug #75015. Thanks to Elliot Paquette for reporting and
	fixing this bug.

2005-05-24  Duncan Mak  <duncan@novell.com>

	* graphics.c (make_pie, GdipDrawArc): 
	* graphics-path.cs (GdipAddPathArc, GdipAddPathPie): Rewrote the
	code for calculating arcs: instead of drawing two arcs via a
	mid-point, draw multiple arcs at intervals of 90 degrees. This
	results in prettier arcs/pies and a better match to the output
	produced by MS.

2005-05-20  Duncan Mak  <duncan@novell.com>

	* graphics-path.c (GdipAddPathArc): Added a special case for
	drawing ellipses, and remember to use abs() with 'sweepAngle' to
	ensure correctness when the angle is negative.

	This is basically a port of the previous commit.

2005-05-09  Duncan Mak  <duncan@novell.com>

	* graphics.c (make_pie, GdipDrawArc): when evaluating angles,
	always use abs(). This fixes the drawing of arcs and pies when the
	sweep angle is negative.

	Bug #63360 has also been fixed. This was a bug reported by
	Ravindra in August '04 about a hang when "the difference between
	width and height of rectangle is 1 and angles sum is close to
	360". My change doesn't affect this bug. #63360 didn't hang in
	libgdiplus 1.1.7 as is, so it was actually fixed by the Cairo
	guys.
	
2005-05-06 Jordi Mas i Hernandez  <jordi@ximian.com>

	* image.c: Only free memory blocks that are owned by us

2005-05-05 Jordi Mas i Hernandez  <jordi@ximian.com>

	* graphics.c:
		- Empty the region before working with it
		- Move printf into debug bloc
	* region.c:
		- Fixes infinite regions

2005-04-28 Jordi Mas i Hernandez  <jordi@ximian.com>

	* tiffcodec.c: Inits Byte and ByteCount to avoid releasing not allocated
	blocks GdipDisposeImage. Fixes testgdi.c test.

2005-04-27 Jordi Mas i Hernandez  <jordi@ximian.com>

	* graphics.c:
		- Set bounds when using a X Drawable
		- Fixes GdipGraphicsClear to make it work with X Drawables
	* gdip.h: define new function

2005-04-20  Jackson Harper  <jackson@ximian.com>

	* hatchbrush.c: Don't require that hatch brushes be created on a
	context with an attached bitmap.

2005-04-07 Neale Ferguson <NealeFerguson@earthlink.net>

	* gifcodec.c: Eliminate warning message and optimize breakdown of RGB field.

2005-03-30 Peter Bartok  <pbartok@novell.com>

	* font.c: Added locking for font cache
	* general.c: Grab DPIs on startup, avoid potential race condition 
	  with multiple threads using gdiplus and trying to get dpi

2005-03-29 Peter Bartok  <pbartok@novell.com>

	* bitmap.c: Removed set_pixel_bgra() and get_pixel_bgra() functions,
	  re-made them as macros, since inlining only works for static functions
	* gdip.h: Added set/get_pixel_bgra macros; removed prototypes
	* imageattributes.c: Fixed code to work with set/get_pixel_bgra macros
	* bmpcodec.c: Added code to deal with the (wrong) assumption that 
	  Stream.Read will always return the number of bytes requested if the
	  stream end has not been hit (related to bug #72588)

2005-03-22 Jordi Mas i Hernandez  <jordi@ximian.com>

	* image.c, bitmap.c: implement gdip_image_clone to copy Image structs properly
	and fix GdipCloneImage memory corruption problems.

	* gdip.h: inline set_pixel_bgra/get_pixel_bgra functions


2005-03-22  Jordi Mas i Hernandez  <jordi@ximian.com>

	* bmpcodec.c: 
	  - Fixes 24 bits bitmap loading
	  - Fixes leaks when exiting on error conditions
	  - Sets the img->image.pixFormat propertly
	  - Sets bmfh.bfOffBits when saving *before* start using it

	* imageattributes.c
	  - Implements colour matrix processing and GdipSetImageAttributesColorMatrix

	* bitmap.c:
	  - Fixes stride calculation (was causing many problems)
	  - Moves set_pixel_bgra into bitmap.c and creates get_pixel_bgra

2005-03-18  Peter Bartok  <pbartok@novell.com>

	* graphics.c: Instead of throwing NotImpl exception, we display a 
	  message that the function isn't implemented yet on the TransformPoints
	  functions

2005-03-18  Peter Bartok  <pbartok@novell.com>

	* imageattributes.c: Instead of throwing NotImpl exception, we display a 
	  message that the function isn't implemented yet on the SetColorMatrix 
	  function

2005-03-18  Peter Bartok  <pbartok@novell.com>

	* graphics-path.c: Instead of throwing NotImpl exception, we display a 
	  message that the function isn't implemented yet on the Bounds functions

2005-03-18  Peter Bartok  <pbartok@novell.com>

	* gifcodec.c: Fixed prototype for no gif lib codepath; was missed with
	  GCC4 changes

2005-03-17  Jordi Mas i Hernandez  <jordi@ximian.com>

	* pngcodec.c: fixes warnings for GCC4
	* gdip.h: fixes warnings for GCC4
	* graphics.c: fixes warnings for GCC4
	* font.c: fixes warnings for GCC4
	* bmpcodec.c: fixes warnings for GCC4
	* image.c: fixes warnings for GCC4
	* jpegcodec.c: fixes warnings for GCC4
	* tiffcodec.c: fixes warnings for GCC4
	* gifcodec.c: fixes warnings for GCC4
	* texturebrush.c: fixes warnings for GCC4
	* gifcodec.h: fixes warnings for GCC4
	* bitmap.c: fixes warnings for GCC4
	* pngcodec.c: fixes warnings for GCC4

2005-03-17  Peter Bartok  <pbartok@novell.com>

	* image.c (iGdipLoadImageFromDelegate_linux): Now calls GetHeader 
	  delegate for determining the image type, instead of GetBytes, to
	  allow usage with non-seekable streams
	* gdipImage.h: Changed GdipLoadImageFromDelegate_linux() prototype to
	  include the new StreamGetHeader method
	* gdip.h: Added definition for new GetHeader delegate

2005-03-15  Jordi Mas i Hernandez  <jordi@ximian.com>

	* graphics.c: Fixes GdipSetWorldTransform. We should copy the passed matrix 
	not to point to it

2005-02-24  Jordi Mas i Hernandez  <jordi@ximian.com>

	* region.c: Fixes IsVisible methods

2005-02-22  AJ Frantz  <eckzow@gmail.com>

	* bitmap.c: 64bit stride fixes.

2005-02-20  Peter Bartok  <pbartok@novell.com>

	* bitmap.c: More 64bit stride fixes
	* pngcodec.c: 64bit stride fixes

2005-02-20  Peter Bartok  <pbartok@novell.com>

	* gdip.h: Added pixman.h include to get pixman_bits_t
	* bitmap.c: Made stride calculations based on pixman_bits_t, to
	  properly work on 64bit platforms as well

2005-02-19  Peter Bartok  <pbartok@novell.com>

	* graphics.c:
	  - Setting the appropriate cairo operator when GdipSetCompositingMode
	    is called.
	  - Added (very hacked) GdipMeasureCharRanges()

2005-02-19  Geoff Norton  <gnorton@customerdna.com>

	* bitmap.c: (GdipBitmapSetPixel) Make this endian aware.

2005-02-18  Miguel de Icaza  <miguel@novell.com>

	* graphics.c: Implement GdipGetCompositingMode,
	GdipSetCompositingMode, GdipGetCompositingQuality,
	GdipSetCompositingQuality: The quality ones dont do anything. 
	
	* solidbrush.c: Setup the alpha channel, only if the composite
	mode is set to ComposintingModeSourceOver (the default) that does
	alpha blending.

	* pen.c (GdipGetPenEndCap, GdipSetPenEndCap): Avoid crashing,
	even if we dont do anything with them yet.

2005-02-16  Peter Bartok  <pbartok@novell.com>

	* bitmap.c (gdip_bitmap_clone_data_rect): Patch suggested by 
	  Scott Mohekey, preventing use of uninitialized variable

2005-02-16  Miguel de Icaza  <miguel@novell.com>

	* bitmap.c: Handle the case where GdipAlloc returns NULL,
	propagate the error everywhere.

2005-02-10  Geoff Norton  <gnorton@customerdna.com>

	* general.c: Drop the last usage of GDIPLUS_NOX, if we can't open
	the display fall back to 96.0f (changed new default to 96 from 72)

2005-02-06  Geoff Norton  <gnorton@customerdna.com>

	* gifcodec.c: Fix a typo

2005-02-03  Jordi Mas i Hernandez  <jordi@ximian.com>

	* region.c: Call GdipSetInfinite for empty regions

2005-01-28  Peter Bartok  <pbartok@novell.com>

	* gdip.h, graphics.c: Switched hDC type from int to void. That's what
	  MS has for them, and also, it is required to compile on 64bit 
	  platforms (fixes bug #71823)

2005-01-28  Geoff Norton  <gnorton@customerdna.com>

	* bmpcodec.c:  Make this endian aware for saving bitmaps.

2005-01-28  Peter Bartok  <pbartok@novell.com>

	* pathgradientbrush.c (GdipMultiplyPathGradientTransform): Don't
	  destroy the matrix we're about to destroy. Fixes bug introduced
	  in r39075. Patch by Peter Johanson

2005-01-27  Geoff Norton  <gnorton@customerdna.com>

	* tiffcodec.c: Make this endian aware for image saving as well

2005-01-26  Peter Bartok  <pbartok@novell.com>

	* pngcodec.c (gdip_save_png_image_to_file_or_stream): Moved definition 
	  of variable into new block, to keep Ansi compilers happy, also helped
	  readability by giving both Big and Little endian their own loop

2005-01-26  Geoff Norton  <gnorton@customerdna.com>

	* tiffcodec.c: Fix problem with file callback writer.

2005-01-26  Geoff Norton  <gnorton@customerdna.com>

	* pngcodec.c:
	  jpegcodec.c:
	  gifcodec.c:  Make these write files properly on big endian machines

2005-01-26  Peter Bartok  <pbartok@novell.com>

	* bmpcodec.c: We convert all images to 32bit, no longer need the
	  palette

2005-01-26  Geoff Norton  <gnorton@customerdna.com>

	* tiffcodec.c: Use the tiff callback functions to allow
	tiff reading to work on Mac.

2005-01-26  Geoff Norton  <gnorton@customerdna.com>

	* gifcodec.c: Use set_pixel_bgra so that big endian machines can
	load gif and have them look right.

2005-01-26  Geoff Norton  <gnorton@customerdna.com>

	* jpgcodec.c: Use set_pixel_bgra so that big endian machines can
	load jpgs and have them look right.

2005-01-26  Geoff Norton  <gnorton@customerdna.com>
	
	* bmpcodec.c: Move set_pixel_bgra to gdip.h
	* gdip.h: Add set_pixel_bgra
	* pngcodec.c: Use set_pixel_bgra so that big endian machines can
	load pngs and have them look right.

2005-01-26  Peter Bartok  <pbartok@novell.com>

	* bmpcodec.c: Since we 'upgrade' all bitmaps to 32bit, make sure we
	  store the format as such, too

2005-01-26  Peter Bartok  <pbartok@novell.com>

	* bmpcodec.c: Implemented 32bit support; while no 32bit BMP files
	  exist, we will generate those internally, to support icons and cursors

2005-01-26  Peter Bartok  <pbartok@novell.com>

	* bmpcodec.c: 
	  - Fixed generation of color tables (RGBA order)
	  - Fixed monochrome image translation

2005-01-26  Geoff Norton  <gnorton@customerdna.com>

	* bmpcodec.c: Swap from RGBA to ABGR on big endian systems.

2005-01-26  Peter Bartok  <pbartok@novell.com>

	* bmpcodec.c: Fixed R/B swap mistake

2005-01-26  Peter Bartok  <pbartok@novell.com>

	* bmpcodec.c: Cleaner version, also a bit faster

2005-01-26  Peter Bartok  <pbartok@novell.com>

	* bmpcodec.c: Added ability to read 1, 4 and 8 bit images
	  as well as 24 bit images, simplified readying by doing the
	  read/assignment and RGB to ARGB in one go

2005-01-20  Peter Bartok  <pbartok@novell.com>

	* graphics.c:
	  - Using new macro to deal with post 0.3.0 cairo changes in font APIs
	  - Added Geoff Norton's changes for Mac OS X support
	* font.c: Using new macro to deal with post 0.3.0 cairo changes in font APIs
	* gdip.h: 
	  - Changes to match cairo 0.3.0 release
	  - Added code for post 0.3.0 cairo support

2005-01-20  Jackson Harper  <jackson@ximian.com>

	* graphics.c: These are floats.
	
2005-01-17  Peter Bartok  <pbartok@novell.com>

       * graphics.c:
       * lineargradientbrush.c
       * lineargradientbrush.h:
       * pathgradientbrush.c:
       * matrix.c:
       * texturebrush.c:
       * texturebrush.h:
       * pen.c:
       * gdip.h: Another attempt at dealing with the cairo change making 
	 the cairo_matrix_t type internal. I gave Jackson some wrong info
	 in the previous attempt.

2005-01-14  Jackson Harper  <jackson@ximian.com>

       * graphics.c:
       * lineargradientbrush.c
       * lineargradientbrush.h:
       * pathgradientbrush.c:
       * matrix.c:
       * texturebrush.c:
       * texturebrush.h:
       * pen.c:
       * gdip.h: Current cairo in cvs has made the cairo_matrix_t
       variable internal. These are updates to compile with current
       cairo, all the changes should work with older versions of cairo as
       well.

2005-01-14  Jackson Harper  <jackson@ximian.com>

	* gdip.h: Remove the hdc stuff that was used with wine. Add fields
	for the x display and drawable so that they can be used when
	creating a graphics object from an hdc.
	* graphics.c (GdipCreateFromHDC): Implement, just create a new
	graphics object and copy the drawable from the old one.
	* graphics.c (GdipCreateFromXDrawable_linux): Copy the display and
	drawable params to the graphics structure so they can be used in
	CreateFromHDC.
	
2005-01-07  Peter Bartok  <pbartok@novell.com>

	* graphics-path.c, hatchbrush.c: Applied patch submitted by 
	  andersb@blacksun.ca to compile with gcc2, fixes bug #65708

2005-01-07  Peter Bartok  <pbartok@novell.com>

	* image.c (GdipDrawImageRect): Start a new path before calling
	  cairo_translate, it seems thats what other cairo apps do, and it
	  fixes the problem Jackson reported, where images would not show 
	  after text was drawn

2005-01-07  Peter Bartok  <pbartok@novell.com>

	* font.c: replaced tempnam() with mkstemp() as requested by
	  tempnam() documentation
	* general.c: Removed c++ - ism
	* gdip.h: Added unistd.h for functions used in font.c

2005-01-06  Miguel de Icaza  <miguel@ximian.com>

	* tiffcodec.c: Cast the third argument to thandle_t to supress
	errors on certain distros.  Fixes 70456

2005-01-05  Peter Bartok  <pbartok@novell.com>

	* graphics.c (MeasureOrDrawString): If the string doesn't fit in
	  the bounding box and no breaks are allowed or possible, the code
	  will now not loop anymore.

2005-01-04  Peter Bartok  <pbartok@novell.com>

	* graphics.c (MeasureOrDrawString): Return 0 instead of
	  InvalidParameter if the string being measured has zero length, this
	  matches MS behaviour; also added earlier check for zero length 
	  to avoid utf conversion overhead.

2005-01-02  Jordi Mas  <jordi@ximian.com>

	* graphics.c, font.c, general.c, bmpcodec.h, image.c,
	region.c, jpegcodec.h, imageattributes.c, gdipImage.h,
	tiffcodec.h,  gifcodec.h,bitmap.c, stringformat.c,
	pngcodec.h, Makefile.am, gdip.h: removes old Wine
	glue code

	* gdip_win32.c, gdip_win32.h: remove it

2004-12-30  Miguel de Icaza  <miguel@ximian.com>

	* bitmap.c (gdip_bitmap_clone): Also clone the ->Bytes array which
	is fileld in by gifcodec.c and image.c as well

2004-12-28  Zoltan Varga  <vargaz@freemail.hu>

	* graphics.c (CalculateStringWidths): Fix 64 bit issues.

2004-12-27  Zoltan Varga  <vargaz@freemail.hu>

	* gdip.h: Make the members of various structures the same size as 
	their managed counterparts on 64 bit platforms.

	* gdip_win32.h: Do not define __stdcall under amd64.

2004-12-16  Peter Bartok  <pbartok@novell.com>

	* graphics.c:
	  - GdipGetDC(): Removed Wine logic
	  - GdipReleaseDC(): Removed Wine logic

	* font.c:
	  - Removed CreateFontFromHDCorHfont (Wine specific)
	  - GdipCreateFontFromDC(): Removed Wine logic
	  - GdipCreateFontFromHfont(): Removed Wine logic
	  - GdipGetLogFontA(): Removed Wine logic
	  - Added non gdi+ GetFontMetrics call to support MWF, since
	    DrawString/MeasureString do not support retrieving the
	    ascent/descent of a font

	* gdip_win32.c: Removed references to Wine GetTextMetrics

2004-12-16  Peter Bartok  <pbartok@novell.com>

	* graphics.c (MeasureOrDrawstring): Removed extra padding calc

2004-12-07  Geoff Norton  <gnorton@customerdna.com>

        * graphics.c, gdip_win32.h, gdip.h: Initial support for the Quartz backend to cairo.

2004-11-29  Jordi Mas  <jordi@ximian.com>

	* image.c: fixes bug #69089

2004-11-18  Ravindra  <rkumar@novell.com>

	* graphics.c (GdipGraphicsClear): Save and restore the existing
	graphics settings. Otherwise, we lose the cached brush settings.

2004-11-11  Jordi Mas  <jordi@ximian.com>

	* gdip.h, font.c, general.c: implements font caching

2004-11-10  Peter Bartok  <pbartok@novell.com>
	* graphics.c (MeasureOrDrawString): Enabled clipping again, cairo
	  appears to have the required fixes for it now.

2004-11-10  Peter Bartok  <pbartok@novell.com>
	* graphics.c (MeasureOrDrawString): Cleanup of earlier fix

2004-11-10  Peter Bartok  <pbartok@novell.com>
	* graphics.c (MeasureOrDrawString): Removed some unneeded cairo
	  calls to improve performance; added comments

2004-11-10  Peter Bartok  <pbartok@novell.com>
	* general.c: 
	- Removed _install_font_matrix(), now in graphics.c
	- Removed _gdip_cairo_matrix_compute_scale_factors(), now part of
	  the new _install_font_matrix()
	- Removed gdip_utf8_to_glyphs(), now combined with 
	  CalculateStringWidths

	* graphics.c:
	- Renamed CalculateStringSize to CalculateStringWidths
	- Streamlined CalculateStringSize, combined with gdip_utf8_to_glyphs
	- Removed unused parts of gdip_utf8_to_glyphs() and
	  CalculateStringSize
	- Dropped unneeded allocation of glyph memory

	* gdip.h:
	- Removed gdip_utf8_to_glyphs prototype

2004-11-09  Peter Bartok  <pbartok@novell.com>

	* graphics.c
	(MeasureOrDrawString): Added check to prevent crash if bogus data is
	returned from freetype.
	(MeasureOrDrawString): Instead of calling GdipFillRectangle we call
	cairo directly to draw underlines and strikeouts

	(GdipDrawLine): Jackson's matrix patch to align pixels and 
	effectively avoid AA lines

	(GdipDrawRectangle): Same patch as for GdipDrawLine


2004-11-04  Miguel de Icaza  <miguel@ximian.com>

	* graphics.c (CalculateStringSize): Free leaked Glyphs.

2004-10-29  Jordi Mas <jordi@ximian.com>

	* gdip.h, font.c: cache fontfamily details. Performance enhancement.

2004-11-05  Ravindra  <rkumar@novell.com>

	* graphics-path.c: Fixed int_to_float () function. We should not
	increase the pointer that is to be returned.

2004-10-29  Jordi Mas <jordi@ximian.com>

	* font.c gdip.h gdip_win32.h gifcodec.c graphics.c matrix.c  pathgradientbrush.c 
	texturebrush.c tiffcodec.c: fixes issues with strict C compilers

2004-10-29  Jordi Mas <jordi@ximian.com>

	* bitmap.c font.c graphics-path.c graphics.c image.c imageattributes.c 
	lineargradientbrush.c stringformat.c: fixes issues with strict C compilers

2004-10-28  Miguel de Icaza  <miguel@ximian.com>

	* graphics.c (GdipSetClipRegion): Fix the test, it should test for
	either value being null.

2004-10-28  Ravindra <rkumar@novell.com>

	* tiffcodec.c: We should not close the MemoryStreams
	that we got from user.

2004-10-28  Ravindra <rkumar@novell.com>

	* bitmap.c: Fix for bug #68270. We need to initialize frames
	for images created from MemoryStreams as well.

2004-10-19  Jordi Mas <jordi@ximian.com>

	* image.c: Speeds up GdipDrawImageRect arround 10%

2004-10-19  Jordi Mas <jordi@ximian.com>

	* imageattributes.c: fixes alpha color setting

2004-10-19  Ravindra <rkumar@novell.com>

	* jpegcodec.c: Fixed bug #68117. Retrieves the proper
	resolution info from Jpeg image.

2004-10-17  Jordi Mas <jordi@ximian.com>

	* image.c: bug fix, restores pattern after image drawing

2004-10-09  Ravindra <rkumar@novell.com>

	* hatchbrush.h: Added 'pattern' member of cairo_pattern_t
	type to GpHatch struct.
	* hatchbrush.c: Added support for caching.

	* lineargradientbrush.h: Removed the 'changed' member from
	GpLineGradient struct. It is moved to GpBrush struct.
	* lineargradientbrush.c: Added support for caching.

	* pathgradientbrush.h: Removed the 'changed' member from
	GpPathGradient struct. It is moved to GpBrush struct.
	* pathgradientbrush.c: Added support for caching.

	* texturebrush.h: Removed the 'changed' member from GpTexture
	struct. It is moved to GpBrush struct.
	* texturebrush.c: Added support for caching.

2004-10-09  Ravindra <rkumar@novell.com>

	* solidbrush.h: Added color components A,R,G,B to SolidFill
	struct for caching.
	* solidbrush.c: Added support for caching.
	* pen.c: Added support for caching.

2004-10-09  Ravindra <rkumar@novell.com>

	* gdip.h: Added 'last_pen' and 'last_brush' members to
	GpGraphics struct for caching.
	* brush.h: Added a boolean type 'changed' member to GpBrush.
	* brush.c: Added caching, to avoid multiple brush setups.
	* graphics.c: Initialization of cached pen and brush. Removed
	unwanted calls to cairo_save/cairo_restore.

2004-10-08  Ravindra <rkumar@novell.com>

	* image.c: Fixed GdipDisposeImage function.

2004-10-05  Ravindra <rkumar@novell.com>

	* pen.c: Fix for the bug #66665. Using a dirty bit on pen
	to avoid multiple setups has a flaw. It does not work well
	when we use the different pens with the same graphics.

2004-09-27  Mart Roosmaa <roosmaa@gmail.com>

	* general.c: Fallback to 72 dpis if we can not determine this
	information. 

2004-09-22  Ravindra <rkumar@novell.com>

	* jpegcodec.c: Set proper image flags for JPEG colorspaces.

2004-09-22  Ravindra <rkumar@novell.com>

	* jpegcodec.c: Added support for CMYK and YCCK colorspaces.
	Fixes bug #50081.

2004-09-16  Ravindra <rkumar@novell.com>

	* gdip.h: Removed the redundant graphics member from GpImage struct.
	* bmpcodec.c: Removed the unnecessary usage of GpImage->graphics.
	* gifcodec.c: Same as above.
	* graphics.c: Same as above.
	* jpegcodec.c: Same as above.
	* pngcodec.c: Same as above.
	* tiffcodec.c: Same as above.
	* image.c: Same as above and removed some commented code. Fixed
	GdipGetImageDimensions and GdipImageGetFrameDimensionsList
	functions. Applied a fix from David Mitchell for bug #66055 in
	GdipGetImageGraphicsContext function.

2004-09-15  Ravindra <rkumar@novell.com>

	* graphics.c: Applied a fix from David Mitchell for bug #65963
	in GdipDeleteGraphics function.

2004-09-10  Ravindra <rkumar@novell.com>

	* image.c: Fixes a bug in DrawImageRect function. Reset the matrix
	after drawing the image.

2004-08-21  Ravindra <rkumar@novell.com>

	* gifcodec.c: Return UnknownImageFormat instead of NotImplemented when
	required libraries are not installed.
	* jpegcodec.c: Same.
	* pngcodec.c: Same.
	* tiffcodec.c: Same.

2004-08-17  Ravindra <rkumar@novell.com>

	* font.c: Fix for bug #63098.

2004-08-05  Ravindra <rkumar@novell.com>

	* font.c: Fixed GdipDeleteFont function.

2004-08-02  Ravindra <rkumar@novell.com>

	* graphics.c: Commented out cairo_clip calls from GdipDrawString,
	as these were causing problems. Thanks to Peter for suggesting this
	fix. This fixes, bug #60386, #60663, #61414. These bugs were actually
	because of some problem with Cairo clipping. And, these are not 
	reproducable with Cairo cvs, because Cairo seems to have some changes
	which have solved the problem with clipping in Cairo.
	Also, fixed gdip_plot_path function to handle path point types properly.

2004-07-30  Ravindra <rkumar@novell.com>

	* font.c: Fixed GdipGetEmHeight function.

2004-07-30  Sanjay Gupta <gsanjay@novell.com>

	* tiffcodec.c: Added page no information while saving a multi page
	tiff file.

2004-07-27  Sanjay Gupta <gsanjay@novell.com>

	* tiffcodec.c: Fixing issues in saving multiple images to a file.

2004-07-26  Sanjay Gupta <gsanjay@novell.com>

	* image.c: Some memory management.

2004-07-26  Sanjay Gupta <gsanjay@novell.com>

	* bitmap.c: Initialization of data members in gdip_bitmap_init(). 
	* gdip.h: Corrected casing in BitmapData structure.
	* gifcodec.c: Casing changes, because of change in gdip.h.

2004-07-23  Sanjay Gupta <gsanjay@novell.com>

	* tiffcodec.c: Corrected the sequence of writing information
	to tiff file.

2004-07-23  Ravindra <rkumar@novell.com>

	* stringformat.c: Fixed GdipCloneStringFormat function and some
	formatting (replaced 8 spaces by tabs).

2004-07-22  Sanjay Gupta <gsanjay@novell.com>

	* gdip.h: Modified GdipBitmapData structure to hold information 
	about position and graphic control extension for a gif frame.
	* bitmap.c: Modified gdip_bitmap_dispose ().
	* gifcodec.c: Corrected memory handling while saving frames to 
	a gif file, implemented reading and writing Graphic Control 
	Extension data and added a cool hack from Raja, which reduced 
	size of our gif file. (30% saving in size on my sample file with 
	new implementation).

2004-07-22  Ravindra <rkumar@novell.com>

	* gdip.h: Added CharacterRange stuct. Added 'charRanges' and
	'charRangeCount' members in GpStringFormat struct. Added
	function declarations for GdipMeasureCharacterRanges,
	GdipGetStringFormatMeasurableCharacterRangeCount and
	GdipSetStringFormatMeasurableCharacterRanges.
	* graphics.c: Added stub for GdipMeasureCharacterRanges.
	* stringformat.c: Implemented following two functions,
	 1. GdipGetStringFormatMeasurableCharacterRangeCount and
	 2. GdipSetStringFormatMeasurableCharacterRanges.
	Corrected default values for substitute	and trimming in
	GdipStringFormatGetGenericDefault function. Corrected default
	value for substitute in	GdipStringFormatGetGenericTypographic
	function. Also, Added null checks.

2004-07-22  Sanjay Gupta <gsanjay@novell.com>

	* tiffcodec.c: Implemented saving multiple pages of an image to a
	tif file.

2004-07-21  Ravindra <rkumar@novell.com>

	* gdip.h: Added position members to GpPathIterator stuct.
	Added start_new_fig flag to GpPath struct.
	* graphics-path.c: Fixed and implemented various functions.
	Added null checks and some code formatting.
	 Fixed: (append) (GdipClonePath) (GdipAddPathClosedCurve2)
	  (GdipAddPathRectangle) (GdipAddPathRectangles)
	  (GdipAddPathRectanglesI) (GdipAddPathEllipse) (GdipAddPathPath).
	 Implemented: (GdipStartPathFigure) (GdipClosePathFigures).
	* graphics-pathiterator.c: Some fixes and implemented missing
	subpath functions.

2004-07-21 Sanjay Gupta <gsanjay@novell.com>
	
	* gifcodec.c: Minor modifications.

2004-07-20 Sanjay Gupta <gsanjay@novell.com>
	
	* gifcodec.c: Implemented saving multiple frames of an image to a 
	gif file.

2004-07-16  Ravindra <rkumar@novell.com>

	* Makefile.am: Added graphics-pathiterator.c to the sources list.
	* gdip.h: Corrected GpPathPointEnum and added GpPathIterator stuct.
	* graphics-path.c: Fixed GdipDeletePath, GdipResetPath,
	GdipSetPathMarker, GdipGetPathLastPoint, GdipAddPathLine and
	implemented GdipClosePathFigure and some formatting.
	* graphics-path.h: Added function declarations for graphics-path
	iterator.
	* graphics-pathiterator.c: First implementation.

2004-07-16  Sanjay Gupta <gsanjay@novell.com>

	* image.c: Resolved a crash which was occuring because of attempting
	to free same memory twice.
	
2004-07-14  Ravindra <rkumar@novell.com>

	* adjustablearrowcap.c: Added a note.
	* customlinecap.c: Added a note.
	* brush.h: Moved common internal structs in here from
	lineargradientbrush.c. These will be used by pathgradientbrush also.
	* graphics-path.h: Corrected some function signatures.
	* graphics-path.c: Corrected some function signatures and return
	'NotImplemented' status instead of 'Ok' in unimplemented functions.
	* lineargradientbrush.[ch]: Moved common internal structs from here
	to brush.h. And, some minor corrections.
	* pathgradientbrush.[ch]: Tested and fixed all the properties and
	implemented all the missing functions. Now, we are missing only
	the setup function and it can be done only after cairo supporting
	the required pattern for this brush. Also, corrected indentation.

2004-07-13  Sanjay Gupta <gsanjay@novell.cm>

	* tifcodec.c: Implemented functionality to read all the frames present.

2004-07-12  Ravindra <rkumar@novell.com>

	* gdip.h: Added 'interpolation' member in GpGraphics struct.
	Fixing bug #61400.
	* bitmap.c: Check for null before initializing the GpBitmap.
	* general.c: Added a helper function for converting an
	InterpolationMode value to cairo_filter_t. Fixing bug #61400.
	* graphics.c: Set the cairo filter on the surface as per the
	interpolation mode set. Fixed GdipSet/GetInterpolationMode
	functions. Fixing bug #61400.
	* image.c: Set the cairo filter on the surface as per the
	interpolation mode set. Fixing bug #61400.

2004-07-09  Ravindra <rkumar@novell.com>

	* lineargradientbrush.c: Implemented GdipSetLineSigmaBlend function.
	* general.c: Added gdip_erf function used for setting sigma blend
	by gradient brushes.

2004-07-09  Sanjay Gupta <gsanjay@novell.com>

	* gdip.h: Modified FrameDimensionInfo structure to carry data related
	to various frames of a multi frame image. The structure is now
	renamed to FrameInfo.
	* gifcodec.c: Implemented functionality to read all the frames present.
	* image.c: Implemented SelectActiveFrame() method. Modified associated
	memory disallocation and changes while reading single frame image.

2004-07-07  Ravindra <rkumar@novell.com>

	* pngcodec.c: Fixes saving RGB file and one perf improvement in
	image loading. Fixes bug #61156.

2004-06-29  Jordi Mas <jordi@ximian.com>

	* pngcodec.c: fixes saving 24-bit images (it was saving corrupted files before)

2004-06-29  Jordi Mas <jordi@ximian.com>

	* tiffcodec.c: fixes saving images to stream. It was giving an exception
	before

2004-06-25  Ravindra <rkumar@novell.com>

	* lineargradientbrush.c: Couple of fixes and some missing bits.
	Also implemented GdipSetLineLinearBlend function.
	* pen.c: Changed return status of GdipSetCompoundArray to Ok.

2004-06-24  Ravindra <rkumar@novell.com>

	* graphics.c: Modified GdipFillXXX operations to make use of
	the matrix set by brush setup. Also, moved all the GdipFillXXX
	functions to one place.

2004-06-24  Sanjay Gupta <gsanjay@novell.com>

	* gdip.h: Changed function signature for SeekDelegate function.
	* tiffcodec.c: Minor modification in passing flags to libtiff.

2004-06-23  Jordi Mas <jordi@ximian.com>

	* gdip.h, graphics.c: Implement Get/Set Unit and Scale. We will need when we implement
	GdipTransformPoints

2004-06-23  Jordi Mas <jordi@ximian.com>

	* image.c: fixes bug 60601, simple images where not drawn on the right place

2004-06-22  Ravindra <rkumar@novell.com>

	* lineargradientbrush.h: Added two members 'changed' and 'pattern'
	to GpLineGradient struct to avoid unnecessary multiple brush setup.
	* lineargradientbrush.c: Changes related to above and some fixes.

2004-06-22  Jordi Mas <jordi@ximian.com>

	* gdip.h, graphics.c: implement Clip API function calls
	* region.c: remove unused vars

2004-06-22  Ravindra <rkumar@novell.com>

	* texturebrush.c: We need to reset the 'changed' flag after doing
	brush setup.

2006-06-21  Sanjay Gupta <gsanjay@novell.com>

	* tiffcodec.c: Added dummy functions and changed the way we
	were reading/writing tif image from/to stream.

2006-06-17  Sanjay Gupta <gsanjay@novell.com>

	* tiffcodec.c: ABGR 2 ARGB conversion while saving. 
	Default tiff format of ARGB was converted to our local format ABGR
	while reading, but in write operation we were not converting back
	to ARGB format and hence messy image.

2004-06-17  Sanjay Gupta <gsanjay@novell.com>
	
	* image.c: Removed a commented line of code. Got checked in by mistake.

2004-06-16  Sanjay Gupta <gsanjay@novell.com>

	* gdipImage.h: Modifed function signature 
	GdipSaveImageToDelegate_linux().
	* image.c : Modified call to save tiff image from stream delgate.
	* tiffcodec.c, tiffcodec.h : Modified API signature and implemented 
	functions to save tiff images to stream.	

2004-06-16  Sanjay Gupta <gsanjay@novell.com>
                                                                                
        * tiffcodec.c, tiffcodec.h: Implemented methods for loading tiff
        images from stream.
                                                                                
2004-06-16  Ravindra <rkumar@novell.com>

	* graphics.c: Removed unnecessary calls to cairo_save and
	cairo_restore from GdipFillXXX functions.

2004-06-15  Ravindra <rkumar@novell.com>

	* texturebrush.h: Added two members 'changed & pattern' to GpTexture
	struct to avoid unnecessary texture setup.
	* texturebrush.c: Fixed the code to avoid the seam. Setup related
	enhancement. Replaced cairo_show_surface by cairo_fill for creating
	pattern. This was required to fix the problem with Graphics.DrawXXX,
	as DrawXXX functions stopped working for texturebrush because of 
	transformation matrix fix in pen.c (my previous checkin).

2004-06-15  Sanjay Gupta <gsanjay@novell.com>

	* gdip.h: Added function typedefs, (*CloseDelegate), (*SizeDelegate).
	* gdipImage.h: Modifed function signature 
	GdipLoadImageFromDelegate_linux().
	* image.c : Modified call to load tiff image from stream delgate.
	* tiffcodec.c, tiffcodec.h : Modified API signature for loading tiff
	images from stream.	

2004-06-14  Peter Bartok <pbartok@novell.com>
	* general.c: Fixed internal cairo function name to be gdi
	specific.

2004-06-10  Sanjay Gupta <gsanjay@novell.com>

	* gifcodec.c: Minor error handling.
	* tiffcodec.c, tiffcodec.h: Added function stubs for loading 
	and saving images from/to streams. Also modified API to include 
 	encoder parameter.
	* image.c: Minor indentation fixes, fixed incorrect image format
	assignment in loading images from stream, error handling and 
	including call to load/save tiff images from stream.
	
2004-06-10 Jordi Mas <jordi@ximian.com>

	* gifcodec.c: fixes the stubs signatures when libgif is not installed
 
2004-06-09 Jordi Mas <jordi@ximian.com>
	* font.c, gdip.h: implemtents cache for generic family fonts,
	and properly keep track of resources and deallocate them.

2004-06-08  Ravindra  <rkumar@novell.com>

	* graphics.c: Added notes to GdipDrawXXX functions.
	* pen.c: We need to take into account the graphics->matrix
	also when stroking. Fixed the same.

2004-06-04  Ravindra  <rkumar@novell.com>

	* graphics.c: Fixed GdipDrawXXX functions as per the fix
	in pen.c.
	* pen.c: Added a flag to avoid multiple unnecessary setups
	of the same pen and fixed transform matrix usage.
	* gdip.h: Added a 'changed' bool type to GpPen struct.

2004-06-04  Sanjay Gupta <gsanjay@novell.com>

	* bitmap.c: Resolved issue with saving of 24 bit bmps.

2004-06-03  Ravindra  <rkumar@novell.com>

	* graphics.c: Fixed GdipDeleteGraphics and 
	gdip_graphics_attach_bitmap functions.

2004-06-01  Ravindra <rkumar@novell.com>

	* hatchbrush.c: Peformance improvements in some of diagonal
	hatch styles. These were quite slow earlier.

2004-05-31  Ravindra  <rkumar@novell.com>

	* graphics.c: Fixed GdipResetWorldTransform, GdipDrawPie and
	GdipFillPie. ResetWorldTransform should set the copy_of_ctm
	as well as the graphics->ct matrix to identity.
	Draw/FillPie functions do not do anything, if sweep angle is
	zero deg. This is done to fix the crash that we face when we
	draw/fill pie with zero deg sweep angle. And, some formatting.

2004-05-28  Duncan Mak  <duncan@ximian.com>

	* graphics.c (GdipResetWorldTransform): Remember to synchronize
	graphics->copy_of_ctm with the graphics' matrix.

2004-05-28  Ravindra <rkumar@novell.com>

	* hatchbrush.c: Completed the remaining hatch styles.

2004-05-28 Jordi Mas <jordi@ximian.com>
	* tiffcodec.c, image.c: added support for saving TIFF files

2004-05-28 Jordi Mas <jordi@ximian.com>
	* bitmap.c, image.c, tiffcodec.c: reformmated using Mono code style. No code
	changes made

2004-05-28  Ravindra <rkumar@novell.com>

	* gdip.h: Added declarations for GdipDrawRectangles,
	GdipDrawRectanglesI, GdipFillRectangleI, GdipFillRectangles,
	GdipFillRectanglesI functions for Graphics.
	* graphics.c: Implemented the functions mentioned above. Added
	g_return_val_if_fail macro. Did some of formatting. I have
	tested this, hope I'm not going to break anything.

2004-05-28  Ravindra <rkumar@novell.com>

	* graphics.c: Changed DrawLinesI and DrawLines functions not to
	call DrawLineI and DrawLine respectively, as it results in setting
	up pen so many times unnecessarily.
	* hatchbrush.c: Formatting.

2004-05-27  Duncan Mak  <duncan@ximian.com>	

	* matrix.c (set_translate, set_scale, set_rotate, set_shear):
	Removed, we are not allocating a new GpMatrix * anymore.
	(TranslateMatrix, ScaleMatrix, RotateMatrix, ShearMatrix): All the
	functionality of set_foo has been moved back into here.

2004-05-27  Miguel de Icaza  <miguel@ximian.com>

	* pen.c (gdip_pen_setup): Fix indentation, and do not set the pen
	matrix.  The pen matrix trumps any other transformations on the
	graphics->ct, someone must fix this properly.

	* matrix.c: Remove some heavy use of routines with something
	lighter, Duncan will look at this further.
	
2004-05-27  Ravindra  <rkumar@novell.com>

	* hatchbrush.c: Implemented couple of hatch styles.

2004-05-27 Jordi Mas <jordi@ximian.com>
	* pngcodec.c: added stubs for when libpng is not present

2004-05-27  Sanjay Gupta <gsanjay@novell.com>

	* bmpcodec.c: Added support for converting 24BPP to 32 BPP 
	for usage by cairo, in function for loading bmp.

2004-05-27  Sanjay Gupta <gsanjay@novell.com>

	* bmpcodec.c: Abstracted reading bmp from file and stream 
	to single function.
	* bmpcodec.h: Added function declarations for above implementation.

2004-05-27 Jordi Mas <jordi@ximian.com>
	* bitmap.c: added support for drawing 24-bits images tru DrawImage
	
2004-05-27  Sanjay Gupta <gsanjay@novell.com>

	* bmpcodec.c: Fixes in function to save bmp to stream.

2004-05-26  Sanjay Gupta <gsanjay@novell.com>

	* bmpcodec.c: Implemented function to save bmp to stream.
	* bmpcodec.h: Added function declarations for above implementation.

2004-05-26  Sanjay Gupta <gsanjay@novell.com>

	* bmpcodec.c: Resolved issue with saving images to bmp format.

2004-05-26  Sanjay Gupta <gsanjay@novell.com>

	*image.c: Resolved issue with wrong comparison between image format
	guid and enocder clsid in GdipSaveImageToDelegate_linux() fn.

2004-05-26 Jordi Mas <jordi@ximian.com>
	* gifcodec.c, gifcodec.h, image.c: implemented saving GIF images
	to file, stream and loading them from a stream.

2004-05-26  Ravindra  <rkumar@novell.com>

	* hatchbrush.c: Implemented Plaid and Wave hatch styles.

2004-05-26  Ravindra  <rkumar@novell.com>

	* hatchbrush.c: Implemented Sphere hatch style.

2004-05-26 Jordi Mas <jordi@ximian.com>
	* bitmap.c, gdip.h: remove death code 
	* gifcodec: no code changes made, reformmating to be able to work with it
	
2004-05-25 Jordi Mas <jordi@ximian.com>
	* bitmap.c, gdip.h, image.c, imageattributes.c:
		- Implemented SetImageAttributesWrapMode: Tile, TileFlipY, TileFlipY
		and TileFlipXY
		- ImageAttributes fails to default category if nothing is setup
		- Minor bug fixes
	
2004-05-25 Jordi Mas <jordi@ximian.com>
	* bitmap.c: fixes bug in gdip_bitmap_clone. We were not cloning the 
	bitmap data itself

2004-05-24 Jordi Mas <jordi@ximian.com>
	* bitmap.c, gdip.h, image.c, imageattributes.c: implemented
	functions for ImageAttributtes

2004-05-21  Ravindra  <rkumar@novell.com>

	* pen.c: We draw a line of a pixel width, if pen width is set
	to zero or less than zero.

2004-05-20  Ravindra  <rkumar@novell.com>

	* hatchbrush.c: Implemented SolidDiamond hatch style.
	* pen.c: Minor fix in GdipSetPenDashArray function.
	* gdip.h: Added a comment and inserted #ifndef around
	uglify typedefs.
	* gdip_win32.h: Removed the mono dependency uglify.h.
	It was also breaking the build.

2004-05-19  Miguel de Icaza  <miguel@ximian.com>

	* gdip.h: Removed the dependency on Mono for uglify.h by
	copying here all the required things from mono/io-layer/uglify.h.

2004-05-15  Vladimir Vukicevic  <vladimir@pobox.com>

	* image.c, jpegcodec.c, jpegcodec.h, gdip.h: Add support for
	EncoderParameters.  Currently, only jpeg Quality is exported (MS
	doesn't support any params for anything but Jpeg and Tiff)

	* image.c, gdip.h, gdipImage.h: Renamed some things which were
	clsid to format_guid to avoid confusion (they're not clsids)

2004-05-14  Peter Bartok <pbartok@novell.com>
	* gdip.h: Added various missing structs and enumerations required for
	  the new stubs.
	* bitmap.c: Removed warning; added missing stubs
	* font.c: Implemented GdipGetLogFontA, GdipPrivateAddMemoryFont
	* graphics.c: Implemented GdipSetInterpolationMode, GdipGetPageScale,
	  GdipGetPageUnit; added missing stubs
	* imageattributes.c: Added missing stubs
	* image.c: Added missing stubs

2004-05-14  Duncan Mak  <duncan@ximian.com>
	* gdip.h (GpPathPointType): Make all the elements use hex values
	for consistency.

	* graphics-path.c (append): Handle the CloseSubpath flag. This is
	needed for SetPathMarker.

	* graphics-path.c (GdipClearPathMarkers, GdipSetPathMarker):
	Implemented.
	(GdipAddPathCurveI, GdipAddPathCurve2I, GdipAddPathCurve3I):
	Implemented. The float versions were committed a long time ago,
	but I forgot to do the same to the integer overrides.

	* graphics-path.c
	(GdipStartPathFigure, GdipClosePathFigure, GdipClosePathFigures)
	(GdipAddString, GdipWindingModeOutline): 
	(GdipFlattenPath, GdipWidenPath, GdipWarpPath)
	(GdipGetPathWorldBounds, GdipIsVisiblePathPoint) 
	(GdipIsOutlineVisiblePathPoint): 
	Stubbed, they all now return Ok, but we have a MonoTODO comment to
	remind us to implement them.	

2004-05-14 Jordi Mas <jordi@ximian.com>
	*  adjustablearrowcap.c ,customlinecap.c, gifcodec.c, graphics-path,
	hatchbrush.c, jpegcodec.c, lineargradientbrush.c, matrix.c, 
	pathgradientbrush.c, pngcodec.c,texturebrush.c,tiffcodec.c:
	added missing licenses.

2004-05-14 Jordi Mas <jordi@ximian.com>
	* bmpcodec.c, gifcodec.c, jpegcodec.c, pngcodec.c, tiffcodec.c:
	remove redudant CLSID definitions and use global definitions

2004-05-14  Ravindra <rkumar@novell.com>

	* Makefile.am: Added source file entries for customlinecap and
	adjustablearrowcap.
	* pen.c: A minor fix in SetPenDashArray () function.

2004-05-14  Ravindra <rkumar@novell.com>

	* adjustablearrowcap.c: First implementation of AdjustableArrowCap.

2004-05-14  Ravindra <rkumar@novell.com>

	* customlinecap.[ch]: First implementation of CustomLineCap.
	It needs further work. I need to get it working with pen.

2004-05-14  Ravindra <rkumar@novell.com>

	* gdip.h: Added missing functions for Pen. Added compound
	array to GpPen struct. Fixed some of Pen function signatures.
	Moved around few enums for compilation. Added typedefs and
	functions for CustomLineCap and	AdjustableArrowCap.
	* pen.c: Added compound array functions. Fixed dash array
	functions and added stubs for custom linecaps.

2004-05-13 Jordi Mas <jordi@ximian.com>
	* does a proper pixelformat check

2004-05-13  Ravindra <rkumar@novell.com>

	* gdip.h: Added GpPenType enum and moved GpBrushType enum here
	from brush.h. Added GdipGetPenFillType function declaration.
	* brush.h: Moved GpBrushType enum to gdip.h.
	* pen.c: Implemented GdipGetPenFillType function.

2004-05-12  Peter Bartok  <pbartok@novell.com>
   * pngcodec: Since the code handles interlace just fine I removed the
     error condition for interlaced pictures; this fixes bug #55934

2004-05-12  Peter Bartok  <pbartok@novell.com>
   * font.c: Implemented GdipCreateFontFromDC

2004-05-12  Duncan Mak  <duncan@ximian.com>

	* gdip.h (GpCoordinateSpace): Defined.

	* graphics.c (GdipScaleWorldTransform): Implemented.
	(GdipSetWorldTransform): Fixed memory management bug
	pointed out by Vlad.

2004-05-12  Miguel de Icaza  <miguel@ximian.com>

	* image.c (GdipLoadImageFromFile): Added error checking in case
	the codec fails to load a valid image.

2004-05-12 Jordi Mas i Hernandez <jordi@ximian.com>
	* bitmap.c, image.c, gdpi.h:
	- Correct support for Format24bppRgb, Format32bppArgb, Format32bppPArgb, 
	Format32bppRgb pixel formats
	- Fixed GdipBitmapLockBits to return the format and behavior than
	GDI+
	- GetPixel/SetPixel do not work when the bitmap is locked

2004-05-10  Peter Bartok <pbartok@novell.com>
   * gdip_win32.c: Added ObjectList to manage Win32 object that can be
     deleted. Solves problem of asynchronous deletion of object when
     GC kicks in. While we could also use Control.BeginInvoke this method
     allows us to keep private gdip handles away from System.Drawing.
     Currently handles fonts but any other object that could be subject
     to GC should also be managed through the ObjectList code.
   * gdip.h: Added prototype
   * general.c: Shutdown code now also calls the new gdip_win32 shutdown
     function.

2004-05-10  Duncan Mak  <duncan@ximian.com>

	* gdip.h (fcmp): Added.
	
	* general.c (fcmp): Use the fcmp function from fcmp.sf.net.

	* graphics-path.c (append): Check for point count before calling
	GetPathLastPoint. Use fcmp instead of == when comparison floating
	point numbers.
	
2004-05-09  Peter Bartok <pbartok@novell.com>
   * graphics.c: Completely rewrote DrawString and MeasureString:
                 - No longer only works for us-ascii
                 - Now handles multiple sequential linefeeds in DrawString
                 - Now properly calculates the bounding box size
                 - Now handles StringFormat flags (NoWrap, Vertical, Ellipsis)
                 - Now properly breaks lines at whitespace or characters
                 - Now properly handles tabstops
                 - Now properly allows multiple hotkey characters
   * stringformat.c: Changed trimming default to TrimWord (like MS)
   * gdip.h: Fixed DrawString prototypes, replaced DrawString support structs

2004-05-09 Jordi Mas i Hernandez <jordi@ximian.com>
	* bmpcodec.c: Move BMP specific functions to bmpcodec
	* bitmap.c: Move BMP specific functions to bmpcodec

2004-05-07  Ravindra  <rkumar@novell.com>

	* hatchbrush.c: Implemented 11 hatching styles.
	* texturebrush.c: Fixed destroy function.

2004-05-04 Jordi Mas i Hernandez <jordi@ximian.com>
	* bmpcodec.c: We use always RGB32 internally
	* bitmap.c: We use always RGB32 internally 
	* image.c: We use always RGB32 internally

2004-05-06 Sanjay Gupta <gsanjay@novell.com>
	
	* image.c: Removed a printf stmt.
	* gifcodec.c: Implemented reading information about time and page 
	  based frames.

2004-05-05  Peter Bartok <pbartok@novell.com>
   * gdip_win32.c: Added support for SetMapMode; fixed fontsize conversion
     for Cairo->Wine fonts
   * font.c: Added call to SetMapMode to have predictable units for font size
   * gdip_win32.h: Added support for SetMapMode

2004-05-04 Jordi Mas i Hernandez <jordi@ximian.com>
	* bitmap.c: calculate strides as GDI+

2004-05-05 Sanjay Gupta <gsanjay@novell.com>
	
	* gdipImage.h: Added CLSID for FrameDimensions.
	* image.c: FrameDimensionsCount, FrameDimensionList and ImageFrameCount 
	  taken into consideration while loading image.
	* gifcodec.c: Corrected implementation of reading no of image 
	  description records present.

2004-05-04 Sanjay Gupta <gsanjay@novell.com>

	* image.c: Implemented functions GdipImageGetFrameDimensionsCount(),
	 GdipImageGetFrameDimensionsList(), GdipImageGetFrameCount(). UNTESTED
	* gdip.h: Modifieid GpImage structure and added FrameDimensionInfo struct.
	* gifcodec.c: Modified to read the no of image description records present.

2004-05-04 Jordi Mas i Hernandez <jordi@ximian.com>
	* image.c: implements GdipImageRotateFlip: 90, 180, 270,
	degree, plus FlipX and combinations
	
	
2004-05-04 Ravindra <rkumar@novell.com>

	* matrix.c: Added macros for checking null pointers.

2004-05-04 Ravindra <rkumar@novell.com>

	* pen.c: Added assert macros for checking null pointers. Also fixed
	Get/Set/Reset PenTransform functions.
	* graphics.c: Fixed a mistake in Clear function. Cairo takes color
	values in the range [0.0, 1.0], instead of [0, 255].
	* gdip.h: Added return type to gdip_pen_setup function.
	* lineargradientbrush.[ch]: Fixed Get/Set LineTranform functions.
	* texturebrush.c: Fixed Get/Set TextureTransform functions.

2004-05-03 Jordi Mas i Hernandez <jordi@ximian.com>
	* bitmap.c: adds Format32bppRgb support for get/set pixel
	* graphics.c: fixes bug 56798 (RTL support)

2004-05-03 Jordi Mas i Hernandez <jordi@ximian.com>
	* bitmap.c: fixes stride in GdipCloneBitmapAreaI, copy of different 
	pixel formats, uninit data in Bitmap struct, etc.

2004-04-30  Ravindra  <rkumar@novell.com>

	* lineargradientbrush.[ch]: Few fixes.

2004-04-30 Jordi Mas i Hernandez <jordi@ximian.com>
	* region.c: fixes bug at GdipSetInfinite detected by the tests

2004-04-30 Jordi Mas i Hernandez <jordi@ximian.com>
	* bitmap.c: fixes bug causing a cloned imaged not been able to
        save it.

2004-04-29  Duncan Mak  <duncan@ximian.com>

	* graphics-path.c (append): Moved the aforementioned logic into
	here instead; append_point should still just only delegate to
	append.

2004-04-29  Duncan Mak  <duncan@ximian.com>

	* graphics-path.c (append_point): Add some logic here. Don't
	append a move_to (PathPointTypeStart) if we're already at the
	point we need to be in. This fixes problems we have with filling,
	as Cairo closes all subpaths before a fill op.
	(GdipAddPathLine, GdipAddPathLineI): Removed precaution checks for
	move_to, we're doing it once and for all in append_point.

	This should fix the drawing bug Miguel sees in the GraphicsPath
	in the test form.

2004-04-29  Peter Bartok <pbartok@novell.com>

	* gdip.h: Added flag for multiline strings

	* graphics.cs: Fixed bug #56800, DrawString now handles \n (and
	   ignores \r, like Microsoft)

2004-04-29 Jordi Mas i Hernandez <jordi@ximian.com>
	* image.c: fixes GdipSaveImageToFile using FormatID as parameter
        instead of the coded Clsid


2004-04-28 Jordi Mas i Hernandez <jordi@ximian.com>
	* bmpcodec.c: added codecInfo
	* gdip_win32.h: added ImageCodecInfo struct
	* general.c: init codecinfo
	* gifcodec.c: added codecInfo
	* image.c: added GDI+ encoder/decoder functions
	* jpegcodec.c: added codecInfo
	* pngcodec.c: added codecInfo
	* tiffcodec.c: added codecInfo

2004-04-27  Ravindra <rkumar@novell.com>

	* lineargradientbrush.[ch]: First implementation of
	lineargradientbrush.
	* Makefile.am: Added lineargradientbrush sources to the list.

2004-04-27  Vladimir Vukicevic  <vladimir@pobox.com>

	* gdip.h: Added EncoderParameterValueType enum

	* image.c (GdipDrawImageRectRect, GdipDrawImagePoints): implemented.
	(gdip_encoder_parameter_search_int): start of some encoder
	parameter stuff

2004-04-26  Duncan Mak  <duncan@ximian.com>

	* general.c (gdip_open_curve_tangents):
	(gdip_closed_curve_tangents):
	Simplified. Use only one coefficient, instead of a set of
	coefficients per each point on the curve. We now take care of
	tension when calculating tangents.
	(gdip_calculate_coefficients): Removed. Microsoft doesn't use such
	a nice way of calculating coefficients. Their implementation is a
	lot more simplistic.

	Thanks to Professor Rasala for figuring this out.

	* graphics.c (GdipDrawClosedCurve2, GdipDrawCurve3) 
	(GdipFillClosedCurve2): Add tension paramater.

	* graphics-path.c (GdipAddPathCurve3): Implemented.
	(GdipAddPathCurve, GdipAddPathCurve2): Pass the work onto
	GdipAddPathCurve3.

	* gdip.h (gdip_closed_curve_tangents, gdip_open_curve_tangents):
	Updated function signature to include tension.

2004-04-26 Sanjay Gupta <gsanjay@novell.com>
	* image.c: Implemented function GdipGetImageRawFormat.
	* gdip.h: Modifieid GdipImage structure and added ImageFormat 
	enum from gdipImage.h
	* gdipImage.h: Removed ImageFormat enum to gdip.h

2004-04-25  Vladimir Vukicevic  <vladimir@pobox.com>

	* graphics.c (GdipCreateFromXDrawable_linux): added method, so that
	we can interface with Gtk (i.e. to draw to a DrawingArea)

2004-04-24  Ravindra <rkumar@novell.com>

	* graphics.c: Fixed GdipGraphicsClear() function.
	* gdip.h: Removed some unwanted lines.

2004-04-23  Vladimir Vukicevic  <vladimir@pobox.com>

	* bitmap.c (GdipCloneBitmapAreaI): wrong sense of assert test,
	oops

	* image.c (GdipDrawImagePoints): implemented.

2004-04-23 Peter Bartok <pbartok@novell.com>
   * graphics.c: Fixed bug #57551. Hotkey prefix now properly placed
   no matter on what line it is or how the text is aligned.

2004-04-23 Peter Bartok <pbartok@novell.com>
   * graphics.c: Implemented GdipCreateFromHWND()

2004-04-22  Vladimir Vukicevic  <vladimir@pobox.com>

	* bitmap.c (GdipCloneBitmapAreaI): implemented with format
	conversion

	* image.c (GdipDrawImageRect): use gdip_bitmap_ensure_surface
	to create a surface if it's missing.  Fixes 57323

	* bitmap.c (gdip_bitmap_ensure_surface): added as a way to access
	a bitmap image's surface, creating it if it's missing

2004-04-21 Peter Bartok <pbartok@novell.com>
   * font.c: Added private GdipCreateFontFromHfont function to support
   the System.Drawing.Font.FromHfont method.
   * gdip_win32.c: Added import of Wine GetTextMetrics and GetTextName 
   functions
   * gdip_win32.h: Added some prototypes and LOGFONTA and TEXTMETRICA 
   structures

2004-04-19 Sanjay Gupta <gsanjay@novell.com>
	* image.c: Added function call to load bmp image from stream in 
          switch case stmt.

2004-04-20 Jordi Mas i Hernandez <jordi@ximian.com>

        * region.c -  more work on regions. New methods, fixes, and funtionality
        * graphics.c - Fixed font bug
        * gdip.h - new region functions

2004-04-19  Vladimir Vukicevic  <vladimir@pobox.com>

	* graphics-path.c (GdipAddPathStringI): renamed GdipPathString ->
	GdipAddPathString (the real name); still NotImplemented

	* bitmap.c: Implemented new LockBits/UnlockBits that's consistent
	with MS semantics, and that can do conversions.  (Also some random
	whitespace cleanup, mainly as I touched functions.)

	* gdip.h: Some ARGB access macros, also a cleanup of the PixelFormat
	enum (there is a method to the madness).  Some missing prototypes also.

	* image.c: Got rid of unused gdip_getpixel_formatsize (it can be inferred
	from the pixel format).

	* pathgradientbrush.c: Sets the cairo rgb color to the center color of the
	gradient.  Not pretty, but better than nothing.
	
	* Makefile.am: Added -Wall -Wno-unused -Wno-format.  Lots of
	functions that should have been returning values weren't,
	functions used without prototypes, etc.  Touched files to fix
	missing return issues: bmpcodec.c, brush.h, font.c, gdip_win32.h,
	general.c, graphics.c, hatchbrush.c, imageattributes.c,

2004-04-19 Sanjay Gupta <gsanjay@novell.com>
	* bmpcodec.c: Fixed function for loading image from stream

2004-04-16 Jordi Mas i Hernandez <jordi@ximian.com>

        * region.c -  more work on regions. New methods, fixes, and funtionality
        * graphics.c - GdipFillRegion implemented

2004-04-16 Ravindra <rkumar@novell.com>

	* gdip.h: Included glib.h.
	* brush.h, solidbrush.h: Removed internal functions and added
	return type to vtable functions.
	* brush.c: Now we return status from internal functions also.
	* texturebrush.c, hatchbrush.c, solidbrush.c, pathgradientbrush.c: 
	Now we return status from internal functions also and do check for
	null pointers.

2004-04-16 Sanjay Gupta <gsanjay@novell.com>
	* bmpcodec.c: Implemented function for loading image from stream

2004-04-15 Ravindra  <rkumar@novell.com>

	* general.c (gdip_cairo_set_surface_pattern): Check for null pattern
	and return the status.
	* gdip.h (gdip_cairo_set_surface_pattern): Return status.

2004-04-15 Ravindra  <rkumar@novell.com>

	* hatchbrush.h: Moved internal functions to hatchbrush.c.
	* hatchbrush.c: Moved some internal functions around.

2004-04-15 Ravindra  <rkumar@novell.com>

	* texturebrush.h: Moved internal functions to texturebrush.c.
	* texturebrush.c: Few fixes to handle scale/rotate functions. But,
	we still don't get scaling/rotation right. Seems to be some problem
	with Cairo. Checking in code now, will see this later when I'm sure
	that Cairo is doing right.

2004-04-14 Jordi Mas i Hernandez <jordi@ximian.com>

        * bitmap.c -  fixes biXPelsPerMeter fields

	* bmpcodec.c -  fixes strides, fixes new WinNT BMP headers,
        support for OS/2 bitmaps, 8 and 24 bits, upside bitmaps, gets
        different pixelformats correct loading/saving, reformatted to 8
        tabs, support for load/save palette if present (RGBTRIPLE and
        SQUADS), fixes bitmap writting to allow to work with more tools
        (saving it upside down), etc.

2004-04-14  Duncan Mak  <duncan@ximian.com>

	* graphics-path.c (GdipAddPathLine, GdipAddPathLineI): Only append
	a starting point if the current point is not the same as the point
	we're appending. This removes unnecessary subpaths, and fixes
	GdipFillPath.

2004-04-13  Vladimir Vukicevic  <vladimir@pobox.com>

	* jpegcodec.c (gdip_save_jpeg_image_internal): Check for pixformat
	equal to Format24bppRgb, not 32bpp when deciding whether to do
	argb conversion.  Fixes #56967.

	* texturebrush.h: Moved WrapMode enum to gdip.h, to share
	it with the pgbrush
	
	* general.c (gdip_rect_expand_by): Helper function to
	build bounding rects

	* gdip.h: Bunch of new prototypes
	
	* pathgradientbrush.c: Stub implementations of this.  Real version
	will probably require me to add gouraud triangle shading to cairo,
	which will happen Real Soon Now.

2004-04-12  Vladimir Vukicevic  <vladimir@pobox.com>

	* gdip.h, image.c: I misread the *I methods.  Implement
	them correctly, keeping the corrent int/float distinction.
	Also added a bunch of GdipDrawImage* stubs.

2004-04-11  Vladimir Vukicevic  <vladimir@pobox.com>

	* general.c (GdiplusStartup): I really meant $GDIPLUS_NOX
	to mean "no X" instead of "require X".

	* texturebrush.c, image.c: Use gdip_cairo_set_surface_pattern

	* general.c: (gdip_cairo_set_surface_pattern) helper function
	to create a new pattern from a surface and set it.
	(GdiplusStartup): Don't acquire an X display if GDIPLUS_NOX is set
	(gdip_get_display_dpi): use GDIP_display instead of creating a new
	XDisplay

2004-04-10  Vladimir Vukicevic  <vladimir@pobox.com>

	* gdip.h, graphics.c: Added lots of Get/Set stuffs.

2004-04-12  Ravindra  <rkumar@novell.com>

	* texturebrush.h: Internal functions should not appear here. 
	Removed internal functions. Uncommented few implemented functions.
	* texturebrush.c: Moved around few functions as per the change
	in header file.

2004-04-11  Peter Bartok <pbartok@novell.com>
   * gdip_win32.c: Added fontsize translation when creating HFONT
   * font.c: Added private function to retrieve the HFONT handle

2004-04-10  Vladimir Vukicevic  <vladimir@pobox.com>

	* image.c (GdipDrawImageRectI): put back version that handles
	scaling correctly and doesn't create an extra graphics context
	unnecessarily.

	* graphics.c (gdip_graphics_attach_bitmap): set the surface on a
	GpBitmap after setting it as the cairo target; each GpBitmap
	should always have an associated cairo surface. (fixes #56803)

	* image.c (gdip_image_init): can't call get_display_dpi(), because
	we might not have an X display at all.

2004-04-10 Peter Bartok <pbartok@novell.com>
   * bitmap.c: Removed the hack that set the Win32 bitmap to white.
     Instead it now simulates alpha blending and merges the Win32
     bitmap onto the cairo image surface. This makes drawing between
     cairo and Wine/Win32 fully compatible, albeit with two 
     drawbacks: First, the copying of the bitmap is done pixel by
     pixel, and second, the color value of UNALTERED_PIXEL in
     a Win32 bitmap will be treated as transparent.

   * image.c: Removed the 'improved' GdipDrawImageRectI function. I lost a
     whole day tracking down why SWF stopped working. The 'improved'
     version doesn't seem to work (yet). Left the broken version
     with an #if 0 for future fixing.

   * gdip_win32.c: Added functions to create/delete HFONT handles tracking
     the cairo fonts.

   * gdip_win32.h: Added prototypes

   * font.c: Now also creates/deletes Wine font tracking the cairo font

   * gdip.h: Added HFONT element to GpFont structure

2004-04-10  Duncan Mak  <duncan@ximian.com>

	* graphics.c (GdipDrawCurve):
	(GdipDrawClosedCurve, GdipFillClosedCurve): Added all the
	overloads, properly delegate the work to avoid code
	duplication. Handle the case when tension = 0; in that case, we
	draw/fill a polygon for closed curves, and just draw straight
	lines for open curves.
	(GdipDrawCurve3): Fixed signature, there was a missing offset
	argument.

	* gdip.h: Added open and closed curve drawing and filling
	functions.

2004-04-10  Duncan Mak  <duncan@ximian.com>	

	* general.c (gdip_open_curve_tangents): Fixed some more errors in
	the porting of the algorithm. We should be passing Z to
	gdip_calculate_coefficients instead of count. Z = 2 * count - 1.

2004-04-10  Duncan Mak  <duncan@ximian.com>	

	* graphics.c (GdipDrawCurve): Doh! Use the ask for tangents for
	open curves, not closed curves.

	* graphics-path.c (GdipResetPath): Don't set them to NULL. That
	wouldn't work, doofus.

	* graphics.c (GdipDrawCurve2I): Fixed function signature and use
	convert_points to  pass the work onto GdipDrawCurve2.
	(GdipDrawCurve3I): Fixed function signature.

	* general.c (gdip_open_curve_tangents): Fix typo.

2004-04-09 Peter Bartok <pbartok@novell.com>
   * Makefile.am: Added region.c to list of sourcefiles

2004-04-09 Jordi Mas i Hernandez <jordi@ximian.com>
	* region.c - fixes to regions 

2004-04-09  Duncan Mak  <duncan@ximian.com>

	* graphics-path.c (append_curve): Moved it to the top along with
	the other append helper functions.
	(GdipAddPathCurve, GdipAddPathCurveI): Implemented using
	gdip_open_curve_tangents.
	(GdipAddString): Fixed signature.

	* general.c (gdip_open_curve_tangents): Implemented.o
	(gdip_closed_curve_tangents): Fixed memory leak here.

	* gdip.h (gdip_open_curve_tangents): Add here. To be shared
	between graphics.c and graphics-path.c.

2004-04-08 Jordi Mas i Hernandez <jordi@ximian.com>
	* region.c - Started regions implementation
        * gdip.h - signature changes

2004-04-07  Ravindra  <rkumar@novell.com>

	* texturebrush.[ch]: Added the missing functionality of clipping
	a rectangle out of image provided.

2004-04-06  Vladimir Vukicevic  <vladimir@pobox.com>

	* jpegcodec.c (gdip_save_jpeg_image_internal): 
	remove stray JCS_GRAYSCALE setting, which was generating
	very bizzare images.
	
	* jpegcodec.c, pngcodec.c: Allow reading/writing non-RGBA data.
	The GpBitmap.data struct holds cairo-compatible data (always 32bpp
	RGBA), whereas the GpImage.pixFormat field holds what this data is
	actually supposed to be (i.e. grayscale).  Still no support for
	colormapped images.

2004-04-07  Duncan Mak  <duncan@ximian.com>

	* graphics.c (make_pie): Retort to make_ellipse *after* drawing
	the line.

2004-04-06  Vladimir Vukicevic  <vladimir@pobox.com>

	* jpegcodec.c (gdip_save_jpeg_image_internal): implement
	jpeg saving, both files and streams.  Format options are
	ignored for now.

	* image.c (GdipSaveImageToFile,
	(GdipSaveImageToDelegate_linux): add JPEG

	* image.c (gdip_get_pixel_format_components): added function

	* jpegcodec.c (gdip_load_jpeg_image_internal): add missing
	jpeg_destroy_decompress()

2004-04-06  Duncan Mak  <duncan@ximian.com>

	* graphics.c (make_arc): Just follow what I did with GraphicsPath
	and use a boolean flag instead of doing FP comparison. It's not
	worth it.

2004-04-06  Vladimir Vukicevic  <vladimir@pobox.com>

	* gdip.h: Added stream handling delegate prototypes,
	and some missing function protos

	* gdipImage.h: stream delegate loading/saving functions

	* image.c: stream loading/saving bits, implemented
	via linux-specific delegates.  Added guids for various
	file formats, and a gdip_image_format_for_clsid()
	helper function

	* jpegcodec.c: supports reading from a stream

	* pngcodec.c: supports writing; also supports
	reading/writing with a stream

	* image.c: blit surface directly for painting images,
	instead of creating a graphics context for it first

	* gifcodec.c, jpegcodec.c, pngcodec.c, tifcodec.c:
	Write data with the correct flags and resolution bits,
	to (almost) match what win32 outputs

2004-04-04  Vladimir Vukicevic  <vladimir@pobox.com>

	* gifcodec.c, tiffcodec.c, pngcodec.c: include config.h, which
	actually enables this code.. so that the glaring bugs as a result
	of it never having been compiled before can be fixed. *cough*

	* image.c (GdipDrawImageRectI): do correct scaling
	if source and dest width/height don't match.
	(GdipLoadImageFromFile): fseek back to the start
	before passing to the loader.

2004-04-04  Vladimir Vukicevic  <vladimir@pobox.com>

	* image.c: Changed loader calls to use correct
	load prototypes

	* pngcodec.c, gifcodec.c: Implemented png and gif loading

	* gdip.h: Changed ColorPalette to match GDI+; Entries is part
	of the allocated struct, not a separate pointer.  Also
	added some ARGB convenience macros.

	* bmpcodec.c, bmpcodec.h: Updated load prototypes to match
	usage

2004-04-04  Vladimir Vukicevic  <vladimir@pobox.com>

	* src/image.c, src/gdip.h: Added GdipDrawImage/DrawImageRect

	* src/jpegcodec.c, src/tiffcodec.c: Implemented loading jpeg and
	tiff images.  Need to test these out on windows, to see exactly
	what formats stuff gets retruned in, but I think we should be ok
	for the most common cases.  No file saving yet.
	
	* src/bmpcodec.c, src/gifcodec.c, src/pngcodec.c:
	Remove calls to bogus (and undefined) gdip_image_new()

2004-04-04  Duncan Mak  <duncan@ximian.com>

	* graphics.c (make_curve): Renamed from
	gdip_make_closed_curve. Added a new _CurveType argument.
	(convert_points): Moved to general.c, as it's used in
	graphics-path.c as well.

	* graphics-path.c (append_curve): Add a _CurveType
	argument. Renamed from gdip_append_closed_curve for consistency.
	(GdipAddPathClosedCurve2I): Hook it up.

	* general.c (convert_points): Moved here from graphics.c
	(gdip_open_curve_tangents): Declare here. No code yet, need to
	investigate end tangents.

	* gdip.h (_CurveType): New (private) enum for distinguishing open
	and close curves.

2004-04-04  Duncan Mak  <duncan@ximian.com>	

	* graphics-path.c (append_arc): Added a new boolean argument. to
	determine if we're continuing an existing curve.

2004-04-04  Duncan Mak  <duncan@ximian.com>	

	* graphics.c (make_arc): Only call move_to when we're not already at
	that point. This fixes FillPie, as cairo_fill implicitly closes
	all subpaths before filling. The extraneous move_to call earlier
	was causing Cairo to close early.
	(make_pie): Removed the debug messages.	

2004-04-02  Duncan Mak  <duncan@ximian.com>

	* graphics.c (make_pie, GdipDrawArc): If the delta is greater than
	or equal to 360 degrees, then we're effectively drawing an
	ellipse, so make it do so.

2004-04-02  Duncan Mak  <duncan@ximian.com>

	* graphics.c (GdipFillPieI, GdipDrawPieI): Instead of having
	another copy of the code, just use the float equivalent.
	(GdipDrawPie): Add restore/save pair.
	(make_pie): This is broken right now. Added some debugging
	messages.

2004-04-01  Duncan Mak  <duncan@ximian.com>

	* graphics.c (GdipFillClosedCurve, GdipFillClosedCurveI):
	Implemented.

2004-04-02  Ravindra <rkumar@novell.com>
	* texturebrush.c: Implemented TileFlipXY wrapmode.

2004-04-01  Duncan Mak  <duncan@ximian.com>

	* graphics.c (convert_points): New helper function to turn a list
	of GpPoints into GpPointFs.
	(GdipDrawClosedCurveI): Implemented using convert_points, then
	just call GdipDrawClosedCurve.

2004-04-01  Duncan Mak  <duncan@ximian.com>	

	Implemented drawing ClosedCurves in Graphics and GraphicsPath. 

	These functions are implemented with the help of Prof. Rasala at
	Northeastern University. The algorithm is described in:

	     Richard Rasala, Explicit Cubic Spline Interpolation Formulas,
	     in Andrew S. Glassner, Graphics Gems, Academic Press, 1990,
	     579-584.

	Remaining TODO: Finish open curves and consider tension.
	
	* graphics.c (gdip_make_closed_curve): Translates vertices
	and tangents for cairo_curve_to.
	(GdipDrawClosedCurve): Implemented.

	* graphics-path.c (gdip_append_closed_curve): Translates vertices
	and tangents into append_bezier.
	(GdipAddPathClosedCurve2): Implemented.

2004-04-01  Duncan Mak  <duncan@ximian.com>	

	* gdip.h: Added the new functions for calculating tangents.
	(CURVE_MIN_TERMS, CURVE_MAX_TERMS): Constants used in tangent
	calculations.

	* general.c (gdip_calculate_coefficients) 
	(gdip_closed_curve_tangents): Two helper functions for drawing
	closed curves.

2004-03-30  Sanjay Gupta <gsanjay@novell.com>
	*pngcodec.c Implemented one more method.
	*gdip.h Modified ColorPalette structure.

2004-03-31  Sachin Kumar <skumar1@novell.com>
	* Makefile.am: Updated file to make it work for
	  'make distcheck'.

2004-03-30 Jordi Mas i Hernandez <jordi@ximian.com>
	* image.c - GdipGetImageBounds and fixes
        * bitmap.c - keep the witdh, height and pixel format in sync with the image struct

2004-03-30  Sanjay Gupta <gsanjay@novell.com>
	*pngcodec.c Added crc check
	*pngcodec.h Added crc check

2004-03-28  Sanjay Gupta <gsanjay@novell.com>
	* pngcodec.c implementing png encoder
	* pngcodec.h implementing png encoder

2004-03-26  Duncan Mak  <duncan@ximian.com>

	* graphics.c: Prepare for the Curve and CloseCurve work by
	stubbing out some functions.

	* graphics.c (gdip_plot_path): Fixed the handling of paths
	containing PathPointTypeBezier points. Previously, we were
	resetting the index to zero at the head of each loop, so we were
	never drawing Bezier curves correctly. Also, we need to draw the
	curve immediately once we've stored 3 points, instead of waiting
	till the next iteration (which may never come). This is an
	off-by-one error.

	* graphics-path.c (append_arc): Use floats instead of ints to hold
	the center points, use doubles to hold the trig points.

2004-03-26 Jordi Mas i Hernandez <jordi@ximian.com>
	* image.c - dpis and parameter checking

2004-03-26  Ravindra  <rkumar@novell.com>
	* texturebrush.c: Implemented TileFlipY wrapmode and fixed
	TileFlipX wrapmode.

2004-03-26  Duncan Mak  <duncan@ximian.com>

	* graphics-path.c: Port the changes made to graphics here.
	(append_arc): New function, modeled after make_arc for appending
	arcs (a set of Bezier points) to the Path.
	(GdipAddPathArc): Calculate the middle angle correctly and call
	append_arc.
	(GdipAddPathPie): Removed duplication, call append_arc
	appropriately.

2004-03-26  Duncan Mak  <duncan@ximian.com>
	
	* graphics.c (make_arc): Use the end angle instead of the sweep
	angle.  Previously, the code was misbehaving because I used the
	sweep angle as the end angle.
	(make_pie, DrawArc): Determine the middle angle correctly in cases
	where the delta > 180. Even though this sounds simple, it took a
	long time for me to figure out.
	(make_pie): Simplifed things a bit. Instead of replicating most of
	the arc-drawing algorithm here, use of make_arc instead. This reduced
	some of the duplicates in the code.
	(DrawArcI): I'm tired on maintaining so many copies of the same
	code, so just call DrawArc now.

	With this patch, we should be drawing Arcs and Pies correctly.
	
2004-03-25  Ravindra <rkumar@novell.com>
	* texturebrush.[ch]: Fixing texture brush. Still needs
	some work.

2004-03-24  Jordi Mas i Hernandez <jordi@ximian.com>
	* imageattributes.c - created and first methods

2004-03-23  Peter Bartok <pbartok@novell.com>
   * gdip_win32.h: Added definitions for Wine X11DRV_ExtEscape function;
                   removed definition and reference to internal wine structures
   * gdip_win32.c: Added import of X11DRV_ExtEscape to allow pulling the X11 Drawable without
                   knowledge of internal structures
   * graphics.c: Now uses the X11DRV_ExtEscape function to retrieve the drawable from Wine
   * general.c: Made x11drvHandle accessible for other source files (needed for X11DRV_ExtEscape)

2004-03-23  Ravindra  <rkumar@novell.com>
	* gdip.h: Changed file format to Unix.

2004-03-22  Jordi Mas i Hernandez <jordi@ximian.com>
	* graphics.c: added GdipFillPieI and GdipFillPie

2004-03-22  Sanjay Gupta <gsanjay@novell.com>
	* gdip.h: Typo error
	* gdipImage.h: Fixed issue because of typo 
	* image.c: Fixed issue because of typo

2004-03-21  Sanjay Gupta <gsanjay@novell.com>
	* Makefile.am: Included codec files.
	* gdip.h: Added few structure definitions.
	* gdipImage.h: Included codecs .h files.
	* image.c: Work on codecs.

2004-03-18  Miguel de Icaza  <miguel@ximian.com>

	* graphics.c (GdipDrawString): Fixed what looked like a typo X and
	Y.  

	(GdipFillPath): Implement this routine.  Factor code
	into gdip_plot_path.

	Stub out a few more routines to avoid crashes when running.

2004-03-18  Peter Bartok <pbartok@novell.com>
   * pen.c: Fixed leak and bug that returned wrong pointer for dash array

2004-03-15  Jordi Mas i Hernandez <jordi@ximian.com>
    * graphics.c - Bug fixing, suport for hotkeys, code reoganisation
    * stringformat.c - string format tab support

2004-03-11  Peter Bartok <pbartok@novell.com>
   * bitmap.c: Added temporary hack to always initialize the bitmap scan (pixel) data (for SWF)

2004-03-10  Ravindra  <rkumar@novell.com>
	* hatchbrush.c: Coding style fixes.

2004-03-10  Ravindra  <rkumar@novell.com>
	* hatchbrush.h: Modified few internal function signatures.
	* hatchbrush.c: Implemented couple of hatching styles.

2004-01-10  Alexandre Pigolkine <pigolkine@gmx.de>
	* bitmap.c
	* gdip.h	GdipBitmapData struct. Memory ownership 
			stored in Reserved field		
	* general.c	small fix
	 
2004-03-08  Ravindra  <rkumar@novell.com>
	* hatchbrush.c: Implemented cross hatch style.
	* hatchbrush.h: Modified a function signature.

2004-03-08  Ravindra  <rkumar@novell.com>
	* solidbrush.c: cairo_set_rgb_color bug fix.
	* hatchbrush.c: cairo_set_rgb_color bug fix.

2004-03-07 Sanjay Gupta <gsanjay@novell.com>
	* gdip.h: Included ImageFlag enum and moved certain enums from
	gdipImage.h
	* gdipImage.h: Moved few enums to gdip.h
	* image.c: Implemented few functions

2004-03-06  Ravindra  <rkumar@novell.com>
	* pen.c: Indentation.
	* solidbrush.c: Coding style.
	* hatchbrush.c: Coding style and removed printf.

2004-03-05  Duncan Mak  <duncan@ximian.com>

	* graphics-path.c (GdipAddPathPath): Fix index, it should be 0,
	not 1.
	(GdipAddPathPolygon): Add a line back to the starting point to
	complete the polygon if the first and last points are not the same.

2004-03-04  Duncan Mak  <duncan@ximian.com>

	* graphics-path.c (GdipAddPathPath): Implemented.

2004-03-04  Jordi Mas i Hernandez <jordi@ximian.com>
    * stringformat.c - DigitSubstitution and TabStob methods

2004-03-03  Miguel de Icaza  <miguel@ximian.com>

	* gdip_win32.c (_load_gdi32, _load_user32): Use the
	_WINE_SHAREDLIB_PATH environment variable to locate our dynamic
	libraries. 

	* general.c (_load_x11drv): Load the library from the special
	location provided by the Wine init function.

2004-03-03  Jordi Mas i Hernandez <jordi@ximian.com>
    * stringformat.c - coding style

2004-03-02  Jordi Mas i Hernandez <jordi@ximian.com>
    * graphics.c - Implemented font strikeout and underline
    * font.c - Implemented font strikeout and underline, allows multiple attributes
    
2004-03-01  Sanjay Gupta <gsanjay@novell.com>
	* bitmap.c: Access modification in Get/Set Pixel()

2004-02-29  Ravindra <rkumar@novell.com>
	* hatchbrush.c: Implemented four vertical hatching styles
	and did few comment improvements.

2004-02-28  Miguel de Icaza  <miguel@ximian.com>

	* font.c: Coding style, ANSI-C-ification

	* Makefile.am: Add -ansi, -pedantic and -Werror, to keep this
	clean.
	
	* bitmap.c (GdipBitmapSetPixel): Optimize SetPixel, remove
	non-ANSI-isms.

	* region.c: Ansi C again.

	* hatchbrush.c: ANSI C again.

	* graphics.c: Clean up the mess in this file:

	Turn into ANSI C: No // for comments;  No variable declarations in
	the middle of a file.

	Fix the coding style (spacing, indentation).

2004-02-28  Sanjay Gupta <gsanjay@novell.com>
	
	* bitmap.c: Implemented GetPixel and SetPixel method.
	* gdip.h: Added declaration for GetPixel and SetPixel method.
	* gdipImage.h: Removed typedef for ARGB

2004-02-27  Ravindra <rkumar@novell.com>
	* hatchbrush.c: First implementation. Implementing only
	four hatching styles as of now. More to be added.
	* hatchbruush.h: Defines hatch struct, hatchstyle enum
	and also declaration for hatch brush functions.
	* Makefile.am: Added hatchbruch.[ch] to sources.

2004-02-26  Ravindra <rkumar@novell.com>
	* graphics.c: Added cairo_save () and cairo_restore ()
	function calls in Draw and Fill functions.

2004-02-25  Jordi Mas i Hernandez <jordi@ximian.com>
    * StringFormat.c - new methods
    * Font.c - PrivateFontCollection methods
    
2004-02-24  Jordi Mas i Hernandez <jordi@ximian.com>
    * font.c - added metrics for font families
    
2004-02-23  Jordi Mas i Hernandez <jordi@ximian.com>
    * graphics.c - added GdipMeasureString
    
2004-02-22  Ravindra <rkumar@novell.com>
	* texturebrush.c: First implementation. Needs some fixing.
	* texturebrush.h: Defines texture struct, wrapmode enum and
	also declaration for texture functions.
	* Makefile.am: Added texturebruch.[ch] to sources.

2004-02-21  Sanjay Gupta <gsanjay@novell.com>
	* gdip.h: Added typedef for UINT
	* Image.h: Added function stubs for image functions
	* gdipImage.h: Added new file containing image function declaration

2004-02-17  Jordi Mas i Hernandez <jordi@ximian.com>
    * fonts.c - remove unnecesary code and fixes

2004-02-17  Jordi Mas i Hernandez <jordi@ximian.com>
    * fonts.c suport for unit conversion
    * general.c - suport for unit conversion
    * graphics.c - single line drawing
    
2004-02-16  Ravindra <rkumar@novell.com>
	* gdip.h: Moved GpStatus enum and GpGraphics struct back
	from brush.h in here. Thanks to Duncan, for pointing this
	out.
	* brush.h: Moved out GpStatus enum and GpGraphics struct
	back to gdip.h.

2004-02-13  Ravindra <rkumar@novell.com>
	* brush.h: Added. For implementing brushes in OO-C, we
	have Brush and BrushClass (vtable) structs defined here 
	and related functions are declared.
	* solidbrush.h: Added. For implementing brushes in OO-C,
	we have SolidBrush struct defined here. Also, solid brush
	functions are declared.
	* gdip.h: Moved out brush functions to brush.h and solidbrush
	functions to solidbrush.h. Also, moved GpStatus enum and 
	GpGraphics struct to brush.h. (This is just to satisfy 
	compiler).
	* brush.c: All functions are modified to call functions from
	vtable.
	* solidbrush.c: new(), init(), setup(), clone() and destroy()
	functions are modified.
	* pen.c: gdip_pen_setup(): Modified to call gdip_brush_setup
	irrespective of brush type.
		GdipCreatePen2(): Added status checks. Now we set color
	also when SolidBrush is in the question. This applies to 
	GdipSetPenBrushFill() method also.
	* stringformat.c: Renaming method gdip_brush_init to
	gdip_stringformat_init. Because the method name is used
	in brush.c.

2004-02-13  Jordi Mas i Hernandez <jordi@ximian.com>
    * fonts.c fixed re-use of the same font, fixed size problems
    * graphics.c - string format, aligment, etc
    * stringformat.c - initial implementation

2004-02-05  Duncan Mak  <duncan@ximian.com>

	* gdip.h (GpRect, GpRectF): Instead of storing coordinates in
	terms of top, left, right, bottom, changed it to use X, Y, Width
	and Height instead. This matches the requirements for GDI+ (Flat
	API and the C++ wrapper) as well as System.Drawing.

	* bitmap.c (GdipBitmapLockBits): 
	* matrix.c (GdipCreateMatrix3, GdipCreateMatrix3I):
	* graphics.c (GdipDrawString): 	
	* graphics-path.c
	(GdipAddPathRectangles, GdipAddPathRectanglesI): Use X,
	Y, Width, Height coordinates instead of the old system.

2004-02-05  Duncan Mak  <duncan@ximian.com>

	* graphics.c: Fixed indentation.

2004-02-05  Jordi Mas i Hernandez <jordi@ximian.com>
	* font.c - first implementation

2004-01-29  Duncan Mak  <duncan@ximian.com>

	* bitmap.c (gdip_bitmap_dispose): Add a check for own_scan0.
	(GdipCreateBitmapFromScan0): Set own_scan0 flag if we own the
	incoming buffer, scan0.

	* gdip.h (GdipBitmapData): Add new field, own_scan0.

2004-01-26  Duncan Mak  <duncan@ximian.com>

	* bitmap.c (GdipCreateBitmapFromScan0): Use GdipAlloc here instead
	of malloc.
	(gdip_bitmap_dispose): Call GdipFree on bitmap->data.scan0 here.

	Jordi did the work for this, not me; I'm just the messenger.

2004-01-26  Duncan Mak  <duncan@ximian.com>	

	* graphics.c (GdipDrawPath): Doh! Added stupid breaks inside the
	switch, so we can draw simple paths (lines) now. For more complex
	curves, the array is holding some NaNs, so I'll need to look into
	that.

	* bitmap.c:
	(GdipCreateBitmapFromScan0): Set allocate memory for scan0 if it
	is NULL. Thanks to Jordi for fixing this, we can now write out to
	a file again.

2004-01-26  Duncan Mak  <duncan@ximian.com>	

	* graphics.c: Use C style comments instead of C++ style.

	* pen.c (clone_dash_array): new helper function.
	(GdipClonePen): Copy matrix and dash_array, removed the FIXME.

2004-01-23  Duncan Mak  <duncan@ximian.com>

	* graphics.c (GdipDrawPath): Implemented.

2004-01-20  Ravindra <rkumar@novell.com>

	* pen.c (GdipGetPenTransform): Fixed function signature, this
	fixes bug #52811.

2004-01-19  Duncan Mak  <duncan@ximian.com>

	* graphics-path.c (GdipGetPathPoints): Fixed.
	(GdipCreatePath): Remember to	initialize the arrays instead of
	just setting them to NULL.
	(GdipGetPathTypes, GdipGetPathPoints): Fix signature.

	* Makefile (local_sources): Add graphics-path.c to the build.

2004-01-13  Duncan Mak  <duncan@ximian.com>

	* matrix.c (GdipCreateMatrix): Use gdip_get_status instead of just
	returning Ok;

2004-01-13  Bernie Solomon  <bernard@ugsolutions.com>

	* graphics-path.c (append): fix struct initialization
	for old fashioned C compilers

2004-01-13  Ravindra <rkumar@novell.com>

	* pen.c: Initialized pen.matrix field to identity matrix.

2004-01-10  Alexandre Pigolkine <pigolkine@gmx.de>
	* bitmap.c 
	* brush.c		cosmetic changes
	* gdip.h		new field added to GpPen structure
	* gdip_win32.h		conditional compilation flag used to reflect changes in Cairo > 0.14
	* graphics.c		restore position in GRAPHICS_STATE stack 
	* matrix.c		order of matrices in GdipMultiplyMatrix changed 
	* pen.c			initialization of fields, protection in GdipDeletePen function added

2003-12-25  Duncan Mak  <duncan@ximian.com>

	* graphics-path.c (GdipAddPathLine): Use append instead of
	append_point.
	(GdipTransformPath): Remember to reset the points after the
	transformation.

2003-12-25  Duncan Mak  <duncan@ximian.com>	

	* graphics.c (DrawBezier, DrawBezierI): Well, it's pretty obvious
	that the code was incorrect before. After Christmas, I'm gonna
	hook up the GraphicsPath code and work on testing and making sure
	this stuff is correct. I'm pretty sure, in a first pass, there are
	lots of littles bugs waiting to be fixed.

	* graphics-path.c (new_point): Removed, we now pack the point
	inside the append functions.
	(append): New function that takes the X, Y coordinates directly.
	(append_bezier): Take coordinates instead of GpPointFs. Use the
	new append function instead of append_point.

2003-12-23  Duncan Mak  <duncan@ximian.com>

	* graphics-path.c:
	* graphics-path.h: Implemented GraphicsPath.

	* Makefile: Added graphics-path.c.

	* gdip.h (GpPathPointType, GpWarpMode): Added.

2003-12-21  Duncan Mak  <duncan@ximian.com>

	* graphics.c (C1): Made it more precise.
	(make_pie): Fixed.
	(make_arc): New helper function for getting the right Bezier for
	an elliptical arc, based on an algorithm found in the
	comp.text.pdf FAQ.

2003-12-02  Bernie Solomon  <bernard@ugsolutions.com>

	* pen.c (GdipSetPenLineCap): fix arg type so it compiles
	using HP compiler.

	* gdip.h: fix spelling of GdipSetPenLineJoin and add
	prototype for GdipGetPenLineJoin

2003-11-28  Duncan Mak  <duncan@ximian.com>

	* brush.c (gdip_brush_setup): Check on the type of the brush and
	delegate the implementation to the concrete Brushes, 
	(GdipCloneBrush, GdipDeleteBrush, GdipGetBrushType): Implemented.

	* gdip.h (DashStyle): Fixed typo.
	(PenAlignment, BrushType): Added new enumerations.
	(GpBrush): Added new type field.
	(GpPen): Added new fields: color, brush, mode, dash_array and
	unit. Updated the header file to include new Pen functions.

	* pen.c (convert_dash_array): Utitlity function for converting
	from a float* from GDI+ to a double* for Cairo.
	(GdipCreatePen2, GdipClonePen): Implemented.
	(PenWidth, BrushFill, Color, PenMode, PenUnit, DashStyle):
	(DashOffset, DashCount, DashArray): Implemented the Get/Set
	function pairs for these properties.
	(GdipGetPenCompoundArray, GdipSetPenCompoundArray):
	(GdipGetPenCompoundArrayCount): Stubbed.

	* solidbrush.c (gdip_solidfill_init): Utility for initializing a
	SolidBrush. Sets type as BrushTypeSolidColor.
	(gdip_solidfill_setup): Moved from gdip_brush_setup.
	(gdip_solidfill_clone): Implementation for GdipCloneBrush for a
	GpSolidFill.
	(GdipSetSolidFillColor, GdipGetSolidFillColor): Implemented.

2003-11-22  Duncan Mak  <duncan@ximian.com>

	* matrix.c (GdipCreateMatrix3, GdipCreateMatrix3I): Implemented.
	(GdipCloneMatrix): Fixed.
	(GdipShearMatrix, set_shear): Implemented.
	
	* graphics.c:
	(GdipGetWorldTransform, GdipMultiplyWorldTransform): Implemented.
	(GdipRotatePenTransform, GdipTranslatePenTransform): Use GDI+
	functions instead.

	* gdip.h
	(GdipRotatePenTransform, GdipTranslatePenTransform): Fix
	signature.
	(GdipCreateMatrix3, GdipCreateMatrix3I): Use const appropriately.
	
2003-11-17  Duncan Mak  <duncan@ximian.com>

	* matrix.c (matrix_equals): New helper function help test matrix
	equality.
	(GdipIsMatrixIdentity, GdipIsMatrixEqual): Use matrix_equals.
	(GdipGetMatrixElements): Don't malloc here, because the caller
	should hand us an allocated array.

2003-11-16  Duncan Mak  <duncan@ximian.com>

	* matrix.c (GdipCreateMatrix2, GdipCreateMatrix3) 
	(GdipCreateMatrix3I): Implemented.

	* pen.c (GdipResetPenTransform):
	(GdipMultiplyPenTransform, GdipTranslatePenTransform):
	(GdipScalePenTransform, GdipRotatePenTransform): Implemented.

	* matrix.c (set_translate, set_scale, set_rotate): Helper
	functions copied from Cairo. We are doing this because you can
	specify the order of multiplcation in GDI+, but not in Cairo.

2003-11-15  Duncan Mak  <duncan@ximian.com>

	* graphics.c: Moved PI and GRADTORAD to gdip.h.
	* gdip.h: Renamed GRADTORAD to DEGTORAD.

	* matrix.c (GdipCloneMatrix): Fix argument order.
	* matrix.c
	(GdipMultiplyMatrix, GdipTranslateMatrix, GdipScaleMatrix):
	(GdipRotateMatrix, GdipInvertMatrix):
	(GdipTransformMatrixPoints, GdipVectorTransformMatrixPoints):
	(GdipSetMatrixElements, GdipGetMatrixElements):
	(GdipIsMatrixInvertible): Implemented.

	* matrix.c (GdipIsMatrixIdentity, GdipIsMatrixEqual): Implemented.

2003-11-14  Duncan Mak  <duncan@ximian.com>	

	* general.c (gdip_get_status): Take cairo_status_t instead of
	cairo_t. We need this because this is used in matrix.c and we only
	have cairo_matrix_t there.
	* graphics.c: Updated calls to gdip_get_status.

	* pen.c
	(convert_line_cap, convert_line_join): Added static keyword.
	(GdipDeletePen): Implemented.

	* matrix.c
	(GdipCreateMatrix2, GdipCloneMatrix, GdipInvertMatrix): Use
	gdip_get_status instead of just returning Ok.
	(GdipRotateMatrix, GdipScaleMatrix, GdipTranslateMatrix):
	Implemented.

2003-11-12  Duncan Mak  <duncan@ximian.com>

	* bitmap.c, brush.c, general.c:
	* graphics.c, image.c, matrix.c:
	* pen.c, solidbrush.c: Use gdip.h instead of gdip_main.h.
	
	* gdip.h: New header file, merged from gdip_main.h and
	gdip_defs.h.

	* gdip_main.h, gdip_defs.h: Removed.

	* pen.c
	(convert_line_join, convert_line_cap): new function for converting
	enumerations between GDI+ and Cairo.
	(gdip_pen_setup): set miter limit and line join.
	(GdipSetPenMiterLimit, GdipGetPenMiterLimit):
	(GdipSetPenLineJoin, GdipGetPenLineJoin): 
	(GdipSetPenLineJoin, GdipGetPenTransform): implemented.	
	
2003-11-12  Alexandre Pigolkine <pigolkine@gmx.de>
	* bitmap.c 		copy image funciton added
	
2003-11-06  Duncan Mak  <duncan@ximian.com>

	* graphics.c (GdipDrawRectangle): Add call to gdip_pen_setup so
	that we stroke with the right color.

2003-11-05  Duncan Mak  <duncan@ximian.com>

	* graphics.c
	(make_pie, make_ellipse, make_polygon): Add static keyword.

	* gdip_defs.h: Update headers to include DrawBezier, DrawBeziers,
	DrawEllipse, DrawPie, DrawPolygon, DrawRectangle, FillEllipse,
	FillPolygon and the RenderingOrigin property.

	* Makefile (install-local): Added missing semi-colons.

2003-11-03  Bernie Solomon <bernard@ugsolutions.com>

	* gdip_main.h, gdip_win32.h, gdip_win32.c:
	fixes for non-GCC compilers

2003-11-02  Alexandre Pigolkine <pigolkine@gmx.de>

	* bitmap.c 		convert 24/32 bpp images in LockBits

2003-11-01  Duncan Mak  <duncan@ximian.com>

	* matrix.c
	(GdipCreateMatrix, GdipCreateMatrix2, GdipCloneMatrix):
	(GdipDeleteMatrix, GdipInvertMatrix): Implemented; the rest of the
	functions are stubbed out.

	* gdip_defs.h (GpMatrixOrder): Added.	

	* gdip_main.h
	(GpRect, GpRectF): Synonyms for Rect and RectF.
	(GpMatrix): An alias of cairo_matrix_t.

	* Makefile: Added matrix.c.

2003-10-28  Duncan Mak  <duncan@ximian.com>

	* gdip_main.h, gdip_def.h:
	Renamed all gdip_foo_ptr types are now GpFoo *.
	Renamed Status to GpStatus.
	Reformatted all C++ style comments to C style comments.
	Reformatted all C function prototypes to the style used by GTK+.

	* gdip_main.h (GpPoint, GpPointF): Added.

	* gdip_defs.h (GpFillMode): Added.

	* graphics.c (make_ellipse):
	(make_polygon, make_polygon_from_integers):
	(make_pie): private functions (make_foo) to be reused by DrawFoo
	and FillFoo.
	
	(convert_fill_mode): Converts a GpFillMode to a cairo_fill_rule_t.

	(GdipDrawPie, GdipFillEllipse, GdipFillPolygon): Implemented.

2003-10-26  Duncan Mak  <duncan@ximian.com>

	* graphics.c
	(GdipSetRenderingOrigin, GdipGetRenderingOrigin): Implemented.

2003-10-25  Duncan Mak  <duncan@ximian.com>

	* graphics.c
	(GdipDrawBezier, GdipDrawBezierI):
	(GdipDrawBeziers, GdipDrawBeziersI):
	(GdipDrawLine, GdipDrawLineI):		
	(GdipDrawLines, GdipDrawLinesI): implemented.

	(GdipFillRectangle):
	(GdipDrawString): Make use of gdip_get_status.
	
	* general.c
	(gdip_get_status): A new function for retrieving a Status from a
	cairo_t.
	
2003-10-23  Miguel de Icaza  <miguel@ximian.com>

	* bitmap.c (GdipCreateBitmapFromScan0): Do not allocate buffer
	here, expect that our caller to allocate that.
	
	Do not compute the stride here, expect our caller to do this
	properly.

	* Use the Mono coding conventions.

2003-10-15  Alexandre Pigolkine <pigolkine@gmx.de>
	* image.c			GdipDrawImageRectI changed 
	
2003-10-14  Alexandre Pigolkine <pigolkine@gmx.de>
	* gdip_defs.h
	* graphics.c
	* gdip_main.h
						DrawString function added

2003-10-12  Alexandre Pigolkine <pigolkine@gmx.de>
	* bitmap.c
	* brush.c
	* gdip_defs.h
	* gdip_win32.c
	* gdip_win32.h
	* gdip_main.h
	* general.c
	* graphics.c
	* image.c
	* Makefile
	* pen.c
	* solidbrush.c
						Added