Degrafa: Declarative Graphics Framework

Degrafa Blog

Get Degrafa Now

Archive for the ‘bug fixes’ Category

Degrafa Beta 3.1 and Docs Released

Friday, December 19th, 2008

Degrafa Beta 3.1 is now available. You can grab the new beta and read the new documentation.

Degrafa Beta 3 was a huge update from Beta 2 and took almost about 8 months to get done. The Beta 3 release as already received around 4,200 downloads and it seems more and more content is starting to float around, like screencasts, user group presentations, samples and tutorials. The response and encouragement from the community has been inspiring. It’s also great to hear how Degrafa has made it’s way into some of the biggest RIAs out there.

Now that the core features have been defined, we can move forward with things like updates to features, optimization, performance and bug fixes. We’re also on a more frequent release cycle on our way to Degrafa 1.0. In these releases we’ll also be including samples that display just how powerful Degrafa can be. So, be sure to keep an eye on the Degrafa Samples page.

Along with this release we gave a much needed update to the documentation. Hopefully exploring the documentation will offer some insight into all the additional goodies that comes with Beta 3 and the potential for future releases. We’ll also be updating the Degrafa Samples page with more great stuff.

If you’re using Degrafa Beta 2 or 3 you’ll probably want to update to this latest release. For SVN users, we’ve noticed some people have been unintentionally checking out old code via svn. If you are using the http://code.google.com/p/degrafa/source/browse/#svn/trunk/Degrafa for SVN you are still using the Beta 2. Beta 3 will remain in it’s original home located at http://code.google.com/p/degrafa/source/browse/#svn/branches/Origin/Degrafa . If you wish to use Beta 3 and take advantage of the ongoing work there you will need to use the Branches/Origin path for checking out from SVN in the second of those two links. Also, older downloads have been deprecated, but are still available on Google Code.

So, what exactly is in Degrafa Beta 3.1 and where are we going next? Here’s some notes:

Enhancements/Features

  • RasterText now has support for regular Degrafa Fills
  • Geometry now offers two mask modes
  • Advanced math utilities added.
  • A standard decorator package has been included, including two stroke decorators (for now)
  • GeometryRepeater now provides easy access to the current iteration counter
  • PropertyModifier offset property has been changed to modifier.

Bug Fixes

  • Issue 64 addressed – Changes to inline MXML segments or points on path , polygon, and polyline will now properly update/draw with binding.
  • BezierSpline will now properly auto close with the correct curvature.
  • Issue 65 addressed – RasterText binding is now working as expected.
  • RoundedRectangle and RoundedRectangleComplex now internally adapt their rendering to reduce a Flash Player rendering artifact under some circumstances. See this blog post

Known Issues

  • Multiple decorator processing has not yet been implemented. Only one decorator will have an effect. Resolution planned for next update.
  • TransformGroup processing of multiple registration points is not yet final. Review is underway. Resolution planned for next update.
  • RasterText does not support alpha with a SolidFill. Resolution planned for next update.

The Framework

We will continue to evolve the framework in various areas.
Work has starting on optimization with focus on:

  •     General Memory use and CPU
  •     Object pooling and externalization of state. 
  •     Opt in BitmapData cache

Initial memory and performance results are very promising.

The Degrafa Site

Look for new Degrafa code libraries and content based resources coming soon.

Degrafa Beta 2 Change Log

Wednesday, March 5th, 2008

Here’s a general list of some of the changes and additions that were made between Degrafa Beta 1 and Beta 2:

Bugs

  1. The collection base class has been updated with bug fixes it also now properly add(s)/remove(s) event listeners at the right moments. As this is the base class, these changes propagate up to all of it’s sub classed versions. The result is that adding or removing items to the collection through Action Script will now correctly dispatch the change and/or clean up.
  2. Fill and stroke properties when directly set with a new fill or stroke will now properly update. This problem seen in Action Script, happens when you want to replace the fill or stroke objects on a geometry item with a different one.
  3. On some of the geometry objects computation was being redone when a fill or stroke change occurred causing the object to be drawn twice. This is no longer the case.
  4. On some geometry objects (path, polygon, and polyline), resetting the data property would not clear the existing items. Setting the data property will now properly clear and re compute the object.
  5. The bounds and drawing commands in the Polygon and Polyline geometry objects were not correctly taking into account the x and y properties during computation. This will now work as expected.

ï¾ Enhancements

  1. All Boolean properties accessible from mxml have be updated to show an enumeration of true,false. Makes the mxml experience more enjoyable.
  2. We have added icons to all the mxml level objects so that the various objects are more apparent in the mxml outline view.
  3. Drawing to arbitrary graphics contexts is now supported via the property graphicsTarget this property accepts an array of display objects and is supported on all subclasses of geometry. As part of this features functionality we also added the property autoClearGraphicsTarget. The default value is true and when true the target graphics contexts will be cleared before rendering.
  4. The ability to nest geometry for proper composition is now possible. We also added a new geometry object GeometryComposition that makes a good root candidate for composing. This new object in conjunction with the graphicsTarget property allow one to use Degrafa with out having to setup a Surface and a GeometryGroup. However it is not a DisplayObject so with out a graphicsTarget specified no rendering will be performed.
  5. The various color properties have been merged into one. We feel overall this will provide a much simpler method to specify the color settings as you see fit.
  6. New state and stateEvent properties have been added to all geometry objects. At this time state is only taken into account when using the Degrafa skins and stateEvent is not yet implemented. The bright side is that we can now have all skin states in one mxml file. Expect more features to be added using these 2 properties in the near future.
  7. Segments now have constructor arguments as well as a data argument. The data argument has been moved to the end of the argument list so you will have to update code that uses data in the constructor of a segment. The path object specifically takes advantage of this which allowed us to eliminate unnecessary parsing for each segment in the collection providing a performance boost.
  8. LinearGradientFill and stroke now support a definable bounds via new properties (x, y, width, and height). If all of these or just width and height are specified then it will use the specified rectangle for it’s rendering. If none are specified it will fall back to the geometry object bounds or the rectangle that is passed to the draw method. We added the same support to the RadialGradientFill and stroke except the properties in this case are cx, cy, and radius.
  9. Create objects reusing or overriding properties derived from other objects using the derive property.
  10. New library base classes, starting with Polygon, others will soon follow as well as libraries to help get you started.
  11. Specify ratios for gradients using different units, like inches, px, etc. using the ratioUnit property.
  12. Some of the geometry drawing code has been updated. Circle, Ellipse, RegularRectangle, RoundedRectangle and RoundedRectangleComplex are no longer using the built in flash drawing commands (drawCircle()) for example. This was an important step for future enhancements. All drawing code now boils down to a command stack of moveTo, lineTo or curveTo. There will be refactoring throughout all geometry that will bring a cleaner code base and remove duplicate code once we have finished defining the architectural rendering pipline required to support where we need to go.
  13. ï¾