mirror of
https://github.com/levinsv/pgadmin3.git
synced 2026-05-15 14:15:49 -06:00
157 lines
3.6 KiB
C++
157 lines
3.6 KiB
C++
//////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// pgAdmin III - PostgreSQL Tools
|
|
//
|
|
// Portions Copyright (C) 1998 - 2011, Julian Smart
|
|
// Portions Copyright (C) 2011 - 2016, The pgAdmin Development Team
|
|
// This software is released under the PostgreSQL Licence
|
|
//
|
|
// ogldiag.h - OGL - wxDiagram class
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef _OGL_OGLDIAG_H_
|
|
#define _OGL_OGLDIAG_H_
|
|
|
|
#include "ogl/basic.h"
|
|
|
|
#if wxUSE_PROLOGIO
|
|
#include <wx/deprecated/wxexpr.h>
|
|
#endif
|
|
|
|
|
|
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);
|
|
virtual void DrawOutline(wxDC &dc, double x1, double y1, double x2, double y2);
|
|
|
|
// 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);
|
|
void SetGridSpacing(double spacing);
|
|
inline double GetGridSpacing() const
|
|
{
|
|
return m_gridSpacing;
|
|
}
|
|
inline bool GetSnapToGrid() const
|
|
{
|
|
return m_snapToGrid;
|
|
}
|
|
void Snap(double *x, double *y);
|
|
|
|
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);
|
|
|
|
// Find a shape by its id
|
|
wxShape *FindShape(long id) const;
|
|
|
|
inline void SetMouseTolerance(int tol)
|
|
{
|
|
m_mouseTolerance = tol;
|
|
}
|
|
inline int GetMouseTolerance() const
|
|
{
|
|
return m_mouseTolerance;
|
|
}
|
|
inline wxList *GetShapeList() const
|
|
{
|
|
return m_shapeList;
|
|
}
|
|
inline int GetCount() const
|
|
{
|
|
return m_shapeList->GetCount();
|
|
}
|
|
|
|
// Make sure all text that should be centred, is centred.
|
|
void RecentreAll(wxDC &dc);
|
|
|
|
#if wxUSE_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;
|
|
double m_gridSpacing;
|
|
int m_mouseTolerance;
|
|
wxList *m_shapeList;
|
|
};
|
|
|
|
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;
|
|
};
|
|
|
|
#endif
|
|
// _OGL_OGLDIAG_H_
|