home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1998 May / Pcwk5b98.iso / Borland / Cplus45 / BC45 / EXAMPLES.PAK / VCIRC.CPP < prev    next >
Text File  |  1995-08-29  |  3KB  |  83 lines

  1. // Borland C++ - (C) Copyright 1991 by Borland International
  2.  
  3. /* VCIRC.CPP--Example from Getting Started */
  4.  
  5. // A Circle class derived from Point
  6.  
  7. #include <graphics.h>    // graphics library declarations
  8. #include "vpoint.h"       // Location and Point class declarations
  9. #include <conio.h>       // for getch() function
  10.  
  11. // link with vpoint.obj and graphics.lib
  12.  
  13. class Circle : public Point { // derived from class Point
  14.              // and ultimately from class Location
  15.    int Radius;           // private by default
  16.  
  17. public:
  18.    Circle(int InitX, int InitY, int InitRadius);
  19.    void Show(void);
  20.    void Hide(void);
  21.    void Expand(int ExpandBy);
  22.    void Contract(int ContractBy);
  23. };
  24.  
  25. // Circle constructor calls base Point constructor first
  26. Circle::Circle(int InitX, int InitY, int InitRadius) : Point(InitX,InitY)
  27. {
  28.    Radius = InitRadius;
  29. };
  30.  
  31. void Circle::Show()
  32. {
  33.    Visible = true;
  34.    circle(X, Y, Radius);      // draw the circle using BGI function
  35. }
  36.  
  37. void Circle::Hide()
  38. {
  39.    if (!Visible) return;      // no need to hide
  40.    unsigned int TempColor;    // to save current color
  41.    TempColor = getcolor();    // set to current color
  42.    setcolor(getbkcolor());    // set drawing color to background
  43.    Visible = false;
  44.    circle(X, Y, Radius);      // draw in background color to erase
  45.    setcolor(TempColor);       // set color back to current color
  46. };
  47.  
  48. void Circle::Expand(int ExpandBy)
  49. {
  50.    Boolean vis = Visible;  // is current circle visible?
  51.    if (vis) Hide();        // if so, hide it
  52.    Radius += ExpandBy;     // expand radius
  53.    if (Radius < 0)         // avoid negative radius
  54.       Radius = 0;
  55.    if (vis) Show();        // draw new circle if previously visible
  56. };
  57.  
  58. inline void Circle::Contract(int ContractBy)
  59. {
  60.    Expand(-ContractBy);       // redraws with (Radius - ContractBy)
  61. };
  62.  
  63. main()                        // test the functions
  64. {
  65.    // initialize the graphics system
  66.    int graphdriver = DETECT, graphmode;
  67.    initgraph(&graphdriver, &graphmode, "..\\..\\bgi");
  68.  
  69.    Circle MyCircle(50, 100, 25);    // declare a circle object
  70.    MyCircle.Show();                 // show it
  71.    getch();                         // wait for keypress
  72.    MyCircle.MoveTo(100, 125);       // move the circle (tests hide
  73.                                     // and show also)
  74.    getch();
  75.    MyCircle.Expand(25);             // make it bigger
  76.    getch();
  77.    MyCircle.Contract(35);           // make it smaller
  78.    getch();
  79.    closegraph();
  80.    return 0;
  81. }
  82.  
  83.