usveticic@3064: // widget_animaterotation.ysl2 dgaberscek@2944: edouard@3241: widget_desc("AnimateRotation") { edouard@3241: longdesc edouard@3241: || edouard@3241: AnimateRotation - DEPRECATED, do not use. edouard@3241: Doesn't follow WYSIWYG principle, and forces user to add animateTransform tag in SVG (using inkscape XML editor for exemple) edouard@3241: || edouard@3241: edouard@3241: shortdesc > AnimateRotation - DEPRECATED edouard@3241: edouard@3241: path name="speed" accepts="HMI_INT,HMI_REAL" > speed edouard@3241: edouard@3241: } edouard@3241: edouard@3232: widget_class("AnimateRotation") { usveticic@3009: || usveticic@3009: frequency = 5; usveticic@3059: speed = 0; usveticic@3062: widget_center = undefined; usveticic@3009: usveticic@3056: dispatch(value) { usveticic@3062: this.speed = value / 5; usveticic@3059: usveticic@3059: //reconfigure animation usveticic@3059: this.request_animate(); usveticic@3056: } usveticic@3056: usveticic@3059: animate(){ usveticic@3059: // change animation properties edouard@3241: // TODO : rewrite with proper es6 usveticic@3062: for(let child of this.element.children){ usveticic@3062: if(child.nodeName == "animateTransform"){ usveticic@3062: if(this.speed > 0){ usveticic@3062: child.setAttribute("dur", this.speed+"s"); usveticic@3062: child.setAttribute("from", "0 "+this.widget_center[0]+" "+this.widget_center[1]); usveticic@3062: child.setAttribute("to", "360 "+this.widget_center[0]+" "+this.widget_center[1]); usveticic@3062: } usveticic@3062: else if(this.speed < 0){ usveticic@3062: child.setAttribute("dur", (-1)*this.speed+"s"); usveticic@3062: child.setAttribute("from", "360 "+this.widget_center[0]+" "+this.widget_center[1]); usveticic@3062: child.setAttribute("to", "0 "+this.widget_center[0]+" "+this.widget_center[1]); usveticic@3062: } usveticic@3062: else{ usveticic@3062: child.setAttribute("from", "0 "+this.widget_center[0]+" "+this.widget_center[1]); usveticic@3062: child.setAttribute("to", "0 "+this.widget_center[0]+" "+this.widget_center[1]); usveticic@3062: } usveticic@3062: } usveticic@3062: } usveticic@3059: } usveticic@3009: usveticic@3059: init() { usveticic@3062: let widget_pos = this.element.getBBox(); usveticic@3062: this.widget_center = [(widget_pos.x+widget_pos.width/2), (widget_pos.y+widget_pos.height/2)]; usveticic@3059: } usveticic@3009: || Edouard@3024: } usveticic@3009: