2005-10-04 Zoltan Varga <vargaz@freemail.hu>
[mono.git] / mcs / class / System.Drawing / System.Drawing / StrokeFactory.jvm.cs
1 using System;\r
2 using awt = java.awt;\r
3 using geom = java.awt.geom;\r
4 \r
5 namespace System.Drawing {\r
6         internal sealed class StrokeFactory {\r
7 \r
8                 StrokeFactory() {}\r
9 \r
10                 interface StrokeCreator {\r
11                         awt.Stroke Create(float width, int cap, int join, float miterlimit,\r
12                                 float[] dash, float dash_phase, geom.AffineTransform penTransform,\r
13                                 geom.AffineTransform outputTransform, bool fitPen);\r
14                 }\r
15 \r
16                 sealed class AdvancedCreator : StrokeCreator {\r
17                         #region StrokeCreator Members\r
18 \r
19                         public awt.Stroke Create(float width, int cap, int join, float miterlimit, float[] dash, float dash_phase, geom.AffineTransform penTransform,\r
20                                 geom.AffineTransform outputTransform, bool fitPen) {\r
21                                 return new System.Drawing.AdvancedStroke(width, cap, join, miterlimit, dash, dash_phase, penTransform, outputTransform, fitPen);\r
22                         }\r
23 \r
24                         #endregion\r
25                 }\r
26 \r
27                 sealed class DefaultCreator : StrokeCreator {\r
28                         #region StrokeCreator Members\r
29 \r
30                         public awt.Stroke Create(float width, int cap, int join, float miterlimit, float[] dash, float dash_phase, geom.AffineTransform penTransform,\r
31                                 geom.AffineTransform outputTransform, bool fitPen) {\r
32                                 return new awt.BasicStroke(width, cap, join, miterlimit, dash, dash_phase);\r
33                         }\r
34 \r
35                         #endregion\r
36                 }\r
37 \r
38                 static readonly StrokeCreator Creator;\r
39                 static StrokeFactory() {\r
40                         try {\r
41                                 Type type = typeof(System.Drawing.AdvancedStroke);\r
42                                 Activator.CreateInstance(type);\r
43                                 Creator = new AdvancedCreator();\r
44                         }\r
45                         catch{\r
46                                 Creator = new DefaultCreator();\r
47                         }\r
48                 }\r
49 \r
50                 static public bool CanCreateAdvancedStroke {\r
51                         get {\r
52                                 return !(Creator is DefaultCreator);\r
53                         }\r
54                 }\r
55 \r
56                 static public awt.Stroke CreateStroke(float width, int cap, int join, float miterlimit,\r
57                         float[] dash, float dash_phase, geom.AffineTransform penTransform,\r
58                         geom.AffineTransform outputTransform, bool fitPen) {\r
59 \r
60                         return Creator.Create(width, cap, join, miterlimit, dash, dash_phase, penTransform, outputTransform, fitPen);\r
61                 }\r
62         }\r
63 }