Subversion Repositories wimsdev

Rev

Rev 15654 | Rev 15657 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 15654 Rev 15655
Line 4416... Line 4416...
4416
            reset();
4416
            reset();
4417
        break;
4417
        break;
4418
        case SLIDER:
4418
        case SLIDER:
4419
        /*
4419
        /*
4420
        @ slider start_value,end_value,width px,height px,type,label
4420
        @ slider start_value,end_value,width px,height px,type,label
4421
        @ type may be: ''xy,x,y,angle``
4421
        @ type may be: ''x,y,angle``
4422
        @ if a slider value display is desired, use for argument ''type``:''xy display``, ''x display``, ''y display``, ''angle radian``, ''angle degree``
4422
        @ if a slider value display is desired, use for argument ''type``: ''x display``, ''y display``, ''angle radian``, ''angle degree``
4423
        @ is the slider is used for animation, add keyword ''anim`` or ''animate`` to ''type``; for now only one animated slider may be used...
4423
        @ is the slider is used for animation, add keyword ''anim`` or ''animate`` to ''type``; for now only one animated slider may be used...
4424
        @ default behaviour is: click on an object to use its slider(s)<br/>to use sliders without clicking on an object, use for ''type`` keyword ''active``<br />eg: <code>slider -2*pi,2*pi,300,30,angle degree active,Rotate</code>
4424
        @ default behaviour is: click on an object to use its slider(s)<br/>to use sliders without clicking on an object, use for ''type`` keyword ''active``<br />eg: <code>slider -2*pi,2*pi,300,30,angle degree active,Rotate</code>
4425
        @ if a unit (or something like that...) for x/y-value display is needed, use commands ''xunit`` and / or ''yunit``
4425
        @ if a unit (or something like that...) for x/y-value display is needed, use commands ''xunit`` and / or ''yunit``
4426
        @ if the translation should be performed using a function, use for type: ''xy function``, ''x function``, ''y function``<br />use commands ''sliderfunction_x`` and/or ''sliderfunction_y`` before the slider command to define the functions. Example:<code>sliderfunction_x x^2<br />sliderfunction_y y^2<br />slider -5,5,100,100,xy function,Some_Text<br />...some stuff to slide<br />killslider<br />sliderfunction_x x^2-2<br />slider -15,15,100,10,x function,Some_Other_Text<br />...more stuff to slide<br />killslider... etc</code>
4426
        @ if the translation should be performed using a function, use for type: ''x function``, ''y function``<br />use commands ''sliderfunction_x`` and/or ''sliderfunction_y`` before the slider command to define the functions. Example:<code>sliderfunction_x x^2<br />sliderfunction_y y^2<br />slider -5,5,100,100,xy function,Some_Text<br />...some stuff to slide<br />killslider<br />sliderfunction_x x^2-2<br />slider -15,15,100,10,x function,Some_Other_Text<br />...more stuff to slide<br />killslider... etc</code>
4427
        @ use command ''slider`` before draggable/clickable objects.
4427
        @ use command ''slider`` before draggable/clickable objects.
4428
        @ drag and drop may be combined with rotation slider<br />for example an arrow rotated by a slider may be placed anywhere (drag&drop)<br /><code>size 300,300<br />xrange -5,5<br />yrange -5,5<br />grid 1,1,grey<br />linewidth 3<br />drag xy<br />fillcolor orange<br />strokecolor blue<br />slider 0,2*pi,250,30,angle degrees,Rotate arrow<br />arrow 2,2,5,5,8,red</code><br />note: except a combination 'drag' and 'slider' for command 'latex, katex, mathml, html, obabel'
4428
        @ drag and drop may be combined with rotation slider<br />for example an arrow rotated by a slider may be placed anywhere (drag&drop)<br /><code>size 300,300<br />xrange -5,5<br />yrange -5,5<br />grid 1,1,grey<br />linewidth 3<br />drag xy<br />fillcolor orange<br />strokecolor blue<br />slider 0,2*pi,250,30,angle degrees,Rotate arrow<br />arrow 2,2,5,5,8,red</code><br />note: except a combination 'drag' and 'slider' for command 'latex, katex, mathml, html, obabel'
4429
        @ no slider for a math function, these can be traced using command ''trace_jscurve some_function_in_x``
4429
        @ no slider for a math function, these can be traced using command ''trace_jscurve some_function_in_x``
4430
        @ a slider will affect all draggable objects after the ''slider`` command...<br />and can be used to group translate / rotate several objects...<br />until a next ''slider`` or keyword ''killslider``
4430
        @ a slider will affect all draggable objects after the ''slider`` command...<br />and can be used to group translate / rotate several objects...<br />until a next ''slider`` or keyword ''killslider``
4431
        @ amount of sliders is not limited.
4431
        @ amount of sliders is not limited.
4432
        @ a slider can not be set ''snaptogrid`` or other ''snapto*`` : you may always use 'drag xy' in combination with the slider objects
4432
        @ a slider can not be set ''snaptogrid`` or other ''snapto*`` : you may always use 'drag xy' in combination with the slider objects
4433
        @ <code>javascript:read_dragdrop();</code> will return an array with ''object_number:slider_value``
4433
        @ <code>javascript:read_dragdrop();</code> will return an array with ''object_number:slider_value``
4434
        @ type=xy: will produce a 2D ''slider`` [rectangle width x heigh px] in your web page
-
 
4435
        @ every draggable object may have its own slider (no limit in amount of sliders)
4434
        @ every draggable object may have its own slider (no limit in amount of sliders)
4436
        @ label: some slider text
4435
        @ label: some slider text. LaTeX produced by wims command ''mathmlmath`` is allowed.
4437
        @ use fillcolor for slider controlkey
4436
        @ use fillcolor for slider controlkey
4438
        @ use strokecolor for slider bar
4437
        @ use strokecolor for slider bar
4439
        @ use fontfamily / fontcolor to set used fonts
4438
        @ use fontfamily / fontcolor to set used fonts
4440
        @ use opacity (only fill opacity will be used) to set transparency
4439
        @ use opacity (only fill opacity will be used) to set transparency
4441
        @ the slider canvas will be added to the ''tooltip div``: so incompatible with command tooltip ; setlimits etc
4440
        @ the slider canvas will be added to the ''tooltip div``: so incompatible with command tooltip ; setlimits etc
4442
        @%slider_x_y_angle%size 300,300%xrange -5,5%yrange -5,5%grid 1,1,grey%linewidth 3%fillcolor orange%strokecolor blue%slider 0,2*pi,300,30,angle active degrees,Rotate arrow%arrow 0,0,4.5,0,8,red%killslider%opacity 200,100%slider -2,2,300,30,x active,move blue rectangle%frect -4,4,1,-1,blue%killslider%linewidth 2&slider -2,2,300,30,y,move green rectangle%frect -4,4,1,-1,green
4441
        @%slider_x_y_angle%%size 300,300%xrange -5,5%yrange -5,5%grid 1,1,grey%linewidth 3%fillcolor orange%strokecolor blue%slider 0,2*pi,300,30,angle active degrees,Rotate arrow%arrow 0,0,4.5,0,8,red%killslider%opacity 200,100%slider -2,2,300,30,x active,move blue rectangle%frect -4,4,1,-1,blue%killslider%linewidth 2%slider -2,2,300,30,y,move green rectangle%frect -4,4,1,-1,green
4443
        @%slider_click%%size 300,300%xrange -6,6%yrange -6,6%grid 1,1,grey%linewidth 2%slider 0,2*pi,300,28,angle degree, name%fillcolor lightgreen%#CLICK ON THE OBJECTS TO ACTIVATE%opacity 255,30%ftriangle 2,2,-2,2,0,0,red%ftriangle -2,2,-2,-2,0,0,blue%ftriangle -2,-2,2,-2,0,0,green%ftriangle 2,-2,2,2,0,0,orange%rotationcenter 0,0%frect -2,2,2,-2,black
4442
        @%slider_click%%size 300,300%xrange -6,6%yrange -6,6%grid 1,1,grey%linewidth 2%slider 0,2*pi,300,28,angle degree, name%fillcolor lightgreen%#CLICK ON THE OBJECTS TO ACTIVATE%opacity 255,30%ftriangle 2,2,-2,2,0,0,red%ftriangle -2,2,-2,-2,0,0,blue%ftriangle -2,-2,2,-2,0,0,green%ftriangle 2,-2,2,2,0,0,orange%rotationcenter 0,0%frect -2,2,2,-2,black
4444
        @%slider_active%%size 300,300%xrange -6,6%yrange -6,6%grid 1,1,grey%linewidth 1%slider 0,2*pi,300,28,angle degree active, name%fillcolor lightgreen%opacity 255,30%ftriangle 2,2,-2,2,0,0,red%ftriangle -2,2,-2,-2,0,0,blue%ftriangle -2,-2,2,-2,0,0,green%ftriangle 2,-2,2,2,0,0,orange%rotationcenter 0,0%frect -2,2,2,-2,black
4443
        @%slider_active%%size 300,300%xrange -6,6%yrange -6,6%grid 1,1,grey%linewidth 1%slider 0,2*pi,300,28,angle degree active, name%fillcolor lightgreen%opacity 255,30%ftriangle 2,2,-2,2,0,0,red%ftriangle -2,2,-2,-2,0,0,blue%ftriangle -2,-2,2,-2,0,0,green%ftriangle 2,-2,2,2,0,0,orange%rotationcenter 0,0%frect -2,2,2,-2,black
4445
        @%slider_animate%%size 300,300%xrange -6,6%yrange -6,6%grid 1,1,grey%linewidth 1%slider 0,2*pi,300,28,angle anim active, name%fillcolor lightgreen%opacity 255,30%ftriangle 2,2,-2,2,0,0,red%ftriangle -2,2,-2,-2,0,0,blue%ftriangle -2,-2,2,-2,0,0,green%ftriangle 2,-2,2,2,0,0,orange%rotationcenter 0,0%frect -2,2,2,-2,black
4444
        @%slider_animate%%size 300,300%xrange -6,6%yrange -6,6%grid 1,1,grey%linewidth 1%slider 0,2*pi,300,28,angle anim active, name%fillcolor lightgreen%opacity 255,30%ftriangle 2,2,-2,2,0,0,red%ftriangle -2,2,-2,-2,0,0,blue%ftriangle -2,-2,2,-2,0,0,green%ftriangle 2,-2,2,2,0,0,orange%rotationcenter 0,0%frect -2,2,2,-2,black
4446
        @%slider_html_image%%size 400,400%xrange -6,6%yrange -6,6%bgcolor white%grid 1,1,grey%linewidth 1%slider 0,2*pi,300,28,angle active degree,%centered%html 0,0,<img src="gifs/domains/sciences/flasks.svg" width="100px" height="100px" />
4445
        @%slider_html_image%%size 400,400%xrange -6,6%yrange -6,6%bgcolor white%grid 1,1,grey%linewidth 1%slider 0,2*pi,300,28,angle active degree,%centered%html 0,0,<img src="gifs/domains/sciences/flasks.svg" width="100px" height="100px" />
4447
        */
