#include <button.h>
Inheritance diagram for PushButton:

| Public Methods | |
| PushButton (char *, int, int) | |
| PushButton (char *, int, int, int, int) | |
| void | Init (Display *, int, int) | 
| ~PushButton () | |
| void | Draw () | 
| void | Erase () | 
| BOOLEAN | ButtonBounds (int, int) | 
| BOOLEAN | ButtonStatus () | 
| int | ButtonId () | 
| Message | Dispatch (Message &) | 
| int | GetXDim () | 
| int | GetYDim () | 
| Private Methods | |
| void | set_constants (char *, int, int) | 
| void | image_size () | 
| void | image_size (int, int) | 
| void | draw_shadows (SHADOW_STYLE, int) | 
| void | draw_frame () | 
| void | name_button () | 
| void | depress_button () | 
| void | redraw () | 
| void | animate_button () | 
| Private Attributes | |
| void * | surface | 
| int | string_height | 
| int | string_width | 
| int | X2 | 
| int | Y2 | 
| int | xdim | 
| int | ydim | 
| char | string [80] | 
| int | Color | 
| int | IdNum | 
| BOOLEAN | Activated | 
| BOOLEAN | Drawn | 
| 
 | ||||||||||||||||
| 
 Definition at line 69 of file button.h. References image_size(), set_constants(), ScrnObj::X, X2, xdim, ScrnObj::Y, Y2, and ydim. 
 00070   {set_constants(name, color, Id); image_size();
00071    xdim=X2-X; ydim=Y2-Y;}
 | 
| 
 | ||||||||||||||||||||||||
| 
 Definition at line 73 of file button.h. References image_size(), set_constants(), ScrnObj::X, X2, xdim, ScrnObj::Y, Y2, and ydim. 
 00074   {set_constants(name, color, Id); image_size(x2, y2);
00075    xdim=X2-X; ydim=Y2-Y;}
 | 
| 
 | 
| 
 Definition at line 47 of file button.h. References Erase(), and surface. 
 | 
| 
 | 
| 
 Definition at line 84 of file button.h. References depress_button(), and redraw(). Referenced by Dispatch(). 
 00085   {if (Activated) depress_button(); else redraw();}
 | 
| 
 | ||||||||||||
| 
 Definition at line 124 of file button.c. References False, SHADOWS, True, ScrnObj::X, X2, ScrnObj::Y, and Y2. Referenced by Dispatch(). 
 00125 {
00126   // Mouse will call and supply the coordinates of its position
00127   //  It's up to the button itself to determine it's bounds.
00128 
00129   BOOLEAN flag = False;
00130 
00131   if ((Mx<=X2-SHADOWS) && (Mx>=X) && (My<=Y2-SHADOWS) && (My>=Y))
00132     flag = True;
00133   else
00134     flag = False;
00135 
00136   return flag;
00137 }
 | 
| 
 | 
| 
 Definition at line 90 of file button.h. References IdNum. 
 00091   {return IdNum;}
 | 
| 
 | 
| 
 Definition at line 87 of file button.h. References Activated, and BOOLEAN. 
 00088   {return Activated;}
 | 
| 
 | 
| 
 Definition at line 82 of file button.c. References BOTTOM_RIGHT, ScrnObj::Disp, Viewport::Done(), draw_shadows(), Viewport::FastDraw(), FRAME, Viewport::Line(), name_button(), Viewport::SetColor(), TOP_LEFT, ScrnObj::X, X2, ScrnObj::Y, and Y2. Referenced by animate_button(). 
 00083 {
00084   Disp->FastDraw();
00085 
00086   // Re-modified for test...
00087   draw_shadows(BOTTOM_RIGHT, LIGHTGRAY);
00088   draw_shadows(TOP_LEFT, LIGHTGRAY);
00089   Disp->SetColor(DARKGRAY);
00090   Disp->Line(X+FRAME, Y+FRAME, X2-FRAME, Y+FRAME);
00091   Disp->Line(X+FRAME, Y+FRAME, X+FRAME, Y2-FRAME);
00092 
00093   name_button();
00094   Disp->Done();
00095 }
 | 
| 
 | 
| 
 Reimplemented from ScrnObj. Definition at line 177 of file button.c. References Activated, animate_button(), ButtonBounds(), ButtonMsg, ButtonPress, Message::code, Message::d1, Message::d2, False, IdNum, LMouseDown, LMouseUp, MouseMsg, MouseStillDown, Message::origin, and True. 
 00178 {
00179   switch(msg.origin) {
00180     case MouseMsg:
00181       if (ButtonBounds(msg.d1, msg.d2)) {
00182         switch(msg.code) {
00183           case LMouseDown:
00184             Activated = True;
00185             animate_button();
00186             return Acknowledged;
00187           case MouseStillDown:
00188             if(!Activated) {
00189               Activated = True;
00190               animate_button();
00191             }
00192             return Acknowledged;
00193           case LMouseUp:
00194             Activated = False;
00195             animate_button();
00196             return Message (ButtonMsg, ButtonPress, IdNum);
00197           default:
00198             return NullMsg;
00199         }
00200       }
00201       if(msg.code==MouseStillDown && Activated) {
00202         Activated = False;
00203         animate_button();
00204       }
00205       return NullMsg;
00206 
00207 /*    case KeyMsg:
00208       if (KeyBounds(msg.d1, msg.d2)
00209       return NullMsg;           */
00210   }
00211 
00212 return NullMsg;
00213 } | 
| 
 | 
