@@ -45,6 +45,59 @@ void LoadKeyImageToRazer(const char * filename, RZSBSDK_DKTYPE targetKey, RZSBSD
4545HWND parent = NULL ; // our parent window's handle
4646static int colormode = 0 ;
4747
48+ void getFileString (char * buffer , char * filename ){
49+ char append [64 ];
50+ append [0 ] = (char )'\0' ;
51+ buffer [0 ] = (char )'\0' ;
52+ switch (colormode ){
53+ case 5 :
54+ strcat (append ,"-5" );
55+ break ;
56+ case 6 :
57+ strcat (append ,"-6" );
58+ break ;
59+ case 7 :
60+ strcat (append ,"-7" );
61+ break ;
62+ default :
63+ break ;
64+ }
65+ strcat (append , ".png" );
66+
67+ strcat (buffer , filename );
68+ strcat (buffer , append );
69+ }
70+
71+ void resetDKImages (){
72+ char buffer [256 ];
73+
74+ getFileString (buffer , ".\\imagedata\\rewind" );
75+ LoadKeyImageToRazer (buffer ,RZSBSDK_DK_6 , RZSBSDK_KEYSTATE_UP );
76+ getFileString (buffer , ".\\imagedata\\play" );
77+ LoadKeyImageToRazer (buffer ,RZSBSDK_DK_7 , RZSBSDK_KEYSTATE_UP );
78+ getFileString (buffer , ".\\imagedata\\fforward" );
79+ LoadKeyImageToRazer (buffer ,RZSBSDK_DK_8 , RZSBSDK_KEYSTATE_UP );
80+ getFileString (buffer , ".\\imagedata\\volup" );
81+ LoadKeyImageToRazer (buffer ,RZSBSDK_DK_9 , RZSBSDK_KEYSTATE_UP );
82+ getFileString (buffer , ".\\imagedata\\voldown" );
83+ LoadKeyImageToRazer (buffer ,RZSBSDK_DK_10 , RZSBSDK_KEYSTATE_UP );
84+ }
85+
86+ int beatcount = 0 ;
87+ void setBeatKeep (){
88+ char buffer [256 ];
89+ getFileString (buffer , ".\\imagedata\\beatkeep" );
90+ LoadKeyImageToRazer (beatcount == 0 ? buffer : "" , RZSBSDK_DK_1 , RZSBSDK_KEYSTATE_UP );
91+ LoadKeyImageToRazer (beatcount == 1 ? buffer : "" , RZSBSDK_DK_2 , RZSBSDK_KEYSTATE_UP );
92+ LoadKeyImageToRazer (beatcount == 2 ? buffer : "" , RZSBSDK_DK_3 , RZSBSDK_KEYSTATE_UP );
93+ LoadKeyImageToRazer (beatcount == 3 ? buffer : "" , RZSBSDK_DK_4 , RZSBSDK_KEYSTATE_UP );
94+ LoadKeyImageToRazer (beatcount == 4 ? buffer : "" , RZSBSDK_DK_5 , RZSBSDK_KEYSTATE_UP );
95+ beatcount ++ ;
96+ if (beatcount > 4 ){
97+ beatcount = 0 ;
98+ }
99+ }
100+
48101// TODO: Can this be done with a winamp library?
49102#define EXT_LPARAM 0x800000
50103HRESULT STDMETHODCALLTYPE OnDkClickedButton (RZSBSDK_DKTYPE type , RZSBSDK_KEYSTATETYPE keystate )
@@ -53,6 +106,7 @@ HRESULT STDMETHODCALLTYPE OnDkClickedButton(RZSBSDK_DKTYPE type, RZSBSDK_KEYSTAT
53106 HWND winamp ;
54107 int cmdCode = 0 ;
55108 bool sendCmd = false;
109+ char buffer [256 ];
56110 //windowCommand wc;
57111
58112 static int lastinput = 0 ;
@@ -68,6 +122,7 @@ HRESULT STDMETHODCALLTYPE OnDkClickedButton(RZSBSDK_DKTYPE type, RZSBSDK_KEYSTAT
68122 } else {
69123 colormode += 5 ;
70124 }
125+ resetDKImages ();
71126 }
72127 break ;
73128 case RZSBSDK_DK_2 :
@@ -77,6 +132,7 @@ HRESULT STDMETHODCALLTYPE OnDkClickedButton(RZSBSDK_DKTYPE type, RZSBSDK_KEYSTAT
77132 } else {
78133 colormode += 5 ;
79134 }
135+ resetDKImages ();
80136 }
81137 break ;
82138 case RZSBSDK_DK_3 :
@@ -86,6 +142,7 @@ HRESULT STDMETHODCALLTYPE OnDkClickedButton(RZSBSDK_DKTYPE type, RZSBSDK_KEYSTAT
86142 } else {
87143 colormode += 5 ;
88144 }
145+ resetDKImages ();
89146 }
90147 break ;
91148 case RZSBSDK_DK_4 :
@@ -95,6 +152,7 @@ HRESULT STDMETHODCALLTYPE OnDkClickedButton(RZSBSDK_DKTYPE type, RZSBSDK_KEYSTAT
95152 } else {
96153 colormode += 5 ;
97154 }
155+ resetDKImages ();
98156 }
99157 break ;
100158 case RZSBSDK_DK_5 :
@@ -104,6 +162,7 @@ HRESULT STDMETHODCALLTYPE OnDkClickedButton(RZSBSDK_DKTYPE type, RZSBSDK_KEYSTAT
104162 } else {
105163 colormode += 5 ;
106164 }
165+ resetDKImages ();
107166 }
108167 break ;
109168 case RZSBSDK_DK_6 :
@@ -115,17 +174,20 @@ HRESULT STDMETHODCALLTYPE OnDkClickedButton(RZSBSDK_DKTYPE type, RZSBSDK_KEYSTAT
115174 } else {
116175 sendCmd = true;
117176 cmdCode = WINAMP_BUTTON1 ;
118- LoadKeyImageToRazer (".\\imagedata\\rewind.png" ,RZSBSDK_DK_6 , RZSBSDK_KEYSTATE_UP );
177+ getFileString (buffer , ".\\imagedata\\rewind" );
178+ LoadKeyImageToRazer (buffer ,RZSBSDK_DK_6 , RZSBSDK_KEYSTATE_UP );
119179 }
120180 break ;
121181 case RZSBSDK_DK_7 :
122182 if (keystate != RZSBSDK_KEYSTATE_UP ){
123183 // Play / Pause
124184 sendCmd = true;
125185 cmdCode = WINAMP_BUTTON3 ;
186+
126187 LoadKeyImageToRazer (".\\imagedata\\play-color.png" ,RZSBSDK_DK_7 , RZSBSDK_KEYSTATE_UP );
127188 } else {
128- LoadKeyImageToRazer (".\\imagedata\\play.png" ,RZSBSDK_DK_7 , RZSBSDK_KEYSTATE_UP );
189+ getFileString (buffer , ".\\imagedata\\play" );
190+ LoadKeyImageToRazer (buffer ,RZSBSDK_DK_7 , RZSBSDK_KEYSTATE_UP );
129191 }
130192 break ;
131193 case RZSBSDK_DK_8 :
@@ -135,7 +197,8 @@ HRESULT STDMETHODCALLTYPE OnDkClickedButton(RZSBSDK_DKTYPE type, RZSBSDK_KEYSTAT
135197 cmdCode = WINAMP_BUTTON5 ;
136198 LoadKeyImageToRazer (".\\imagedata\\fforward-color.png" ,RZSBSDK_DK_8 , RZSBSDK_KEYSTATE_UP );
137199 } else {
138- LoadKeyImageToRazer (".\\imagedata\\fforward.png" ,RZSBSDK_DK_8 , RZSBSDK_KEYSTATE_UP );
200+ getFileString (buffer , ".\\imagedata\\fforward" );
201+ LoadKeyImageToRazer (buffer ,RZSBSDK_DK_8 , RZSBSDK_KEYSTATE_UP );
139202 }
140203 break ;
141204 case RZSBSDK_DK_9 :
@@ -145,7 +208,8 @@ HRESULT STDMETHODCALLTYPE OnDkClickedButton(RZSBSDK_DKTYPE type, RZSBSDK_KEYSTAT
145208 LoadKeyImageToRazer (".\\imagedata\\volup-color.png" ,RZSBSDK_DK_9 , RZSBSDK_KEYSTATE_UP );
146209 } else {
147210 keybd_event (VK_VOLUME_UP , 0x45 , KEYEVENTF_EXTENDEDKEY | 0 , 0 );
148- LoadKeyImageToRazer (".\\imagedata\\volup.png" ,RZSBSDK_DK_9 , RZSBSDK_KEYSTATE_UP );
211+ getFileString (buffer , ".\\imagedata\\volup" );
212+ LoadKeyImageToRazer (buffer , RZSBSDK_DK_9 , RZSBSDK_KEYSTATE_UP );
149213 }
150214 break ;
151215 case RZSBSDK_DK_10 :
@@ -156,7 +220,8 @@ HRESULT STDMETHODCALLTYPE OnDkClickedButton(RZSBSDK_DKTYPE type, RZSBSDK_KEYSTAT
156220 LoadKeyImageToRazer (".\\imagedata\\voldown-color.png" ,RZSBSDK_DK_10 , RZSBSDK_KEYSTATE_UP );
157221 } else {
158222 keybd_event (VK_VOLUME_DOWN , 0x45 , KEYEVENTF_EXTENDEDKEY | 0 , 0 );
159- LoadKeyImageToRazer (".\\imagedata\\voldown.png" ,RZSBSDK_DK_10 , RZSBSDK_KEYSTATE_UP );
223+ getFileString (buffer , ".\\imagedata\\voldown" );
224+ LoadKeyImageToRazer (buffer , RZSBSDK_DK_10 , RZSBSDK_KEYSTATE_UP );
160225 }
161226 break ;
162227 default :
@@ -285,12 +350,8 @@ int visInit(struct winampVisModule *this_mod)
285350 RzSBStart ();
286351
287352 // Next time use noun project
288- // TODO: Are these images correctly getting added as a DLL resource?
289- LoadKeyImageToRazer (".\\imagedata\\rewind.png" ,RZSBSDK_DK_6 , RZSBSDK_KEYSTATE_UP );
290- LoadKeyImageToRazer (".\\imagedata\\play.png" ,RZSBSDK_DK_7 , RZSBSDK_KEYSTATE_UP );
291- LoadKeyImageToRazer (".\\imagedata\\fforward.png" ,RZSBSDK_DK_8 , RZSBSDK_KEYSTATE_UP );
292- LoadKeyImageToRazer (".\\imagedata\\volup.png" ,RZSBSDK_DK_9 , RZSBSDK_KEYSTATE_UP );
293- LoadKeyImageToRazer (".\\imagedata\\voldown.png" ,RZSBSDK_DK_10 , RZSBSDK_KEYSTATE_UP );
353+ resetDKImages ();
354+ setBeatKeep ();
294355 RzSBDynamicKeySetCallback (OnDkClickedButton );
295356
296357 // END UNSTABLE
@@ -539,6 +600,14 @@ int visRender(struct winampVisModule *this_mod)
539600 this_mod -> spectrumData [1 ][divCount ] * DIVSCALE ) * AMPLITUDE );
540601 }
541602
603+ divCount = 0 ;
604+ while (this_mod -> spectrumData [0 ][divCount ] > 7 && divCount < 30 ){
605+ divCount ++ ;
606+ if (divCount == 29 ){
607+ setBeatKeep ();
608+ }
609+ }
610+
542611 drawNextPixels = limitBuffer [divCount ] > row ;
543612
544613 // Traverse the display space and set pixels.
0 commit comments