2 using awt = java.awt;
\r
3 using geom = java.awt.geom;
\r
5 namespace System.Drawing {
\r
6 internal sealed class StrokeFactory {
\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, PenFit penFit);
\r
16 sealed class AdvancedCreator : StrokeCreator {
\r
17 #region StrokeCreator Members
\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, PenFit penFit) {
\r
21 if ((outputTransform == null || outputTransform.isIdentity()) && (penFit == PenFit.NotThin))
\r
22 return new awt.BasicStroke(width, cap, join, miterlimit, dash, dash_phase);
\r
23 return new System.Drawing.AdvancedStroke(width, cap, join, miterlimit, dash, dash_phase, penTransform, outputTransform, penFit);
\r
29 sealed class DefaultCreator : StrokeCreator {
\r
30 #region StrokeCreator Members
\r
32 public awt.Stroke Create(float width, int cap, int join, float miterlimit, float[] dash, float dash_phase, geom.AffineTransform penTransform,
\r
33 geom.AffineTransform outputTransform, PenFit penFit) {
\r
34 return new awt.BasicStroke(width, cap, join, miterlimit, dash, dash_phase);
\r
40 static readonly StrokeCreator Creator;
\r
41 static StrokeFactory() {
\r
43 Type type = typeof(System.Drawing.AdvancedStroke);
\r
44 Activator.CreateInstance(type);
\r
45 Creator = new AdvancedCreator();
\r
48 Creator = new DefaultCreator();
\r
52 static public bool CanCreateAdvancedStroke {
\r
54 return !(Creator is DefaultCreator);
\r
58 static public awt.Stroke CreateStroke(float width, int cap, int join, float miterlimit,
\r
59 float[] dash, float dash_phase, geom.AffineTransform penTransform,
\r
60 geom.AffineTransform outputTransform, PenFit penFit) {
\r
62 return Creator.Create(width, cap, join, miterlimit, dash, dash_phase, penTransform, outputTransform, penFit);
\r