| 
 Implements ScrnObj. Definition at line 47 of file button.c. References Activated, Viewport::Bar(), BOTTOM_RIGHT, ScrnObj::Disp, Viewport::Done(), draw_frame(), draw_shadows(), Drawn, False, Viewport::FastDraw(), FRAME, name_button(), Viewport::SetFillStyle(), TOP_LEFT, ScrnObj::X, X2, ScrnObj::Y, Y2, and Yes. 
 00048 {
00049   Activated = False;
00050   Drawn = Yes;
00051 
00052   Disp->FastDraw();
00053   Disp->SetFillStyle(SOLID_FILL, LIGHTGRAY);
00054   Disp->Bar(X+FRAME, Y+FRAME, X2-FRAME, Y2-FRAME);
00055 
00056   draw_shadows(BOTTOM_RIGHT, DARKGRAY);
00057   draw_shadows(TOP_LEFT, WHITE);
00058   draw_frame();
00059   name_button();
00060   Disp->Done();
00061 }
 | 
| 
 | 
| 
 Definition at line 139 of file button.c. References ScrnObj::Disp, FRAME, Viewport::Rectangle(), Viewport::SetColor(), Viewport::SetLineStyle(), ScrnObj::X, X2, ScrnObj::Y, and Y2. Referenced by Draw(). 
 | 
| 
 | ||||||||||||
| 
 Definition at line 97 of file button.c. References BOTTOM_LEFT, BOTTOM_RIGHT, ScrnObj::Disp, FRAME, Viewport::Line(), Viewport::SetColor(), SHADOW_STYLE, SHADOWS, TOP_LEFT, TOP_RIGHT, ScrnObj::X, X2, ScrnObj::Y, and Y2. Referenced by depress_button(), Draw(), and redraw(). 
 00098 {
00099   // Side shadows...
00100   int x = X+FRAME, y = Y+FRAME, x2 = X2-SHADOWS+FRAME, y2 = Y2-SHADOWS+FRAME;
00101 
00102   Disp->SetColor(color);
00103   for(int count=0; count<SHADOWS; count++)
00104   {
00105     switch(style) {
00106       case TOP_LEFT:
00107         Disp->Line(x+count, y+count, x2-count, y+count);
00108         Disp->Line(x+count, y+count, x+count, y2-count);
00109       break;
00110       case BOTTOM_RIGHT:
00111         Disp->Line(x+count, y2-count, x2-count, y2-count);
00112         Disp->Line(x2-count, y+count, x2-count, y2-count);
00113       break;
00114       case TOP_RIGHT:
00115         // Undefined for now...
00116       break;
00117       case BOTTOM_LEFT:
00118         // Undefined for now...
00119       break;
00120     }
00121   }
00122 }
 | 
| 
 | 
| 
 Reimplemented from ScrnObj. Definition at line 63 of file button.c. References Viewport::Bar(), ScrnObj::Disp, Drawn, Viewport::GetBkColor(), No, Viewport::SetFillStyle(), ScrnObj::X, X2, ScrnObj::Y, Y2, and Yes. Referenced by ~PushButton(). 
 | 
| 
 | 
| 
 Reimplemented from ScrnObj. Definition at line 93 of file button.h. References xdim. Referenced by CPanelWindow::Init(), UserInterface::Intro(), MessageWin(), UserInterface::ShowSpyMoves(), and UserInterface::UFWOOM(). 
 00094   {return xdim;}
 | 
| 
 | 
| 
 Reimplemented from ScrnObj. Definition at line 96 of file button.h. References ydim. Referenced by CPanelWindow::Init(), UserInterface::Intro(), MessageWin(), UserInterface::ShowSpyMoves(), UserInterface::TransPop(), and UserInterface::UFWOOM(). 
 00097   {return ydim;}
 | 
| 
 | ||||||||||||
| 
 Definition at line 77 of file button.h. References ScrnObj::X, X2, ScrnObj::Y, and Y2. 
 | 
| 
 | 
| 
 Definition at line 80 of file button.h. References BORDERX, BORDERY, FRAME, SHADOWS, string_height, string_width, ScrnObj::X, X2, ScrnObj::Y, and Y2. Referenced by PushButton(). 
 | 
| 
 | ||||||||||||||||
| 
 Reimplemented from ScrnObj. Definition at line 39 of file button.c. References ScrnObj::Disp, ScrnObj::X, X2, ScrnObj::Y, and Y2. 
 | 
| 
 | 
