home *** CD-ROM | disk | FTP | other *** search
/ The Devil's Doorknob BBS Capture (1996-2003) / devilsdoorknobbbscapture1996-2003.iso / Dloads / OTHERUTI / TCPP30-3.ZIP / EXAMPLES.ZIP / MCIRCLE.CPP < prev    next >
C/C++ Source or Header  |  1992-02-18  |  3KB  |  117 lines

  1. // Borland C++ - (C) Copyright 1991 by Borland International
  2.  
  3. /* MCIRCLE.CPP--Example from Getting Started */
  4.  
  5. // MCIRCLE.CPP        Illustrates multiple inheritance
  6.  
  7. #include <graphics.h> // Graphics library declarations
  8. #include "point.h"    // Location and Point class declarations
  9. #include <string.h>   // for string functions
  10. #include <conio.h>    // for console I/O
  11.  
  12. // link with point2.obj and graphics.lib
  13.  
  14. // The class hierarchy:
  15. // Location->Point->Circle
  16. // (Circle and CMessage)->MCircle
  17.  
  18. class Circle : public Point {  // Derived from class Point and 
  19.                                // ultimately from class Location
  20. protected:
  21.    int Radius;
  22. public:
  23.    Circle(int InitX, int InitY, int InitRadius);
  24.    void Show(void);
  25. };
  26.  
  27.  
  28. class GMessage : public Location {
  29. // display a message on graphics screen
  30.    char *msg;               // message to be displayed
  31.    int Font;                // BGI font to use
  32.    int Field;               // size of field for text scaling
  33.  
  34. public:
  35.    // Initialize message
  36.    GMessage(int msgX, int msgY, int MsgFont, int FieldSize,
  37.             char *text);
  38.    void Show(void);         // show message
  39. };
  40.  
  41.  
  42. class MCircle : Circle, GMessage {  // inherits from both classes
  43. public:
  44.    MCircle(int mcircX, int mcircY, int mcircRadius, int Font,
  45.            char *msg);
  46.    void Show(void);                 // show circle with message
  47. };
  48.  
  49.  
  50. // Member functions for Circle class
  51.  
  52. //Circle constructor
  53. Circle::Circle(int InitX, int InitY, int InitRadius) :
  54.     Point (InitX, InitY)        // initialize inherited members
  55. //also invokes Location constructor
  56. {
  57.    Radius = InitRadius;
  58. };
  59.  
  60. void Circle::Show(void)
  61. {
  62.    Visible = true;
  63.    circle(X, Y, Radius); // draw the circle
  64. }
  65.  
  66. // Member functions for GMessage class
  67.  
  68. //GMessage constructor
  69. GMessage::GMessage(int msgX, int msgY, int MsgFont,
  70.            int FieldSize, char *text) :
  71.            Location(msgX, msgY)
  72. //X and Y coordinates for centering message
  73. {
  74.    Font = MsgFont;    // standard fonts defined in graph.h
  75.    Field = FieldSize; // width of area in which to fit text
  76.    msg = text;        // point at message
  77. };
  78.  
  79. void GMessage::Show(void)
  80. {
  81.    int size = Field / (8 * strlen(msg));     // 8 pixels per char.
  82.    settextjustify(CENTER_TEXT, CENTER_TEXT); // centers in circle
  83.    settextstyle(Font, HORIZ_DIR, size);      // magnify if size > 1 
  84.    outtextxy(X, Y, msg);                     // display the text
  85. }
  86.  
  87. //Member functions for MCircle class
  88.  
  89. //MCircle constructor
  90. MCircle::MCircle(int mcircX, int mcircY, int mcircRadius, int Font,
  91.                  char *msg) : Circle (mcircX, mcircY, mcircRadius),
  92.                  GMessage(mcircX,mcircY,Font,2*mcircRadius,msg)
  93. {
  94. }
  95.  
  96. void MCircle::Show(void)
  97. {
  98.    Circle::Show();
  99.    GMessage::Show();
  100. }
  101.  
  102. main()      //draws some circles with text
  103. {
  104.    int graphdriver = DETECT, graphmode;
  105.    initgraph(&graphdriver, &graphmode, "..\\bgi");
  106.    MCircle Small(250, 100, 25, SANS_SERIF_FONT, "You");
  107.    Small.Show();
  108.    MCircle Medium(250, 150, 100, TRIPLEX_FONT, "World");
  109.    Medium.Show();
  110.    MCircle Large(250, 250, 225, GOTHIC_FONT, "Universe");
  111.    Large.Show();
  112.    getch();
  113.    closegraph();
  114.    return 0;
  115. }
  116.  
  117.