git-svn-id: https://pdfsharp.svn.codeplex.com/svn@39620 56d0cb2f-6006-4f69-a5a2-94740...
[pdfsharp:pdfsharp.git] / PDFsharp / code / PdfSharp / PdfSharp.Internal / Calc.cs
1 #region PDFsharp - A .NET library for processing PDF\r
2 //\r
3 // Authors:\r
4 //   Stefan Lange (mailto:Stefan.Lange@pdfsharp.com)\r
5 //\r
6 // Copyright (c) 2005-2009 empira Software GmbH, Cologne (Germany)\r
7 //\r
8 // http://www.pdfsharp.com\r
9 // http://sourceforge.net/projects/pdfsharp\r
10 //\r
11 // Permission is hereby granted, free of charge, to any person obtaining a\r
12 // copy of this software and associated documentation files (the "Software"),\r
13 // to deal in the Software without restriction, including without limitation\r
14 // the rights to use, copy, modify, merge, publish, distribute, sublicense,\r
15 // and/or sell copies of the Software, and to permit persons to whom the\r
16 // Software is furnished to do so, subject to the following conditions:\r
17 //\r
18 // The above copyright notice and this permission notice shall be included\r
19 // in all copies or substantial portions of the Software.\r
20 //\r
21 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r
22 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r
23 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\r
24 // THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r
25 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r
26 // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER \r
27 // DEALINGS IN THE SOFTWARE.\r
28 #endregion\r
29 \r
30 using System;\r
31 #if GDI\r
32 using System.Drawing;\r
33 #endif\r
34 #if WPF\r
35 using System.Windows;\r
36 #endif\r
37 using PdfSharp.Drawing;\r
38 \r
39 namespace PdfSharp.Internal\r
40 {\r
41   /// <summary>\r
42   /// Some static helper functions for calculations.\r
43   /// </summary>\r
44   internal static class Calc\r
45   {\r
46     /// <summary>\r
47     /// Degree to radiant factor.\r
48     /// </summary>\r
49     public const double Deg2Rad = Math.PI / 180;\r
50 \r
51     /// <summary>\r
52     /// Half of pi.\r
53     /// </summary>\r
54     public const double πHalf = Math.PI / 2;\r
55     // α - β κ\r
56 \r
57     /// <summary>\r
58     /// Get page size in point from specified PageSize.\r
59     /// </summary>\r
60     public static XSize PageSizeToSize(PageSize value)\r
61     {\r
62       switch (value)\r
63       {\r
64         case PageSize.A0:\r
65           return new XSize(2380, 3368);\r
66 \r
67         case PageSize.A1:\r
68           return new XSize(1684, 2380);\r
69 \r
70         case PageSize.A2:\r
71           return new XSize(1190, 1684);\r
72 \r
73         case PageSize.A3:\r
74           return new XSize(842, 1190);\r
75 \r
76         case PageSize.A4:\r
77           return new XSize(595, 842);\r
78 \r
79         case PageSize.A5:\r
80           return new XSize(420, 595);\r
81 \r
82         case PageSize.B4:\r
83           return new XSize(729, 1032);\r
84 \r
85         case PageSize.B5:\r
86           return new XSize(516, 729);\r
87 \r
88         // The strange sizes from overseas...\r
89 \r
90         case PageSize.Letter:\r
91           return new XSize(612, 792);\r
92 \r
93         case PageSize.Legal:\r
94           return new XSize(612, 1008);\r
95 \r
96         case PageSize.Tabloid:\r
97           return new XSize(792, 1224);\r
98 \r
99         case PageSize.Ledger:\r
100           return new XSize(1224, 792);\r
101 \r
102         case PageSize.Statement:\r
103           return new XSize(396, 612);\r
104 \r
105         case PageSize.Executive:\r
106           return new XSize(540, 720);\r
107 \r
108         case PageSize.Folio:\r
109           return new XSize(612, 936);\r
110 \r
111         case PageSize.Quarto:\r
112           return new XSize(610, 780);\r
113 \r
114         case PageSize.Size10x14:\r
115           return new XSize(720, 1008);\r
116       }\r
117       throw new ArgumentException("Invalid PageSize.");\r
118     }\r
119   }\r
120 }