TARGET_JVM icon support
[mono.git] / mcs / class / System.Drawing / System.Drawing / Pen.jvm.cs
index d0b6fc585fe2a7227fff269a55f950e0d4fc0b3d..9badbe317ca019f12ed132eede47e59c95c64fb4 100755 (executable)
@@ -213,7 +213,7 @@ namespace System.Drawing
                {
                        get \r
                        {
-                               return _dashPattern;
+                               return (float [])_dashPattern.Clone();
                        }
 
                        set \r
@@ -457,8 +457,20 @@ namespace System.Drawing
                        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
@@ -466,24 +478,27 @@ namespace System.Drawing
                /// <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
@@ -543,13 +558,13 @@ namespace System.Drawing
 \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