namespace System.Drawing.Printing
{
-#if NET_2_0
[Serializable]
-#else
- [ComVisible (false)]
-#endif
public class PageSettings : ICloneable
{
- bool _Color;
- bool _Landscape;
- float _HardMarginX;\r
- float _HardMarginY;
- RectangleF _PrintableArea;
+ internal bool color;
+ internal bool landscape;
+ internal PaperSize paperSize;
+ internal PaperSource paperSource;
+ internal PrinterResolution printerResolution;
+
// create a new default Margins object (is 1 inch for all margins)
- Margins _Margins = new Margins();
- PaperSize _PaperSize;
- PaperSource _PaperSource;
- PrinterResolution _PrinterResolution;
- PrinterSettings _PrinterSettings;
+ Margins margins = new Margins();
+#pragma warning disable 649
+ float hardMarginX;
+ float hardMarginY;
+ RectangleF printableArea;
+ PrinterSettings printerSettings;
+#pragma warning restore 649
public PageSettings() : this(new PrinterSettings())
{
{
PrinterSettings = printerSettings;
- Color = printerSettings.DefaultPageSettings.Color;
- Landscape = printerSettings.DefaultPageSettings.Landscape;
- PaperSize = printerSettings.DefaultPageSettings.PaperSize;
- PaperSource = printerSettings.DefaultPageSettings.PaperSource;
- PrinterResolution = printerSettings.DefaultPageSettings.PrinterResolution;
+ this.color = printerSettings.DefaultPageSettings.color;
+ this.landscape = printerSettings.DefaultPageSettings.landscape;
+ this.paperSize = printerSettings.DefaultPageSettings.paperSize;
+ this.paperSource = printerSettings.DefaultPageSettings.paperSource;
+ this.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;
+ this.color = color;
+ this.landscape = landscape;
+ this.paperSize = paperSize;
+ this.paperSource = paperSource;
+ this.printerResolution = printerResolution;
}
//props
public Rectangle Bounds{
get{
- int width = this.PaperSize.Width;
- int height = this.PaperSize.Height;
+ int width = this.paperSize.Width;
+ int height = this.paperSize.Height;
- width -= this.Margins.Left + this.Margins.Right;
- height -= this.Margins.Top + this.Margins.Bottom;
+ width -= this.margins.Left + this.margins.Right;
+ height -= this.margins.Top + this.margins.Bottom;
- if (this.Landscape) {
+ if (this.landscape) {
// swap width and height
int tmp = width;
width = height;
height = tmp;
}
- return new Rectangle (Margins.Left, Margins.Top, width, height);
+ return new Rectangle (this.margins.Left, this.margins.Top, width, height);
}
}
public bool Color{
get{
- return _Color;
+ if (!this.printerSettings.IsValid)
+ throw new InvalidPrinterException(this.printerSettings);
+ return color;
}
set{
- _Color = value;
+ color = value;
}
}
public bool Landscape {
get{
- return _Landscape;
+ if (!this.printerSettings.IsValid)
+ throw new InvalidPrinterException(this.printerSettings);
+ return landscape;
}
set{
- _Landscape = value;
+ landscape = value;
}
}
public Margins Margins{
get{
- return _Margins;
+ if (!this.printerSettings.IsValid)
+ throw new InvalidPrinterException(this.printerSettings);
+ return margins;
}
set{
- _Margins = value;
+ margins = value;
}
}
public PaperSize PaperSize{
get{
- return _PaperSize;
+ if (!this.printerSettings.IsValid)
+ throw new InvalidPrinterException(this.printerSettings);
+ return paperSize;
}
set{
- _PaperSize = value;
+ if (value != null)
+ paperSize = value;
}
}
public PaperSource PaperSource{
get{
- return _PaperSource;
+ if (!this.printerSettings.IsValid)
+ throw new InvalidPrinterException(this.printerSettings);
+ return paperSource;
}
set{
- _PaperSource = value;
+ if (value != null)
+ paperSource = value;
}
}
public PrinterResolution PrinterResolution{
get{
- return _PrinterResolution;
+ if (!this.printerSettings.IsValid)
+ throw new InvalidPrinterException(this.printerSettings);
+ return printerResolution;
}
set{
- _PrinterResolution = value;
+ if (value != null)
+ printerResolution = value;
}
}
public PrinterSettings PrinterSettings{
get{
- return _PrinterSettings;
+ return printerSettings;
}
set{
- _PrinterSettings = value;
+ printerSettings = value;
}
}
-#if NET_2_0
public float HardMarginX {
get {
- return _HardMarginX;
+ return hardMarginX;
}
}
- \r
+
public float HardMarginY {
get {
- return _HardMarginY;
+ return hardMarginY;
}
}
public RectangleF PrintableArea {
get {
- return _PrintableArea;
+ return printableArea;
}
}
-#endif\r
- public object Clone(){
- return new PageSettings(this.PrinterSettings);
+ public object Clone ()
+ {
+ // We do a deep copy
+ PrinterResolution pres = new PrinterResolution (this.printerResolution.Kind, this.printerResolution.X, this.printerResolution.Y);
+ PaperSource psource = new PaperSource (this.paperSource.Kind, this.paperSource.SourceName);
+ PaperSize psize = new PaperSize (this.paperSize.PaperName, this.paperSize.Width, this.paperSize.Height);
+ psize.RawKind = (int)this.paperSize.Kind;
+
+ PageSettings ps = new PageSettings (this.printerSettings, this.color, this.landscape,
+ psize, psource, pres);
+ ps.Margins = (Margins) this.margins.Clone ();
+ return ps;
}
ret += ", PrinterResolution={5}";
ret += "]";
- return String.Format(ret, this.Color, this.Landscape, this.Margins, this.PaperSize, this.PaperSource, this.PrinterResolution);
+ return String.Format(ret, this.color, this.landscape, this.margins, this.paperSize, this.paperSource, this.printerResolution);
}
}
}