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: