home *** CD-ROM | disk | FTP | other *** search
/ Game Hack 1 / GHM01.ZIP / BUTTON.CPP < prev    next >
C/C++ Source or Header  |  1994-11-07  |  3KB  |  144 lines

  1. // Copyright (C) 1994 by Kurt Griffiths.  May only be used for implementation into 
  2. // software. May not be distibuted as a library or related media for commercial
  3. // gain.   
  4.  
  5. /*-------------------------------------------------------------------------*/
  6. /*                          Button object                                  */
  7. /*-------------------------------------------------------------------------*/
  8. class button
  9. {
  10.     int minx, maxx, miny, maxy;
  11.     int ltcolor, dkcolor, fccolor, bdcolor, bdwidth, trans, fpush;
  12.     int pdelay;
  13. public:
  14.     button();
  15.     int bt_setpush(int sp) { do_push = sp; return 1; }
  16.     int bt_draw(int x1, int x2, int y1, int y2);
  17.     int bt_text(char *str);
  18.     int bt_push();
  19.     int bt_setcolor(int col) { fccolor = col; return 1; }
  20.     int bt_setlcolor(int col2) { ltcolor = col2; return 1; }
  21.     int bt_setdcolor(int col3) { dkcolor = col3; return 1; }
  22.     int bt_setbcolor(int col4) { bdcolor = col4; return 1; }
  23.     int bt_setbwidth(int wid) { bdwidth = wid; return 1; }
  24.     int bt_setdelay(int d) { pdelay = d; return 1; }
  25.     int bt_mtest(int x, int y, int key)
  26.     {
  27.         if(x > minx && x < maxx && y > miny && y < maxy && key == 1) return 1;
  28.         return 0;
  29.     }
  30. };
  31. inline button::button()
  32. {
  33.     ltcolor = 28;
  34.     dkcolor = 24;
  35.     fccolor = 26;
  36.     letter = 0;
  37.     bdcolor = 26;
  38.     bdwidth = 3;
  39.     trans = 1;
  40.     fpush = 0;
  41.     pdelay = 4;
  42. }
  43.  
  44. int button::bt_draw(int x1, int x2, int y1, int y2)
  45. {
  46.     minx = x1;
  47.     maxx = x2;
  48.     miny = y1;
  49.     maxy = y2;
  50.  
  51.     // Draw the base square
  52.     if(trans != 0)
  53.     {
  54.         fg_setcolor(fccolor);
  55.                 fg_rect(minx + 1, maxx - 1, miny + 1, maxy - 1);
  56.     }
  57.  
  58.         // Outline square
  59.         fg_setcolor(bdcolor);
  60.     fg_box(minx, maxx, miny, maxy);
  61.           
  62.         // Inside border 
  63.     fg_setcolor(bdcolor);
  64.     fg_box(minx + bdwidth, maxx - bdwidth, miny + bdwidth, maxy - bdwidth);
  65.     
  66.     // Border fill    
  67.     fg_setcolor(ltcolor);
  68.     fg_flood(minx + 2, miny + 2); 
  69.  
  70.     // Dark border boundary lines
  71.     fg_setcolor(dkcolor);
  72.     fg_move(minx, maxy);
  73.     fg_draw(minx + bdwidth, maxy - bdwidth);
  74.     fg_move(maxx, miny);
  75.     fg_draw(maxx - bdwidth, miny + bdwidth);
  76.  
  77.         fg_setcolor(dkcolor);
  78.     fg_flood(maxx - 2, maxy - 2);
  79.  
  80.       // Erase inner border
  81.     fg_setcolor(fccolor);
  82.     fg_box(minx + bdwidth, maxx - bdwidth, miny + bdwidth, maxy - bdwidth);
  83.     
  84.     return 1;
  85. }
  86.  
  87. int button::bt_text(char *str)
  88. {
  89.     int x, y;
  90.  
  91.     x = (minx + maxx) / 2 - 4 * strlen(str);
  92.     y = (miny + maxy) / 2;
  93.  
  94.     fg_setcolor(0);
  95.     fg_move(x + 2, y + 9);
  96.     fg_print( str, strlen( str ) );
  97.  
  98.     return 1;
  99. }
  100.  
  101. int button::bt_push()
  102. {
  103.     // Flood the light border
  104.         fg_setcolor(dkcolor);
  105.     fg_flood(minx + 2, miny + 2);
  106.     
  107.     // Flood the dark border
  108.     fg_setcolor(fccolor);
  109.     fg_flood(maxx - 2, maxy - 2);
  110.     
  111.     // Delay in clock ticks - 18.2 ticks = 1 second
  112.     fg_waitfor(pdelay);
  113.  
  114.         // Restore face
  115.     fg_setcolor(fccolor)
  116.     fg_flood(minx + 2, miny + 2);
  117.     
  118.     // Inside border 
  119.     fg_setcolor(bdcolor);
  120.     fg_box(minx + bdwidth, maxx - bdwidth, miny + bdwidth, maxy - bdwidth);
  121.     
  122.     // Border fill    
  123.     fg_setcolor(ltcolor);
  124.     fg_flood(minx + 2, miny + 2); 
  125.  
  126.     // Dark border boundary lines
  127.     fg_setcolor(dkcolor);
  128.     fg_move(minx, maxy);
  129.     fg_draw(minx + bdwidth, maxy - bdwidth);
  130.     fg_move(maxx, miny);
  131.     fg_draw(maxx - bdwidth, miny + bdwidth);
  132.  
  133.         fg_setcolor(dkcolor);
  134.     fg_flood(maxx - 2, maxy - 2);
  135.  
  136.       // Erase inner border
  137.     fg_setcolor(fccolor);
  138.     fg_box(minx + bdwidth, maxx - bdwidth, miny + bdwidth, maxy - bdwidth);
  139.     
  140.  
  141.     return 1;
  142. }
  143.  
  144.