--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// Name: dc.h
+// Purpose: wxDC class
+// Author: AUTHOR
+// Modified by:
+// Created: ??/??/98
+// RCS-ID: $Id$
+// Copyright: (c) AUTHOR
+// Licence: wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_DC_H_
+#define _WX_DC_H_
+
+#ifdef __GNUG__
+#pragma interface "dc.h"
+#endif
+
+#include "wx/pen.h"
+#include "wx/brush.h"
+#include "wx/icon.h"
+#include "wx/font.h"
+#include "wx/gdicmn.h"
+
+class WXDLLEXPORT wxDC: public wxObject
+{
+DECLARE_ABSTRACT_CLASS(wxDC)
+public:
+ wxDC();
+ ~wxDC();
+
+ // Compatibility (obsolete)
+ inline void wxDC::BeginDrawing() {}
+ inline void wxDC::EndDrawing() {}
+
+ virtual void FloodFill(long x1, long y1, const wxColour& col, int style=wxFLOOD_SURFACE) ;
+ inline void FloodFill(const wxPoint& pt, const wxColour& col, int style=wxFLOOD_SURFACE)
+ {
+ FloodFill(pt.x, pt.y, col, style);
+ }
+
+ virtual bool GetPixel(long x1, long y1, wxColour *col) const ;
+ inline bool GetPixel(const wxPoint& pt, wxColour *col) const
+ {
+ return GetPixel(pt.x, pt.y, col);
+ }
+
+ virtual void DrawLine(long x1, long y1, long x2, long y2);
+ inline void DrawLine(const wxPoint& pt1, const wxPoint& pt2)
+ {
+ DrawLine(pt1.x, pt1.y, pt2.x, pt2.y);
+ }
+
+ virtual void CrossHair(long x, long y) ;
+ virtual void CrossHair(const wxPoint& pt)
+ {
+ CrossHair(pt.x, pt.y);
+ }
+
+ virtual void DrawArc(long x1,long y1,long x2,long y2,double xc, double yc);
+ inline void DrawArc(const wxPoint& pt1, const wxPoint& pt2, double xc, double yc)
+ {
+ DrawArc(pt1.x, pt1.y, pt2.x, pt2.y, xc, yc);
+ }
+
+ virtual void DrawEllipticArc (long x, long y, long w, long h, double sa, double ea);
+ virtual void DrawEllipticArc (const wxPoint& pt, const wxSize& sz, double sa, double ea)
+ {
+ DrawEllipticArc(pt.x, pt.y, sz.x, sz.y, sa, ea);
+ }
+
+ virtual void DrawPoint(long x, long y);
+ inline void DrawPoint(const wxPoint& pt)
+ {
+ DrawPoint(pt.x, pt.y);
+ }
+
+ virtual void DrawLines(int n, wxPoint points[], long xoffset = 0, long yoffset = 0);
+
+ virtual void DrawPolygon(int n, wxPoint points[], long xoffset = 0, long yoffset = 0, int fillStyle=wxODDEVEN_RULE);
+
+ virtual void DrawRectangle(long x, long y, long width, long height);
+ inline void DrawRectangle(const wxPoint& pt, const wxSize& sz)
+ {
+ DrawRectangle(pt.x, pt.y, sz.x, sz.y);
+ }
+ inline void DrawRectangle(const wxRect& rect)
+ {
+ DrawRectangle(rect.x, rect.y, rect.width, rect.height);
+ }
+
+ virtual void DrawRoundedRectangle(long x, long y, long width, long height, double radius = 20.0);
+ inline void DrawRoundedRectangle(const wxPoint& pt, const wxSize& sz, double radius = 20.0)
+ {
+ DrawRoundedRectangle(pt.x, pt.y, sz.x, sz.y, radius);
+ }
+ inline void DrawRoundedRectangle(const wxRect& rect, double radius = 20.0)
+ {
+ DrawRoundedRectangle(rect.x, rect.y, rect.width, rect.height, radius);
+ }
+
+ virtual void DrawEllipse(long x, long y, long width, long height);
+ inline void DrawEllipse(const wxPoint& pt, const wxSize& sz)
+ {
+ DrawEllipse(pt.x, pt.y, sz.x, sz.y);
+ }
+ inline void DrawEllipse(const wxRect& rect)
+ {
+ DrawEllipse(rect.x, rect.y, rect.width, rect.height);
+ }
+
+ virtual void DrawIcon(const wxIcon& icon, long x, long y);
+ inline void DrawIcon(const wxIcon& icon, const wxPoint& pt)
+ {
+ DrawIcon(icon, pt.x, pt.y);
+ }
+
+ inline void DrawPoint(wxPoint& point) { DrawPoint(point.x, point.y); }
+ virtual void DrawLines(wxList *list, long xoffset = 0, long yoffset = 0);
+ virtual void DrawPolygon(wxList *list, long xoffset = 0, long yoffset = 0, int fillStyle=wxODDEVEN_RULE);
+
+ virtual void DrawText(const wxString& text, long x, long y, bool use16bit = FALSE);
+ inline void DrawText(const wxString& text, const wxPoint& pt, bool use16bit = FALSE)
+ {
+ DrawText(text, pt.x, pt.y, use16bit);
+ }
+
+ virtual bool Blit(long xdest, long ydest, long width, long height,
+ wxDC *source, long xsrc, long ysrc, int rop = wxCOPY, bool useMask = FALSE);
+ inline bool Blit(const wxPoint& destPt, const wxSize& sz,
+ wxDC *source, const wxPoint& srcPt, int rop = wxCOPY, bool useMask = FALSE)
+ {
+ return Blit(destPt.x, destPt.y, sz.x, sz.y, source, srcPt.x, srcPt.y, rop, useMask);
+ }
+
+#if USE_SPLINES
+ // Splines
+ // 3-point spline
+ virtual void DrawSpline(long x1, long y1, long x2, long y2, long x3, long y3);
+ // Any number of control points - a list of pointers to wxPoints
+ virtual void DrawSpline(wxList *points);
+ virtual void DrawSpline(int n, wxPoint points[]);
+#endif
+ virtual void Clear();
+ virtual void SetFont(const wxFont& font);
+ virtual void SetPen(const wxPen& pen);
+ virtual void SetBrush(const wxBrush& brush);
+ virtual void SetLogicalFunction(int function);
+ virtual void SetBackground(const wxBrush& brush);
+ virtual void SetBackgroundMode(int mode);
+
+ virtual void SetClippingRegion(long x, long y, long width, long height);
+ inline void SetClippingRegion(const wxPoint& pt, const wxSize& sz)
+ {
+ SetClippingRegion(pt.x, pt.y, sz.x, sz.y);
+ }
+ inline void SetClippingRegion(const wxRect& rect)
+ {
+ SetClippingRegion(rect.x, rect.y, rect.width, rect.height);
+ }
+
+ virtual void SetPalette(const wxPalette& palette);
+ virtual void DestroyClippingRegion();
+ virtual long GetCharHeight() const;
+ virtual long GetCharWidth() const;
+ virtual void GetTextExtent(const wxString& string, long *x, long *y,
+ long *descent = NULL, long *externalLeading = NULL,
+ wxFont *theFont = NULL, bool use16bit = FALSE) const;
+
+ // Size in device units
+ virtual void GetSize(int* width, int* height) const;
+ inline wxSize GetSize() const { int w, h; GetSize(&w, &h); return wxSize(w, h); }
+
+ // Size in mm
+ virtual void GetSizeMM(long* width, long* height) const ;
+
+ virtual bool StartDoc(const wxString& message);
+ virtual void EndDoc();
+ virtual void StartPage();
+ virtual void EndPage();
+ virtual void SetMapMode(int mode);
+ virtual void SetUserScale(double x, double y);
+ virtual void SetSystemScale(double x, double y);
+ virtual void SetLogicalOrigin(long x, long y);
+ virtual void SetDeviceOrigin(long x, long y);
+ virtual void SetAxisOrientation(bool xLeftRight, bool yBottomUp);
+
+ // This group of functions does actual conversion
+ // of the input, as you'd expect.
+
+ long DeviceToLogicalX(long x) const;
+ long DeviceToLogicalY(long y) const;
+ long DeviceToLogicalXRel(long x) const;
+ long DeviceToLogicalYRel(long y) const;
+ long LogicalToDeviceX(long x) const;
+ long LogicalToDeviceY(long y) const;
+ long LogicalToDeviceXRel(long x) const;
+ long LogicalToDeviceYRel(long y) const;
+
+ virtual bool CanDrawBitmap() const;
+ virtual bool CanGetTextExtent() const;
+
+ virtual void SetTextForeground(const wxColour& colour);
+ virtual void SetTextBackground(const wxColour& colour);
+ inline virtual bool Ok() const {return m_ok;};
+ inline virtual int GetMapMode() const {return m_mappingMode;};
+
+ inline virtual wxBrush *GetBackground() const { return (wxBrush*) &m_backgroundBrush ;}
+ inline virtual wxBrush *GetBrush() const { return (wxBrush*) &m_brush ;}
+ inline virtual wxFont *GetFont() const { return (wxFont*) &m_font ;}
+ inline virtual int GetLogicalFunction() const { return m_logicalFunction ;}
+ inline virtual wxPen *GetPen() const { return (wxPen*) &m_pen ;}
+ inline virtual wxColour&GetTextBackground() const { return (wxColour&) m_textBackgroundColour ;}
+ inline virtual wxColour&GetTextForeground() const { return (wxColour&) m_textForegroundColour ;}
+
+ virtual void SetLogicalScale(double x, double y);
+ virtual inline void GetUserScale(double* x, double *y) const { *x = m_userScaleX; *y = m_userScaleY; }
+ virtual void CalcBoundingBox(long x, long y);
+ // Get the final bounding box of the PostScript or Metafile picture.
+ virtual inline long MinX() const { return m_minX; }
+ virtual inline long MaxX() const { return m_maxX; }
+ virtual inline long MinY() const { return m_minY; }
+ virtual inline long MaxY() const { return m_maxY; }
+
+ // Sometimes we need to override optimization, e.g.
+ // if other software is drawing onto our surface and we
+ // can't be sure of who's done what.
+ virtual inline void SetOptimization(bool WXUNUSED(opt)) { }
+ virtual inline bool GetOptimization() { return FALSE; }
+
+ virtual void GetClippingBox(long *x,long *y,long *w,long *h) const ;
+ inline void GetClippingBox(wxRect& rect) const
+ {
+ long x, y, w, h;
+ GetClippingBox(&x, &y, &w, &h); rect.x = x; rect.y = y; rect.width = w; rect.height = h;
+ }
+
+ inline wxWindow *GetWindow() const { return m_canvas; }
+ inline void SetWindow(wxWindow *win) { m_canvas = win; }
+
+protected:
+ bool m_colour;
+ bool m_ok;
+ bool m_clipping;
+ bool m_isInteractive;
+
+ // Coordinate system variables
+ long m_logicalOriginX;
+ long m_logicalOriginY;
+
+ long m_deviceOriginX;
+ long m_deviceOriginY;
+
+ double m_logicalScaleX;
+ double m_logicalScaleY;
+
+ double m_userScaleX;
+ double m_userScaleY;
+
+ int m_signX; // Used by SetAxisOrientation() to
+ int m_signY; // invert the axes
+
+ int m_mappingMode;
+
+ long m_minX; // bounding box
+ long m_minY;
+ long m_maxX;
+ long m_maxY;
+
+ int m_logicalFunction;
+ int m_backgroundMode;
+
+ wxPen m_pen;
+ wxBrush m_brush;
+ wxBrush m_backgroundBrush;
+ wxColour m_textForegroundColour;
+ wxColour m_textBackgroundColour;
+ wxFont m_font;
+ wxPalette m_palette;
+ int m_clipX1;
+ int m_clipY1;
+ int m_clipX2;
+ int m_clipY2;
+ double m_systemScaleX;
+ double m_systemScaleY;
+
+ wxWindow * m_canvas;
+ wxBitmap m_selectedBitmap;
+ wxString m_filename;
+
+};
+
+#endif
+ // _WX_DC_H_