diff options
Diffstat (limited to 'mcs/class/System.Drawing/System.Drawing.Printing/PageSettings.cs')
-rw-r--r-- | mcs/class/System.Drawing/System.Drawing.Printing/PageSettings.cs | 216 |
1 files changed, 216 insertions, 0 deletions
diff --git a/mcs/class/System.Drawing/System.Drawing.Printing/PageSettings.cs b/mcs/class/System.Drawing/System.Drawing.Printing/PageSettings.cs new file mode 100644 index 00000000000..c962f00d8bb --- /dev/null +++ b/mcs/class/System.Drawing/System.Drawing.Printing/PageSettings.cs @@ -0,0 +1,216 @@ +// +// System.Drawing.PageSettings.cs +// +// Authors: +// Dennis Hayes (dennish@Raytek.com) +// Herve Poussineau (hpoussineau@fr.st) +// Andreas Nahr (ClassDevelopment@A-SoftTech.com) +// +// (C) 2002 Ximian, Inc +// + +// +// Copyright (C) 2004 Novell, Inc (http://www.novell.com) +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to +// permit persons to whom the Software is furnished to do so, subject to +// the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// + +using System; +using System.Runtime.InteropServices; + +namespace System.Drawing.Printing +{ +#if NET_2_0 + [Serializable] +#else + [ComVisible (false)] +#endif + public class PageSettings : ICloneable + { + bool _Color; + bool _Landscape; + float _HardMarginX;
+ float _HardMarginY; + RectangleF _PrintableArea; + // create a new default Margins object (is 1 inch for all margins) + Margins _Margins = new Margins(); + PaperSize _PaperSize; + PaperSource _PaperSource; + PrinterResolution _PrinterResolution; + PrinterSettings _PrinterSettings; + + public PageSettings() : this(new PrinterSettings()) + { + } + + public PageSettings(PrinterSettings printerSettings) + { + PrinterSettings = printerSettings; + + Color = printerSettings.DefaultPageSettings.Color; + Landscape = printerSettings.DefaultPageSettings.Landscape; + PaperSize = printerSettings.DefaultPageSettings.PaperSize; + PaperSource = printerSettings.DefaultPageSettings.PaperSource; + PrinterResolution = printerSettings.DefaultPageSettings.PrinterResolution; + } + + // used by PrinterSettings.DefaultPageSettings + internal PageSettings(PrinterSettings printerSettings, bool color, bool landscape, PaperSize paperSize, PaperSource paperSource, PrinterResolution printerResolution) + { + PrinterSettings = printerSettings; + + Color = color; + Landscape = landscape; + PaperSize = paperSize; + PaperSource = paperSource; + PrinterResolution = printerResolution; + } + + //props + public Rectangle Bounds{ + get{ + int width = this.PaperSize.Width; + int height = this.PaperSize.Height; + + width -= this.Margins.Left + this.Margins.Right; + height -= this.Margins.Top + this.Margins.Bottom; + + if (this.Landscape) { + // swap width and height + int tmp = width; + width = height; + height = tmp; + } + return new Rectangle (Margins.Left, Margins.Top, width, height); + } + } + + public bool Color{ + get{ + return _Color; + } + set{ + _Color = value; + } + } + + public bool Landscape { + get{ + return _Landscape; + } + set{ + _Landscape = value; + } + } + + public Margins Margins{ + get{ + return _Margins; + } + set{ + _Margins = value; + } + } + + public PaperSize PaperSize{ + get{ + return _PaperSize; + } + set{ + _PaperSize = value; + } + } + + public PaperSource PaperSource{ + get{ + return _PaperSource; + } + set{ + _PaperSource = value; + } + } + + public PrinterResolution PrinterResolution{ + get{ + return _PrinterResolution; + } + set{ + _PrinterResolution = value; + } + } + + public PrinterSettings PrinterSettings{ + get{ + return _PrinterSettings; + } + set{ + _PrinterSettings = value; + } + } +#if NET_2_0 + public float HardMarginX { + get { + return _HardMarginX; + } + } +
+ public float HardMarginY { + get { + return _HardMarginY; + } + } + + public RectangleF PrintableArea { + get { + return _PrintableArea; + } + } +#endif
+ + + public object Clone(){ + return new PageSettings(this.PrinterSettings); + } + + + [MonoTODO("PageSettings.CopyToHdevmode")] + public void CopyToHdevmode (IntPtr hdevmode){ + throw new NotImplementedException (); + } + + + [MonoTODO("PageSettings.SetHdevmode")] + public void SetHdevmode (IntPtr hdevmode){ + throw new NotImplementedException (); + } + + public override string ToString(){ + string ret = "[PageSettings: Color={0}"; + ret += ", Landscape={1}"; + ret += ", Margins={2}"; + ret += ", PaperSize={3}"; + ret += ", PaperSource={4}"; + ret += ", PrinterResolution={5}"; + ret += "]"; + + return String.Format(ret, this.Color, this.Landscape, this.Margins, this.PaperSize, this.PaperSource, this.PrinterResolution); + } + } +} |