Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'mcs/class/System.Drawing/System.Drawing.Printing/PrintDocument.cs')
-rw-r--r--mcs/class/System.Drawing/System.Drawing.Printing/PrintDocument.cs209
1 files changed, 209 insertions, 0 deletions
diff --git a/mcs/class/System.Drawing/System.Drawing.Printing/PrintDocument.cs b/mcs/class/System.Drawing/System.Drawing.Printing/PrintDocument.cs
new file mode 100644
index 00000000000..8c9c6d550e2
--- /dev/null
+++ b/mcs/class/System.Drawing/System.Drawing.Printing/PrintDocument.cs
@@ -0,0 +1,209 @@
+//
+// System.Drawing.PrintDocument.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.ComponentModel;
+
+namespace System.Drawing.Printing
+{
+ [DefaultEvent ("PrintPage"), DefaultProperty ("DocumentName")]
+ [ToolboxItemFilter ("System.Drawing.Printing", ToolboxItemFilterType.Allow)]
+ public class PrintDocument : System.ComponentModel.Component
+ {
+ private PageSettings defaultpagesettings;
+ private PrinterSettings printersettings;
+ private PrintController printcontroller;
+ private string documentname;
+#if !(NET_1_0)
+ private bool originAtMargins = false; // .NET V1.1 Beta
+#endif
+
+ public PrintDocument() {
+ documentname = "document"; //offical default.
+ defaultpagesettings = new PageSettings(); // use default values of default printer
+ printersettings = new PrinterSettings(); // use default values
+ printcontroller = new StandardPrintController();
+ }
+
+ // properties
+ [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
+ [Browsable (false)]
+ [SRDescription ("The settings for the current page.")]
+ public PageSettings DefaultPageSettings{
+ get{
+ return defaultpagesettings;
+ }
+ set{
+ defaultpagesettings = value;
+ }
+ }
+
+ // Name of the document, not the file!
+ [DefaultValue ("document")]
+ [SRDescription ("The name of the document.")]
+ public string DocumentName{
+ get{
+ return documentname;
+ }
+ set{
+ documentname = value;
+ }
+ }
+
+ [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
+ [Browsable (false)]
+ [SRDescription ("The print controller object.")]
+ public PrintController PrintController{
+ get{
+ return printcontroller;
+ }
+ set{
+ printcontroller = value;
+ }
+ }
+
+ [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
+ [Browsable (false)]
+ [SRDescription ("The current settings for the active printer.")]
+ public PrinterSettings PrinterSettings{
+ get{
+ return printersettings;
+ }
+ set{
+ printersettings = value;
+ }
+ }
+
+#if !(NET_1_0)
+ [DefaultValue (false)]
+ [SRDescription ("Determines if the origin is set at the specified margins.")]
+ public bool OriginAtMargins{
+ get{
+ return originAtMargins;
+ }
+ set{
+ originAtMargins = value;
+ }
+ }
+#endif
+
+ // methods
+ public void Print(){
+ PrintEventArgs printArgs = new PrintEventArgs();
+ this.OnBeginPrint(printArgs);
+ if (printArgs.Cancel)
+ return;
+ PrintController.OnStartPrint(this, printArgs);
+ if (printArgs.Cancel)
+ return;
+
+ Graphics g = null;
+
+ // while there are more pages
+ PrintPageEventArgs printPageArgs;
+ do
+ {
+ PageSettings pageSettings = DefaultPageSettings.Clone() as PageSettings;
+ this.OnQueryPageSettings(new QueryPageSettingsEventArgs(pageSettings));
+
+ printPageArgs = new PrintPageEventArgs(
+ null,
+ pageSettings.Bounds,
+ new Rectangle(0, 0, pageSettings.PaperSize.Width, pageSettings.PaperSize.Height),
+ pageSettings);
+
+ if (g == null) {
+ g = Graphics.FromHdc (printArgs.GraphicsContext.Hdc);
+ printArgs.GraphicsContext.Graphics = g;
+ }
+
+ printPageArgs.GraphicsContext = printArgs.GraphicsContext;
+ PrintController.OnStartPage(this, printPageArgs);
+ // assign Graphics in printPageArgs
+ printPageArgs.SetGraphics(g);
+
+ if (!printPageArgs.Cancel)
+ this.OnPrintPage(printPageArgs);
+
+ PrintController.OnEndPage(this, printPageArgs);
+ if (printPageArgs.Cancel)
+ break;
+ } while (printPageArgs.HasMorePages);
+
+ this.OnEndPrint(printArgs);
+ PrintController.OnEndPrint(this, printArgs);
+ }
+
+ public override string ToString(){
+ return "[PrintDocument " + this.DocumentName + "]";
+ }
+
+ // events
+ protected virtual void OnBeginPrint(PrintEventArgs e){
+ //fire the event
+ if (BeginPrint != null)
+ BeginPrint(this, e);
+ }
+
+ protected virtual void OnEndPrint(PrintEventArgs e){
+ //fire the event
+ if (EndPrint != null)
+ EndPrint(this, e);
+ }
+
+ protected virtual void OnPrintPage(PrintPageEventArgs e){
+ //fire the event
+ if (PrintPage != null)
+ PrintPage(this, e);
+ }
+
+ protected virtual void OnQueryPageSettings(QueryPageSettingsEventArgs e){
+ //fire the event
+ if (QueryPageSettings != null)
+ QueryPageSettings(this, e);
+ }
+
+ [SRDescription ("Raised when printing begins")]
+ public event PrintEventHandler BeginPrint;
+
+ [SRDescription ("Raised when printing ends")]
+ public event PrintEventHandler EndPrint;
+
+ [SRDescription ("Raised when printing of a new page begins")]
+ public event PrintPageEventHandler PrintPage;
+
+ [SRDescription ("Raised before printing of a new page begins")]
+ public event QueryPageSettingsEventHandler QueryPageSettings;
+ }
+}