Hi,
Last week I fixed several problems with the AOSL 1.0 Draft 2 definition and removed a lot of complexity.
The global system didn't change at all, only unnecessary complexity was removed.
Most of the changes were based on discussions and review with a friend that have good skills in web development and language definition. (I hope he can participate when he find time)
To sum up the changes for this Draft 3 :
- now all angles are in radian (removed all choices related to this)
- now the canvas coordinate system is the same than OpenGL, that is Right-Handed system (so I removed all the coordinate system related types, that made the whole XSD far easier to read)
- removed all List_* types, they were not useful.
- added a simple color type that is used to set the background color of the canvas
- simplified the "box" type definition
- removed "auto" resource type: either it's an implementation-specific resource type, or it's a generic "image", "video", "audio" or "software" resource type.
- added "interval" attribute in stream properties: streams can loops so it needed to be able to set an interval between loops
- removed "interractive" object type: this is too fuzzy currently, but we'll still need a way to specify "something interractive" as object later, so let's see after more experimentations.
- now all objects can have a script associated, that will be active when they are and will not be deactivated between stages
- removed change type type name info, was redundant (even if it was helpful on the generated C++ side...)
- simplified change types definitions
- removed event type type name info, was redundant (even if it was helpful on the generated C++ side...)
- simplified event types definitions
- enhanced a bit the xsd documentation.
- now moves can have a "default" attribute, indicating to the interpreter that if there is several moves possible from a stage, then the one marked "default" should be used if the next move have to be chosen automaically
- now a move "from" attribute can list several stages to be the source, or "#all" to select them all. This allow the same move to be applicable from different stages and allow simpler AOSL files.
- added a "group" object type that is an object with no special properties but can still host child objects. Note that it don't have graphic properties.
- transformations are not relative or absolute anymore, they are just transformations to apply depending on the context. Transform (change type) are one of these context so I added an attribute specifying if the transformation is absolute or relative.
- changes can be applied to a list of objects instead of only one object
I also updated the AOSLCPP code but it will need some more work to be correct on the semantic side.
Comments and reviews are welcome.
PS: I didn't forget about the human-readable documentation for AOSL. I need to do some more work before getting it right but it should come soon.
Joel Lamotte / Klaim