You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

215 lines
4.9KB

  1. # data file for the Fltk User Interface Designer (fluid)
  2. version 1.0010
  3. header_name {.H}
  4. code_name {.cxx}
  5. gridx 5
  6. gridy 5
  7. snap 3
  8. decl {\#include <FL/fl_draw.H>} {public
  9. }
  10. decl {\#include <FL/Fl_Widget.H>} {public
  11. }
  12. class Fl_SevenSeg {open : {public Fl_Widget}
  13. } {
  14. decl {int digit,decpt,segwidth;} {}
  15. Function {Fl_SevenSeg(int x,int y,int w,int h):Fl_Widget(x,y,w,h)} {} {
  16. code {color2(FL_BLACK);
  17. color(FL_RED);
  18. digit = 8;
  19. segwidth = (w-8)/13;
  20. segwidth = segwidth<(h-8)/13 ?(h-8)/13: segwidth;
  21. if (segwidth<1) segwidth =1;} {}
  22. }
  23. Function {~Fl_SevenSeg(void)} {} {}
  24. Function {value(int v)} {return_type void
  25. } {
  26. code {if (v <0) digit = -1;
  27. else
  28. if (v>9) digit = 9;
  29. else
  30. digit = v;
  31. if (active()) redraw();} {}
  32. }
  33. Function {value(char c)} {return_type void
  34. } {
  35. code {int v = c - '0';
  36. value(v);} {}
  37. }
  38. Function {value(void)} {return_type {const int}
  39. } {
  40. code {return digit;} {}
  41. }
  42. Function {dp(int onoff)} {return_type void
  43. } {
  44. code {decpt =(onoff!=0);} {}
  45. }
  46. Function {dp(void)} {return_type {const int}
  47. } {
  48. code {return decpt;} {}
  49. }
  50. Function {bar_width(void)} {return_type {const int}
  51. } {
  52. code {return segwidth;} {}
  53. }
  54. Function {bar_width(int w)} {return_type void
  55. } {
  56. code {segwidth = w > 2 ? w:2;
  57. if (active()) redraw();} {}
  58. }
  59. decl {// PRIVATE METHODS} {}
  60. Function {draw()} {open private
  61. } {
  62. code {uchar r,g,b;
  63. int val;
  64. draw_box();
  65. int xx = x()+4;
  66. int ww =w()-8;
  67. int yy = y()+4;
  68. int hh = h()-8;
  69. fl_clip(xx,yy,ww,hh);
  70. fl_color(color2());
  71. fl_rectf(xx,yy,ww,hh);
  72. if (digit == -1) return;
  73. Fl::get_color(color(),r,g,b);
  74. if (!active())
  75. {
  76. val = 64+(int)r/4; r = val > 255 ? 255:val;
  77. val = 64+(int)g/4; g = val > 255 ? 255:val;
  78. val = 64+(int)b/4; b = val > 255 ? 255:val;
  79. }
  80. fl_color(r,g,b);
  81. fl_line_style(FL_SOLID|FL_CAP_ROUND,segwidth);
  82. switch(digit)
  83. {
  84. case 0:
  85. draw_seg_a(xx,yy,ww,hh);
  86. draw_seg_b(xx,yy,ww,hh);
  87. draw_seg_c(xx,yy,ww,hh);
  88. draw_seg_d(xx,yy,ww,hh);
  89. draw_seg_e(xx,yy,ww,hh);
  90. draw_seg_f(xx,yy,ww,hh);
  91. break;
  92. case 1:
  93. draw_seg_b(xx,yy,ww,hh);
  94. draw_seg_c(xx,yy,ww,hh);
  95. break;
  96. case 2:
  97. draw_seg_a(xx,yy,ww,hh);
  98. draw_seg_b(xx,yy,ww,hh);
  99. draw_seg_g(xx,yy,ww,hh);
  100. draw_seg_e(xx,yy,ww,hh);
  101. draw_seg_d(xx,yy,ww,hh);
  102. break;
  103. case 3:
  104. draw_seg_a(xx,yy,ww,hh);
  105. draw_seg_b(xx,yy,ww,hh);
  106. draw_seg_c(xx,yy,ww,hh);
  107. draw_seg_d(xx,yy,ww,hh);
  108. draw_seg_g(xx,yy,ww,hh);
  109. break;
  110. case 4:
  111. draw_seg_b(xx,yy,ww,hh);
  112. draw_seg_c(xx,yy,ww,hh);
  113. draw_seg_f(xx,yy,ww,hh);
  114. draw_seg_g(xx,yy,ww,hh);
  115. break;
  116. case 5:
  117. draw_seg_a(xx,yy,ww,hh);
  118. draw_seg_c(xx,yy,ww,hh);
  119. draw_seg_d(xx,yy,ww,hh);
  120. draw_seg_f(xx,yy,ww,hh);
  121. draw_seg_g(xx,yy,ww,hh);
  122. break;
  123. case 6:
  124. draw_seg_a(xx,yy,ww,hh);
  125. draw_seg_c(xx,yy,ww,hh);
  126. draw_seg_d(xx,yy,ww,hh);
  127. draw_seg_e(xx,yy,ww,hh);
  128. draw_seg_f(xx,yy,ww,hh);
  129. draw_seg_g(xx,yy,ww,hh);
  130. break;
  131. case 7:
  132. draw_seg_a(xx,yy,ww,hh);
  133. draw_seg_b(xx,yy,ww,hh);
  134. draw_seg_c(xx,yy,ww,hh);
  135. break;
  136. case 8:
  137. draw_seg_a(xx,yy,ww,hh);
  138. draw_seg_b(xx,yy,ww,hh);
  139. draw_seg_c(xx,yy,ww,hh);
  140. draw_seg_d(xx,yy,ww,hh);
  141. draw_seg_e(xx,yy,ww,hh);
  142. draw_seg_f(xx,yy,ww,hh);
  143. draw_seg_g(xx,yy,ww,hh);
  144. break;
  145. case 9:
  146. draw_seg_a(xx,yy,ww,hh);
  147. draw_seg_b(xx,yy,ww,hh);
  148. draw_seg_c(xx,yy,ww,hh);
  149. draw_seg_d(xx,yy,ww,hh);
  150. draw_seg_g(xx,yy,ww,hh);
  151. draw_seg_f(xx,yy,ww,hh);
  152. break;
  153. }
  154. fl_line_style(FL_SOLID,1);
  155. if (decpt)
  156. {
  157. }
  158. fl_pop_clip();} {selected
  159. }
  160. }
  161. Function {draw_seg_a(int xx,int yy,int ww,int hh)} {private return_type void
  162. } {
  163. code {int x1 = xx+2*segwidth+1;
  164. int y1 = yy+segwidth;
  165. int x2 = xx+ww-2*segwidth-1;
  166. fl_line(x1,y1,x2,y1);} {}
  167. }
  168. Function {draw_seg_b(int xx,int yy,int ww,int hh)} {private return_type void
  169. } {
  170. code {int x1 = xx+ww-segwidth;
  171. int y1 = yy+(3*segwidth)/2+1;
  172. int y2 = y1+hh/2-2*segwidth-1;
  173. fl_line(x1,y1,x1,y2);} {}
  174. }
  175. Function {draw_seg_c(int xx,int yy,int ww,int hh)} {private return_type void
  176. } {
  177. code {int x1 = xx+ww-segwidth;
  178. int y1 = yy+(hh+segwidth)/2+1;
  179. int y2 = y1+hh/2-2*segwidth-1;
  180. fl_line(x1,y1,x1,y2);} {}
  181. }
  182. Function {draw_seg_d(int xx,int yy,int ww,int hh)} {private return_type void
  183. } {
  184. code {int x1 = xx+2*segwidth+1;
  185. int y1 = yy+hh-segwidth;
  186. int x2 = xx+ww-2*segwidth-1;
  187. fl_line(x1,y1,x2,y1);} {}
  188. }
  189. Function {draw_seg_e(int xx,int yy,int ww,int hh)} {private return_type void
  190. } {
  191. code {int x1 = xx+segwidth;
  192. int y1 = yy+(hh+segwidth)/2+1;
  193. int y2 = y1+hh/2-2*segwidth-1;
  194. fl_line(x1,y1,x1,y2);} {}
  195. }
  196. Function {draw_seg_f(int xx,int yy,int ww,int hh)} {private return_type void
  197. } {
  198. code {int x1 = xx+segwidth;
  199. int y1 = yy+(3*segwidth)/2+1;
  200. int y2 = y1+hh/2-2*segwidth-1;
  201. fl_line(x1,y1,x1,y2);} {}
  202. }
  203. Function {draw_seg_g(int xx,int yy,int ww,int hh)} {private return_type void
  204. } {
  205. code {int x1 = xx+2*segwidth+1;
  206. int y1 = yy+(hh-segwidth/2)/2;
  207. int x2 = xx+ww-2*segwidth-1;
  208. fl_line(x1,y1,x2,y1);} {}
  209. }
  210. }