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

	* PrintingServicesUnix.cs: Fix potential crash on 64bit OS. Gendarme
	rule for checking IntPtr has been updated to cover this case as well

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

	* PaperSize.cs, PreviewPrintController.cs, PrinterSettings.cs,
	PrintingPermissionAttribute.cs, PrintingPermission.cs: Remove unneeded
	field initialization to their default values.
	[Found using Gendarme AvoidUnneededFieldInitializationRule]

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

	* PrintingServicesUnix.cs: Fix AvoidToStringOnStringsRule found
	using Gendarme.

2007-12-10  Andreia Gaita <avidigal@novell.com>

	* PrintingServicesWin32.cs: Add enumeration flag to get remote 
	printers as well as locally connected ones. Fixes #325258

2007-06-30  Gert Driesen  <drieseng@users.sourceforge.net>

	* Margins.cs: Overloaded operators are 2.0 only.

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

	* Margins.cs: Implement missing == and != operators (MoMA reports them
	but they were not included in the class status pages). Fix property 
	setters (to check value), reduced code duplication and changed 
	GetHashCode to be less CPU intensive.

2007-05-24  Gert Driesen  <drieseng@users.sourceforge.net>

	* PrintingServicesWin32.cs: Pass 0 as mode to DocumentProperties to
	obtain the size of the buffer required to hold the DEVMODE structure.
	Fixes bug #81723.

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

	* PreviewPrintController.cs: Reduce bitmap size and avoid scaling the
	print preview (fix bug #80765). Patch from Vladimir Dimitrov.
	* PrintingServicesUnix.cs: Reorder calculation to avoid loss of 
	precision in integer division. Use printer resolution for Cairo
	fallback. Patch from Vladimir Dimitrov.

2007-03-13  Andreia Gaita  <avidigal@novell.com>

	* PrintingServices.cs: Add missing static method SysPrn.GetPrintDialogInfo
	for SWF to call up printing dialogues.

2007-02-21  Andreia Gaita  <avidigal@novell.com>
	
	* PrintingServicesUnix.cs: Report an error in the console if there is
	a problem opening the printer.

2007-02-21  Andreia Gaita  <avidigal@novell.com>

	* PrintingServicesUnix.cs: don't free up pointers unnecessarily (doh)

2007-02-21  Andreia Gaita  <avidigal@novell.com>

	* PrintingServicesUnix.cs: add checks and try blocks to make sure
	things don't blow up if we try to double free anything (not that
	we're trying to do anything like that :p )

2007-02-21  Andreia Gaita  <avidigal@novell.com>

	* PrintingServicesUnix.cs: fix a double-free bug

2007-02-20  Andreia Gaita  <avidigal@novell.com>

	* PrintingServicesUnix.cs: Fix leak caused by not calling cupsFreeDests
	on certain codepaths. Fix return value of cupsFreeDests to void.
	
2007-02-20  Andreia Gaita  <avidigal@novell.com>
	
	* PrintingServicesUnix.cs: Correct missing static initialization
	of loaded printers hashtable, unit tests were failing (oops :p)

2007-02-17  Marek (please complete)

	* PrintPreviewController, InvalidPrinterException: 
	Remove warnings

2007-02-16  Andreia Gaita  <avidigal@novell.com>

	Redesign how and when cups gets called to minimize
	p/invokes, implements caching of printers and printer
	settings as per calberto's patch - #79822, plotter detection, 
	duplex, fixes for image disposing, code modularization, 
	misc. fixes.
	
	* PageSettings.cs: Check and ignore null setter values on
	paper sizes, sources and resolutions.
	
	* PaperSize.cs: Add default paper size flag
	
	* PaperSource.cs: Add default paper source flag, minor code
	beautification
	
	* PrinterSettings.cs: Add duplex and plotter implementation, 
	modify calls to PrintingServices to support caching, add
	a printer capabilities list to store specific printer options - 
	only loaded with cups, for now. Move the internal list classes
	to the end of the code so as not to clutter.
	
	* PrintingServices.cs: Separate the PrintingServices class in 2 - 
	PrintingServices and GlobalPrintingServices (see calberto's patch
	in #79822). The PrintingServices class is where all the methods
	caching information reside, the GlobalPrintingServices methods do 
	no caching.
	The cached information resides on the Printer class, added to the 
	SysPrn class.
	
	* PrintingServicesUnix.cs: Big rewrite. 
	- Essentially, redesigned and modularized the code to minimize cups 
	calls. Then, applied the caching so all the cups calls are reduced 
	to a minimum, by loading a list of printers onto a hashtable, then 
	loading the settings of the chosen printer and saving that in the 
	hashtable all in one go.
	- Also, fixes for loading	the proper default values of the printer, 
	which are stored in it's global options;
	- Modularization of cups/ppd loading methods (LoadPrinterOptions, 
	LoadOptionList, OpenPrinter, ClosePrinter) so we don't repeat 
	cups/ppd loading loops everywhere. 
	- Proper disposing of pointers and structures, calling the proper
	cups free calls.
	- Add duplex support
	
	* PrintingServicesWin32.cs: IsPrinterValid is no longer caching the value,
	since it should be supporting global caching as well, though that is not
	yet complete on win32. Implements plotter detection support, and changes for
	the new PrinterSettings/GlobalPrinterSettings structure. Some minor changes
	the code to minimize p/invoke calls (load the printer sources and sizes 
	before accessing the collections)
	
	* StandardPrintController.cs: PrinterSettings/GlobalPrinterSettings structure
	changes

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

	* PrintingServicesUnix.cs: Ensure we free the original pointer in
	GetAlternativeDefaultPrinter (not the one used for iteration).

2007-01-19  Andreia Gaita  <avidigal@novell.com>

	* PrintingServicesUnix.cs: Add is_default flag check for 
	detecting default printer when cupsGetDefault doesn't return
	valid values (mainly ubuntu). Fixes #80198, #80519

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

	* PrintingServices.cs: Unify platform detection code.

2006-12-04  Carlos Alberto Cortez <calberto.cortez@gmail.com>

	* PrintingServicesUnix.cs: Add "landscape" option
	when using PaperSettings.Landscape set to true. Also
	swap the width and height for the postscript file.

2006-12-01  Andreia Gaita  <avidigal@novell.com>

	* PrintingServicesUnix: Proper size structure use for 64 bit
	support.

2006-12-01  Andreia Gaita  <avidigal@novell.com>

	* PrintingServicesUnix: *properly* check return value from 
	cupsGetDefault. If there are no default printers set, 
	check if there are installed printers, and use that.
	Hopefully fixes #79835

2006-12-01  Andreia Gaita  <avidigal@novell.com>

	* PrintingServicesUnix: check return value from cupsGetDefault.
	Hopefully fixes #79835

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

	* PrintingServicesWin32.cs: Fixes paper sizes reading. The POINT 
	structure is 8 bytes long not 4. This fixes margins calculations 
	(based on the paper size) that were badly broken. 

2006-11-28  Andreia Gaita  <avidigal@novell.com>

	* PageSettings.cs: 
	- internal member name changes to help
	out with intelisense. 
	- Use internal members directly instead of using
	corresponding properties so that exceptions are not thrown
	* PrintingServicesWin32:
	- Only return DefaultPrinter if it is actually valid. This
	is because Win32GetDefaultPrinter returns a printer name
	even if PrintSpooler is stopped (which should  behave the
	same way as if there are no printers installed)
	- Do not try to allocate if EnumPrinters returns 0
	
2006-11-25 Jordi Mas i Hernandez <jordimash@gmail.com>

	* PrintingServicesUnix.cs: Implements GetPrintDialogInfo

2006-11-24  Carlos Alberto Cortez <calberto.cortez@gmail.com>
	
	Initial support for PageSettings (color, copies, collate,
	and media size).

	* StandardPrintController.cs: Pass PrintDocument.PageSettings to
	create the Graphics object (althought PageSettings
	contains a PrinterSettings and vice versa, PrintDocument
	can contain non-related PrinterSettings and PageSettings objects).

	* PrintingServices.cs: Likewise.
	* PrintingServicesWin32.cs: Likewise.
	* PrintingServicesUnix.cs: Likewise. Also use cupsParseOptions
	to pass printing options when calling cupsPrintFile. Use "Custom"
	as name for custom pages without associated name (Laxmark printers
	have this problem, causing a nullref exc). Add GetPaperKind () method
	to retrieve and set the right PaperKind value for PaperSize, instead
	of using PaperKind.Custom for all page sizes. Finally save
	PageSettings in DOCINFO to use it later.

	* PrintDocument.cs: Clone PrinterSettings.PageSettings
	instead of creating a new one (this avoid creating an additional
	PrinterSettings instance).

2006-11-17  Andreia Gaita <avidigal@novell.com>

	* PrintingServicesWin32.cs: fix another dumb typo - 
	check proper return value from printer validity call

2006-11-16  Chris Toshok  <toshok@ximian.com>

	* PreviewPrintController.cs: fix typo - don't throw
	InvalidPrinterException when it wasn't supposed to be.

2006-11-16  Carlos Alberto Cortez <calberto.cortez@gmail.com>

	* PrintDocument.cs: Use QueryPageSettingsEventArgs.PageSettings
	in PrintPageEventArgs, instead of using the default one (mimic
	.Net behaviour).

	* PageSettings.cs: Implement Clone the right way (intead of using
	the default page settings).

2006-11-14 Andreia Gaita <avidigal@novell.com>
	Fixes #79835, implements PrinterSettings.IsValid, throws proper
	InvalidPrinterException with differentiated messages.
	
	* PrintingServices.cs: Declares IsPrinterValid to enable easy checking
	if printer name is a valid printer
	
	* PrintingServicesWin32.cs: Implements IsPrinterValid, caches 
	last assigned printer name and if it is valid to speed up next calls.
	
	* PrintingServicesUnix.cs: Implements IsPrinterValid, caches 
	last assigned printer name and if it is valid to speed up next calls.
	
	* PageSettings.cs: 
		- throw InvalidPrinterException in the properties,
		according to the docs: Color, Landscape, PaperSize, PaperSource, 
		PrinterResolution
		- change the private fields above to internal, so that in the
		constructor we can access them without triggering the exceptions
		if there are no printers installed
		
	* PrinterSettings.cs: Implement IsValid to call IsPrinterValid
	implemented above
	
	* PreviewPrintController.cs: throw InvalidPrinterException on 
	StartPrint() if there's no valid printer configured
	
	* InvalidPrinterException.cs: New private GetMessage() to customize
	printer error message, used by constructor

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

	* PrintingServicesUnix.cs: Implements LoadPrinterPaperSources member,
	simplifies GetPaperSizeName and loads paper source and size defaults

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

	* PrintingServices.cs: Add LoadPrinterPaperSources member
	
	* PrintingServicesWin32.cs: Implements LoadPrinterPaperSources and
	reads the default paper source and size.
	
	* PrintingServicesUnix.cs: Add stub LoadPrinterPaperSources member
	
	* PrinterSettings.cs: Implements PaperSourceCollection property and
	makes default paper source and size from the system.

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

	* PreviewPrintController.cs: scale the Graphics context we pass
	back from OnStartPage such that the preview looks the way the
	printed output will.

2006-07-28  Carlos Alberto Cortez <calberto.cortez@gmail.com>

	* PrintDocument.cs: When null is passed to PrinterSettings,
	it should be set to a new PrinterSettings instance, and should never
	be null.

	* PrinterSettings.cs: Default value for Copies should be 1. Also
	add a space in the ToString method, to correctly show the printer
	info.

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

	* PrinterSettings.cs: expose PrintFileName in the 1.1 case as an
	internal property, so we can get at it from MWF.

	* PrintingServicesUnix.cs: handle print to file, and also remove
	the temp file after sending the data to the printer.  fix some
	dllimports to match the rest of system.drawing.

	* PreviewPrintController.cs: implement this (warning, it'll eat
	all your memory until we get a real Metafile implementation, as
	we're storing bitmaps).

	* PrintDocument.cs: shift the graphics context stuff around a bit
	in Print(), so that the events after OnStartPrint are passed the
	graphics context the controller created there, and we use the
	return value of OnStartPage to do all drawing.

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

	* PrintingServices.cs: GetPrintDialogInfo definition
	* PrintingServicesWin32.cs GetPrintDialogInfo implementation
	* PrintingServicesUnix.cs: GetPrintDialogInfo stub

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

	* PrintingServicesUnix.cs: Replace cupsGetPrinters deprecated API call

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

	* PrintingServicesUnix.cs: Checks if cups is installed
	* PrinterSettings.cs: PrintToFile property and ToString method

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

	* PrintController.cs: corcompare fix. No public ctor in 2.0.
	* PrinterSettings.cs: corcompare fix. Clone method isn't virtual.

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

	* PrintingServicesUnix.cs: cupsGetPrinters(char***) requires to free 
	each individual string and (finally) the list. Note that this call is
	deprecated.

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

	* PrintingServicesUnix.cs: Handle not having a printer

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

	* PrintingServicesWin32.cs: Simplyfied the code, removing the need
	  for pointer calculations (part of 64bit cleanup)

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

	* PrintingServicesWin32.cs: Ensure Marshal.FreeHGlobal is called for 
	all unmanaged memory allocated with AllocHGlobal.

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

	* PrintingServicesUnix.cs: Allow setting the dpy's for the surface

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

	* PrintingServices.cs: Printing services abstration class
	* PrintingServicesWin32.cs: Win32 printer driver
	* PrintingServicesUnix.cs: Unix printer driver
	* Margins.cs: Fixes exceptions error messages
	* PrinterResolution.cs: Fixes
	* PrintEventArgs.cs: New internal method
	* PrintPageEventArgs.cs: New internal method
	* StandardPrintController.cs: Fixes
	* PrinterUnitConvert.cs: Fixes conversion errors
	* PrintDocument.cs: Fixes to make it print
	* PageSettings.cs: Take margains into account
	* PrintController.cs: Fixes
	* PaperSize.cs: Method to set paper Kind
	* PrinterSettings.cs: Implements settings and fixes
	* 	

2005-12-07 Jordi Mas i Hernandez <jordimash@gmail.com>
	
	* PrinterResolutionKind.cs: Fixes signature for .Net 2.0
	* PaperKind.cs: Fixes signature for .Net 2.0
	* PaperSource.cs: Fixes signature for .Net 2.0
	* Margins.cs: Fixes signature for .Net 2.0
	* PrinterResolution.cs: Fixes signature for .Net 2.0
	* PrintEventArgs.cs: Fixes signature for .Net 2.0
	* PrintAction.cs: New enum in .Net 2.0
	* PageSettings.cs:  Fixes signature for .Net 2.0
	* PaperSourceKind.cs:  Fixes signature for .Net 2.0
	* PrintController.cs: Fixes signature for .Net 2.0
	* Duplex.cs: Fixes signature for .Net 2.0
	* PaperSize.cs: Fixes signature for .Net 2.0
	* PreviewPrintController.cs: Fixes signature for .Net 2.0
	* PrinterSettings.cs: Fixes signature for .Net 2.0
	* PrintRange.cs: Fixes signature for .Net 2.0
	  
2005-09-16  Sebastien Pouliot  <sebastien@ximian.com>

	* InvalidPrinterException.cs: Removed NotImplementedException (not
	required) and added a demand for SerializationFormatter on the 
	GetObjectData method.
	* PrintingPermission.cs: Throw ArgumentException if the class or 
	version attributes are missing in the supplied XML (only in 1.x).

2005-03-23 Jordi Mas i Hernandez <jordi@ximian.com>
	* PaperKind.cs: fixes wrong enum values

2005-01-27  Lluis Sanchez Gual  <lluis@novell.com>

	* MarginsConverter.cs: Implemented support for InstanceDescriptor.  
