]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/motif/dc.h
Coupled some core functionality out, to allow its use outside the wxLibrary
[wxWidgets.git] / include / wx / motif / dc.h
index 3b668ce02d974b1fade04ddec489c64d687c8cb5..06abfad626f9d82ee019a2aa07539d0bc4e7ad7a 100644 (file)
@@ -61,10 +61,10 @@ class WXDLLEXPORT wxDC: public wxObject
     
     virtual bool Ok(void) const { return m_ok; };
 
-    virtual void FloodFill( long x1, long y1, wxColour* col, int style=wxFLOOD_SURFACE ) = 0;
+    virtual void FloodFill( long x1, long y1, const wxColour& col, int style=wxFLOOD_SURFACE ) = 0;
     inline void FloodFill(const wxPoint& pt, const wxColour& col, int style=wxFLOOD_SURFACE)
     {
-        FloodFill(pt.x, pt.y, (wxColour*) & col, style);
+        FloodFill(pt.x, pt.y, col, style);
     }
 
     virtual bool GetPixel( long x1, long y1, wxColour *col ) const = 0;
@@ -137,21 +137,20 @@ class WXDLLEXPORT wxDC: public wxObject
     }
 
     virtual void DrawSpline( long x1, long y1, long x2, long y2, long x3, long y3 );
-    virtual void DrawSpline( wxList *points );
+    virtual void DrawSpline( wxList *points ) = 0;
     virtual void DrawSpline( int n, wxPoint points[] );
     
     virtual bool CanDrawBitmap(void) const = 0;
 
-    virtual void DrawIcon( const wxIcon &icon, long x, long y, bool useMask=FALSE );
+    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);
     }
 
-    // TODO DrawBitmap is not always the same as DrawIcon, especially if bitmaps and
+    // DrawBitmap is not always the same as DrawIcon, especially if bitmaps and
     // icons are implemented differently.
-    void DrawBitmap( const wxBitmap &bmp, long x, long y, bool useMask=FALSE )
-             { DrawIcon( *((wxIcon*)(&bmp)), x, y, useMask ); }
+    virtual void DrawBitmap( const wxBitmap &bmp, long x, long y, bool useMask=FALSE ) ;
 
     virtual bool Blit( long xdest, long ydest, long width, long height,
        wxDC *source, long xsrc, long ysrc, int logical_func = wxCOPY, bool useMask=FALSE ) = 0;
@@ -177,16 +176,16 @@ class WXDLLEXPORT wxDC: public wxObject
     virtual void Clear(void) = 0;
             
     virtual void SetFont( const wxFont &font ) = 0;
-    virtual wxFont *GetFont(void) const { return (wxFont*) &m_font; };
+    virtual wxFont& GetFont(void) const { return (wxFont&) m_font; };
     
     virtual void SetPen( const wxPen &pen ) = 0;
-    virtual wxPen *GetPen(void) const { return (wxPen*) &m_pen; };
+    virtual wxPen& GetPen(void) const { return (wxPen&) m_pen; };
     
     virtual void SetBrush( const wxBrush &brush ) = 0;
-    virtual wxBrush *GetBrush(void) const { return (wxBrush*) &m_brush; };
+    virtual wxBrush& GetBrush(void) const { return (wxBrush&) m_brush; };
 
     virtual void SetBackground( const wxBrush &brush ) = 0;
-    virtual wxBrush *GetBackground(void) const { return (wxBrush*) &m_backgroundBrush; };
+    virtual wxBrush& GetBackground(void) const { return (wxBrush&) m_backgroundBrush; };
 
     virtual void SetLogicalFunction( int function ) = 0;
     virtual int GetLogicalFunction(void) const { return m_logicalFunction; };
@@ -212,10 +211,17 @@ class WXDLLEXPORT wxDC: public wxObject
     virtual inline long MinY(void) const { return m_minY; }
     virtual inline long MaxY(void) const { return m_maxY; }
 
+    // Size in device units
     virtual void GetSize( int* width, int* height ) const;
     inline wxSize GetSize(void) const { int w, h; GetSize(&w, &h); return wxSize(w, h); }
-    virtual void GetSizeMM( long* width, long* height ) const;
-    
+
+    // Size in millimetres
+    virtual void GetSizeMM( int* width, int* height ) const;
+    inline wxSize GetSizeMM(void) const { int w, h; GetSizeMM(&w, &h); return wxSize(w, h); }
+
+    // Resolution in pixels per logical inch
+    wxSize GetPPI(void) const ;
+
     virtual bool StartDoc( const wxString& WXUNUSED(message) ) { return TRUE; };
     virtual void EndDoc(void) {};
     virtual void StartPage(void) {};
@@ -238,7 +244,7 @@ class WXDLLEXPORT wxDC: public wxObject
 
     virtual void SetAxisOrientation( bool xLeftRight, bool yBottomUp );
     
-    virtual void SetOptimization( bool WXUNUSED(optimize) ) {};
+    virtual void SetOptimization( bool optimize ) { m_optimize = optimize; };
     virtual bool GetOptimization(void) { return m_optimize; };
     
     virtual long DeviceToLogicalX(long x) const;
@@ -293,6 +299,15 @@ class WXDLLEXPORT wxDC: public wxObject
          else
            return (long)((double)(new_x) * m_scaleX - 0.5) * m_signX + m_deviceOriginX;
        }
+    // Without device translation, for backing pixmap purposes
+    long XLOG2DEV_2(long x) const
+       { 
+         long new_x = x - m_logicalOriginX;
+         if (new_x > 0)
+           return (long)((double)(new_x) * m_scaleX + 0.5) * m_signX;
+         else
+           return (long)((double)(new_x) * m_scaleX - 0.5) * m_signX;
+       }
     long XLOG2DEVREL(long x) const
        { 
          if (x > 0)
@@ -308,6 +323,15 @@ class WXDLLEXPORT wxDC: public wxObject
          else
            return (long)((double)(new_y) * m_scaleY - 0.5) * m_signY + m_deviceOriginY;
        }
+    // Without device translation, for backing pixmap purposes
+    long YLOG2DEV_2(long y) const
+       {
+         long new_y = y - m_logicalOriginY;
+         if (new_y > 0)
+           return (long)((double)(new_y) * m_scaleY + 0.5) * m_signY;
+         else
+           return (long)((double)(new_y) * m_scaleY - 0.5) * m_signY;
+       }
     long YLOG2DEVREL(long y) const
        { 
          if (y > 0)
@@ -316,8 +340,6 @@ class WXDLLEXPORT wxDC: public wxObject
            return (long)((double)(y) * m_scaleY - 0.5);
        }
   
-    virtual void DrawOpenSpline( wxList *points ) = 0;
-       
   public:
     
     bool         m_ok;
@@ -325,12 +347,9 @@ class WXDLLEXPORT wxDC: public wxObject
     
     // not sure, what these mean
     bool         m_clipping;      // Is clipping on right now ?
-    bool         m_isInteractive; // Is GetPixel possible ?
-    bool         m_autoSetting;   // wxMSW only ?
-    bool         m_dontDelete;    // wxMSW only ?
     bool         m_optimize;      // wxMSW only ?
-    wxString     m_filename;      // Not sure where this belongs.
-    
+    bool         m_isInteractive; // For wxPostScriptDC
+
     wxPen        m_pen;
     wxBrush      m_brush;
     wxBrush      m_backgroundBrush;