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/utils >> >> >>/ >> >> >>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 >> >> >>>> >> >> >> >> >>>> >> >> >> >>>> >> >> >> >>>> >> >> >>>> >> >> >>> >> >> > >> >> >> >> >> >> >