scrollbar.h 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423
  1. #ifndef __SCROLLBAR_H
  2. #define __SCROLLBAR_H
  3. #include <api/wnd/virtualwnd.h>
  4. #include <tataki/region/region.h>
  5. #include <api/wnd/usermsg.h>
  6. #include <tataki/bitmap/autobitmap.h>
  7. #define SCROLLBAR_FULL 65535
  8. #define POS_NONE 0
  9. #define POS_LEFT 1
  10. #define POS_BUTTON 2
  11. #define POS_RIGHT 3
  12. #define PAGE_NONE 0
  13. #define PAGE_DOWN 1
  14. #define PAGE_UP 2
  15. #define DEFAULT_HEIGHT 16
  16. #define SCROLLBAR_PARENT VirtualWnd
  17. /**
  18. Class
  19. @short
  20. @author Nullsoft
  21. @ver 1.0
  22. @see
  23. */
  24. class ScrollBar : public SCROLLBAR_PARENT {
  25. public:
  26. /**
  27. Method
  28. @see
  29. @ret
  30. @param
  31. */
  32. ScrollBar();
  33. /**
  34. Method
  35. @see
  36. @ret
  37. @param
  38. */
  39. virtual ~ScrollBar();
  40. virtual int onMouseMove (int x, int y);
  41. /**
  42. Method
  43. @see
  44. @ret
  45. @param
  46. */
  47. virtual int onLeftButtonDown(int x, int y);
  48. /**
  49. Method
  50. @see
  51. @ret
  52. @param
  53. */
  54. virtual int onLeftButtonUp(int x, int y);
  55. /**
  56. Method
  57. @see
  58. @ret
  59. @param
  60. */
  61. virtual int onRightButtonDown(int x, int y);
  62. /**
  63. Method
  64. @see
  65. @ret
  66. @param
  67. */
  68. virtual int onRightButtonUp(int x, int y);
  69. /**
  70. Method
  71. @see
  72. @ret
  73. @param
  74. */
  75. virtual int onMouseWheelUp(int clicked, int lines);
  76. /**
  77. Method
  78. @see
  79. @ret
  80. @param
  81. */
  82. virtual int onMouseWheelDown(int clicked, int lines);
  83. /**
  84. Method
  85. @see
  86. @ret
  87. @param
  88. */
  89. virtual int onPaint(Canvas *canvas);
  90. /**
  91. Method
  92. @see
  93. @ret
  94. @param
  95. */
  96. virtual int onResize();
  97. /**
  98. Method
  99. @see
  100. @ret
  101. @param
  102. */
  103. virtual int onInit();
  104. /**
  105. Method
  106. @see
  107. @ret
  108. @param
  109. */
  110. virtual void timerCallback(int id);
  111. /**
  112. Method
  113. @see
  114. @ret
  115. @param
  116. */
  117. virtual int wantDoubleClicks() { return 0; };
  118. virtual int onSetPosition(bool smooth=false);
  119. virtual int onSetFinalPosition();
  120. void setBitmaps(wchar_t *left, wchar_t *lpressed, wchar_t *lhilite,
  121. wchar_t *right, wchar_t *rpressed, wchar_t *rhilite,
  122. wchar_t *button, wchar_t *bpressed, wchar_t *bhilite);
  123. void setBackgroundBitmaps(const wchar_t *left, const wchar_t *middle, const wchar_t *right);
  124. void setPosition(int pos);
  125. /**
  126. Method
  127. @see
  128. @ret
  129. @param
  130. */
  131. int getPosition();
  132. /**
  133. Method
  134. @see
  135. @ret
  136. @param
  137. */
  138. int getHeight();
  139. /**
  140. Method
  141. @see
  142. @ret
  143. @param
  144. */
  145. void setHeight(int newheight);
  146. /**
  147. Method
  148. @see
  149. @ret
  150. @param
  151. */
  152. void setNPages(int n);
  153. /**
  154. Method
  155. @see
  156. @ret
  157. @param
  158. */
  159. void gotoPage(int n);
  160. /**
  161. Method
  162. @see
  163. @ret
  164. @param
  165. */
  166. void setUpDownValue(int newupdown);
  167. /**
  168. Method
  169. @see
  170. @ret
  171. @param
  172. */
  173. void setVertical(bool isvertical);
  174. /**
  175. Method
  176. @see
  177. @ret
  178. @param
  179. */
  180. int getWidth();
  181. /**
  182. Method
  183. @see
  184. @ret
  185. @param
  186. */
  187. virtual void freeResources();
  188. /**
  189. Method
  190. @see
  191. @ret
  192. @param
  193. */
  194. virtual void reloadResources();
  195. private:
  196. /**
  197. Method
  198. @see
  199. @ret
  200. @param
  201. */
  202. void deleteResources();
  203. /**
  204. Method
  205. @see
  206. @ret
  207. @param
  208. */
  209. int getMousePosition();
  210. /**
  211. Method
  212. @see
  213. @ret
  214. @param
  215. */
  216. void calcOverlapping();
  217. /**
  218. Method
  219. @see
  220. @ret
  221. @param
  222. */
  223. void calcXPosition();
  224. /**
  225. Method
  226. @see
  227. @ret
  228. @param
  229. */
  230. void calcPosition();
  231. /**
  232. Method
  233. @see
  234. @ret
  235. @param
  236. */
  237. void handlePageUpDown();
  238. /**
  239. Method
  240. @see
  241. @ret
  242. @param
  243. */
  244. int checkPageUpDown();
  245. /**
  246. Method
  247. @see
  248. @ret
  249. @param
  250. */
  251. void handleUpDown();
  252. /**
  253. Method
  254. @see
  255. @ret
  256. @param
  257. */
  258. int checkUpDown();
  259. /**
  260. Method
  261. @see
  262. @ret
  263. @param
  264. */
  265. int pageUp();
  266. /**
  267. Method
  268. @see
  269. @ret
  270. @param
  271. */
  272. int pageDown();
  273. /**
  274. Method
  275. @see
  276. @ret
  277. @param
  278. */
  279. int upDown(int which);
  280. /**
  281. Method
  282. @see
  283. @ret
  284. @param
  285. */
  286. void setPrivatePosition(int pos, bool signal=true, bool smooth=false);
  287. /**
  288. Method
  289. @see
  290. @ret
  291. @param
  292. */
  293. void loadBmps();
  294. AutoSkinBitmap bmpleft, bmplpressed, bmplhilite,
  295. bmpright, bmprpressed, bmprhilite,
  296. bmpbutton, bmpbpressed, bmpbhilite,
  297. bmpbackgroundleft, bmpbackgroundmiddle, bmpbackgroundright;
  298. RegionI *leftrgn, *rightrgn, *buttonrgn;
  299. int position;
  300. int moving;
  301. int lefting;
  302. int righting;
  303. int clicked;
  304. int buttonx;
  305. int curmouseposition;
  306. int clickmouseposition;
  307. int height;
  308. int shiftleft, shiftright;
  309. POINT clickpos;
  310. int clickbuttonx;
  311. int pageing;
  312. int firstdelay;
  313. int timer;
  314. int npages;
  315. int pageway;
  316. int updown;
  317. int timer2;
  318. int insetpos;
  319. int vertical;
  320. int lastx, lasty;
  321. };
  322. #endif