3 using geom
= java
.awt
.geom
;
5 namespace System
.Drawing
{
6 internal sealed class 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
);
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
);
42 static readonly StrokeCreator Creator
;
43 static StrokeFactory() {
45 Type type
= typeof(System
.Drawing
.AdvancedStroke
);
46 Activator
.CreateInstance(type
);
47 Creator
= new AdvancedCreator();
50 Creator
= new DefaultCreator();
54 static public bool CanCreateAdvancedStroke
{
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
);