2005-12-22 Jordi Mas i Hernandez <jordimash@gmail.com>
authorJordi Mas i Hernandez <jordi@mono-cvs.ximian.com>
Thu, 22 Dec 2005 17:26:18 +0000 (17:26 -0000)
committerJordi Mas i Hernandez <jordi@mono-cvs.ximian.com>
Thu, 22 Dec 2005 17:26:18 +0000 (17:26 -0000)
* EnumPrinters.cs: Printer enumerator
* PrintingTextFile.cs: Prints a text file

svn path=/trunk/mcs/; revision=54738

mcs/class/System.Drawing/Samples/System.Drawing.Printing/ChangeLog
mcs/class/System.Drawing/Samples/System.Drawing.Printing/EnumPrinters.cs [new file with mode: 0644]
mcs/class/System.Drawing/Samples/System.Drawing.Printing/PrintMe.txt [new file with mode: 0644]
mcs/class/System.Drawing/Samples/System.Drawing.Printing/PrintingTextFile.cs [new file with mode: 0644]

index 19fbdba49349bd67fd42d11df2b6f20eae74a09f..0046c88ee79780ca6a1fad0c209af2878a18b17c 100644 (file)
@@ -1,3 +1,8 @@
+2005-12-22 Jordi Mas i Hernandez  <jordimash@gmail.com>
+
+       * EnumPrinters.cs: Printer enumerator
+       * PrintingTextFile.cs: Prints a text file
+
 2004-03-17  Ravindra  <rkumar@novell.com>
        * Created this repository for samples for
        System.Drawing.Printing namespace.
diff --git a/mcs/class/System.Drawing/Samples/System.Drawing.Printing/EnumPrinters.cs b/mcs/class/System.Drawing/Samples/System.Drawing.Printing/EnumPrinters.cs
new file mode 100644 (file)
index 0000000..a674ab5
--- /dev/null
@@ -0,0 +1,42 @@
+//
+// Enumerates printers installed in the system
+//
+
+using System;
+using System.Drawing.Printing;
+
+public class EnumPrinters
+{
+       public static void Main (string[] args)
+       {
+               PrinterSettings.StringCollection col = System.Drawing.Printing.PrinterSettings.InstalledPrinters;
+               
+               for (int i = 0; i < col.Count; i++) {
+                       
+                       Console.WriteLine ("--- {0}", col[i]);
+                       PrinterSettings ps = new PrinterSettings ();
+                       ps.PrinterName = col[i];
+                       //Console.WriteLine ("    Duplex: {0}", ps.Duplex);
+                       Console.WriteLine ("    FromPage: {0}", ps.FromPage);
+                       Console.WriteLine ("    ToPage: {0}", ps.ToPage);
+                       Console.WriteLine ("    MaximumCopies: {0}", ps.MaximumCopies);
+                       Console.WriteLine ("    IsDefaultPrinter: {0}", ps.IsDefaultPrinter);
+                       Console.WriteLine ("    SupportsColor: {0}", ps.SupportsColor);
+                       Console.WriteLine ("    MaximumPage {0}", ps.MaximumPage);
+                       Console.WriteLine ("    MinimumPage {0}", ps.MinimumPage);
+                       Console.WriteLine ("    LandscapeAngle {0}", ps.LandscapeAngle);
+                       /*                              
+                       for (int p = 0; p < ps.PrinterResolutions.Count; p++) {
+                               Console.WriteLine ("        PrinterResolutions {0}", ps.PrinterResolutions [p]);
+                       }*/             
+                       
+                       for (int p = 0; p < ps.PaperSizes.Count; p++) {
+                               Console.WriteLine ("        PaperSize Name [{0}] Kind [{1}] Width {2} Height {3}", 
+                                       ps.PaperSizes [p].PaperName, ps.PaperSizes [p].Kind,
+                                       ps.PaperSizes [p].Width, ps.PaperSizes [p].Height);
+                       }
+               }
+       }
+
+}
+
diff --git a/mcs/class/System.Drawing/Samples/System.Drawing.Printing/PrintMe.txt b/mcs/class/System.Drawing/Samples/System.Drawing.Printing/PrintMe.txt
new file mode 100644 (file)
index 0000000..1fc6640
--- /dev/null
@@ -0,0 +1,196 @@
+                   GNU GENERAL PUBLIC LICENSE
+                      Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                           Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+\f
+                   GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+\f
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+\f
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
diff --git a/mcs/class/System.Drawing/Samples/System.Drawing.Printing/PrintingTextFile.cs b/mcs/class/System.Drawing/Samples/System.Drawing.Printing/PrintingTextFile.cs
new file mode 100644 (file)
index 0000000..bc1942a
--- /dev/null
@@ -0,0 +1,54 @@
+//
+// Simple text file printing sample
+//
+
+using System;
+using System.Drawing;
+using System.IO;
+using System.Drawing.Printing;
+
+public class PrintingTextFile
+{
+       private static StreamReader stream;
+
+       static private void PrintPageEvent (object sender, PrintPageEventArgs e)
+       {               
+               float lines_page, y;            
+               int count = 0;
+               float left = e.MarginBounds.Left;
+               float top = e.MarginBounds.Top;
+               String line = null;
+               Font font = new Font ("Arial", 10);
+               float font_height = font.GetHeight (e.Graphics);
+               lines_page = e.MarginBounds.Height  / font_height;              
+
+               while (count < lines_page) {                    
+                       line = stream.ReadLine ();
+                       
+                       if (line == null)
+                               break;
+                               
+                       y = top + (count * font_height);        
+                       e.Graphics.DrawString (line, font, Brushes.Black, left, y, new StringFormat());
+                       
+                       count++;
+               }
+               
+               if (line != null)
+                       e.HasMorePages = true;
+               else
+                       e.HasMorePages = false;
+       }
+
+
+        public static void Main (string[] args)
+        {
+                stream = new StreamReader ("PrintMe.txt");
+               PrintDocument p = new PrintDocument ();
+               p.PrintPage += new PrintPageEventHandler (PrintPageEvent);
+                p.Print ();
+               stream.Close();
+        }
+}
+
+