{
get \r
{
- return _dashPattern;
+ return (float [])_dashPattern.Clone();
}
set \r
return Math.Abs(Width*Width * (AD*KN_LM - BC*KN_LM));
}
- internal awt.Stroke GetNativeObject(geom.AffineTransform outputTransform, bool fitPen) {
- return GetNativeObject(null, outputTransform, fitPen);
+
+ internal bool CanCreateBasicStroke {
+ get {
+ if (!_transform.IsIdentity)
+ return false;
+
+ //FIXME: add more logic when more features will
+ // be implemented.
+ return true;
+ }
+ }
+
+ internal awt.Stroke GetNativeObject(geom.AffineTransform outputTransform, PenFit penFit) {
+ return GetNativeObject(null, outputTransform, penFit);
}
/// <summary>\r
/// \r
/// <param name="outputTransform">transform which will be applied on the final shape</param>\r
/// <param name="fitPen">ensure the shape will wide enough to be visible</param>\r
/// <returns></returns>
- internal awt.Stroke GetNativeObject(geom.AffineTransform penTransform, geom.AffineTransform outputTransform, bool fitPen) {
+ internal awt.Stroke GetNativeObject(geom.AffineTransform penTransform, geom.AffineTransform outputTransform, PenFit penFit) {
float[] dashPattern = null;\r
\r
switch (DashStyle) {\r
case DashStyle.Custom:\r
- if (DashPattern != null) {\r
- dashPattern = new float[DashPattern.Length];\r
- for(int i = 0; i < DashPattern.Length; i++) {
+ if (_dashPattern != null) {\r
+ dashPattern = new float[_dashPattern.Length];\r
+ for(int i = 0; i < _dashPattern.Length; i++) {
if (EndCap == LineCap.Flat)
- dashPattern[i] = DashPattern[i] * Width;
+ dashPattern[i] = _dashPattern[i] * Width;
else {
- if ((i & 1) == 0)
+ if ((i & 1) == 0) {
// remove the size of caps from the opaque parts
- dashPattern[i] = (DashPattern[i] * Width) - Width;
+ dashPattern[i] = (_dashPattern[i] * Width) - Width;
+ if (_dashPattern[i] < 0)
+ dashPattern[i] = 0;
+ }
else
// add the size of caps to the transparent parts
- dashPattern[i] = (DashPattern[i] * Width) + Width;
+ dashPattern[i] = (_dashPattern[i] * Width) + Width;
}
}\r
}\r
\r
return StrokeFactory.CreateStroke(Width, cap, \r
join, MiterLimit, dashPattern, DashOffset,\r
- penT, outputTransform, fitPen);
+ penT, outputTransform, penFit);
}
#region Stroke Members\r
\r
awt.Shape awt.Stroke.createStrokedShape(awt.Shape arg_0) {\r
- return GetNativeObject(null, false).createStrokedShape(arg_0);\r
+ return GetNativeObject(null, PenFit.NotThin).createStrokedShape(arg_0);\r
}\r
\r
#endregion