GadgetSlider.h 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445
  1. /*
  2. ** Command & Conquer Generals Zero Hour(tm)
  3. ** Copyright 2025 Electronic Arts Inc.
  4. **
  5. ** This program is free software: you can redistribute it and/or modify
  6. ** it under the terms of the GNU General Public License as published by
  7. ** the Free Software Foundation, either version 3 of the License, or
  8. ** (at your option) any later version.
  9. **
  10. ** This program is distributed in the hope that it will be useful,
  11. ** but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. ** GNU General Public License for more details.
  14. **
  15. ** You should have received a copy of the GNU General Public License
  16. ** along with this program. If not, see <http://www.gnu.org/licenses/>.
  17. */
  18. ////////////////////////////////////////////////////////////////////////////////
  19. // //
  20. // (c) 2001-2003 Electronic Arts Inc. //
  21. // //
  22. ////////////////////////////////////////////////////////////////////////////////
  23. // FILE: GadgetSlider.h ///////////////////////////////////////////////////////
  24. //-----------------------------------------------------------------------------
  25. //
  26. // Westwood Studios Pacific.
  27. //
  28. // Confidential Information
  29. // Copyright (C) 2001 - All Rights Reserved
  30. //
  31. //-----------------------------------------------------------------------------
  32. //
  33. // Project: RTS3
  34. //
  35. // File name: GadgetSlider.h
  36. //
  37. // Created: Colin Day, June 2001
  38. //
  39. // Desc: Helpful interface for Sliders
  40. //
  41. // Slider Sliders are constructed of 4 pieces, two end pieces,
  42. // a repeating center, and a smaller repeating center pieces
  43. // to fill small seams. Since there are vertical sliders
  44. // and horizontal sliders, the LEFT end of a horizontal
  45. // slider is stored in the same place as the TOP end for a
  46. // vertical slider. The RIGHT end of a horizontal is
  47. // also equivalent to the BOTTOM end of a vertical one.
  48. //
  49. //-----------------------------------------------------------------------------
  50. ///////////////////////////////////////////////////////////////////////////////
  51. #pragma once
  52. #ifndef __GADGETSLIDER_H_
  53. #define __GADGETSLIDER_H_
  54. // SYSTEM INCLUDES ////////////////////////////////////////////////////////////
  55. // USER INCLUDES //////////////////////////////////////////////////////////////
  56. #include "GameClient/GameWindow.h"
  57. #include "GameClient/GameWindowManager.h"
  58. #include "GameClient/GadgetPushButton.h"
  59. #include "GameClient/Gadget.h"
  60. #include "GameClient/Image.h"
  61. // FORWARD REFERENCES /////////////////////////////////////////////////////////
  62. // TYPE DEFINES ///////////////////////////////////////////////////////////////
  63. enum{
  64. HORIZONTAL_SLIDER_THUMB_POSITION = HORIZONTAL_SLIDER_THUMB_HEIGHT *2/3
  65. };
  66. // INLINING ///////////////////////////////////////////////////////////////////
  67. inline void GadgetSliderGetMinMax( GameWindow *g, Int *min, Int *max )
  68. {
  69. SliderData *sData = (SliderData *)g->winGetUserData();
  70. *max = sData->maxVal;
  71. *min = sData->minVal;
  72. }
  73. inline GameWindow *GadgetSliderGetThumb( GameWindow *g ) { return g->winGetChild(); }
  74. inline void GadgetSliderSetPosition( GameWindow *win, Int pos )
  75. {
  76. TheWindowManager->winSendSystemMsg( win,
  77. GSM_SET_SLIDER,
  78. pos,
  79. 0 );
  80. }
  81. inline Int GadgetSliderGetPosition( GameWindow *win )
  82. {
  83. SliderData *sData = (SliderData *)win->winGetUserData();
  84. if (sData)
  85. {
  86. return sData->position;
  87. }
  88. return -1;
  89. }
  90. // sliders are drawn from pieces, a left/top, right/bottom, repeating center, and small repeating center
  91. inline void GadgetSliderSetEnabledImages( GameWindow *g, const Image *left, const Image *right, const Image *center, const Image *smallCenter )
  92. {
  93. g->winSetEnabledImage( 0, left );
  94. g->winSetEnabledImage( 1, right );
  95. g->winSetEnabledImage( 2, center );
  96. g->winSetEnabledImage( 3, smallCenter );
  97. }
  98. inline void GadgetSliderSetEnabledImageLeft( GameWindow *g, const Image *left ) { g->winSetEnabledImage( 0, left ); }
  99. inline void GadgetSliderSetEnabledImageTop( GameWindow *g, const Image *left ) { g->winSetEnabledImage( 0, left ); }
  100. inline void GadgetSliderSetEnabledImageRight( GameWindow *g, const Image *right ) { g->winSetEnabledImage( 1, right ); }
  101. inline void GadgetSliderSetEnabledImageBottom( GameWindow *g, const Image *right ) { g->winSetEnabledImage( 1, right ); }
  102. inline void GadgetSliderSetEnabledImageCenter( GameWindow *g, const Image *center ) { g->winSetEnabledImage( 2, center ); }
  103. inline void GadgetSliderSetEnabledImageSmallCenter( GameWindow *g, const Image *smallCenter ) { g->winSetEnabledImage( 3, smallCenter ); }
  104. inline void GadgetSliderSetEnabledColor( GameWindow *g, Color color ) { g->winSetEnabledColor( 0, color ); }
  105. inline void GadgetSliderSetEnabledBorderColor( GameWindow *g, Color color ) { g->winSetEnabledBorderColor( 0, color ); }
  106. inline const Image *GadgetSliderGetEnabledImageLeft( GameWindow *g ) { return g->winGetEnabledImage( 0 ); }
  107. inline const Image *GadgetSliderGetEnabledImageTop( GameWindow *g ) { return g->winGetEnabledImage( 0 ); }
  108. inline const Image *GadgetSliderGetEnabledImageRight( GameWindow *g ) { return g->winGetEnabledImage( 1 ); }
  109. inline const Image *GadgetSliderGetEnabledImageBottom( GameWindow *g ) { return g->winGetEnabledImage( 1 ); }
  110. inline const Image *GadgetSliderGetEnabledImageCenter( GameWindow *g ) { return g->winGetEnabledImage( 2 ); }
  111. inline const Image *GadgetSliderGetEnabledImageSmallCenter( GameWindow *g ) { return g->winGetEnabledImage( 3 ); }
  112. inline Color GadgetSliderGetEnabledColor( GameWindow *g ) { return g->winGetEnabledColor( 0 ); }
  113. inline Color GadgetSliderGetEnabledBorderColor( GameWindow *g ) { return g->winGetEnabledBorderColor( 0 ); }
  114. // sliders are drawn from pieces, a left/top, right/bottom, repeating center, and small repeating center
  115. inline void GadgetSliderSetDisabledImages( GameWindow *g, const Image *left, const Image *right, const Image *center, const Image *smallCenter )
  116. {
  117. g->winSetDisabledImage( 0, left );
  118. g->winSetDisabledImage( 1, right );
  119. g->winSetDisabledImage( 2, center );
  120. g->winSetDisabledImage( 3, smallCenter );
  121. }
  122. inline void GadgetSliderSetDisabledImageLeft( GameWindow *g, const Image *left ) { g->winSetDisabledImage( 0, left ); }
  123. inline void GadgetSliderSetDisabledImageTop( GameWindow *g, const Image *left ) { g->winSetDisabledImage( 0, left ); }
  124. inline void GadgetSliderSetDisabledImageRight( GameWindow *g, const Image *right ) { g->winSetDisabledImage( 1, right ); }
  125. inline void GadgetSliderSetDisabledImageBottom( GameWindow *g, const Image *right ) { g->winSetDisabledImage( 1, right ); }
  126. inline void GadgetSliderSetDisabledImageCenter( GameWindow *g, const Image *center ) { g->winSetDisabledImage( 2, center ); }
  127. inline void GadgetSliderSetDisabledImageSmallCenter( GameWindow *g, const Image *smallCenter ) { g->winSetDisabledImage( 3, smallCenter ); }
  128. inline void GadgetSliderSetDisabledColor( GameWindow *g, Color color ) { g->winSetDisabledColor( 0, color ); }
  129. inline void GadgetSliderSetDisabledBorderColor( GameWindow *g, Color color ) { g->winSetDisabledBorderColor( 0, color ); }
  130. inline const Image *GadgetSliderGetDisabledImageLeft( GameWindow *g ) { return g->winGetDisabledImage( 0 ); }
  131. inline const Image *GadgetSliderGetDisabledImageTop( GameWindow *g ) { return g->winGetDisabledImage( 0 ); }
  132. inline const Image *GadgetSliderGetDisabledImageRight( GameWindow *g ) { return g->winGetDisabledImage( 1 ); }
  133. inline const Image *GadgetSliderGetDisabledImageBottom( GameWindow *g ) { return g->winGetDisabledImage( 1 ); }
  134. inline const Image *GadgetSliderGetDisabledImageCenter( GameWindow *g ) { return g->winGetDisabledImage( 2 ); }
  135. inline const Image *GadgetSliderGetDisabledImageSmallCenter( GameWindow *g ){ return g->winGetDisabledImage( 3 ); }
  136. inline Color GadgetSliderGetDisabledColor( GameWindow *g ) { return g->winGetDisabledColor( 0 ); }
  137. inline Color GadgetSliderGetDisabledBorderColor( GameWindow *g ) { return g->winGetDisabledBorderColor( 0 ); }
  138. // sliders are drawn from pieces, a left/top, right/bottom, repeating center, and small repeating center
  139. inline void GadgetSliderSetHiliteImages( GameWindow *g, const Image *left, const Image *right, const Image *center, const Image *smallCenter )
  140. {
  141. g->winSetHiliteImage( 0, left );
  142. g->winSetHiliteImage( 1, right );
  143. g->winSetHiliteImage( 2, center );
  144. g->winSetHiliteImage( 3, smallCenter );
  145. }
  146. inline void GadgetSliderSetHiliteImageLeft( GameWindow *g, const Image *left ) { g->winSetHiliteImage( 0, left ); }
  147. inline void GadgetSliderSetHiliteImageTop( GameWindow *g, const Image *left ) { g->winSetHiliteImage( 0, left ); }
  148. inline void GadgetSliderSetHiliteImageRight( GameWindow *g, const Image *right ) { g->winSetHiliteImage( 1, right ); }
  149. inline void GadgetSliderSetHiliteImageBottom( GameWindow *g, const Image *right ) { g->winSetHiliteImage( 1, right ); }
  150. inline void GadgetSliderSetHiliteImageCenter( GameWindow *g, const Image *center ) { g->winSetHiliteImage( 2, center ); }
  151. inline void GadgetSliderSetHiliteImageSmallCenter( GameWindow *g, const Image *smallCenter ) { g->winSetHiliteImage( 3, smallCenter ); }
  152. inline void GadgetSliderSetHiliteColor( GameWindow *g, Color color ) { g->winSetHiliteColor( 0, color ); }
  153. inline void GadgetSliderSetHiliteBorderColor( GameWindow *g, Color color ) { g->winSetHiliteBorderColor( 0, color ); }
  154. inline const Image *GadgetSliderGetHiliteImageLeft( GameWindow *g ) { return g->winGetHiliteImage( 0 ); }
  155. inline const Image *GadgetSliderGetHiliteImageTop( GameWindow *g ) { return g->winGetHiliteImage( 0 ); }
  156. inline const Image *GadgetSliderGetHiliteImageRight( GameWindow *g ) { return g->winGetHiliteImage( 1 ); }
  157. inline const Image *GadgetSliderGetHiliteImageBottom( GameWindow *g ) { return g->winGetHiliteImage( 1 ); }
  158. inline const Image *GadgetSliderGetHiliteImageCenter( GameWindow *g ) { return g->winGetHiliteImage( 2 ); }
  159. inline const Image *GadgetSliderGetHiliteImageSmallCenter( GameWindow *g ){ return g->winGetHiliteImage( 3 ); }
  160. inline Color GadgetSliderGetHiliteColor( GameWindow *g ) { return g->winGetHiliteColor( 0 ); }
  161. inline Color GadgetSliderGetHiliteBorderColor( GameWindow *g ) { return g->winGetHiliteBorderColor( 0 ); }
  162. ///////////////////////////////////////////////////////////////////////////////
  163. // Functions to set the images and colors for the slider thumb
  164. ///////////////////////////////////////////////////////////////////////////////
  165. // enabled
  166. inline void GadgetSliderSetEnabledThumbImage( GameWindow *g, const Image *image )
  167. {
  168. GameWindow *thumb = g->winGetChild();
  169. if( thumb )
  170. GadgetButtonSetEnabledImage( thumb, image );
  171. }
  172. inline void GadgetSliderSetEnabledThumbColor( GameWindow *g, Color color )
  173. {
  174. GameWindow *thumb = g->winGetChild();
  175. if( thumb )
  176. GadgetButtonSetEnabledColor( thumb, color );
  177. }
  178. inline void GadgetSliderSetEnabledThumbBorderColor( GameWindow *g, Color color )
  179. {
  180. GameWindow *thumb = g->winGetChild();
  181. if( thumb )
  182. GadgetButtonSetEnabledBorderColor( thumb, color );
  183. }
  184. inline void GadgetSliderSetEnabledSelectedThumbImage( GameWindow *g, const Image *image )
  185. {
  186. GameWindow *thumb = g->winGetChild();
  187. if( thumb )
  188. GadgetButtonSetEnabledSelectedImage( thumb, image );
  189. }
  190. inline void GadgetSliderSetEnabledSelectedThumbColor( GameWindow *g, Color color )
  191. {
  192. GameWindow *thumb = g->winGetChild();
  193. if( thumb )
  194. GadgetButtonSetEnabledSelectedColor( thumb, color );
  195. }
  196. inline void GadgetSliderSetEnabledSelectedThumbBorderColor( GameWindow *g, Color color )
  197. {
  198. GameWindow *thumb = g->winGetChild();
  199. if( thumb )
  200. GadgetButtonSetEnabledSelectedBorderColor( thumb, color );
  201. }
  202. inline const Image *GadgetSliderGetEnabledThumbImage( GameWindow *g )
  203. {
  204. GameWindow *thumb = g->winGetChild();
  205. if( thumb )
  206. return GadgetButtonGetEnabledImage( thumb );
  207. else
  208. return NULL;
  209. }
  210. inline Color GadgetSliderGetEnabledThumbColor( GameWindow *g )
  211. {
  212. GameWindow *thumb = g->winGetChild();
  213. if( thumb )
  214. return GadgetButtonGetEnabledColor( thumb );
  215. else
  216. return WIN_COLOR_UNDEFINED;
  217. }
  218. inline Color GadgetSliderGetEnabledThumbBorderColor( GameWindow *g )
  219. {
  220. GameWindow *thumb = g->winGetChild();
  221. if( thumb )
  222. return GadgetButtonGetEnabledBorderColor( thumb );
  223. else
  224. return WIN_COLOR_UNDEFINED;
  225. }
  226. inline const Image *GadgetSliderGetEnabledSelectedThumbImage( GameWindow *g )
  227. {
  228. GameWindow *thumb = g->winGetChild();
  229. if( thumb )
  230. return GadgetButtonGetEnabledSelectedImage( thumb );
  231. else
  232. return NULL;
  233. }
  234. inline Color GadgetSliderGetEnabledSelectedThumbColor( GameWindow *g )
  235. {
  236. GameWindow *thumb = g->winGetChild();
  237. if( thumb )
  238. return GadgetButtonGetEnabledSelectedColor( thumb );
  239. else
  240. return WIN_COLOR_UNDEFINED;
  241. }
  242. inline Color GadgetSliderGetEnabledSelectedThumbBorderColor( GameWindow *g )
  243. {
  244. GameWindow *thumb = g->winGetChild();
  245. if( thumb )
  246. return GadgetButtonGetEnabledSelectedBorderColor( thumb );
  247. else
  248. return WIN_COLOR_UNDEFINED;
  249. }
  250. // disabled
  251. inline void GadgetSliderSetDisabledThumbImage( GameWindow *g, const Image *image )
  252. {
  253. GameWindow *thumb = g->winGetChild();
  254. if( thumb )
  255. GadgetButtonSetDisabledImage( thumb, image );
  256. }
  257. inline void GadgetSliderSetDisabledThumbColor( GameWindow *g, Color color )
  258. {
  259. GameWindow *thumb = g->winGetChild();
  260. if( thumb )
  261. GadgetButtonSetDisabledColor( thumb, color );
  262. }
  263. inline void GadgetSliderSetDisabledThumbBorderColor( GameWindow *g, Color color )
  264. {
  265. GameWindow *thumb = g->winGetChild();
  266. if( thumb )
  267. GadgetButtonSetDisabledBorderColor( thumb, color );
  268. }
  269. inline void GadgetSliderSetDisabledSelectedThumbImage( GameWindow *g, const Image *image )
  270. {
  271. GameWindow *thumb = g->winGetChild();
  272. if( thumb )
  273. GadgetButtonSetDisabledSelectedImage( thumb, image );
  274. }
  275. inline void GadgetSliderSetDisabledSelectedThumbColor( GameWindow *g, Color color )
  276. {
  277. GameWindow *thumb = g->winGetChild();
  278. if( thumb )
  279. GadgetButtonSetDisabledSelectedColor( thumb, color );
  280. }
  281. inline void GadgetSliderSetDisabledSelectedThumbBorderColor( GameWindow *g, Color color )
  282. {
  283. GameWindow *thumb = g->winGetChild();
  284. if( thumb )
  285. GadgetButtonSetDisabledSelectedBorderColor( thumb, color );
  286. }
  287. inline const Image *GadgetSliderGetDisabledThumbImage( GameWindow *g )
  288. {
  289. GameWindow *thumb = g->winGetChild();
  290. if( thumb )
  291. return GadgetButtonGetDisabledImage( thumb );
  292. else
  293. return NULL;
  294. }
  295. inline Color GadgetSliderGetDisabledThumbColor( GameWindow *g )
  296. {
  297. GameWindow *thumb = g->winGetChild();
  298. if( thumb )
  299. return GadgetButtonGetDisabledColor( thumb );
  300. else
  301. return WIN_COLOR_UNDEFINED;
  302. }
  303. inline Color GadgetSliderGetDisabledThumbBorderColor( GameWindow *g )
  304. {
  305. GameWindow *thumb = g->winGetChild();
  306. if( thumb )
  307. return GadgetButtonGetDisabledBorderColor( thumb );
  308. else
  309. return WIN_COLOR_UNDEFINED;
  310. }
  311. inline const Image *GadgetSliderGetDisabledSelectedThumbImage( GameWindow *g )
  312. {
  313. GameWindow *thumb = g->winGetChild();
  314. if( thumb )
  315. return GadgetButtonGetDisabledSelectedImage( thumb );
  316. else
  317. return NULL;
  318. }
  319. inline Color GadgetSliderGetDisabledSelectedThumbColor( GameWindow *g )
  320. {
  321. GameWindow *thumb = g->winGetChild();
  322. if( thumb )
  323. return GadgetButtonGetDisabledSelectedColor( thumb );
  324. else
  325. return WIN_COLOR_UNDEFINED;
  326. }
  327. inline Color GadgetSliderGetDisabledSelectedThumbBorderColor( GameWindow *g )
  328. {
  329. GameWindow *thumb = g->winGetChild();
  330. if( thumb )
  331. return GadgetButtonGetDisabledSelectedBorderColor( thumb );
  332. else
  333. return WIN_COLOR_UNDEFINED;
  334. }
  335. // hilite
  336. inline void GadgetSliderSetHiliteThumbImage( GameWindow *g, const Image *image )
  337. {
  338. GameWindow *thumb = g->winGetChild();
  339. if( thumb )
  340. GadgetButtonSetHiliteImage( thumb, image );
  341. }
  342. inline void GadgetSliderSetHiliteThumbColor( GameWindow *g, Color color )
  343. {
  344. GameWindow *thumb = g->winGetChild();
  345. if( thumb )
  346. GadgetButtonSetHiliteColor( thumb, color );
  347. }
  348. inline void GadgetSliderSetHiliteThumbBorderColor( GameWindow *g, Color color )
  349. {
  350. GameWindow *thumb = g->winGetChild();
  351. if( thumb )
  352. GadgetButtonSetHiliteBorderColor( thumb, color );
  353. }
  354. inline void GadgetSliderSetHiliteSelectedThumbImage( GameWindow *g, const Image *image )
  355. {
  356. GameWindow *thumb = g->winGetChild();
  357. if( thumb )
  358. GadgetButtonSetHiliteSelectedImage( thumb, image );
  359. }
  360. inline void GadgetSliderSetHiliteSelectedThumbColor( GameWindow *g, Color color )
  361. {
  362. GameWindow *thumb = g->winGetChild();
  363. if( thumb )
  364. GadgetButtonSetHiliteSelectedColor( thumb, color );
  365. }
  366. inline void GadgetSliderSetHiliteSelectedThumbBorderColor( GameWindow *g, Color color )
  367. {
  368. GameWindow *thumb = g->winGetChild();
  369. if( thumb )
  370. GadgetButtonSetHiliteSelectedBorderColor( thumb, color );
  371. }
  372. inline const Image *GadgetSliderGetHiliteThumbImage( GameWindow *g )
  373. {
  374. GameWindow *thumb = g->winGetChild();
  375. if( thumb )
  376. return GadgetButtonGetHiliteImage( thumb );
  377. else
  378. return NULL;
  379. }
  380. inline Color GadgetSliderGetHiliteThumbColor( GameWindow *g )
  381. {
  382. GameWindow *thumb = g->winGetChild();
  383. if( thumb )
  384. return GadgetButtonGetHiliteColor( thumb );
  385. else
  386. return WIN_COLOR_UNDEFINED;
  387. }
  388. inline Color GadgetSliderGetHiliteThumbBorderColor( GameWindow *g )
  389. {
  390. GameWindow *thumb = g->winGetChild();
  391. if( thumb )
  392. return GadgetButtonGetHiliteBorderColor( thumb );
  393. else
  394. return WIN_COLOR_UNDEFINED;
  395. }
  396. inline const Image *GadgetSliderGetHiliteSelectedThumbImage( GameWindow *g )
  397. {
  398. GameWindow *thumb = g->winGetChild();
  399. if( thumb )
  400. return GadgetButtonGetHiliteSelectedImage( thumb );
  401. else
  402. return NULL;
  403. }
  404. inline Color GadgetSliderGetHiliteSelectedThumbColor( GameWindow *g )
  405. {
  406. GameWindow *thumb = g->winGetChild();
  407. if( thumb )
  408. return GadgetButtonGetHiliteSelectedColor( thumb );
  409. else
  410. return WIN_COLOR_UNDEFINED;
  411. }
  412. inline Color GadgetSliderGetHiliteSelectedThumbBorderColor( GameWindow *g )
  413. {
  414. GameWindow *thumb = g->winGetChild();
  415. if( thumb )
  416. return GadgetButtonGetHiliteSelectedBorderColor( thumb );
  417. else
  418. return WIN_COLOR_UNDEFINED;
  419. }
  420. // EXTERNALS //////////////////////////////////////////////////////////////////
  421. #endif // __GADGETSLIDER_H_