| 
 Definition at line 147 of file button.c. References BORDERX, BORDERY, byte, Color, ScrnObj::Disp, FONT, FONT_SIZE, FRAME, Viewport::GetImage(), Viewport::GetMaxX(), Viewport::GetMaxY(), Viewport::OutTextXY(), Viewport::PutImage(), Viewport::Rectangle(), Viewport::SetColor(), Viewport::SetTextJustify(), Viewport::SetTextStyle(), SHADOWS, string, surface, ScrnObj::X, X2, ScrnObj::Y, and Y2. Referenced by depress_button(), Draw(), and redraw(). 
 00148 {
00149   int displacement, x, y, x2, y2;
00150 
00151   displacement = (Activated)? 1 : 0;
00152 
00153   x = X+BORDERX+SHADOWS+FRAME+displacement+1;
00154   y = Y+BORDERY+SHADOWS+FRAME+displacement-2;
00155   x2  = X2-BORDERX-SHADOWS-FRAME+displacement+1;
00156   y2  = Y2-BORDERY-SHADOWS-FRAME+displacement+1;
00157 
00158   Disp->SetColor(LIGHTGRAY);
00159   Disp->Rectangle(x-displacement, y-displacement, x2+1, y2+1);
00160 
00161   Viewport surf (Disp, x, y, x2, y2);
00162 
00163   if(surface==NULL) {
00164     int s = imagesize(x, y, x2, y2);
00165     surface = (void*) new byte [s];
00166     assert (surface != NULL);
00167     surf.SetColor(Color);
00168     surf.SetTextStyle (FONT, HORIZ_DIR, FONT_SIZE);
00169     surf.SetTextJustify(CENTER_TEXT, CENTER_TEXT);
00170     surf.OutTextXY(surf.GetMaxX()/2, surf.GetMaxY()/2, string);
00171     surf.GetImage(0, 0, surf.GetMaxX(), surf.GetMaxY(), surface);
00172   }
00173   else
00174     surf.PutImage(0, 0, surface, COPY_PUT);
00175 }
 | 
| 
 | 
| 
 Definition at line 72 of file button.c. References BOTTOM_RIGHT, ScrnObj::Disp, Viewport::Done(), draw_shadows(), Viewport::FastDraw(), name_button(), and TOP_LEFT. Referenced by animate_button(). 
 00073 {
00074   Disp->FastDraw();
00075 
00076   draw_shadows(BOTTOM_RIGHT, DARKGRAY);
00077   draw_shadows(TOP_LEFT, WHITE);
00078   name_button();
00079   Disp->Done();
00080 }
 | 
| 
 | ||||||||||||||||
| 
 Definition at line 20 of file button.c. References Activated, Color, Drawn, False, FONT, FONT_SIZE, IdNum, No, Viewport::SetTextStyle(), string, string_height, string_width, surface, Viewport::TextHeight(), Viewport::TextWidth(), ScrnObj::X, and ScrnObj::Y. Referenced by PushButton(). 
 00021 {
00022   Activated   = False;
00023   Color   = color;
00024   surface   = NULL;
00025   strcpy(string, name);
00026   IdNum = Id;
00027   Drawn = No;
00028   X=0; Y=0;
00029 
00030   Viewport surf;
00031   surf.SetTextStyle(FONT, HORIZ_DIR, FONT_SIZE);
00032 
00033   string_height = surf.TextHeight(string);
00034   // Adjust for differing fonts...
00035   string_height = (int)(string_height+(string_height*.33));
00036   string_width  = surf.TextWidth(string);
00037 }
 | 
| 
 | 
| 
 Definition at line 41 of file button.h. Referenced by ButtonStatus(), Dispatch(), Draw(), and set_constants(). | 
| 
 | 
| 
 Definition at line 40 of file button.h. Referenced by name_button(), and set_constants(). | 
| 
 | 
| 
 Reimplemented from ScrnObj. Definition at line 41 of file button.h. Referenced by Draw(), Erase(), and set_constants(). | 
| 
 | 
| 
 Definition at line 40 of file button.h. Referenced by ButtonId(), Dispatch(), and set_constants(). | 
| 
 | 
| 
 Definition at line 39 of file button.h. Referenced by name_button(), and set_constants(). | 
| 
 | 
| 
 Definition at line 38 of file button.h. Referenced by image_size(), and set_constants(). | 
| 
 | 
| 
 Definition at line 38 of file button.h. Referenced by image_size(), and set_constants(). | 
| 
 | 
| 
 Definition at line 37 of file button.h. Referenced by name_button(), set_constants(), and ~PushButton(). | 
| 
 | 
| 
 Definition at line 38 of file button.h. Referenced by ButtonBounds(), depress_button(), Draw(), draw_frame(), draw_shadows(), Erase(), image_size(), Init(), name_button(), and PushButton(). | 
| 
 | 
| 
 Definition at line 38 of file button.h. Referenced by GetXDim(), and PushButton(). | 
| 
 | 
| 
 Definition at line 38 of file button.h. Referenced by ButtonBounds(), depress_button(), Draw(), draw_frame(), draw_shadows(), Erase(), image_size(), Init(), name_button(), and PushButton(). | 
| 
 | 
| 
 Definition at line 38 of file button.h. Referenced by GetYDim(), and PushButton(). | 
 1.2.15
1.2.15