]> git.saurik.com Git - wxWidgets.git/blobdiff - src/dfb/dc.cpp
added wxWindow::IsVisible() method
[wxWidgets.git] / src / dfb / dc.cpp
index 44dc6d99cab00eabacf16c2d9cff05e37d61fd69..a02dd8f7a1fd40aca367be9c94bd0103462cc624 100644 (file)
 
 #include "wx/dfb/private.h"
 
+// these values are used to initialize newly created DC
+#define DEFAULT_FONT      (*wxNORMAL_FONT)
+#define DEFAULT_PEN       (*wxBLACK_PEN)
+#define DEFAULT_BRUSH     (*wxWHITE_BRUSH)
+
 // ===========================================================================
 // implementation
 // ===========================================================================
@@ -46,12 +51,12 @@ wxDC::wxDC()
     m_ok = false;
 }
 
-wxDC::wxDC(const IDirectFBSurfacePtr& surface)
+wxDC::wxDC(const wxIDirectFBSurfacePtr& surface)
 {
     Init(surface);
 }
 
-void wxDC::Init(const IDirectFBSurfacePtr& surface)
+void wxDC::Init(const wxIDirectFBSurfacePtr& surface)
 {
     m_ok = (surface != NULL);
     wxCHECK_RET( surface != NULL, _T("invalid surface") );
@@ -63,9 +68,9 @@ void wxDC::Init(const IDirectFBSurfacePtr& surface)
     m_mm_to_pix_y = (double)wxGetDisplaySize().GetHeight() /
                     (double)wxGetDisplaySizeMM().GetHeight();
 
-    SetFont(*wxNORMAL_FONT);
-    SetPen(*wxBLACK_PEN);
-    SetBrush(*wxWHITE_BRUSH);
+    SetFont(DEFAULT_FONT);
+    SetPen(DEFAULT_PEN);
+    SetBrush(DEFAULT_BRUSH);
 }
 
 
@@ -93,7 +98,7 @@ void wxDC::DoSetClippingRegion(wxCoord cx, wxCoord cy, wxCoord cw, wxCoord ch)
     r.x2 = r.x1 + XLOG2DEVREL(cw) - 1;
     r.y2 = r.y1 + XLOG2DEVREL(ch) - 1;
 
-    if ( !DFB_CALL( m_surface->SetClip(m_surface, &r) ) )
+    if ( !m_surface->SetClip(&r) )
         return;
 
     m_clipX1 = cx;
@@ -114,7 +119,7 @@ void wxDC::DestroyClippingRegion()
 {
     wxCHECK_RET( Ok(), wxT("invalid dc") );
 
-    DFB_CALL( m_surface->SetClip(m_surface, NULL) );
+    m_surface->SetClip(NULL);
 
     ResetClipping();
 }
@@ -140,8 +145,7 @@ void wxDC::Clear()
         return;
 
     wxColour clr = m_backgroundBrush.GetColour();
-    DFB_CALL( m_surface->Clear(m_surface,
-                               clr.Red(), clr.Green(), clr.Blue(), clr.Alpha()) );
+    m_surface->Clear(clr.Red(), clr.Green(), clr.Blue(), clr.Alpha());
 }
 
 extern bool wxDoFloodFill(wxDC *dc, wxCoord x, wxCoord y,
@@ -175,9 +179,8 @@ void wxDC::DoDrawLine(wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2)
     if ( m_pen.GetStyle() == wxTRANSPARENT )
         return;
 
-    DFB_CALL( m_surface->DrawLine(m_surface,
-                                  XLOG2DEV(x1), YLOG2DEV(y1),
-                                  XLOG2DEV(x2), YLOG2DEV(y2)) );
+    m_surface->DrawLine(XLOG2DEV(x1), YLOG2DEV(y1),
+                        XLOG2DEV(x2), YLOG2DEV(y2));
 
     CalcBoundingBox(x1, y1);
     CalcBoundingBox(x2, y2);
@@ -241,14 +244,14 @@ void wxDC::DoDrawRectangle(wxCoord x, wxCoord y, wxCoord width, wxCoord height)
     if ( m_brush.GetStyle() != wxTRANSPARENT )
     {
         SelectColour(m_brush.GetColour());
-        DFB_CALL( m_surface->FillRectangle(m_surface, xx, yy, ww, hh) );
+        m_surface->FillRectangle(xx, yy, ww, hh);
         // restore pen's colour
         SelectColour(m_pen.GetColour());
     }
 
     if ( m_pen.GetStyle() != wxTRANSPARENT )
     {
-        DFB_CALL( m_surface->DrawRectangle(m_surface, xx, yy, ww, hh) );
+        m_surface->DrawRectangle(xx, yy, ww, hh);
     }
 
     CalcBoundingBox(x, y);
@@ -295,18 +298,13 @@ void wxDC::DoDrawText(const wxString& text, wxCoord x, wxCoord y)
         wxCHECK_RET( m_backgroundBrush.Ok(), wxT("invalid background brush") );
 
         SelectColour(m_backgroundBrush.GetColour());
-        DFB_CALL( m_surface->FillRectangle(m_surface,
-                                           xx, yy,
-                                           XLOG2DEVREL(w), YLOG2DEVREL(h)) );
+        m_surface->FillRectangle(xx, yy, XLOG2DEVREL(w), YLOG2DEVREL(h));
         // restore pen's colour
         SelectColour(m_pen.GetColour());
     }
 
     // finally draw the text itself:
