1998-07-18 17:57:52 -04:00
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
// Name: ogldiag.h
|
|
|
|
// Purpose: OGL - wxDiagram class
|
|
|
|
// Author: Julian Smart
|
|
|
|
// Modified by:
|
|
|
|
// Created: 12/07/98
|
|
|
|
// RCS-ID: $Id$
|
|
|
|
// Copyright: (c) Julian Smart
|
|
|
|
// Licence: wxWindows licence
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
#ifndef _OGL_OGLDIAG_H_
|
|
|
|
#define _OGL_OGLDIAG_H_
|
|
|
|
|
|
|
|
#ifdef __GNUG__
|
|
|
|
#pragma interface "ogldiag.h"
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#include "basic.h"
|
|
|
|
|
|
|
|
class wxDiagram: public wxObject
|
|
|
|
{
|
|
|
|
DECLARE_DYNAMIC_CLASS(wxDiagram)
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
wxDiagram();
|
|
|
|
virtual ~wxDiagram();
|
|
|
|
|
|
|
|
void SetCanvas(wxShapeCanvas *can);
|
|
|
|
|
|
|
|
inline wxShapeCanvas *GetCanvas() const { return m_diagramCanvas; }
|
|
|
|
|
|
|
|
virtual void Redraw(wxDC& dc);
|
|
|
|
virtual void Clear(wxDC& dc);
|
1998-08-22 12:31:11 -04:00
|
|
|
virtual void DrawOutline(wxDC& dc, double x1, double y1, double x2, double y2);
|
1998-07-18 17:57:52 -04:00
|
|
|
|
|
|
|
// Add object to end of object list (if addAfter is NULL)
|
|
|
|
// or just after addAfter.
|
|
|
|
virtual void AddShape(wxShape *object, wxShape *addAfter = NULL);
|
|
|
|
|
|
|
|
// Add object to front of object list
|
|
|
|
virtual void InsertShape(wxShape *object);
|
|
|
|
|
|
|
|
void SetSnapToGrid(bool snap);
|
1998-08-22 12:31:11 -04:00
|
|
|
void SetGridSpacing(double spacing);
|
1998-09-08 10:38:35 -04:00
|
|
|
inline double GetGridSpacing() const { return m_gridSpacing; }
|
1998-07-18 17:57:52 -04:00
|
|
|
inline bool GetSnapToGrid() const { return m_snapToGrid; }
|
1998-08-22 12:31:11 -04:00
|
|
|
void Snap(double *x, double *y);
|
1998-07-18 17:57:52 -04:00
|
|
|
|
|
|
|
inline void SetQuickEditMode(bool qem) { m_quickEditMode = qem; }
|
|
|
|
inline bool GetQuickEditMode() const { return m_quickEditMode; }
|
|
|
|
|
|
|
|
virtual void RemoveShape(wxShape *object);
|
|
|
|
virtual void RemoveAllShapes();
|
|
|
|
virtual void DeleteAllShapes();
|
|
|
|
virtual void ShowAll(bool show);
|
|
|
|
|
1998-09-16 17:44:17 -04:00
|
|
|
// Find a shape by its id
|
|
|
|
wxShape* FindShape(long id) const;
|
|
|
|
|
1998-07-18 17:57:52 -04:00
|
|
|
inline void SetMouseTolerance(int tol) { m_mouseTolerance = tol; }
|
|
|
|
inline int GetMouseTolerance() const { return m_mouseTolerance; }
|
|
|
|
inline wxList *GetShapeList() const { return m_shapeList; }
|
1998-09-16 17:44:17 -04:00
|
|
|
inline int GetCount() const { return m_shapeList->Number(); }
|
1998-07-18 17:57:52 -04:00
|
|
|
|
|
|
|
// Make sure all text that should be centred, is centred.
|
|
|
|
void RecentreAll(wxDC& dc);
|
|
|
|
|
|
|
|
#ifdef PROLOGIO
|
|
|
|
virtual bool SaveFile(const wxString& filename);
|
|
|
|
virtual bool LoadFile(const wxString& filename);
|
|
|
|
|
|
|
|
virtual void ReadNodes(wxExprDatabase& database);
|
|
|
|
virtual void ReadLines(wxExprDatabase& database);
|
|
|
|
virtual void ReadContainerGeometry(wxExprDatabase& database);
|
|
|
|
|
|
|
|
// Allow for modifying file
|
|
|
|
virtual bool OnDatabaseLoad(wxExprDatabase& db);
|
|
|
|
virtual bool OnDatabaseSave(wxExprDatabase& db);
|
|
|
|
virtual bool OnShapeSave(wxExprDatabase& db, wxShape& shape, wxExpr& expr);
|
|
|
|
virtual bool OnShapeLoad(wxExprDatabase& db, wxShape& shape, wxExpr& expr);
|
|
|
|
virtual bool OnHeaderSave(wxExprDatabase& db, wxExpr& expr);
|
|
|
|
virtual bool OnHeaderLoad(wxExprDatabase& db, wxExpr& expr);
|
|
|
|
#endif
|
|
|
|
|
|
|
|
protected:
|
|
|
|
wxShapeCanvas* m_diagramCanvas;
|
|
|
|
bool m_quickEditMode;
|
|
|
|
bool m_snapToGrid;
|
1998-09-08 10:38:35 -04:00
|
|
|
double m_gridSpacing;
|
1998-07-18 17:57:52 -04:00
|
|
|
int m_mouseTolerance;
|
|
|
|
wxList* m_shapeList;
|
|
|
|
};
|
|
|
|
|
1998-09-28 11:42:54 -04:00
|
|
|
class wxLineCrossing: public wxObject
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
wxLineCrossing() { m_lineShape1 = NULL; m_lineShape2 = NULL; }
|
|
|
|
wxRealPoint m_pt1; // First line
|
|
|
|
wxRealPoint m_pt2;
|
|
|
|
wxRealPoint m_pt3; // Second line
|
|
|
|
wxRealPoint m_pt4;
|
|
|
|
wxRealPoint m_intersect;
|
|
|
|
wxLineShape* m_lineShape1;
|
|
|
|
wxLineShape* m_lineShape2;
|
|
|
|
};
|
|
|
|
|
|
|
|
class wxLineCrossings: public wxObject
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
wxLineCrossings();
|
|
|
|
~wxLineCrossings();
|
|
|
|
|
|
|
|
void FindCrossings(wxDiagram& diagram);
|
|
|
|
void DrawCrossings(wxDiagram& diagram, wxDC& dc);
|
|
|
|
void ClearCrossings();
|
|
|
|
|
|
|
|
public:
|
|
|
|
wxList m_crossings;
|
|
|
|
};
|
|
|
|
|
1998-07-18 17:57:52 -04:00
|
|
|
#endif
|
|
|
|
// _OGL_OGLDIAG_H_
|