]> git.saurik.com Git - wxWidgets.git/blob - contrib/include/wx/ogl/ogldiag.h
Added bakefile for the OGL contrib
[wxWidgets.git] / contrib / include / wx / ogl / ogldiag.h
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: ogldiag.h
3 // Purpose: OGL - wxDiagram class
4 // Author: Julian Smart
5 // Modified by:
6 // Created: 12/07/98
7 // RCS-ID: $Id$
8 // Copyright: (c) Julian Smart
9 // Licence: wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
11
12 #ifndef _OGL_OGLDIAG_H_
13 #define _OGL_OGLDIAG_H_
14
15 #if defined(__GNUG__) && !defined(__APPLE__)
16 #pragma interface "ogldiag.h"
17 #endif
18
19 #if wxUSE_DEPRECATED
20 #include <wx/deprecated/wxexpr.h>
21 #endif
22
23 #if wxUSE_PROLOGIO
24 #include <wx/deprecated/wxexpr.h>
25 #endif
26
27 #include <wx/ogl/basic.h>
28
29 class wxDiagram: public wxObject
30 {
31 DECLARE_DYNAMIC_CLASS(wxDiagram)
32
33 public:
34
35 wxDiagram();
36 virtual ~wxDiagram();
37
38 void SetCanvas(wxShapeCanvas *can);
39
40 inline wxShapeCanvas *GetCanvas() const { return m_diagramCanvas; }
41
42 virtual void Redraw(wxDC& dc);
43 virtual void Clear(wxDC& dc);
44 virtual void DrawOutline(wxDC& dc, double x1, double y1, double x2, double y2);
45
46 // Add object to end of object list (if addAfter is NULL)
47 // or just after addAfter.
48 virtual void AddShape(wxShape *object, wxShape *addAfter = NULL);
49
50 // Add object to front of object list
51 virtual void InsertShape(wxShape *object);
52
53 void SetSnapToGrid(bool snap);
54 void SetGridSpacing(double spacing);
55 inline double GetGridSpacing() const { return m_gridSpacing; }
56 inline bool GetSnapToGrid() const { return m_snapToGrid; }
57 void Snap(double *x, double *y);
58
59 inline void SetQuickEditMode(bool qem) { m_quickEditMode = qem; }
60 inline bool GetQuickEditMode() const { return m_quickEditMode; }
61
62 virtual void RemoveShape(wxShape *object);
63 virtual void RemoveAllShapes();
64 virtual void DeleteAllShapes();
65 virtual void ShowAll(bool show);
66
67 // Find a shape by its id
68 wxShape* FindShape(long id) const;
69
70 inline void SetMouseTolerance(int tol) { m_mouseTolerance = tol; }
71 inline int GetMouseTolerance() const { return m_mouseTolerance; }
72 inline wxList *GetShapeList() const { return m_shapeList; }
73 inline int GetCount() const { return m_shapeList->GetCount(); }
74
75 // Make sure all text that should be centred, is centred.
76 void RecentreAll(wxDC& dc);
77
78 #if wxUSE_PROLOGIO
79 virtual bool SaveFile(const wxString& filename);
80 virtual bool LoadFile(const wxString& filename);
81
82 virtual void ReadNodes(wxExprDatabase& database);
83 virtual void ReadLines(wxExprDatabase& database);
84 virtual void ReadContainerGeometry(wxExprDatabase& database);
85
86 // Allow for modifying file
87 virtual bool OnDatabaseLoad(wxExprDatabase& db);
88 virtual bool OnDatabaseSave(wxExprDatabase& db);
89 virtual bool OnShapeSave(wxExprDatabase& db, wxShape& shape, wxExpr& expr);
90 virtual bool OnShapeLoad(wxExprDatabase& db, wxShape& shape, wxExpr& expr);
91 virtual bool OnHeaderSave(wxExprDatabase& db, wxExpr& expr);
92 virtual bool OnHeaderLoad(wxExprDatabase& db, wxExpr& expr);
93 #endif
94
95 protected:
96 wxShapeCanvas* m_diagramCanvas;
97 bool m_quickEditMode;
98 bool m_snapToGrid;
99 double m_gridSpacing;
100 int m_mouseTolerance;
101 wxList* m_shapeList;
102 };
103
104 class wxLineCrossing: public wxObject
105 {
106 public:
107 wxLineCrossing() { m_lineShape1 = NULL; m_lineShape2 = NULL; }
108 wxRealPoint m_pt1; // First line
109 wxRealPoint m_pt2;
110 wxRealPoint m_pt3; // Second line
111 wxRealPoint m_pt4;
112 wxRealPoint m_intersect;
113 wxLineShape* m_lineShape1;
114 wxLineShape* m_lineShape2;
115 };
116
117 class wxLineCrossings: public wxObject
118 {
119 public:
120 wxLineCrossings();
121 ~wxLineCrossings();
122
123 void FindCrossings(wxDiagram& diagram);
124 void DrawCrossings(wxDiagram& diagram, wxDC& dc);
125 void ClearCrossings();
126
127 public:
128 wxList m_crossings;
129 };
130
131 #endif
132 // _OGL_OGLDIAG_H_