module Webglimpse { export interface TimelineAnnotationIcon { url : string ; displayWidth : number ; displayHeight : number ; hAlign : number ; vAlign : number ; hOffset : number ; vOffset : number ; } export interface TimelineAnnotationStyle { styleGuid : string ; color ? : string ; font ? : string ; hTextAlign ? : number ; vTextAlign ? : number ; hTextOffset ? : number ; vTextOffset ? : number ; align ? : number ; uiHint ? : string ; icons ? : TimelineAnnotationIcon [ ] ; } export class TimelineAnnotationIconUi { private _url : string ; private _displayWidth : number ; private _displayHeight : number ; private _hAlign : number ; private _vAlign : number ; private _hOffset : number ; private _vOffset : number ; constructor ( icon ) { this . _setAttrs ( icon ) ; } private _setAttrs ( icon ) { this . _url = icon . url ; this . _displayWidth = icon . displayWidth ; this . _displayHeight = icon . displayHeight ; this . _hAlign = icon . hAlign ; this . _vAlign = icon . vAlign ; this . _hOffset = icon . hOffset ; this . _vOffset = icon . vOffset ; } get url ( ) : string { return this . _url ; } get displayWidth ( ) : number { return this . _displayWidth ; } get displayHeight ( ) : number { return this . _displayHeight ; } get hAlign ( ) : number { return this . _hAlign ; } get vAlign ( ) : number { return this . _vAlign ; } get hOffset ( ) : number { return this . _hOffset ; } get vOffset ( ) : number { return this . _vOffset ; } snapshot ( ) { return { url : this . _url , displayWidth : this . _displayWidth , displayHeight : this . _displayHeight , hAlign : this . _hAlign , vAlign : this . _vAlign , hOffset : this . _hOffset , vOffset : this . _vOffset } ; } } export class TimelineAnnotationStyleUi { private _styleGuid : string ; private _color : Color ; private _font : string ; private _vTextOffset : number ; private _hTextOffset : number ; private _vTextAlign : number ; private _hTextAlign : number ; private _align : number ; private _uiHint : string ; private _icons : TimelineAnnotationIconUi [ ] ; constructor ( style ) { this . _styleGuid = style . styleGuid ; this . _setAttrs ( style ) ; } get styleGuid ( ) : string { return this . _styleGuid ; } private _setAttrs ( style ) { this . _color = hasval ( style . color ) ? parseCssColor ( style . color ) : undefined ; this . _font = style . font ; this . _hTextOffset = style . hTextOffset ; this . _vTextOffset = style . vTextOffset ; this . _hTextAlign = style . hTextAlign ; this . _vTextAlign = style . vTextAlign ; this . _align = style . align ; this . _uiHint = style . uiHint ; this . _icons = hasval ( style . color ) ? style . icons . map ( ( icon ) => { return new TimelineAnnotationIconUi ( icon ) ; } ) : [ ] ; } get numIcons ( ) : number { return this . _icons . length ; } icon ( index ) { return this . _icons [ index ] ; } get color ( ) : Color { return this . _color ; } get font ( ) : string { return this . _font ; } get hTextOffset ( ) : number { return this . _hTextOffset ; } get vTextOffset ( ) : number { return this . _vTextOffset ; } get hTextAlign ( ) : number { return this . _hTextAlign ; } get vTextAlign ( ) : number { return this . _vTextAlign ; } get align ( ) : number { return this . _align ; } get uiHint ( ) : string { return this . _uiHint ; } snapshot ( ) { return { styleGuid : this . _styleGuid , color : this . _color . cssString , font : this . _font , vTextOffset : this . _hTextOffset , hTextOffset : this . _vTextOffset , vTextAlign : this . _hTextAlign , hTextAlign : this . _vTextAlign , align : this . _align , uiHint : this . _uiHint , icons : this . _icons . map ( ( ui ) => ui . snapshot ( ) ) } ; } } }