home *** CD-ROM | disk | FTP | other *** search
- // Copyright (C) 1994 by Kurt Griffiths. May only be used for implementation into
- // software. May not be distibuted as a library or related media for commercial
- // gain.
-
- /*-------------------------------------------------------------------------*/
- /* Button object */
- /*-------------------------------------------------------------------------*/
- class button
- {
- int minx, maxx, miny, maxy;
- int ltcolor, dkcolor, fccolor, bdcolor, bdwidth, trans, fpush;
- int pdelay;
- public:
- button();
- int bt_setpush(int sp) { do_push = sp; return 1; }
- int bt_draw(int x1, int x2, int y1, int y2);
- int bt_text(char *str);
- int bt_push();
- int bt_setcolor(int col) { fccolor = col; return 1; }
- int bt_setlcolor(int col2) { ltcolor = col2; return 1; }
- int bt_setdcolor(int col3) { dkcolor = col3; return 1; }
- int bt_setbcolor(int col4) { bdcolor = col4; return 1; }
- int bt_setbwidth(int wid) { bdwidth = wid; return 1; }
- int bt_setdelay(int d) { pdelay = d; return 1; }
- int bt_mtest(int x, int y, int key)
- {
- if(x > minx && x < maxx && y > miny && y < maxy && key == 1) return 1;
- return 0;
- }
- };
- inline button::button()
- {
- ltcolor = 28;
- dkcolor = 24;
- fccolor = 26;
- letter = 0;
- bdcolor = 26;
- bdwidth = 3;
- trans = 1;
- fpush = 0;
- pdelay = 4;
- }
-
- int button::bt_draw(int x1, int x2, int y1, int y2)
- {
- minx = x1;
- maxx = x2;
- miny = y1;
- maxy = y2;
-
- // Draw the base square
- if(trans != 0)
- {
- fg_setcolor(fccolor);
- fg_rect(minx + 1, maxx - 1, miny + 1, maxy - 1);
- }
-
- // Outline square
- fg_setcolor(bdcolor);
- fg_box(minx, maxx, miny, maxy);
-
- // Inside border
- fg_setcolor(bdcolor);
- fg_box(minx + bdwidth, maxx - bdwidth, miny + bdwidth, maxy - bdwidth);
-
- // Border fill
- fg_setcolor(ltcolor);
- fg_flood(minx + 2, miny + 2);
-
- // Dark border boundary lines
- fg_setcolor(dkcolor);
- fg_move(minx, maxy);
- fg_draw(minx + bdwidth, maxy - bdwidth);
- fg_move(maxx, miny);
- fg_draw(maxx - bdwidth, miny + bdwidth);
-
- fg_setcolor(dkcolor);
- fg_flood(maxx - 2, maxy - 2);
-
- // Erase inner border
- fg_setcolor(fccolor);
- fg_box(minx + bdwidth, maxx - bdwidth, miny + bdwidth, maxy - bdwidth);
-
- return 1;
- }
-
- int button::bt_text(char *str)
- {
- int x, y;
-
- x = (minx + maxx) / 2 - 4 * strlen(str);
- y = (miny + maxy) / 2;
-
- fg_setcolor(0);
- fg_move(x + 2, y + 9);
- fg_print( str, strlen( str ) );
-
- return 1;
- }
-
- int button::bt_push()
- {
- // Flood the light border
- fg_setcolor(dkcolor);
- fg_flood(minx + 2, miny + 2);
-
- // Flood the dark border
- fg_setcolor(fccolor);
- fg_flood(maxx - 2, maxy - 2);
-
- // Delay in clock ticks - 18.2 ticks = 1 second
- fg_waitfor(pdelay);
-
- // Restore face
- fg_setcolor(fccolor)
- fg_flood(minx + 2, miny + 2);
-
- // Inside border
- fg_setcolor(bdcolor);
- fg_box(minx + bdwidth, maxx - bdwidth, miny + bdwidth, maxy - bdwidth);
-
- // Border fill
- fg_setcolor(ltcolor);
- fg_flood(minx + 2, miny + 2);
-
- // Dark border boundary lines
- fg_setcolor(dkcolor);
- fg_move(minx, maxy);
- fg_draw(minx + bdwidth, maxy - bdwidth);
- fg_move(maxx, miny);
- fg_draw(maxx - bdwidth, miny + bdwidth);
-
- fg_setcolor(dkcolor);
- fg_flood(maxx - 2, maxy - 2);
-
- // Erase inner border
- fg_setcolor(fccolor);
- fg_box(minx + bdwidth, maxx - bdwidth, miny + bdwidth, maxy - bdwidth);
-
-
- return 1;
- }
-
-