4446
        */
Line 4450... Line 4449...
4450
                switch(i){
4449
                switch(i){
4451
                    case 0: double_data[0] = get_real(infile,0);break; /* start value */
4450
                    case 0: double_data[0] = get_real(infile,0);break; /* start value */
4452
                    case 1: double_data[1] = get_real(infile,0);break; /* end value */
4451
                    case 1: double_data[1] = get_real(infile,0);break; /* end value */
4453
                    case 2: int_data[0] = (int)(get_real(infile,0));break; /* width */
4452
                    case 2: int_data[0] = (int)(get_real(infile,0));break; /* width */
4454
                    case 3: int_data[1] = (int)(get_real(infile,0));break; /* height */
4453
                    case 3: int_data[1] = (int)(get_real(infile,0));break; /* height */
4455
                    case 4: temp = get_string_argument(infile,0); /* type: xy,x,y,angle */
4454
                    case 4: temp = get_string_argument(infile,0); /* type: x,y,angle */
4456
                            if( strstr(temp,"displ")!=0 ||  strstr(temp,"deg")!=0 ||  strstr(temp,"rad")!=0 ){int_data[5] = 1; }else{int_data[5] = 0;}
4455
                            if( strstr(temp,"displ")!=0 ||  strstr(temp,"deg")!=0 ||  strstr(temp,"rad")!=0 ){int_data[5] = 1; }else{int_data[5] = 0;}
4457
                            if(strstr(temp,"anim")!= 0){int_data[3] = 1;}else{int_data[3] = 0;}
4456
                            if(strstr(temp,"anim")!= 0){int_data[3] = 1;}else{int_data[3] = 0;}
4458
                            if(strstr(temp,"active")!= 0){onclick = 4;}else{onclick=0;}
4457
                            if(strstr(temp,"active")!= 0){onclick = 4;}else{onclick=0;}
4459
                            if(strstr(temp,"angle")!= 0){slider_type="R";if( strstr(temp,"rad")!= 0){int_data[2] = 3;}if( strstr(temp,"deg")!= 0){int_data[2] = 4;}}
4458
                            if(strstr(temp,"angle")!= 0){slider_type="R";if( strstr(temp,"rad")!= 0){int_data[2] = 3;}if( strstr(temp,"deg")!= 0){int_data[2] = 4;}}
4460
                            else
4459
                            else
Line 4462... Line 4461...
4462
                            else
4461
                            else
4463
                            if(strstr(temp,"x") != 0){slider_type = "X";if( strstr(temp,"disp")!= 0){int_data[2] = 1;}}
4462
                            if(strstr(temp,"x") != 0){slider_type = "X";if( strstr(temp,"disp")!= 0){int_data[2] = 1;}}
4464
                            else
4463
                            else
4465
                            if(strstr(temp,"y") != 0){slider_type = "Y";if( strstr(temp,"disp")!= 0){int_data[2] = 2;}}
4464
                            if(strstr(temp,"y") != 0){slider_type = "Y";if( strstr(temp,"disp")!= 0){int_data[2] = 2;}}
4466
                            else
4465
                            else
4467
                            canvas_error("slider can be of type: xy,x,y,angle,fun_x:fun_y");
4466
                            canvas_error("slider can be of type: x,y,angle,fun_x:fun_y");
4468
                            break;
4467
                            break;
4469
                    case 5: temp = get_string_argument(infile,1); /* slider label */ break;
4468
                    case 5: temp = get_string_argument(infile,1); if( strstr(temp,"\"") != 0 ){ temp = str_replace(temp,"\""," ");}
-
 
4469
                    /* slider label : in case of latex/mathmlmath we need to remove the extra " */
-
 
4470
                    break;
4470
                }
4471
                }
4471
             }
4472
             }
4472
 
4473
 
4473
            if(use_slider == -1 ){ /* add once */
4474
            if(use_slider == -1 ){ /* add once */
4474
             add_slider(int_data[3]);
4475
             add_slider(int_data[3]);