home *** CD-ROM | disk | FTP | other *** search
/ The Devil's Doorknob BBS Capture (1996-2003) / devilsdoorknobbbscapture1996-2003.iso / Dloads / OTHERUTI / TCPP10-7.ZIP / EXAMPLES.ZIP / FIGURES.CPP < prev    next >
Text File  |  1990-09-26  |  3KB  |  123 lines

  1. // FIGURES.CPP: This file contains the definitions for the Point
  2. // class (declared in figures.h). Member functions for the
  3. // Location class appear as inline functions in figures.h.
  4.  
  5. #include "figures.h"
  6. #include <graphics.h>
  7. #include <conio.h>
  8.  
  9. // member functions for the Point class
  10.  
  11. //constructor
  12. Point::Point(int InitX, int InitY) : Location (InitX, InitY)
  13. {
  14.    Visible = false;    // make invisible by default
  15. }
  16.  
  17. void Point::Show()
  18. {
  19.    Visible = true;
  20.    putpixel(X, Y, getcolor()); // uses default color
  21. }
  22.  
  23. void Point::Hide()
  24. {
  25.    Visible = false;
  26.    putpixel(X, Y, getbkcolor()); // uses background color to erase
  27. }
  28.  
  29. void Point::MoveTo(int NewX, int NewY)
  30. {
  31.    Hide();          // make current point invisible
  32.    X = NewX;        // change X and Y coordinates to new location
  33.    Y = NewY;
  34.    Show();          // show point at new location
  35. }
  36.  
  37. // a general-purpose function for getting keyboard
  38. // cursor movement keys (not a member function)
  39.  
  40. Boolean GetDelta(int& DeltaX, int& DeltaY)
  41. {
  42.    char KeyChar;
  43.    Boolean Quit;
  44.    DeltaX = 0;
  45.    DeltaY = 0;
  46.  
  47.    do
  48. {
  49.       KeyChar = getch();     // read the keystroke
  50.       if (KeyChar == 13)     // carriage return
  51.          return(false);
  52.       if (KeyChar == 0)      // an extended keycode
  53.          {
  54.           Quit = true;       // assume it is usable
  55.           KeyChar = getch(); // get rest of keycode
  56.               switch (KeyChar) {
  57.                  case 72: DeltaY = -1; break; // down arrow
  58.                  case 80: DeltaY =  1; break; // up arrow
  59.                  case 75: DeltaX = -1; break; // left arrow
  60.                  case 77: DeltaX =  1; break; // right arrow
  61.                  default: Quit = false; // bad key
  62.                  };
  63.          };
  64.    } while (!Quit);
  65.    return(true);
  66. }
  67.  
  68. void Point::Drag(int DragBy)
  69. {
  70.    int DeltaX, DeltaY;
  71.    int FigureX, FigureY;
  72.  
  73.    Show(); // display figure to be dragged
  74.      FigureX = GetX(); // get initial position of figure
  75.    FigureY = GetY();
  76.  
  77.    // This is the drag loop
  78.    while (GetDelta(DeltaX, DeltaY))
  79. {
  80.       // Apply delta to figure at X, Y
  81.       FigureX += (DeltaX * DragBy);
  82.       FigureY += (DeltaY * DragBy);
  83.       MoveTo(FigureX, FigureY); // tell figure to move
  84.       };
  85. }
  86. // Member functions for the Circle class
  87.  
  88. //constructor
  89. Circle::Circle(int InitX, int InitY, int InitRadius) : Point (InitX, InitY)
  90. {
  91.    Radius = InitRadius;
  92. }
  93.  
  94. void Circle::Show()
  95. {
  96.    Visible = true;
  97.    circle(X, Y, Radius);     // draw the circle
  98. }
  99.  
  100. void Circle::Hide()
  101. {
  102.    unsigned int TempColor;   // to save current color
  103.    TempColor = getcolor();   // set to current color
  104.    setcolor(getbkcolor());   // set drawing color to background
  105.    Visible = false;
  106.    circle(X, Y, Radius);     // draw in background color to
  107.    setcolor(TempColor);      // set color back to current color
  108. }
  109.  
  110. void Circle::Expand(int ExpandBy)
  111. {
  112.    Hide();                       // erase old circle
  113.    Radius += ExpandBy;           // expand radius
  114.    if (Radius < 0)               // avoid negative radius
  115.       Radius = 0;
  116.    Show();                       // draw new circle
  117. }
  118.  
  119. void Circle::Contract(int ContractBy)
  120. {
  121.    Expand(-ContractBy);      // redraws with (Radius-ContractBy)
  122. }
  123.