-    DFB_CALL(m_surface->DrawString(m_surface,
-                                   wxSTR_TO_DFB(text), -1,
-                                   xx, yy,
-                                   DFBSurfaceTextFlags(DSTF_LEFT | DSTF_TOP)));
+    m_surface->DrawString(wxSTR_TO_DFB(text), -1, xx, yy, DSTF_LEFT | DSTF_TOP);
 }
 
 void wxDC::DoDrawRotatedText(const wxString& text,
@@ -324,22 +322,19 @@ void wxDC::DoDrawRotatedText(const wxString& text,
 
 void wxDC::SetPen(const wxPen& pen)
 {
-    if ( !pen.Ok() ) return;
-    m_pen = pen;
+    m_pen = pen.Ok() ? pen : DEFAULT_PEN;
 
     SelectColour(m_pen.GetColour());
 }
 
 void wxDC::SetBrush(const wxBrush& brush)
 {
-    if ( !brush.Ok() ) return;
-    m_brush = brush;
+    m_brush = brush.Ok() ? brush : DEFAULT_BRUSH;
 }
 
 void wxDC::SelectColour(const wxColour& clr)
 {
-    DFB_CALL( m_surface->SetColor(m_surface,
-                                  clr.Red(), clr.Green(), clr.Blue(), clr.Alpha()) );
+    m_surface->SetColor(clr.Red(), clr.Green(), clr.Blue(), clr.Alpha());
     #warning "use SetColorIndex?"
 }
 
@@ -356,13 +351,12 @@ void wxDC::SetFont(const wxFont& font)
 {
     wxCHECK_RET( Ok(), wxT("invalid dc") );
 
-    if ( !font.Ok() )
-        return;
+    wxFont f(font.Ok() ? font : DEFAULT_FONT);
 
-    if ( !DFB_CALL( m_surface->SetFont(m_surface, font.GetDirectFBFont()) ) )
+    if ( !m_surface->SetFont(f.GetDirectFBFont()) )
         return;
 
-    m_font = font;
+    m_font = f;
 }
 
 void wxDC::SetBackground(const wxBrush& brush)
@@ -416,8 +410,7 @@ wxCoord wxDC::GetCharHeight() const
     wxCHECK_MSG( m_font.Ok(), -1, wxT("no font selected") );
 
     int h = -1;
-    IDirectFBFontPtr f = m_font.GetDirectFBFont();
-    DFB_CALL( f->GetHeight(f, &h) );
+    m_font.GetDirectFBFont()->GetHeight(&h);
     return YDEV2LOGREL(h);
 }
 
@@ -427,8 +420,7 @@ wxCoord wxDC::GetCharWidth() const
     wxCHECK_MSG( m_font.Ok(), -1, wxT("no font selected") );
 
     int w = -1;
-    IDirectFBFontPtr f = m_font.GetDirectFBFont();
-    DFB_CALL( f->GetStringWidth(f, "H", 1, &w) );
+    m_font.GetDirectFBFont()->GetStringWidth("H", 1, &w);
     // VS: YDEV is corrent, it should *not* be XDEV, because font's are only
     //     scaled according to m_scaleY
     return YDEV2LOGREL(w);
@@ -451,9 +443,9 @@ void wxDC::DoGetTextExtent(const wxString& string, wxCoord *x, wxCoord *y,
 
     wxCoord xx = 0, yy = 0;
     DFBRectangle rect;
-    IDirectFBFontPtr f = m_font.GetDirectFBFont();
+    wxIDirectFBFontPtr f = m_font.GetDirectFBFont();
 
-    if (DFB_CALL(f->GetStringExtents(f, wxSTR_TO_DFB(string), -1, &rect, NULL)))
+    if ( f->GetStringExtents(wxSTR_TO_DFB(string), -1, &rect, NULL) )
     {
         // VS: YDEV is corrent, it should *not* be XDEV, because font's are
         //     only scaled according to m_scaleY
@@ -463,7 +455,7 @@ void wxDC::DoGetTextExtent(const wxString& string, wxCoord *x, wxCoord *y,
         if ( descent )
         {
             int d;
-            if ( DFB_CALL( f->GetDescender(f, &d) ) )
+            if ( f->GetDescender(&d) )
                 *descent = YDEV2LOGREL(-d);
             else
                 *descent = 0;
@@ -614,7 +606,7 @@ void wxDC::DoGetSize(int *w, int *h) const
 {
     wxCHECK_RET( Ok(), wxT("invalid dc") );
 
-    DFB_CALL( m_surface->GetSize(m_surface, w, h) );
+    m_surface->GetSize(w, h);
 }
 
 void wxDC::DoGetSizeMM(int *width, int *height) const