Short: A framework for AmigaOS and friends Author: Olivier Laviale Uploader: polluks+aminet sdf lonestar org (Stefan Haubenthal) Type: dev/gui Version: 20070725 Architecture: generic URL: https://www.feelin.fr After an Intuition comes a Feelin. -- FEELIN ------------------------------------------------------------------- Feelin is an open-source object-oriented framework for the AmigaOS and its friends (AROS, MOS and AOS4). It provides a core API available as a shared library, and an extensible system of classes mainly used to create and maintain applications. Feelin is made of an intuitive concept of classes and objects familiar to Amiga developers as well as its own concepts such as shared objects, Dynamic IDs, XML Applications, an open and dynamic preference system, a crash free invokation mecanism, its very own memmory managements system, a message logging system... My goad, creating Feelin, was to offer a free, easy to use, modern and secure object-oriented framework that can evolves on its own and be available to all of our scattered community. -- HISTORY -- since 20060207 ----------------------------------------------- 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. SYSTEM 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. CSS 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. COLORS 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 ! IMAGES 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". ...