2008-11-01 Sebastien Pouliot * 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 * 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 * PrintingServicesUnix.cs: Fix AvoidToStringOnStringsRule found using Gendarme. 2007-12-10 Andreia Gaita * PrintingServicesWin32.cs: Add enumeration flag to get remote printers as well as locally connected ones. Fixes #325258 2007-06-30 Gert Driesen * Margins.cs: Overloaded operators are 2.0 only. 2007-05-29 Sebastien Pouliot * 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 * 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 * 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 * PrintingServices.cs: Add missing static method SysPrn.GetPrintDialogInfo for SWF to call up printing dialogues. 2007-02-21 Andreia Gaita * PrintingServicesUnix.cs: Report an error in the console if there is a problem opening the printer. 2007-02-21 Andreia Gaita * PrintingServicesUnix.cs: don't free up pointers unnecessarily (doh) 2007-02-21 Andreia Gaita * 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 * PrintingServicesUnix.cs: fix a double-free bug 2007-02-20 Andreia Gaita * PrintingServicesUnix.cs: Fix leak caused by not calling cupsFreeDests on certain codepaths. Fix return value of cupsFreeDests to void. 2007-02-20 Andreia Gaita * 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 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 * PrintingServicesUnix.cs: Ensure we free the original pointer in GetAlternativeDefaultPrinter (not the one used for iteration). 2007-01-19 Andreia Gaita * 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 * PrintingServices.cs: Unify platform detection code. 2006-12-04 Carlos Alberto Cortez * 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 * PrintingServicesUnix: Proper size structure use for 64 bit support. 2006-12-01 Andreia Gaita * 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 * PrintingServicesUnix: check return value from cupsGetDefault. Hopefully fixes #79835 2006-12-01 Jordi Mas i Hernandez * 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 * 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 * PrintingServicesUnix.cs: Implements GetPrintDialogInfo 2006-11-24 Carlos Alberto Cortez 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 * PrintingServicesWin32.cs: fix another dumb typo - check proper return value from printer validity call 2006-11-16 Chris Toshok * PreviewPrintController.cs: fix typo - don't throw InvalidPrinterException when it wasn't supposed to be. 2006-11-16 Carlos Alberto Cortez * 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 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 * PrintingServicesUnix.cs: Implements LoadPrinterPaperSources member, simplifies GetPaperSizeName and loads paper source and size defaults 2006-09-27 Jordi Mas i Hernandez * 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 * 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 * 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 * 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 * PrintingServices.cs: GetPrintDialogInfo definition * PrintingServicesWin32.cs GetPrintDialogInfo implementation * PrintingServicesUnix.cs: GetPrintDialogInfo stub 2006-04-14 Jordi Mas i Hernandez * PrintingServicesUnix.cs: Replace cupsGetPrinters deprecated API call 2006-04-13 Jordi Mas i Hernandez * PrintingServicesUnix.cs: Checks if cups is installed * PrinterSettings.cs: PrintToFile property and ToString method 2006-04-28 Sebastien Pouliot * PrintController.cs: corcompare fix. No public ctor in 2.0. * PrinterSettings.cs: corcompare fix. Clone method isn't virtual. 2006-03-21 Sebastien Pouliot * 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 * PrintingServicesUnix.cs: Handle not having a printer 2006-02-09 Peter Dennis Bartok * PrintingServicesWin32.cs: Simplyfied the code, removing the need for pointer calculations (part of 64bit cleanup) 2006-01-27 Sebastien Pouliot * PrintingServicesWin32.cs: Ensure Marshal.FreeHGlobal is called for all unmanaged memory allocated with AllocHGlobal. 2006-01-15 Jordi Mas i Hernandez * PrintingServicesUnix.cs: Allow setting the dpy's for the surface 2005-12-22 Jordi Mas i Hernandez * 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 * 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 * 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 * PaperKind.cs: fixes wrong enum values 2005-01-27 Lluis Sanchez Gual * MarginsConverter.cs: Implemented support for InstanceDescriptor.