1 /////////////////////////////////////////////////////////////////////////////
2 // Name:        wx/gtk1/dc.h
3 // Purpose:
4 // Author:      Robert Roebling
5 // Id:          $Id: dc.h 42763 2006-10-30 20:34:25Z VZ $
6 // Copyright:   (c) 1998 Robert Roebling
7 // Licence:     wxWindows licence
8 /////////////////////////////////////////////////////////////////////////////
9 
10 #ifndef __GTKDCH__
11 #define __GTKDCH__
12 
13 //-----------------------------------------------------------------------------
14 // classes
15 //-----------------------------------------------------------------------------
16 
17 class WXDLLIMPEXP_CORE wxDC;
18 
19 //-----------------------------------------------------------------------------
20 // constants
21 //-----------------------------------------------------------------------------
22 
23 #ifndef MM_TEXT
24 #define MM_TEXT         0
25 #define MM_ISOTROPIC    1
26 #define MM_ANISOTROPIC  2
27 #define MM_LOMETRIC     3
28 #define MM_HIMETRIC     4
29 #define MM_TWIPS        5
30 #define MM_POINTS       6
31 #define MM_METRIC       7
32 #endif
33 
34 //-----------------------------------------------------------------------------
35 // wxDC
36 //-----------------------------------------------------------------------------
37 
38 class WXDLLIMPEXP_CORE wxDC : public wxDCBase
39 {
40 public:
41     wxDC();
~wxDC()42     virtual ~wxDC() { }
43 
44 #if wxUSE_PALETTE
SetColourMap(const wxPalette & palette)45     void SetColourMap( const wxPalette& palette ) { SetPalette(palette); };
46 #endif // wxUSE_PALETTE
47 
48     // Resolution in pixels per logical inch
49     virtual wxSize GetPPI() const;
50 
StartDoc(const wxString & WXUNUSED (message))51     virtual bool StartDoc( const wxString& WXUNUSED(message) ) { return true; }
EndDoc()52     virtual void EndDoc() { }
StartPage()53     virtual void StartPage() { }
EndPage()54     virtual void EndPage() { }
55 
56     virtual void SetMapMode( int mode );
57     virtual void SetUserScale( double x, double y );
58     virtual void SetLogicalScale( double x, double y );
59     virtual void SetLogicalOrigin( wxCoord x, wxCoord y );
60     virtual void SetDeviceOrigin( wxCoord x, wxCoord y );
61 
62     virtual void SetAxisOrientation( bool xLeftRight, bool yBottomUp );
63 
64     // implementation
65     // --------------
66 
67     virtual void ComputeScaleAndOrigin();
68 
GetGDKWindow()69     virtual GdkWindow* GetGDKWindow() const { return NULL; }
70 
XDEV2LOG(wxCoord x)71     wxCoord XDEV2LOG(wxCoord x) const
72     {
73         return wxRound((double)(x - m_deviceOriginX) / m_scaleX) * m_signX + m_logicalOriginX;
74     }
XDEV2LOGREL(wxCoord x)75     wxCoord XDEV2LOGREL(wxCoord x) const
76     {
77         return wxRound((double)(x) / m_scaleX);
78     }
YDEV2LOG(wxCoord y)79     wxCoord YDEV2LOG(wxCoord y) const
80     {
81         return wxRound((double)(y - m_deviceOriginY) / m_scaleY) * m_signY + m_logicalOriginY;
82     }
YDEV2LOGREL(wxCoord y)83     wxCoord YDEV2LOGREL(wxCoord y) const
84     {
85         return wxRound((double)(y) / m_scaleY);
86     }
XLOG2DEV(wxCoord x)87     wxCoord XLOG2DEV(wxCoord x) const
88     {
89         return wxRound((double)(x - m_logicalOriginX) * m_scaleX) * m_signX + m_deviceOriginX;
90     }
XLOG2DEVREL(wxCoord x)91     wxCoord XLOG2DEVREL(wxCoord x) const
92     {
93         return wxRound((double)(x) * m_scaleX);
94     }
YLOG2DEV(wxCoord y)95     wxCoord YLOG2DEV(wxCoord y) const
96     {
97         return wxRound((double)(y - m_logicalOriginY) * m_scaleY) * m_signY + m_deviceOriginY;
98     }
YLOG2DEVREL(wxCoord y)99     wxCoord YLOG2DEVREL(wxCoord y) const
100     {
101         return wxRound((double)(y) * m_scaleY);
102     }
103 
104 protected:
105     // base class pure virtuals implemented here
106     virtual void DoSetClippingRegion(wxCoord x, wxCoord y, wxCoord width, wxCoord height);
107     virtual void DoGetSizeMM(int* width, int* height) const;
108 
109 public:
110     // GTK-specific member variables
111 
112     // not sure what for, but what is a mm on a screen you don't know the size
113     // of?
114     double       m_mm_to_pix_x,
115                  m_mm_to_pix_y;
116 
117     bool         m_needComputeScaleX,
118                  m_needComputeScaleY; // not yet used
119 
120 
121 private:
122     DECLARE_ABSTRACT_CLASS(wxDC)
123 };
124 
125 // this must be defined when wxDC::Blit() honours the DC origian and needed to
126 // allow wxUniv code in univ/winuniv.cpp to work with versions of wxGTK
127 // 2.3.[23]
128 #ifndef wxHAS_WORKING_GTK_DC_BLIT
129     #define wxHAS_WORKING_GTK_DC_BLIT
130 #endif
131 
132 #endif // __GTKDCH__
133