home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / wxos2233.zip / wxOS2-2_3_3.zip / wxWindows-2.3.3 / contrib / include / wx / ogl / basicp.h < prev    next >
C/C++ Source or Header  |  2002-09-08  |  8KB  |  224 lines

  1. /////////////////////////////////////////////////////////////////////////////
  2. // Name:        basicp.h
  3. // Purpose:     Private OGL classes and definitions
  4. // Author:      Julian Smart
  5. // Modified by:
  6. // Created:     12/07/98
  7. // RCS-ID:      $Id: basicp.h,v 1.2 2002/09/07 12:10:20 GD Exp $
  8. // Copyright:   (c) Julian Smart
  9. // Licence:       wxWindows licence
  10. /////////////////////////////////////////////////////////////////////////////
  11.  
  12. #ifndef _OGL_BASICP_H_
  13. #define _OGL_BASICP_H_
  14.  
  15. #if defined(__GNUG__) && !defined(__APPLE__)
  16. #pragma interface "basicp.h"
  17. #endif
  18.  
  19. #define CONTROL_POINT_SIZE       6
  20.  
  21. class wxShapeTextLine: public wxObject
  22. {
  23.  DECLARE_DYNAMIC_CLASS(wxShapeTextLine)
  24. public:
  25.    wxShapeTextLine(double the_x = 0.0, double the_y = 0.0, const wxString& the_line = "");
  26.    ~wxShapeTextLine();
  27.  
  28.    inline double GetX() const { return m_x; }
  29.    inline double GetY() const { return m_y; }
  30.  
  31.    inline void SetX(double x) { m_x = x; }
  32.    inline void SetY(double y) { m_y = y; }
  33.  
  34.    inline void SetText(const wxString& text) { m_line = text; }
  35.    inline wxString GetText() const { return m_line; }
  36.  
  37. protected:
  38.    wxString     m_line;
  39.    double        m_x;
  40.    double        m_y;
  41. };
  42.  
  43. class wxShape;
  44. class wxControlPoint: public wxRectangleShape
  45. {
  46.  DECLARE_DYNAMIC_CLASS(wxControlPoint)
  47.  
  48.  friend class wxShapeEvtHandler;
  49.  friend class wxShape;
  50.  
  51.  public:
  52.   wxControlPoint(wxShapeCanvas *the_canvas = NULL, wxShape *object = NULL, double size = 0.0, double the_xoffset = 0.0,
  53.     double the_yoffset = 0.0, int the_type = 0);
  54.   ~wxControlPoint();
  55.  
  56.   void OnDraw(wxDC& dc);
  57.   void OnErase(wxDC& dc);
  58.   void OnDrawContents(wxDC& dc);
  59.   void OnDragLeft(bool draw, double x, double y, int keys=0, int attachment = 0);
  60.   void OnBeginDragLeft(double x, double y, int keys=0, int attachment = 0);
  61.   void OnEndDragLeft(double x, double y, int keys=0, int attachment = 0);
  62.  
  63.   bool GetAttachmentPosition(int attachment, double *x, double *y,
  64.                                      int nth = 0, int no_arcs = 1, wxLineShape *line = NULL);
  65.   int GetNumberOfAttachments() const;
  66.  
  67.   inline void SetEraseObject(bool er) { m_eraseObject = er; }
  68.  
  69. public:
  70.   int           m_type;
  71.   double         m_xoffset;
  72.   double         m_yoffset;
  73.   wxShape*      m_shape;
  74.   wxCursor*     m_oldCursor;
  75.   bool          m_eraseObject; // If TRUE, erases object before dragging handle.
  76.  
  77. /*
  78.  * Store original top-left, bottom-right coordinates
  79.  * in case we're doing non-vertical resizing.
  80.  */
  81.   static double sm_controlPointDragStartX;
  82.   static double sm_controlPointDragStartY;
  83.   static double sm_controlPointDragStartWidth;
  84.   static double sm_controlPointDragStartHeight;
  85.   static double sm_controlPointDragEndWidth;
  86.   static double sm_controlPointDragEndHeight;
  87.   static double sm_controlPointDragPosX;
  88.   static double sm_controlPointDragPosY;
  89. };
  90.  
  91. class wxPolygonShape;
  92. class wxPolygonControlPoint: public wxControlPoint
  93. {
  94.  DECLARE_DYNAMIC_CLASS(wxPolygonControlPoint)
  95.   friend class wxPolygonShape;
  96.  public:
  97.   wxPolygonControlPoint(wxShapeCanvas *the_canvas = NULL, wxShape *object = NULL, double size = 0.0, wxRealPoint *vertex = NULL,
  98.     double the_xoffset = 0.0, double the_yoffset = 0.0);
  99.   ~wxPolygonControlPoint();
  100.  
  101.   void OnDragLeft(bool draw, double x, double y, int keys=0, int attachment = 0);
  102.   void OnBeginDragLeft(double x, double y, int keys=0, int attachment = 0);
  103.   void OnEndDragLeft(double x, double y, int keys=0, int attachment = 0);
  104.  
  105.   // Calculate what new size would be, at end of resize
  106.   virtual void CalculateNewSize(double x, double y);
  107.  
  108.   // Get new size
  109.   inline wxRealPoint GetNewSize() const { return m_newSize; };
  110.  
  111. public:
  112.   wxRealPoint*      m_polygonVertex;
  113.   wxRealPoint       m_originalSize;
  114.   double             m_originalDistance;
  115.   wxRealPoint       m_newSize;
  116. };
  117.  
  118. /*
  119.  * Object regions.
  120.  * Every shape has one or more text regions with various
  121.  * properties. Not all of a region's properties will be used
  122.  * by a shape.
  123.  *
  124.  */
  125.  
  126. class wxShapeRegion: public wxObject
  127. {
  128.  DECLARE_DYNAMIC_CLASS(wxShapeRegion)
  129.  
  130.  public:
  131.   // Constructor
  132.   wxShapeRegion();
  133.   // Copy constructor
  134.   wxShapeRegion(wxShapeRegion& region);
  135.   // Destructor
  136.   ~wxShapeRegion();
  137.  
  138.   // Accessors
  139.   inline void SetText(const wxString& s) { m_regionText = s; }
  140.   void SetFont(wxFont *f);
  141.   void SetMinSize(double w, double h);
  142.   void SetSize(double w, double h);
  143.   void SetPosition(double x, double y);
  144.   void SetProportions(double x, double y);
  145.   void SetFormatMode(int mode);
  146.   inline void SetName(const wxString& s) { m_regionName = s; };
  147.   void SetColour(const wxString& col); // Text colour
  148.  
  149.   inline wxString GetText() const { return m_regionText; }
  150.   inline wxFont *GetFont() const { return m_font; }
  151.   inline void GetMinSize(double *x, double *y) const { *x = m_minWidth; *y = m_minHeight; }
  152.   inline void GetProportion(double *x, double *y) const { *x = m_regionProportionX; *y = m_regionProportionY; }
  153.   inline void GetSize(double *x, double *y) const { *x = m_width; *y = m_height; }
  154.   inline void GetPosition(double *xp, double *yp) const { *xp = m_x; *yp = m_y; }
  155.   inline int GetFormatMode() const { return m_formatMode; }
  156.   inline wxString GetName() const { return m_regionName; }
  157.   inline wxString GetColour() const { return m_textColour; }
  158.   wxColour *GetActualColourObject();
  159.   inline wxList& GetFormattedText() { return m_formattedText; }
  160.   inline wxString GetPenColour() const { return m_penColour; }
  161.   inline int GetPenStyle() const { return m_penStyle; }
  162.   inline void SetPenStyle(int style) { m_penStyle = style; m_actualPenObject = NULL; }
  163.   void SetPenColour(const wxString& col);
  164.   wxPen *GetActualPen();
  165.   inline double GetWidth() const { return m_width; }
  166.   inline double GetHeight() const { return m_height; }
  167.  
  168.   void ClearText();
  169.  
  170. public:
  171.   wxString              m_regionText;
  172.   wxList                m_formattedText;   // List of wxShapeTextLines
  173.   wxFont*               m_font;
  174.   double                 m_minHeight;        // If zero, hide region.
  175.   double                 m_minWidth;        // If zero, hide region.
  176.   double                 m_width;
  177.   double                 m_height;
  178.   double                 m_x;
  179.   double                 m_y;
  180.  
  181.   double                 m_regionProportionX; // Proportion of total object size;
  182.                                              // -1.0 indicates equal proportion
  183.   double                 m_regionProportionY; // Proportion of total object size;
  184.                                              // -1.0 indicates equal proportion
  185.  
  186.   int                   m_formatMode;        // FORMAT_CENTRE_HORIZ | FORMAT_CENTRE_VERT | FORMAT_NONE
  187.   wxString              m_regionName;
  188.   wxString              m_textColour;
  189.   wxColour*             m_actualColourObject; // For speed purposes
  190.  
  191.   // New members for specifying divided rectangle division colour/style 30/6/94
  192.   wxString              m_penColour;
  193.   int                   m_penStyle;
  194.   wxPen*                m_actualPenObject;
  195.  
  196. };
  197.  
  198. /*
  199.  * User-defined attachment point
  200.  */
  201.  
  202. class wxAttachmentPoint: public wxObject
  203. {
  204.  DECLARE_DYNAMIC_CLASS(wxAttachmentPoint)
  205.  
  206. public:
  207.   inline wxAttachmentPoint()
  208.   {
  209.     m_id = 0; m_x = 0.0; m_y = 0.0;
  210.   }
  211.   inline wxAttachmentPoint(int id, double x, double y)
  212.   {
  213.     m_id = id; m_x = x; m_y = y;
  214.   }
  215.  
  216. public:
  217.   int            m_id;           // Identifier
  218.   double         m_x;            // x offset from centre of object
  219.   double         m_y;            // y offset from centre of object
  220. };
  221.  
  222. #endif
  223.   // _OGL_BASICP_H_
  224.