Feelin Release 20061115
Date 15-Nov-2006 13:43:29
Topic: Software News
|Although this new release is a MAJOR update, it's still very far from my goals. A huge set of features was added, mainly related to styles, but unfortunately I had to disable the preference system and some classes in order to push a release (9 monthes since last release).|
About Feelin - Download page.
NB: Note that the website address is no longer http://www.gofromiel.com/feelin but http://feelin.gofromiel.com. Please update your bookmark.
This version introduce Atoms, which associate a unique numeric representation to a string, making string comparison child play. I was previously using a Hash tables for this purpose, this method is far more better.
The preferences were already stored in CSS files since last release, but it was a "stupid" implementation. This updated one is still very limited, since it doesn't support selectors, but it finaly introduces pseudo classes and *real* inheritence.
Previsouly inheritence was granted because classes attributes where overriting one another, which is stupid and *very* limited. Now a 'style-cache' is created based on an object's true class and its inheritence. The 'style-cache' has the same properties as the previous 'associated data' technique: the style of an object 'type' if decoded only once and shared *a lot*. For example, if you have 1000 buttons in a window, their style is decoded once then cached and shared with the 999 others.
More over, there is now a *clear* distinction between attributes and style properties. For example, there is no longer any FA_Area_Background" attribute, but a "background" property.
Most attributes have been replaced with their CSS conterparts: "background", "border", "padding", "min-width", "max-height"... This version also introduce the "margin" property, which can now be used to add invisible space around objects.
Obviously as in HTML you can use multiple classes as style class: "button confirm warn".
ELEMENT / AREA / WIDGET
Because of the new 'styles' support, the Area class has to be rewritten. It is now a subclass of the Element class. Its sole purpose is to handle low level graphics such as backgrounds, palettes, fonds... All 'event' implementation has been moved into the new Widget class.
CSS definitions where alreay used to define colors, but it was limited to hex values (#FF00FF), HTML keywords (aqua, black...) and Feelin keywords (shine, fill). With this update colors definitions are complete since the functionnal rgb() is now available !
Image specifications where defined using XML format, which was nice at the time, but I realize it was stupid and to much of a job ! Now images are simply defined as CSS does, with some extentions.
Obviously you can create solid background using the "red" keyword, but you can create a two color gradient using "red blue", a three color gradient using "red green blue", and an 'aqua style' gradient using four colors. Additionally you can define the angle of the gradient: "red blue 45°".
Brushes are currently disabled, but you can use pictures instead, and it's as simple as this: "url(logo.png") ! CSS 'positionning' is completely handled as well as 'repeat'. I've exented specification which the 'multiple' keyword, which can be used to split an image in four states: normal, touch, focus and ghost. Finaly, you can also 'tint' a transparent image by simple adding a color specification if the declaration: "url(logo.png) red".
Well, Enjoy !!