This is an automated email from the ASF dual-hosted git repository.

yishayw pushed a commit to branch ChildResize
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git

commit 2597ac62dd8d33c824f62d53191304ef796544f0
Author: Yishay Weiss <[email protected]>
AuthorDate: Sun Jan 3 19:02:27 2021 +0200

    An initial implementation of spark Line
---
 .../royale/core/StatesWithTransitionsImpl.as       |  2 +
 .../src/main/royale/spark/primitives/Line.as       | 96 ++++++++++++++++------
 2 files changed, 71 insertions(+), 27 deletions(-)

diff --git 
a/frameworks/projects/Effects/src/main/royale/org/apache/royale/core/StatesWithTransitionsImpl.as
 
b/frameworks/projects/Effects/src/main/royale/org/apache/royale/core/StatesWithTransitionsImpl.as
index 686ebac..587435a 100644
--- 
a/frameworks/projects/Effects/src/main/royale/org/apache/royale/core/StatesWithTransitionsImpl.as
+++ 
b/frameworks/projects/Effects/src/main/royale/org/apache/royale/core/StatesWithTransitionsImpl.as
@@ -74,6 +74,8 @@ package org.apache.royale.core
             */
            private static const PSEUDONYMS:Object =
            {
+               width: "explicitWidth",
+               height: "explicitHeight",
                currentState: "currentStateDeferred"
            };
         
diff --git 
a/frameworks/projects/SparkRoyale/src/main/royale/spark/primitives/Line.as 
b/frameworks/projects/SparkRoyale/src/main/royale/spark/primitives/Line.as
index 9431814..0b6249d 100644
--- a/frameworks/projects/SparkRoyale/src/main/royale/spark/primitives/Line.as
+++ b/frameworks/projects/SparkRoyale/src/main/royale/spark/primitives/Line.as
@@ -28,9 +28,9 @@ import flash.geom.Rectangle;
 
 import spark.primitives.supportClasses.StrokedElement; */
 import org.apache.royale.events.EventDispatcher;
-import org.apache.royale.geom.Rectangle;
 import mx.core.mx_internal;
 import mx.graphics.IStroke;
+import mx.graphics.SolidColorStroke;
 import mx.graphics.IFill;
 import mx.core.UIComponent;
 import mx.display.Graphics;
@@ -87,7 +87,7 @@ public class Line extends UIComponent
     //  xFrom
     //----------------------------------
 
-    private var _xFrom:Number = 0;
+    private var _xFrom:Number;
     
     [Inspectable(category="General")]
 
@@ -124,7 +124,7 @@ public class Line extends UIComponent
     //  xTo
     //----------------------------------
 
-    private var _xTo:Number = 0;
+    private var _xTo:Number;
     
     [Inspectable(category="General")]
 
@@ -161,7 +161,7 @@ public class Line extends UIComponent
     //  yFrom
     //----------------------------------
 
-    private var _yFrom:Number = 0;
+    private var _yFrom:Number;
     
     [Inspectable(category="General")]
 
@@ -198,7 +198,7 @@ public class Line extends UIComponent
     //  yTo
     //----------------------------------
 
-    private var _yTo:Number = 0;
+    private var _yTo:Number;
     
     [Inspectable(category="General")]
 
@@ -260,13 +260,21 @@ public class Line extends UIComponent
      *  @playerversion AIR 1.5
      *  @productversion Royale 0.9.4
      */
-    /* override protected function measure():void
+    private var realXFrom:Number;
+    private var realXTo:Number;
+    private var realYFrom:Number;
+    private var realYTo:Number;
+    private var measuredWidth:Number;
+    private var measuredHeight:Number;
+    private var measuredX:Number;
+    private var measuredY:Number;
+    override protected function measure():void
     {
-        measuredWidth = Math.abs(xFrom - xTo);
-        measuredHeight = Math.abs(yFrom - yTo);
-        measuredX = Math.min(xFrom, xTo);
-        measuredY = Math.min(yFrom, yTo);
-    } */
+        measuredWidth = Math.abs(realXFrom - realXTo);
+        measuredHeight = Math.abs(realYFrom - realYTo);
+        measuredX = Math.min(realXFrom, realXTo);
+        measuredY = Math.min(realYFrom, realYTo);
+    }
 
     /**
      * @private 
@@ -297,16 +305,17 @@ public class Line extends UIComponent
      *  @playerversion AIR 1.5
      *  @productversion Royale 0.9.4
      */
