mirror of
https://github.com/levinsv/pgadmin3.git
synced 2026-05-15 14:15:49 -06:00
220 lines
5.6 KiB
C++
220 lines
5.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
|
|
//
|
|
// drawnp.h - Private header for wxDrawnShape
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef _OGL_DRAWNP_H_
|
|
#define _OGL_DRAWNP_H_
|
|
|
|
/*
|
|
* Drawing operations
|
|
*
|
|
*/
|
|
|
|
#define DRAWOP_SET_PEN 1
|
|
#define DRAWOP_SET_BRUSH 2
|
|
#define DRAWOP_SET_FONT 3
|
|
#define DRAWOP_SET_TEXT_COLOUR 4
|
|
#define DRAWOP_SET_BK_COLOUR 5
|
|
#define DRAWOP_SET_BK_MODE 6
|
|
#define DRAWOP_SET_CLIPPING_RECT 7
|
|
#define DRAWOP_DESTROY_CLIPPING_RECT 8
|
|
|
|
/*
|
|
#define DRAWOP_CREATE_PEN 10
|
|
#define DRAWOP_CREATE_BRUSH 11
|
|
#define DRAWOP_CREATE_FONT 12
|
|
*/
|
|
|
|
#define DRAWOP_DRAW_LINE 20
|
|
#define DRAWOP_DRAW_POLYLINE 21
|
|
#define DRAWOP_DRAW_POLYGON 22
|
|
#define DRAWOP_DRAW_RECT 23
|
|
#define DRAWOP_DRAW_ROUNDED_RECT 24
|
|
#define DRAWOP_DRAW_ELLIPSE 25
|
|
#define DRAWOP_DRAW_POINT 26
|
|
#define DRAWOP_DRAW_ARC 27
|
|
#define DRAWOP_DRAW_TEXT 28
|
|
#define DRAWOP_DRAW_SPLINE 29
|
|
#define DRAWOP_DRAW_ELLIPTIC_ARC 30
|
|
|
|
/*
|
|
* Base, virtual class
|
|
*
|
|
*/
|
|
|
|
class wxDrawOp: public wxObject
|
|
{
|
|
public:
|
|
inline wxDrawOp(int theOp)
|
|
{
|
|
m_op = theOp;
|
|
}
|
|
inline ~wxDrawOp() {}
|
|
inline virtual void Scale(double xScale, double yScale) {};
|
|
inline virtual void Translate(double x, double y) {};
|
|
inline virtual void Rotate(double x, double y, double theta, double sinTheta, double cosTheta) {};
|
|
virtual void Do(wxDC &dc, double xoffset, double yoffset) = 0;
|
|
virtual wxDrawOp *Copy(wxPseudoMetaFile *newImage) = 0;
|
|
#if wxUSE_PROLOGIO
|
|
virtual wxExpr *WriteExpr(wxPseudoMetaFile *image) = 0;
|
|
virtual void ReadExpr(wxPseudoMetaFile *image, wxExpr *expr) = 0;
|
|
#endif
|
|
inline int GetOp() const
|
|
{
|
|
return m_op;
|
|
}
|
|
|
|
// Draw an outline using the current operation. By default, return FALSE (not drawn)
|
|
virtual bool OnDrawOutline(wxDC &dc, double x, double y, double w, double h,
|
|
double oldW, double oldH)
|
|
{
|
|
return FALSE;
|
|
}
|
|
|
|
// Get the perimeter point using this data
|
|
virtual bool GetPerimeterPoint(double x1, double y1,
|
|
double x2, double y2,
|
|
double *x3, double *y3,
|
|
double xOffset, double yOffset,
|
|
int attachmentMode)
|
|
{
|
|
return FALSE;
|
|
}
|
|
|
|
protected:
|
|
int m_op;
|
|
|
|
};
|
|
|
|
/*
|
|
* Set font, brush, text colour
|
|
*
|
|
*/
|
|
|
|
class wxOpSetGDI: public wxDrawOp
|
|
{
|
|
public:
|
|
wxOpSetGDI(int theOp, wxPseudoMetaFile *theImage, int theGdiIndex, int theMode = 0);
|
|
void Do(wxDC &dc, double xoffset, double yoffset);
|
|
wxDrawOp *Copy(wxPseudoMetaFile *newImage);
|
|
#if wxUSE_PROLOGIO
|
|
wxExpr *WriteExpr(wxPseudoMetaFile *image);
|
|
void ReadExpr(wxPseudoMetaFile *image, wxExpr *expr);
|
|
#endif
|
|
|
|
public:
|
|
int m_mode;
|
|
int m_gdiIndex;
|
|
wxPseudoMetaFile *m_image;
|
|
unsigned char m_r;
|
|
unsigned char m_g;
|
|
unsigned char m_b;
|
|
};
|
|
|
|
/*
|
|
* Set/destroy clipping
|
|
*
|
|
*/
|
|
|
|
class wxOpSetClipping: public wxDrawOp
|
|
{
|
|
public:
|
|
wxOpSetClipping(int theOp, double theX1, double theY1, double theX2, double theY2);
|
|
void Do(wxDC &dc, double xoffset, double yoffset);
|
|
void Scale(double xScale, double yScale);
|
|
void Translate(double x, double y);
|
|
wxDrawOp *Copy(wxPseudoMetaFile *newImage);
|
|
#if wxUSE_PROLOGIO
|
|
wxExpr *WriteExpr(wxPseudoMetaFile *image);
|
|
void ReadExpr(wxPseudoMetaFile *image, wxExpr *expr);
|
|
#endif
|
|
|
|
public:
|
|
double m_x1;
|
|
double m_y1;
|
|
double m_x2;
|
|
double m_y2;
|
|
};
|
|
|
|
/*
|
|
* Draw line, rectangle, rounded rectangle, ellipse, point, arc, text
|
|
*
|
|
*/
|
|
|
|
class wxOpDraw: public wxDrawOp
|
|
{
|
|
public:
|
|
wxOpDraw(int theOp, double theX1, double theY1, double theX2, double theY2,
|
|
double radius = 0.0, wxChar *s = NULL);
|
|
~wxOpDraw();
|
|
void Do(wxDC &dc, double xoffset, double yoffset);
|
|
void Scale(double scaleX, double scaleY);
|
|
void Translate(double x, double y);
|
|
void Rotate(double x, double y, double theta, double sinTheta, double cosTheta);
|
|
wxDrawOp *Copy(wxPseudoMetaFile *newImage);
|
|
#if wxUSE_PROLOGIO
|
|
wxExpr *WriteExpr(wxPseudoMetaFile *image);
|
|
void ReadExpr(wxPseudoMetaFile *image, wxExpr *expr);
|
|
#endif
|
|
|
|
public:
|
|
double m_x1;
|
|
double m_y1;
|
|
double m_x2;
|
|
double m_y2;
|
|
double m_x3;
|
|
double m_y3;
|
|
double m_radius;
|
|
wxChar *m_textString;
|
|
|
|
};
|
|
|
|
/*
|
|
* Draw polyline, spline, polygon
|
|
*
|
|
*/
|
|
|
|
class wxOpPolyDraw: public wxDrawOp
|
|
{
|
|
public:
|
|
wxOpPolyDraw(int theOp, int n, wxRealPoint *thePoints);
|
|
~wxOpPolyDraw();
|
|
void Do(wxDC &dc, double xoffset, double yoffset);
|
|
void Scale(double scaleX, double scaleY);
|
|
void Translate(double x, double y);
|
|
void Rotate(double x, double y, double theta, double sinTheta, double cosTheta);
|
|
wxDrawOp *Copy(wxPseudoMetaFile *newImage);
|
|
#if wxUSE_PROLOGIO
|
|
wxExpr *WriteExpr(wxPseudoMetaFile *image);
|
|
void ReadExpr(wxPseudoMetaFile *image, wxExpr *expr);
|
|
#endif
|
|
|
|
// Draw an outline using the current operation.
|
|
virtual bool OnDrawOutline(wxDC &dc, double x, double y, double w, double h,
|
|
double oldW, double oldH);
|
|
|
|
// Get the perimeter point using this data
|
|
bool GetPerimeterPoint(double x1, double y1,
|
|
double x2, double y2,
|
|
double *x3, double *y3,
|
|
double xOffset, double yOffset,
|
|
int attachmentMode);
|
|
|
|
public:
|
|
wxRealPoint *m_points;
|
|
int m_noPoints;
|
|
|
|
};
|
|
|
|
#endif
|
|
// _OGL_DRAWNP_H_
|
|
|
|
|