| 
							- // generated by Fast Light User Interface Designer (fluid) version 1.0010
 - 
 - #include "Fl_SevenSeg.H"
 - 
 - Fl_SevenSeg::Fl_SevenSeg(int x, int y, int w, int h) :
 - Fl_Widget (x, y, w, h),
 - decpt (off) {
 - 
 -   color2(FL_BLACK);
 - 	color(FL_RED);
 - 	digit = 8;
 - 	segwidth = (w-8)/13;
 - 	segwidth = segwidth<(h-8)/13 ?(h-8)/13: segwidth;
 -         if (segwidth<1) segwidth =1;
 - }
 - 
 - Fl_SevenSeg::~Fl_SevenSeg(void) {
 - }
 - 
 - void Fl_SevenSeg::value (int v) {
 -      if (v>9) digit = 9;
 -      else digit = v;
 -      if (active()) redraw();
 - }
 - 
 - void Fl_SevenSeg::value(char c) {
 -   int v = c - '0';
 - 	value(v);
 - }
 - 
 - const int Fl_SevenSeg::value(void) {
 -   return digit;
 - }
 - 
 - void Fl_SevenSeg::dp (dp_type state) {
 -   decpt = state;
 - }
 - 
 - const dp_type Fl_SevenSeg::dp(void) {
 -   return decpt;
 - }
 - 
 - const int Fl_SevenSeg::bar_width(void) {
 -   return segwidth;
 - }
 - 
 - void Fl_SevenSeg::bar_width(int w) {
 -   segwidth = w > 2 ? w:2;
 - 	if (active()) redraw();
 - }
 - // PRIVATE METHODS
 - 
 - void Fl_SevenSeg::draw() {
 -   uchar r,g,b;
 - int	val;
 - 
 - 	draw_box();
 - 
 -         fl_color (color2());
 - 	fl_rectf (x(), y(), w(), h());
 - 
 -         int xx = x()+2;
 - 	int ww = w()-4;
 - 	int yy = y()+2;
 - 	int hh = h()-4;
 - 
 - 	if (digit < -1) return;
 - 
 -         Fl::get_color(color(),r,g,b);
 - 	if (!active())
 - 	{
 - 		val = 64+(int)r/4; r = val > 255 ? 255:val;
 - 		val = 64+(int)g/4; g = val > 255 ? 255:val;
 - 		val = 64+(int)b/4; b = val > 255 ? 255:val;
 - 	}
 - 	fl_color(r,g,b);
 - 
 -         fl_line_style(FL_SOLID|FL_CAP_ROUND,segwidth);
 - 
 - 	switch(digit)
 - 	{
 -                 case -1:
 - 			draw_seg_g (xx, yy, ww, hh);
 - 			break;
 - 
 - 
 - 		case 0:
 - 			draw_seg_a(xx,yy,ww,hh);
 - 			draw_seg_b(xx,yy,ww,hh);
 - 			draw_seg_c(xx,yy,ww,hh);
 - 			draw_seg_d(xx,yy,ww,hh);
 - 			draw_seg_e(xx,yy,ww,hh);
 - 			draw_seg_f(xx,yy,ww,hh);
 - 			break;
 - 		case 1:
 - 			draw_seg_b(xx,yy,ww,hh);
 - 			draw_seg_c(xx,yy,ww,hh);
 - 			break;
 - 		case 2:
 - 			draw_seg_a(xx,yy,ww,hh);
 - 			draw_seg_b(xx,yy,ww,hh);
 - 			draw_seg_g(xx,yy,ww,hh);
 - 			draw_seg_e(xx,yy,ww,hh);
 - 			draw_seg_d(xx,yy,ww,hh);
 - 			break;
 - 		case 3:
 - 			draw_seg_a(xx,yy,ww,hh);
 - 			draw_seg_b(xx,yy,ww,hh);
 - 			draw_seg_c(xx,yy,ww,hh);
 - 			draw_seg_d(xx,yy,ww,hh);
 - 			draw_seg_g(xx,yy,ww,hh);
 - 			break;
 - 		case 4:
 - 			draw_seg_b(xx,yy,ww,hh);
 - 			draw_seg_c(xx,yy,ww,hh);
 - 			draw_seg_f(xx,yy,ww,hh);
 - 			draw_seg_g(xx,yy,ww,hh);
 - 			break;
 - 		case 5:
 - 			draw_seg_a(xx,yy,ww,hh);
 - 			draw_seg_c(xx,yy,ww,hh);
 - 			draw_seg_d(xx,yy,ww,hh);
 - 			draw_seg_f(xx,yy,ww,hh);
 - 			draw_seg_g(xx,yy,ww,hh);
 - 			break;
 - 		case 6:
 - 			draw_seg_a(xx,yy,ww,hh);
 - 			draw_seg_c(xx,yy,ww,hh);
 - 			draw_seg_d(xx,yy,ww,hh);
 - 			draw_seg_e(xx,yy,ww,hh);
 - 			draw_seg_f(xx,yy,ww,hh);
 - 			draw_seg_g(xx,yy,ww,hh);
 - 			break;
 - 		case 7:
 - 			draw_seg_a(xx,yy,ww,hh);
 - 			draw_seg_b(xx,yy,ww,hh);
 - 			draw_seg_c(xx,yy,ww,hh);
 - 			break;
 - 		case 8:
 - 			draw_seg_a(xx,yy,ww,hh);
 - 			draw_seg_b(xx,yy,ww,hh);
 - 			draw_seg_c(xx,yy,ww,hh);
 - 			draw_seg_d(xx,yy,ww,hh);
 - 			draw_seg_e(xx,yy,ww,hh);
 - 			draw_seg_f(xx,yy,ww,hh);
 - 			draw_seg_g(xx,yy,ww,hh);
 - 			break;
 - 		case 9:
 - 			draw_seg_a(xx,yy,ww,hh);
 - 			draw_seg_b(xx,yy,ww,hh);
 - 			draw_seg_c(xx,yy,ww,hh);
 - 			draw_seg_d(xx,yy,ww,hh);
 - 			draw_seg_g(xx,yy,ww,hh);
 - 			draw_seg_f(xx,yy,ww,hh);
 - 			break;
 - 	}
 - 
 -         if (decpt==point) draw_seg_dp (xx, yy, ww, hh);
 -         else if (decpt==colon) draw_seg_col (xx, yy, ww, hh);
 -         fl_line_style(FL_SOLID,1);
 - 
 -         //fl_pop_clip();
 - }
 - 
 - 
 - void Fl_SevenSeg::draw_seg_dp (int xx, int yy, int ww, int hh) {
 -      int x1 = xx - segwidth / 2;
 -      int y1 = yy + hh - segwidth;
 -      int x2 = x1 + segwidth / 3;
 -      fl_line (x1, y1, x2, y1);
 - }
 - 
 - void Fl_SevenSeg::draw_seg_col (int xx, int yy, int ww, int hh) {
 -      int x1 = xx - segwidth/2;
 -      int x2 = x1 + segwidth/3;
 -      int y1 = yy + 1 + hh/4;
 -      int y2 = yy - 1 + (hh/4) * 3;
 -      fl_line (x1, y1, x2, y1);
 -      fl_line (x1, y2, x2, y2);
 - }
 - 
 - void Fl_SevenSeg::draw_seg_a(int xx,int yy,int ww,int hh) {
 -   int x1 = xx+2*segwidth+1;
 - 	int y1 = yy+segwidth;
 - 	int x2 = xx+ww-2*segwidth-1;
 - 	fl_line(x1,y1,x2,y1);
 - }
 - 
 - void Fl_SevenSeg::draw_seg_b(int xx,int yy,int ww,int hh) {
 -   int x1 = xx+ww-segwidth;
 - 	int y1 = yy+(3*segwidth)/2+1;
 - 	int y2 = y1+hh/2-2*segwidth-1;
 - 	fl_line(x1,y1,x1,y2);
 - }
 - 
 - void Fl_SevenSeg::draw_seg_c(int xx,int yy,int ww,int hh) {
 -   int x1 = xx+ww-segwidth;
 - 	int y1 = yy+(hh+segwidth)/2+1;
 - 	int y2 = y1+hh/2-2*segwidth-1;
 - 	fl_line(x1,y1,x1,y2);
 - }
 - 
 - void Fl_SevenSeg::draw_seg_d(int xx,int yy,int ww,int hh) {
 -   int x1 = xx+2*segwidth+1;
 - 	int y1 = yy+hh-segwidth;
 - 	int x2 = xx+ww-2*segwidth-1;
 - 	fl_line(x1,y1,x2,y1);
 - }
 - 
 - void Fl_SevenSeg::draw_seg_e(int xx,int yy,int ww,int hh) {
 -   int x1 = xx+segwidth;
 - 	int y1 = yy+(hh+segwidth)/2+1;
 - 	int y2 = y1+hh/2-2*segwidth-1;
 - 	fl_line(x1,y1,x1,y2);
 - }
 - 
 - void Fl_SevenSeg::draw_seg_f(int xx,int yy,int ww,int hh) {
 -   int x1 = xx+segwidth;
 - 	int y1 = yy+(3*segwidth)/2+1;
 - 	int y2 = y1+hh/2-2*segwidth-1;
 - 	fl_line(x1,y1,x1,y2);
 - }
 - 
 - void Fl_SevenSeg::draw_seg_g(int xx,int yy,int ww,int hh) {
 -   int x1 = xx+2*segwidth+1;
 - 	int y1 = yy+(hh-segwidth/2)/2;
 - 	int x2 = xx+ww-2*segwidth-1;
 - 	fl_line(x1,y1,x2,y1);
 - }
 
 
  |