-   /*  override protected function draw(g:Graphics):void
+    //  override protected function draw(g:Graphics):void
+    protected function draw(g:Graphics):void
     {
         // Our bounding box is (x1, y1, x2, y2)
-        var x1:Number = measuredX + drawX;
-        var y1:Number = measuredY + drawY;
-        var x2:Number = measuredX + drawX + width;
-        var y2:Number = measuredY + drawY + height;    
+        var x1:Number = measuredX;
+        var y1:Number = measuredY;
+        var x2:Number = measuredX + width;
+        var y2:Number = measuredY + height;    
         
         // Which way should we draw the line?
-        if ((xFrom <= xTo) == (yFrom <= yTo))
+        if ((realXFrom <= realXTo) == (realYFrom <= realYTo))
         { 
             // top-left to bottom-right
             g.moveTo(x1, y1);
@@ -318,7 +327,7 @@ public class Line extends UIComponent
             g.moveTo(x1, y2);
             g.lineTo(x2, y1);
         }
-    } */
+    }
        
        
        
@@ -393,18 +402,51 @@ public class Line extends UIComponent
     override protected function updateDisplayList(unscaledWidth:Number,
                                                   unscaledHeight:Number):void
     {
-           // TODO use lineTo instead of drawRect()
         super.updateDisplayList(unscaledWidth,unscaledHeight);
         var g:Graphics = graphics;
-        g.clear();
-        
-        if (stroke)
-            stroke.apply(g, new Rectangle(0, 0, unscaledWidth, 1), null);
-        
-        g.drawRect(0, 0, unscaledWidth, unscaledHeight);
+        if (stroke is SolidColorStroke)
+       {
+               var solidColorStroke:SolidColorStroke = stroke as 
SolidColorStroke;
+               g.lineStyle(solidColorStroke.weight, solidColorStroke.color, 
solidColorStroke.alpha);
+               g.clear();
+               if (!isNaN(_xFrom) && !isNaN(_yFrom) && !isNaN(_xTo) && 
!isNaN(_yTo) )
+               {
+                       realXFrom = _xFrom;
+                       realYFrom = _yFrom;
+                       realXTo = _xTo;
+                       realYTo = _yTo;
+               } else
+               {
+                       var hasWidth:Boolean =  !isNaN(unscaledWidth) && 
unscaledWidth > 0;
+                       var hasHeight:Boolean =  !isNaN(unscaledHeight) && 
unscaledHeight > 0;
+                       if (hasWidth || hasHeight)
+                       {
+                               var isDiagonal:Boolean = hasWidth && hasHeight;
+                               if (isDiagonal)
+                               {
+                                       realXFrom = isNaN(right) ? 0 : 
unscaledWidth;
+                                       realXTo = isNaN(right) ? unscaledWidth 
: 0;
+                                       realYFrom = 0;
+                                       realYTo = unscaledHeight;
+                               } else
+                               {
+                                       realXFrom = 0;
+                                       realYFrom = 0;
+                                       realXTo = hasWidth ? unscaledWidth : 0;
+                                       realYTo = hasHeight ? unscaledHeight : 
0;
+                               }
+                       } else
+                       {
+                               return;
+                       }
+               }
+               measure();
+               draw(g);
+               width = Math.max(width, solidColorStroke.weight);
+               height = Math.max(height, solidColorStroke.weight);
+               g.endStroke();
+       }
     }
 
-       
 }
-
 }

Reply via email to