On Tue, Sep 9, 2014 at 2:26 PM, Peter Ent <p...@adobe.com> wrote: > I tried that and it did not work (because the fill and stroke were not > set), so I changed my itemRenderer to create the Rect at the point of use: > > protected function drawBar():void > { > if (this.width > 0 && this.height > 0) > { > if (filledRect == null) filledRect = new Rect(); > var solidColor:SolidColor = new SolidColor(); > solidColor.color = fillColor; > var solidStroke:SolidColorStroke = new SolidColorStroke(); > solidStroke.color = fillColor; > solidStroke.weight = 1; > filledRect.fill = solidColor; > filledRect.stroke = solidStroke; > filledRect.drawRect(0,0,this.width,this.height); > > if (needsAdd) { > addElement(filledRect); > needsAdd = false; > } > } > } > > > > > That's the AS code, but the x-compiled JS code is identical (except for > all of the Language.as things Falcon adds). I'm getting the same exception > when the filledRect element is added. I stepped through using Firebug and > all of the code is being executed, so the Rect's fill and stroke are now > set and the width and height of the itemRenderer have non-zero values. So > this should draw a filled rectangle. >
It's possible that I have not checked in something. Are you able to compile and run the examples\FlexJSTest_SVG without any issues? Perhaps you can check in your code so I can see what's happening? Thanks, Om Thanks, Om > > Peter Ent > Adobe Systems > > > > On 9/9/14 4:53 PM, "OmPrakash Muppirala" <bigosma...@gmail.com> wrote: > > >Ah, I see what's happening. My code expects the drawXXX() [drawRect, > >drawPath, etc.] to be called before adding it as an element to the parent. > > > >Try switching > > > >this.filledRect = new org.apache.flex.core.graphics.Rect(); > >this.addElement(this.filledRect); > > > >to > > > >this.filledRect = new org.apache.flex.core.graphics.Rect(); > >this.filledRect.drawRect(x,y,width,height); > >this.addElement(this.filledRect); > > > >I can change how this works, but I don't see an invalidation mechanism > >that > >I can use. How do you suggest we approach this? > > > >Thanks, > >Om > > > >On Tue, Sep 9, 2014 at 1:40 PM, OmPrakash Muppirala <bigosma...@gmail.com > > > >wrote: > > > >> On Tue, Sep 9, 2014 at 1:15 PM, Peter Ent <p...@adobe.com> wrote: > >> > >>> I created a temporary item renderer to see how the x-compile would > >>>work. > >>> Here is the code in my temporary item renderer that creates the Rect: > >>> > >>> > >>>org.apache.flex.charts.supportClasses.TempBoxRenderer.prototype.set_data > >>> = > >>> function(value) { > >>> org.apache.flex.charts.supportClasses.TempBoxRenderer.base(this, > >>> 'set_data', value); > >>> if (this.filledRect == null) { > >>> this.filledRect = new org.apache.flex.core.graphics.Rect(); > >>> this.addElement(this.filledRect); > >>> } > >>> }; > >>> > >>> > >>> this.addElement() is called which leads to the addedToParent function > >>> where the crash happens. I see that GraphicShape.js doesn't extends > >>> UIBase.js, which it probably should, given how the AS side works. > >>> > >>> Peter > >>> > >>> > >>> > >> Are you sure you have the latest code? I remember fixing this exact > >>issue > >> a few commits ago. > >> If you can check in the example, it will be easier for me to chase the > >> issue down. > >> > >> I contemplated if I should extend GraphicShape off of a relatively heavy > >> UIBase or if I can just implement IUIBase. As a temporary workaround, > >>I do > >> have an addedToParent() method in GraphicShape, where the element should > >> already be on the DOM, so that getBBox() should work. > >> > >> Have you tried it in any other browser, maybe it is a browser specific > >> issue? Are there any other errors in the console? > >> > >> Thanks, > >> Om > >> > >> > >>> > >>> On 9/9/14 2:22 PM, "OmPrakash Muppirala" <bigosma...@gmail.com> wrote: > >>> > >>> >On Tue, Sep 9, 2014 at 8:19 AM, Peter Ent <p...@adobe.com> wrote: > >>> > > >>> >> Have run into a problem on the JS side. Firebox is telling me that > >>>in > >>> >>this > >>> >> code from GraphicShape.js: > >>> >> > >>> >> org.apache.flex.core.graphics.GraphicShape.prototype.addedToParent = > >>> >> function() { > >>> >> var bbox = this.element.getBBox(); > >>> >> this.resize(this.x_, this.y_, bbox.width + this.x_ * 2, > >>>bbox.height + > >>> >> this.y_ * 2); > >>> >> }; > >>> >> > >>> > > >>> >Peter, > >>> > > >>> >Can you please attach the html code for the svg element that is > >>>throwing > >>> >an > >>> >error? I will try to repro it on my side. > >>> >Did you try Chrome or other browsers? > >>> > > >>> >Thanks, > >>> >Om > >>> > > >>> > > >>> >> > >>> >> > >>> >> this.element.getBBox() is returning undefined. I know that > >>>this.element > >>> >>is > >>> >> set with an SVG element. > >>> >> > >>> >> I'm using Firefox 31.0 on Mac OS X. > >>> >> > >>> >> Peter Ent > >>> >> Adobe Systems > >>> >> > >>> >> On 9/9/14 10:37 AM, "Peter Ent" <p...@adobe.com> wrote: > >>> >> > >>> >> >The update to handle 'A' and 'a' works great! Thanks. > >>> >> > > >>> >> >Peter Ent > >>> >> >Adobe Systems > >>> >> > > >>> >> >On 9/9/14 3:42 AM, "OmPrakash Muppirala" <bigosma...@gmail.com> > >>> wrote: > >>> >> > > >>> >> >>On Mon, Sep 8, 2014 at 3:53 PM, OmPrakash Muppirala > >>> >> >><bigosma...@gmail.com> > >>> >> >>wrote: > >>> >> >> > >>> >> >>> On Mon, Sep 8, 2014 at 1:59 PM, Peter Ent <p...@adobe.com> > >>>wrote: > >>> >> >>> > >>> >> >>>> I haven't tried the JS side - this is all Flash. In SVG, the > >>>fill > >>> >> >>>>takes > >>> >> >>>> care of closing the path; I'm not using any line or border. > >>> >> >>>> > >>> >> >>>> > >>> >> >>> Yes, it looks like the A parameter is not supported. I will > >>>work > >>> on > >>> >> >>> adding this support in Path. I took a big chunk of the Path > >>> >> >>>implementation > >>> >> >>> from spark.primitives.Path. It seems like we do need to tweak > >>>it > >>> >> >>>further. > >>> >> >>> > >>> >> >>> > >>> >> >>Hi, > >>> >> >> > >>> >> >>The support for 'a' and 'A' (Elliptical Arc) has been added to the > >>> >>Flash > >>> >> >>implementation of the Path api. I tried with this: > >>> >> >> > >>> >> >>path.drawPath(250,500,"M 50 50 L 100 50 A 50 50 0 0 0 50 0 Z"); > >>> >> >> > >>> >> >>and got a nice little wedge drawn on the screen. > >>> >> >> > >>> >> >>More importantly, the Flash and SVG renderings look (almost) the > >>> same. > >>> >> >> > >>> >> >>As part of this implementation, I borrowed the drawEllipicalArc() > >>> >>method > >>> >> >>from the svgweb library(flash implementation of SVG) [1] The > >>>code is > >>> >> >>Apache licensed. I have added the link to the original code as a > >>> >>comment > >>> >> >>in our code. Do I need to mention this in the NOTICE or LICENSE > >>> >>files? > >>> >> >> > >>> >> >>Peter, if you can do some more testing and let me know your > >>>feedback, > >>> >> >>that > >>> >> >>would be great. > >>> >> >> > >>> >> >>And looks like this can be added to the current SDK's FXG > >>> >>implementation > >>> >> >>as > >>> >> >>well. I am surprised that we did not hit this issue in the > >>>current > >>> >>SDK. > >>> >> >> > >>> >> >>Thanks, > >>> >> >>Om > >>> >> >> > >>> >> >>[1] > >>> >> >> > >>> >> > >>> >> > >>> > >>> > https://code.google.com/p/svgweb/source/browse/trunk/src/org/svgweb/util > >>>s > >>> >> >>/ > >>> >> >>EllipticalArc.as?r=1251 > >>> >> >> > >>> >> >> > >>> >> >> > >>> >> >> > >>> >> >>> I see that mx.charts.chartClasses.GraphicsUtilities has a > >>>drawArc() > >>> >> >>> method. I will probably end up using that implementation. > >>> >> >>> > >>> >> >>> > >>> >> >>>> Which brings me to the next issue. When drawing a series of > >>> >>connected > >>> >> >>>> lines (for the LineChart), the first and last points are > >>>getting > >>> >> >>>> connected, which I do not want. My loop to build the path looks > >>> >>like > >>> >> >>>>this, > >>> >> >>>> below. point[0] != point[last] so they should not be > >>>connected. I > >>> >> >>>>tried > >>> >> >>>> "z" and "Z" thinking one meant leave the path closed and one > >>> closed > >>> >> >>>>the > >>> >> >>>> path, but that didn't make any difference. > >>> >> >>>> > >>> >> >>>> var pathString:String = ""; > >>> >> >>>> > >>> >> >>>> for (var i:int=0; i < > >>> >>points.length; > >>> >> >>>>i++) > >>> >> >>>> { > >>> >> >>>> var point:Object = > >>>points[i]; > >>> >> >>>> if (i == 0) pathString > >>>+= > >>> >>"M > >>> >> >>>> "+point.x+" "+point.y+" "; > >>> >> >>>> else pathString += "L > >>> >> >>>>"+point.x+" > >>> >> >>>> "+point.y+" "; > >>> >> >>>> } > >>> >> >>>> > >>> >> >>>> pathString += "Z"; > >>> >> >>>> > >>> >> >>>> path.drawPath(0, 0, > >>>pathString); > >>> >> >>>> > >>> >> >>>> > >>> >> >>> > >>> >> >>> That is weird. I will play with it and see why that is > >>>happening. > >>> >> >>> > >>> >> >> > >>> >> >>> Is moveTo() and lineTo() a better approach? > >>> >> >>> > >>> >> >>> In psedocode, the lines would be drawn like this: > >>> >> >>> > >>> >> >>> graphics.moveTo(points[0].x, points[0].y); > >>> >> >>> for (var i:int=0; i < points.length; i++) { > >>> >> >>> if(i+1 < points.length) > >>> >> >>> { > >>> >> >>> graphics.lineTo(points[i+1].x, points[i+1].y); > >>> >> >>> } > >>> >> >>> } > >>> >> >>> > >>> >> >>> In any case, I have the Line class in my list of Graphic > >>>elements > >>> >>to > >>> >> >>> implement. > >>> >> >>> > >>> >> >>> > >>> >> >> > >>> >> >> > >>> >> >> > >>> >> >>> Thanks, > >>> >> >>> Om > >>> >> >>> > >>> >> >>> > >>> >> >>>> > >>> >> >>>> Thanks, > >>> >> >>>> Peter Ent > >>> >> >>>> Adobe Systems > >>> >> >>>> > >>> >> >>>> On 9/8/14 4:13 PM, "OmPrakash Muppirala" <bigosma...@gmail.com > > > >>> >> wrote: > >>> >> >>>> > >>> >> >>>> >On Mon, Sep 8, 2014 at 12:48 PM, Peter Ent <p...@adobe.com> > >>> wrote: > >>> >> >>>> > > >>> >> >>>> >> I took care of the gjslint issues. > >>> >> >>>> >> > >>> >> >>>> > > >>> >> >>>> >Thanks! Hope it was not too much trouble. > >>> >> >>>> > > >>> >> >>>> > > >>> >> >>>> >> > >>> >> >>>> >> Can you supply more information about Path and what is in > >>>the > >>> >>path > >>> >> >>>> >>string? > >>> >> >>>> >> I have a path working in SVG to do the wedges for the pie > >>> chart, > >>> >> >>>>but > >>> >> >>>> >>that > >>> >> >>>> >> same string isn't working with core.graphics.Path. > >>> >> >>>> >> > >>> >> >>>> >> var pathString:String = 'M' + x + ' ' + y + ' L' + x1 + ' ' > >>>+ > >>> >>y1 + > >>> >> >>>>' A' > >>> >> >>>> >>+ > >>> >> >>>> >> radius + ' ' + radius + > >>> >> >>>> >> ' 0 0 1 ' + x2 + ' ' + y2 + > >>>' > >>> >>z'; > >>> >> >>>> >> > >>> >> >>>> >> > >>> >> >>>> >> It doesn't look, to me, like "A" is being recognized. > >>> >> >>>> >> > >>> >> >>>> > > >>> >> >>>> >The path looks like it is doing the following: > >>> >> >>>> >M x y : move to x, y > >>> >> >>>> >L x1 y1 : draw line from x,y to x1,y1 > >>> >> >>>> >A radius radius : draw an arc with xradius=radius and > >>>yradius = > >>> >> >>>>radius > >>> >> >>>> >(so, a circular arc) > >>> >> >>>> >0 0 1 : x-axis rotation=0, large-arc = false, sweep = true > >>> >> >>>> >x2 y2 : ending point of the arc > >>> >> >>>> >z : finish drawing > >>> >> >>>> > > >>> >> >>>> >BTW, don't you need another line to complete the wedge? > >>> >> >>>> > > >>> >> >>>> >Is it working fine on the flash side? I will take a look > >>>soon. > >>> >> >>>> > > >>> >> >>>> >Thanks, > >>> >> >>>> >Om > >>> >> >>>> > > >>> >> >>>> > > >>> >> >>>> >> > >>> >> >>>> >> Thanks, > >>> >> >>>> >> Peter Ent > >>> >> >>>> >> Adobe Systems > >>> >> >>>> >> > >>> >> >>>> >> On 9/8/14 12:04 PM, "OmPrakash Muppirala" < > >>> bigosma...@gmail.com> > >>> >> >>>> wrote: > >>> >> >>>> >> > >>> >> >>>> >> >On Sep 8, 2014 8:24 AM, "Peter Ent" <p...@adobe.com> > wrote: > >>> >> >>>> >> >> > >>> >> >>>> >> >> I forgot to add that when I build flex-asjs, gjslint > >>>finds a > >>> >> >>>>number > >>> >> >>>> >>of > >>> >> >>>> >> >> issues in the new JS graphics code (its usual, spaces at > >>>the > >>> >>end > >>> >> >>>>of > >>> >> >>>> >> >>lines, > >>> >> >>>> >> >> sort of thing). I think I am using version 2.3.10 of > >>>gjslint > >>> >>but > >>> >> >>>>I'm > >>> >> >>>> >>not > >>> >> >>>> >> >> 100% sure. > >>> >> >>>> >> > > >>> >> >>>> >> >Yeah, unfortunately there is no gjslint available for > >>>Windows. > >>> >> I > >>> >> >>>> >>guess I > >>> >> >>>> >> >will need you Mac folks to help me out with this :-) > >>> >> >>>> >> > > >>> >> >>>> >> >Thanks, > >>> >> >>>> >> >Om > >>> >> >>>> >> > > >>> >> >>>> >> >> > >>> >> >>>> >> >> Peter Ent > >>> >> >>>> >> >> Adobe Systems > >>> >> >>>> >> >> > >>> >> >>>> >> >> On 9/8/14 3:48 AM, "OmPrakash Muppirala" > >>> >><bigosma...@gmail.com> > >>> >> >>>> >>wrote: > >>> >> >>>> >> >> > >>> >> >>>> >> >> >FlexJS now supports a basic drawing API (Rect, Ellipse, > >>> >>Circle, > >>> >> >>>> >>Path, > >>> >> >>>> >> >> >SolidColor, SolidColorStroke) Here are the AS3 [1] and > >>>JS > >>> >>[2] > >>> >> >>>> >>versions > >>> >> >>>> >> >> > > >>> >> >>>> >> >> >So far, the rendering fidelity between the Flash and > >>> >>SVG/HTML5 > >>> >> >>>> >>version > >>> >> >>>> >> >>is > >>> >> >>>> >> >> >very very close. For sure, there are some pretty major > >>> >>things > >>> >> >>>>to > >>> >> >>>> be > >>> >> >>>> >> >> >worked > >>> >> >>>> >> >> >out, but generally so far, the results have been very > >>> >> >>>>encouraging. > >>> >> >>>> >> >> > > >>> >> >>>> >> >> >You can see a quick and dirty example here: > >>> >> >>>> >> >> >Flash version: > >>> >> >>>> >> >> > http://people.apache.org/~bigosmallm/flexjs/drawing/flash/ > >>> >> >>>> >> >> >HTML5 version: > >>> >> >>>> >> >> > http://people.apache.org/~bigosmallm/flexjs/drawing/html5/ > >>> >> >>>> >> >> > > >>> >> >>>> >> >> >HTML5 version has been tested to work fine on Chrome, > >>> >>Firefox, > >>> >> >>>> IE11, > >>> >> >>>> >> >> >Android browser and iPad Safari. > >>> >> >>>> >> >> > > >>> >> >>>> >> >> >Next up, i will be working on the following items: > >>> >> >>>> >> >> >Polygons, Linear gradients, Radial gradients, filters > >>>and > >>> >>drop > >>> >> >>>> >>shadows. > >>> >> >>>> >> >> >These should bring us very close to our current FXG > >>>based > >>> >> >>>>drawing > >>> >> >>>> >>APIs. > >>> >> >>>> >> >> > > >>> >> >>>> >> >> >After that, I plan on programmatically recreating a few > >>>FXG > >>> >> >>>>based > >>> >> >>>> >>skins > >>> >> >>>> >> >in > >>> >> >>>> >> >> >FlexJS and see how we can apply it skins on UI > >>>components. > >>> >> >>>> >> >> > > >>> >> >>>> >> >> >Feedback welcome! > >>> >> >>>> >> >> > > >>> >> >>>> >> >> >[1] > >>> >> >>>> >> >> > > >>> >> >>>> >> > > >>> >> >>>> >> > >>> >> >>>> >> > >>> >> >>>> > >>> >> >>>> > >>> >> > >>> > https://github.com/apache/flex-asjs/tree/develop/frameworks/as/projects > >>> >> >>>>/ > >>> >> >>>>F > >>> >> >>>> >>l > >>> >> >>>> >> >> >exJSUI/src/org/apache/flex/core/graphics > >>> >> >>>> >> >> >[2] > >>> >> >>>> >> >> > > >>> >> >>>> >> > > >>> >> >>>> >> > >>> >> >>>> >> > >>> >> >>>> > >>> >> >>>> > >>> >> > >>> > https://github.com/apache/flex-asjs/tree/develop/frameworks/js/FlexJS/s > >>> >> >>>>r > >>> >> >>>>c > >>> >> >>>> >>/ > >>> >> >>>> >> >> >org/apache/flex/core/graphics > >>> >> >>>> >> >> > >>> >> >>>> >> > >>> >> >>>> >> > >>> >> >>>> > >>> >> >>>> > >>> >> >>> > >>> >> > > >>> >> > >>> >> > >>> > >>> > >> > >