2010-04-07 Jb Evain <jbevain@novell.com>
[mcs.git] / class / System.Drawing / System.Drawing / StrokeFactory.jvm.cs
blob8878ac73f1b2c5b64b7c543aff1dd8a307352ca4
1 using System;
2 using awt = java.awt;
3 using geom = java.awt.geom;
5 namespace System.Drawing {
6 internal sealed class StrokeFactory {
8 StrokeFactory() {}
10 interface StrokeCreator {
11 awt.Stroke Create(float width, int cap, int join, float miterlimit,
12 float[] dash, float dash_phase, geom.AffineTransform penTransform,
13 geom.AffineTransform outputTransform, PenFit penFit);
16 sealed class AdvancedCreator : StrokeCreator {
17 #region StrokeCreator Members
19 public awt.Stroke Create(float width, int cap, int join, float miterlimit, float[] dash, float dash_phase, geom.AffineTransform penTransform,
20 geom.AffineTransform outputTransform, PenFit penFit) {
21 if ((penFit == PenFit.NotThin) &&
22 (outputTransform == null || outputTransform.isIdentity()) &&
23 (penTransform == null || penTransform.isIdentity()))
24 return new awt.BasicStroke(width, cap, join, miterlimit, dash, dash_phase);
25 return new System.Drawing.AdvancedStroke(width, cap, join, miterlimit, dash, dash_phase, penTransform, outputTransform, penFit);
28 #endregion
31 sealed class DefaultCreator : StrokeCreator {
32 #region StrokeCreator Members
34 public awt.Stroke Create(float width, int cap, int join, float miterlimit, float[] dash, float dash_phase, geom.AffineTransform penTransform,
35 geom.AffineTransform outputTransform, PenFit penFit) {
36 return new awt.BasicStroke(width, cap, join, miterlimit, dash, dash_phase);
39 #endregion
42 static readonly StrokeCreator Creator;
43 static StrokeFactory() {
44 try {
45 Type type = typeof(System.Drawing.AdvancedStroke);
46 Activator.CreateInstance(type);
47 Creator = new AdvancedCreator();
49 catch{
50 Creator = new DefaultCreator();
54 static public bool CanCreateAdvancedStroke {
55 get {
56 return !(Creator is DefaultCreator);
60 static public awt.Stroke CreateStroke(float width, int cap, int join, float miterlimit,
61 float[] dash, float dash_phase, geom.AffineTransform penTransform,
62 geom.AffineTransform outputTransform, PenFit penFit) {
64 return Creator.Create(width, cap, join, miterlimit, dash, dash_phase, penTransform, outputTransform, penFit);