lower case = abstract upper case = instantiatable | = or ((xxx)) = comment CVar = constraint variable Func = Function Pub = Public Priv = Private Attr = Attribute Prop = Property Proc = Procedure inv = invariant asumptions: - define all applicable properties in abstract hfo class for inheritance purposes - constraint stuff is hidden for user (-> all constraints are defined by props) hfo (CSS/SMIL inspired) --- pub Attr : id, type pub Attr : parent priv CVar : x1,x2,y1,y2,t1,t2 % defines containing block = content + padding + margin priv CVar : width % = width of content box (x2-x1-lm-lb-lp-rm-rb-rp) priv CVar : height % = heigh of content box (x2-x1-lm-lb-lp-rm-rb-rp) priv CVar : duration % = duration of content box (t2-t1-db-da) priv CVar : margin-left|right|top|bottom % ml,mr,mt,mb (default:>=0) priv CVar : padding-left|right|top|bottom % pl,pr,pt,pb(default:>=0) priv CVar : border-left|right|top|bottom-width % bl,br,bt,bb (default:>=0) priv CVar : delayStart, delayEnd % ds,de (default:>=0) priv CVar : delayBetween % db (default: >=0) - delay between children (so not before and after) Prop : width*,min-width,max-width,fill-width % fill-width =min|max|center (default:min) Prop : height*,min-height,max-height,fill-Height % fill-width =min|max|center (default:min) Prop : duration*, min-duration, max-duration, fill-duration % = min|max|center (default:min) Prop : min-pauseBefore, max-pauseBefore, fill-pauseBefore % = min|max|center (default:min) Prop : min-pause, max-pause, fill-pause % = min|max|center (default:min) Prop : min-pauseBetween, max-pauseBetween, fill-pauseBetween % = min|max|center (default:min) (similar for margins,paddings,border) m/l*, min-m/l,max-m/l,fill-m/l % m/l = margin left * = syntactic sugar is re-writen to min-X:V max-X:V Prop : equal-margin,equal-padding,equal-border Prop : transIn, transOut % (default: inherit) Prop : background % (default:inherit) background of content and padding (margin is transparent) Prop : color,font,font-size,font-weight,font-family % (default:inherit) Prop : border-left|right|top|bottom-color (default:inherit) Prop : border-left|right|top|bottom-style (default:inherit) Prop : horizontal-align (top,bottom,center,fill) % (default: inherit) apply's to children Prop : vertical-align (left,right,center,fill) % (default: inherit) apply's to children Prop : temporal-align (start,end,center,fill) % (default: inherit) apply's to children Func : containerWidth % width of the whole box (x2-x1) Func : containerheight % height of the whole box (y2-y1) Func : containerDuration % duration of the whole box (y2-y1) Proc : init(id,type) atomic ------ Attr : url|content Proc : init(url|content) IMAGE ----- Proc : init(width,height) AUDIO ----- Proc : init(duration) TEXT ----- Proc : init(textLength fontSize, fontType, textAlign) composite --------- Attr : children Proc : init(Children) HFOROOT ------- Proc : init(maxHeight,maxWidth,maxDur) Prop : bgmusic,bandWidth, etc. (deliveryContext) inv : #children = 1 BOX ----- Proc : init(hbox|vbox|tbox) SLIDESHOW --------- COLLAGE ------- GRID ----- Proc : init(#row,#column)