scbkgwnd.h 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463
  1. #ifndef __SCRLBKGWND_H
  2. #define __SCRLBKGWND_H
  3. #include <tataki/canvas/canvas.h>
  4. #include <tataki/bitmap/autobitmap.h>
  5. #include <api/wnd/wndclass/labelwnd.h>
  6. #include <api/wnd/wndclass/scrollbar.h>
  7. #include <api/wnd/wndclass/sepwnd.h>
  8. #define SCRLBKGWND_PARENT LabelWnd
  9. /**
  10. Class
  11. @short
  12. @author Nullsoft
  13. @ver 1.0
  14. @see
  15. */
  16. class ScrlBkgWnd : public SCRLBKGWND_PARENT {
  17. protected:
  18. /**
  19. Method
  20. @see
  21. @ret
  22. @param
  23. */
  24. ScrlBkgWnd();
  25. public:
  26. /**
  27. Method
  28. @see
  29. @ret
  30. @param
  31. */
  32. virtual ~ScrlBkgWnd();
  33. /**
  34. Method
  35. @see
  36. @ret
  37. @param
  38. */
  39. virtual int onInit();
  40. /**
  41. Method
  42. @see
  43. @ret
  44. @param
  45. */
  46. virtual int onPaint(Canvas *c);
  47. /**
  48. Method
  49. @see
  50. @ret
  51. @param
  52. */
  53. virtual void drawBackground(Canvas *canvas);
  54. /**
  55. Method
  56. @see
  57. @ret
  58. @param
  59. */
  60. virtual int onEraseBkgnd(HDC dc);
  61. /**
  62. Method
  63. @see
  64. @ret
  65. @param
  66. */
  67. virtual int childNotify(ifc_window *child, int msg, intptr_t param1, intptr_t param2);
  68. /**
  69. Method
  70. @see
  71. @ret
  72. @param
  73. */
  74. virtual int onResize();
  75. /**
  76. Method
  77. @see
  78. @ret
  79. @param
  80. */
  81. virtual void getClientRect(RECT *r);
  82. // virtual void getNonClientRect(RECT *r);
  83. /**
  84. Method
  85. @see
  86. @ret
  87. @param
  88. */
  89. virtual int getHeaderHeight();
  90. virtual void timerCallback (int id);
  91. /**
  92. Method
  93. @see
  94. @ret
  95. @param
  96. */
  97. virtual void onHScrollToggle(int set);
  98. /**
  99. Method
  100. @see
  101. @ret
  102. @param
  103. */
  104. virtual void onVScrollToggle(int set);
  105. /**
  106. Method
  107. @see
  108. @ret
  109. @param
  110. */
  111. virtual void onSetVisible(int show);
  112. /**
  113. Method
  114. @see
  115. @ret
  116. @param
  117. */
  118. virtual int wantHScroll() { return 1; }
  119. /**
  120. Method
  121. @see
  122. @ret
  123. @param
  124. */
  125. virtual int wantVScroll() { return 1; }
  126. /**
  127. Method
  128. @see
  129. @ret
  130. @param
  131. */
  132. void makeWindowOverlayMask(api_region *r);
  133. /**
  134. Method
  135. @see
  136. @ret
  137. @param
  138. */
  139. SkinBitmap *getBgBitmap(void);
  140. /**
  141. Method
  142. @see
  143. @ret
  144. @param
  145. */
  146. void setBgBitmap(const wchar_t *b);
  147. /**
  148. Method
  149. @see
  150. @ret
  151. @param
  152. */
  153. void setBgColor(ARGB32 rgb);
  154. /**
  155. Method
  156. @see
  157. @ret
  158. @param
  159. */
  160. virtual ARGB32 getBgColor(void);
  161. /**
  162. Method
  163. @see
  164. @ret
  165. @param
  166. */
  167. virtual int getContentsWidth(); // not safe to call getclientrect!
  168. /**
  169. Method
  170. @see
  171. @ret
  172. @param
  173. */
  174. virtual int getContentsHeight(); // not safe to call getclientrect!
  175. /**
  176. Method
  177. @see
  178. @ret
  179. @param
  180. */
  181. void setLineHeight(int h);
  182. /**
  183. Method
  184. @see
  185. @ret
  186. @param
  187. */
  188. int getLinesPerPage();
  189. /**
  190. Method
  191. @see
  192. @ret
  193. @param
  194. */
  195. int getScrollX();
  196. /**
  197. Method
  198. @see
  199. @ret
  200. @param
  201. */
  202. int getScrollY();
  203. /**
  204. Method
  205. @see
  206. @ret
  207. @param
  208. */
  209. int getScrollbarWidth();
  210. /**
  211. Method
  212. @see
  213. @ret
  214. @param
  215. */
  216. virtual void scrollToY(int y, int signal=TRUE);
  217. /**
  218. Method
  219. @see
  220. @ret
  221. @param
  222. */
  223. virtual void scrollToX(int x, int signal=TRUE);
  224. protected:
  225. virtual void onScrollY(int y) { }
  226. /**
  227. Method
  228. @see
  229. @ret
  230. @param
  231. */
  232. void setSlidersPosition();
  233. /**
  234. Method
  235. @see
  236. @ret
  237. @param
  238. */
  239. int needDoubleBuffer();
  240. /**
  241. Method
  242. @see
  243. @ret
  244. @param
  245. */
  246. bool needHScroll();
  247. /**
  248. Method
  249. @see
  250. @ret
  251. @param
  252. */
  253. bool needVScroll();
  254. /**
  255. Method
  256. @see
  257. @ret
  258. @param
  259. */
  260. int getMaxScrollY();
  261. /**
  262. Method
  263. @see
  264. @ret
  265. @param
  266. */
  267. int getMaxScrollX();
  268. /**
  269. Method
  270. @see
  271. @ret
  272. @param
  273. */
  274. void updateScrollY(bool smooth=false);
  275. /**
  276. Method
  277. @see
  278. @ret
  279. @param
  280. */
  281. void updateScrollX(bool smooth=false);
  282. /**
  283. Method
  284. @see
  285. @ret
  286. @param
  287. */
  288. void smoothScrollToY(int y);
  289. /**
  290. Method
  291. @see
  292. @ret
  293. @param
  294. */
  295. void smoothScrollToX(int x);
  296. /**
  297. Method
  298. @see
  299. @ret
  300. @param
  301. */
  302. void updateVScroll(int y);
  303. /**
  304. Method
  305. @see
  306. @ret
  307. @param
  308. */
  309. void updateHScroll(int x);
  310. AutoSkinBitmap bmp;
  311. int dbbuffer;
  312. bool inDestroy;
  313. ScrollBar hScroll;
  314. ScrollBar vScroll;
  315. SepWnd hSep;
  316. SepWnd vSep;
  317. ARGB32 bgColor;
  318. int scrollX;
  319. int scrollY;
  320. bool needSetSliders;
  321. bool wantsep;
  322. bool wantTileBg;
  323. int lineHeight;
  324. float smoothScrollYInc, smoothScrollXInc;
  325. float smoothScrollYCur, smoothScrollXCur;
  326. int smoothScrollYTimerCount, smoothScrollXTimerCount;
  327. int smoothYTimer, smoothXTimer;
  328. /**
  329. Method
  330. @see
  331. @ret
  332. @param
  333. */
  334. void killSmoothYTimer();
  335. /**
  336. Method
  337. @see
  338. @ret
  339. @param
  340. */
  341. void killSmoothXTimer();
  342. double lastratio;
  343. RECT smsqr;
  344. /**
  345. Method
  346. @see
  347. @ret
  348. @param
  349. */
  350. void _setSlidersPosition();
  351. int in_set_slider_position;
  352. };
  353. #endif