1- let dialDisplayGenerator = function ( options ) {
2- "ram" ;
1+ function DialDisplay ( options ) {
32 const SCREEN_W = g . getWidth ( ) ;
43 const SCREEN_H = g . getHeight ( ) ;
54
6- options = Object . assign (
7- { stepsPerWholeTurn : 7 , // 7 chosen as it felt the best in use.
5+ this . options = Object . assign (
6+ {
7+ stepsPerWholeTurn : 7 , // 7 chosen as it felt the best in use.
88 dialRect : {
99 x : 0 ,
1010 y : 0 ,
@@ -13,47 +13,56 @@ let dialDisplayGenerator = function(options) {
1313 } ,
1414 } , options ) ;
1515
16- const DIAL_RECT = options . dialRect ;
16+ this . value = 0 ;
17+ this . reset ( ) ;
18+ }
19+
20+ DialDisplay . prototype . reset = function ( ) {
21+ this . isFirstDraw = true ;
22+ } ;
23+
24+ DialDisplay . prototype . set = function ( value ) {
25+ this . prevValue = this . value ;
26+ this . value = value ;
27+ } ;
28+
29+ DialDisplay . prototype . step = function ( step ) {
30+ "ram" ;
31+ let prevValue = this . prevValue != null ? this . prevValue : this . value ;
32+ this . value += step ;
33+ //g.setFont("Vector:30");
34+ //g.drawString(this.value);
35+
36+ const DIAL_RECT = this . options . dialRect ;
1737
1838 const CENTER = {
1939 x : DIAL_RECT . x + DIAL_RECT . w / 2 ,
2040 y : DIAL_RECT . y + DIAL_RECT . h / 2 ,
2141 } ;
2242
23- let dialDisplay = function ( step , value , isReinit ) {
24- let prevValue = this . value ;
25- if ( value !== undefined ) this . value = value ;
26- if ( ! this . value ) this . value = 0 ;
27- if ( this . isFirstDraw === undefined || isReinit ) this . isFirstDraw = true ;
28- this . value += step ;
29- //g.setFont("Vector:30");
30- //g.drawString(this.value);
31-
32- let drawCircle = ( value , R , G , B , rad , isFill ) => {
33- let x = CENTER . x + 27 * Math . sin ( value * ( 2 * Math . PI / options . stepsPerWholeTurn ) ) ;
34- let y = CENTER . y - 27 * Math . cos ( value * ( 2 * Math . PI / options . stepsPerWholeTurn ) ) ;
35- g . setColor ( R , G , B )
36- if ( ! isFill ) g . drawCircle ( x , y , rad ) ;
37- if ( isFill ) g . fillCircle ( x , y , rad ) ;
38- }
39- if ( this . isFirstDraw ) {
40- g . setColor ( 0 , 0 , 0 ) . fillCircle ( CENTER . x , CENTER . y , 25 ) ;
41- g . setColor ( 1 , 1 , 1 ) . drawCircle ( CENTER . x , CENTER . y , 25 ) ;
42- for ( let i = 0 ; i < options . stepsPerWholeTurn ; i ++ ) {
43- drawCircle ( i , 1 , 1 , 1 , 1 , true ) ;
44- }
45- this . isFirstDraw = false ;
43+ let drawCircle = ( value , R , G , B , rad , isFill ) => {
44+ let x = CENTER . x + 27 * Math . sin ( value * ( 2 * Math . PI / this . options . stepsPerWholeTurn ) ) ;
45+ let y = CENTER . y - 27 * Math . cos ( value * ( 2 * Math . PI / this . options . stepsPerWholeTurn ) ) ;
46+ g . setColor ( R , G , B )
47+ if ( ! isFill ) g . drawCircle ( x , y , rad ) ;
48+ if ( isFill ) g . fillCircle ( x , y , rad ) ;
49+ }
50+ if ( this . isFirstDraw ) {
51+ g . setColor ( 0 , 0 , 0 ) . fillCircle ( CENTER . x , CENTER . y , 25 ) ;
52+ g . setColor ( 1 , 1 , 1 ) . drawCircle ( CENTER . x , CENTER . y , 25 ) ;
53+ for ( let i = 0 ; i < this . options . stepsPerWholeTurn ; i ++ ) {
54+ drawCircle ( i , 1 , 1 , 1 , 1 , true ) ;
4655 }
56+ this . isFirstDraw = false ;
57+ }
4758
48- //drawCircle(this.value, 1, 1, 1, 2, false);
49- //drawCircle(prevValue, 0, 0, 0, 2, false);
50- g . setColor ( 0 , 0 , 0 ) . drawLine ( CENTER . x , CENTER . y , CENTER . x + 23 * Math . sin ( prevValue * ( 2 * Math . PI / options . stepsPerWholeTurn ) ) , CENTER . y - 23 * Math . cos ( prevValue * ( 2 * Math . PI / options . stepsPerWholeTurn ) ) ) ;
51- g . setColor ( 1 , 1 , 1 ) . drawLine ( CENTER . x , CENTER . y , CENTER . x + 23 * Math . sin ( this . value * ( 2 * Math . PI / options . stepsPerWholeTurn ) ) , CENTER . y - 23 * Math . cos ( this . value * ( 2 * Math . PI / options . stepsPerWholeTurn ) ) ) ;
52- g . setColor ( 0 , 0 , 0 ) . fillCircle ( CENTER . x , CENTER . y , 9 ) ;
59+ //drawCircle(this.value, 1, 1, 1, 2, false);
60+ //drawCircle(prevValue, 0, 0, 0, 2, false);
61+ g . setColor ( 0 , 0 , 0 ) . drawLine ( CENTER . x , CENTER . y , CENTER . x + 23 * Math . sin ( prevValue * ( 2 * Math . PI / this . options . stepsPerWholeTurn ) ) , CENTER . y - 23 * Math . cos ( prevValue * ( 2 * Math . PI / this . options . stepsPerWholeTurn ) ) ) ;
62+ g . setColor ( 1 , 1 , 1 ) . drawLine ( CENTER . x , CENTER . y , CENTER . x + 23 * Math . sin ( this . value * ( 2 * Math . PI / this . options . stepsPerWholeTurn ) ) , CENTER . y - 23 * Math . cos ( this . value * ( 2 * Math . PI / this . options . stepsPerWholeTurn ) ) ) ;
63+ g . setColor ( 0 , 0 , 0 ) . fillCircle ( CENTER . x , CENTER . y , 9 ) ;
5364
54- return this . value ;
55- }
56- return dialDisplay ;
57- }
65+ delete this . prevValue ;
66+ } ;
5867
59- exports = dialDisplayGenerator ;
68+ exports = DialDisplay ;
0 commit comments