git-svn-id: https://pdfsharp.svn.codeplex.com/svn@39620 56d0cb2f-6006-4f69-a5a2-94740...
[pdfsharp:pdfsharp.git] / PDFsharp / code / PdfSharp / PdfSharp.Pdf.Advanced / PdfShadingTable.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 using System.Diagnostics;\r
32 using System.Collections;\r
33 using System.Globalization;\r
34 using System.Text;\r
35 using System.IO;\r
36 using PdfSharp.Drawing;\r
37 using PdfSharp.Internal;\r
38 #if false\r
39 namespace PdfSharp.Pdf.Advanced\r
40 {\r
41   /// <summary>\r
42   /// Contains all used Shading objects of a document.\r
43   /// </summary>\r
44   internal sealed class PdfShadingTable : PdfResourceTable\r
45   {\r
46     /// <summary>\r
47     /// Initializes a new instance of this class, which is a singleton for each document.\r
48     /// </summary>\r
49     public PdfShadingTable(PdfDocument document) : base(document)\r
50     {\r
51     }\r
52 \r
53     /// <summary>\r
54     /// Gets a PdfExtGState with the keys 'CA' and 'ca' set to the specified alpha value.\r
55     /// </summary>\r
56     public PdfExtGState GetExtGState(double alpha)\r
57     {\r
58       string key = MakeKey(alpha);\r
59       PdfExtGState extGState = this.alphaValues[key] as PdfExtGState;\r
60       if (extGState == null)\r
61       {\r
62         extGState = new PdfExtGState(this.document);\r
63         extGState.Elements[PdfExtGState.Keys.CA] = new PdfReal(alpha);\r
64         extGState.Elements[PdfExtGState.Keys.ca] = new PdfReal(alpha);\r
65 \r
66         this.alphaValues[key] = extGState;\r
67       }\r
68       return extGState;\r
69     }\r
70 \r
71     /// <summary>\r
72     /// Gets a PdfExtGState with the key 'CA' set to the specified alpha value.\r
73     /// </summary>\r
74     public PdfExtGState GetExtGStateStroke(double alpha)\r
75     {\r
76       string key = MakeKey(alpha);\r
77       PdfExtGState extGState = this.strokeAlphaValues[key] as PdfExtGState;\r
78       if (extGState == null)\r
79       {\r
80         extGState = new PdfExtGState(this.document);\r
81         extGState.Elements[PdfExtGState.Keys.CA] = new PdfReal(alpha);\r
82 \r
83         this.strokeAlphaValues[key] = extGState;\r
84       }\r
85       return extGState;\r
86     }\r
87 \r
88     /// <summary>\r
89     /// Gets a PdfExtGState with the key 'ca' set to the specified alpha value.\r
90     /// </summary>\r
91     public PdfExtGState GetExtGStateNonStroke(double alpha)\r
92     {\r
93       string key = MakeKey(alpha);\r
94       PdfExtGState extGState = this.nonStrokeAlphaValues[key] as PdfExtGState;\r
95       if (extGState == null)\r
96       {\r
97         extGState = new PdfExtGState(this.document);\r
98         extGState.Elements[PdfExtGState.Keys.ca] = new PdfReal(alpha);\r
99 \r
100         this.nonStrokeAlphaValues[key] = extGState;\r
101       }\r
102       return extGState;\r
103     }\r
104 \r
105     /// <summary>\r
106     /// Gets a PdfExtGState with the key 'ca' set to the specified alpha value.\r
107     /// </summary>\r
108     public PdfExtGState GetExtGState(XColor strokeColor, XColor nonStrokeColor)\r
109     {\r
110       if (strokeColor.IsEmpty)\r
111       {\r
112       }\r
113       else if (nonStrokeColor.IsEmpty)\r
114       {\r
115       }\r
116       else\r
117       {\r
118       }\r
119 \r
120       return null;\r
121       //string key = MakeKey(alpha);\r
122       //PdfExtGState extGState = this.nonStrokeAlphaValues[key] as PdfExtGState;\r
123       //if (extGState == null)\r
124       //{\r
125       //  extGState = new PdfExtGState(this.document);\r
126       //  extGState.Elements[PdfExtGState.Keys.ca] = new PdfReal(alpha);\r
127       //\r
128       //  this.nonStrokeAlphaValues[key] = extGState;\r
129       //}\r
130       //return extGState;\r
131     }\r
132 \r
133     string MakeKey(double alpha)\r
134     {\r
135       return ((int)(1000 * alpha)).ToString();\r
136     }\r
137 \r
138     /// <summary>\r
139     /// Maps from alpha values (range "0" to "1000") to PdfExtGState objects.\r
140     /// </summary>\r
141     Hashtable alphaValues = new Hashtable();\r
142     Hashtable strokeAlphaValues = new Hashtable();\r
143     Hashtable nonStrokeAlphaValues = new Hashtable();\r
144   }\r
145 }\r
146 #endif