]> git.saurik.com Git - wxWidgets.git/commitdiff
black now denotes 0 on mono-bitmaps.
authorRobert Roebling <robert@roebling.de>
Sat, 15 Jan 2000 10:39:27 +0000 (10:39 +0000)
committerRobert Roebling <robert@roebling.de>
Sat, 15 Jan 2000 10:39:27 +0000 (10:39 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@5419 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

docs/latex/wx/dc.tex
docs/latex/wx/memorydc.tex
include/wx/gtk/dcmemory.h
include/wx/gtk1/dcmemory.h
samples/image/image.cpp
src/gtk/dcmemory.cpp
src/gtk1/dcmemory.cpp

index 761c1d24f1010d2675a3c215ea488410c55aa6de..3e7e2363414433b524ab02cd33aabc8083cfbb48 100644 (file)
@@ -174,6 +174,11 @@ The arc is drawn in an anticlockwise direction from the start point to the end p
 Draw a bitmap on the device context at the specified point. If {\it transparent} is TRUE and the bitmap has
 a transparency mask, the bitmap will be drawn transparently.
 
+When drawing a mono-bitmap, the current text foreground colour will be used to draw the foreground
+of the bitmap (all bit set to 1), and the current text background colour to draw the background
+(all bits set 0). See also \helpref{SetTextForeground}{wxwindowsettextforeground},
+ \helpref{SetTextForeground}{wxwindowsettextforeground} and \helpref{wxMemoryDC}{wxmemorydc}.
+
 \membersection{wxDC::DrawEllipse}\label{wxdcdrawellipse}
 
 \func{void}{DrawEllipse}{\param{wxCoord}{ x}, \param{wxCoord}{ y}, \param{wxCoord}{ width}, \param{wxCoord}{ height}}
index 9ae8c50927d80be665e6647ac2aec6b224749a1c..fe12b8ce0c26e90e9c393319cea98e6c9ecb27d0 100644 (file)
@@ -1,6 +1,9 @@
 \section{\class{wxMemoryDC}}\label{wxmemorydc}
 
-A memory device context provides a means to draw graphics onto a bitmap.
+A memory device context provides a means to draw graphics onto a bitmap. When
+drawing in to a mono-bitmap, using {\tt wxWHITE}, {\tt wxWHITE_PEN} and {\tt wxWHITE_BRUSH}
+will draw the background colour (i.e. 0) whereas all other colours will draw the
+foreground colour (i.e. 1).
 
 \wxheading{Derived from}
 
index 213b7e4eed79ece85084ecfba87514e2919aa75d..12f106dac6a6adc82d8e05c05c67c815e8d7c998 100644 (file)
@@ -37,6 +37,15 @@ public:
     virtual void SelectObject( const wxBitmap& bitmap );
     void DoGetSize( int *width, int *height ) const;
 
+    // these get reimplemented for mono-bitmaps to behave
+    // more like their Win32 couterparts. They now interpret
+    // wxWHITE, wxWHITE_BRUSH and wxWHITE_PEN as drawing 0
+    // and everything else as drawing 1.
+    virtual void SetPen( const wxPen &pen );
+    virtual void SetBrush( const wxBrush &brush );
+    virtual void SetTextForeground( const wxColour &col );
+    virtual void SetTextBackground( const wxColour &col );
+
     // implementation
     wxBitmap  m_selected;
 
index 213b7e4eed79ece85084ecfba87514e2919aa75d..12f106dac6a6adc82d8e05c05c67c815e8d7c998 100644 (file)
@@ -37,6 +37,15 @@ public:
     virtual void SelectObject( const wxBitmap& bitmap );
     void DoGetSize( int *width, int *height ) const;
 
+    // these get reimplemented for mono-bitmaps to behave
+    // more like their Win32 couterparts. They now interpret
+    // wxWHITE, wxWHITE_BRUSH and wxWHITE_PEN as drawing 0
+    // and everything else as drawing 1.
+    virtual void SetPen( const wxPen &pen );
+    virtual void SetBrush( const wxBrush &brush );
+    virtual void SetTextForeground( const wxColour &col );
+    virtual void SetTextBackground( const wxColour &col );
+
     // implementation
     wxBitmap  m_selected;
 
index 0684031d572163cc27450371012923d9af253726..705797f04393e2bb030c25586ff01b358b50c738 100644 (file)
@@ -271,14 +271,18 @@ void MyCanvas::OnPaint( wxPaintEvent &WXUNUSED(event) )
     }
     dc.SetTextForeground( "BLACK" );
 
-    wxBitmap mono( 30,30,1 );
+    wxBitmap mono( 60,50,1 );
     wxMemoryDC memdc;
     memdc.SelectObject( mono );
     memdc.SetPen( *wxTRANSPARENT_PEN );
-    memdc.SetBrush( *wxBLACK_BRUSH );
-    memdc.DrawRectangle( 0,0,30,30 );
     memdc.SetBrush( *wxWHITE_BRUSH );
-    memdc.DrawRectangle( 5,5,20,20 );
+    memdc.DrawRectangle( 0,0,60,50 );
+    memdc.SetTextForeground( *wxBLACK );
+    memdc.DrawText( "Hi!", 5, 5 );
+    memdc.SetBrush( *wxBLACK_BRUSH );
+    memdc.DrawRectangle( 33,5,20,20 );
+    memdc.SetPen( *wxRED_PEN );
+    memdc.DrawLine( 5, 42, 50, 42 );
     memdc.SelectObject( wxNullBitmap );
     if (mono.Ok())
     {
@@ -390,8 +394,7 @@ void MyFrame::OnQuit( wxCommandEvent &WXUNUSED(event) )
 void MyFrame::OnAbout( wxCommandEvent &WXUNUSED(event) )
 {
   (void)wxMessageBox( "wxImage demo\n"
-                      "\n"
-                      "Robert Roebling (c) 1998",
+                      "Robert Roebling (c) 1998,2000",
                       "About wxImage Demo", wxICON_INFORMATION | wxOK );
 }
 
index 5e81a549335e5aa163c8aa95ec3540a1f7e71d22..27dd0e8e9d531d44ebde4e5f1da27bddabe10d28 100644 (file)
@@ -66,6 +66,66 @@ void wxMemoryDC::SelectObject( const wxBitmap& bitmap )
     }
 }
 
+void wxMemoryDC::SetPen( const wxPen &pen )
+{
+    if (m_selected.Ok() && m_selected.GetBitmap() && (*wxTRANSPARENT_PEN != pen))
+    {
+        if (*wxWHITE_PEN == pen)
+            wxWindowDC::SetPen( *wxBLACK_PEN );
+        else
+            wxWindowDC::SetPen( *wxWHITE_PEN );
+    }
+    else
+    {
+        wxWindowDC::SetPen( pen );
+    }
+}
+
+void wxMemoryDC::SetBrush( const wxBrush &brush )
+{
+    if (m_selected.Ok() && m_selected.GetBitmap() && (*wxTRANSPARENT_BRUSH != brush))
+    {
+        if (*wxWHITE_BRUSH == brush)
+            wxWindowDC::SetBrush( *wxBLACK_BRUSH );
+        else
+            wxWindowDC::SetBrush( *wxWHITE_BRUSH );
+    }
+    else
+    {
+        wxWindowDC::SetBrush( brush );
+    }
+}
+
+void wxMemoryDC::SetTextForeground( const wxColour &col )
+{
+    if (m_selected.Ok() && m_selected.GetBitmap())
+    {
+        if (col == *wxWHITE)
+            wxWindowDC::SetTextForeground( *wxBLACK );
+        else
+            wxWindowDC::SetTextForeground( *wxWHITE );
+    }
+    else
+    {
+        wxWindowDC::SetTextForeground( col );
+    }
+}
+
+void wxMemoryDC::SetTextBackground( const wxColour &col )
+{
+    if (m_selected.Ok() && m_selected.GetBitmap())
+    {
+        if (col == *wxWHITE)
+            wxWindowDC::SetTextBackground( *wxBLACK );
+        else
+            wxWindowDC::SetTextBackground( *wxWHITE );
+    }
+    else
+    {
+        wxWindowDC::SetTextBackground( col );
+    }
+}
+
 void wxMemoryDC::DoGetSize( int *width, int *height ) const
 {
     if (m_selected.Ok())
index 5e81a549335e5aa163c8aa95ec3540a1f7e71d22..27dd0e8e9d531d44ebde4e5f1da27bddabe10d28 100644 (file)
@@ -66,6 +66,66 @@ void wxMemoryDC::SelectObject( const wxBitmap& bitmap )
     }
 }
 
+void wxMemoryDC::SetPen( const wxPen &pen )
+{
+    if (m_selected.Ok() && m_selected.GetBitmap() && (*wxTRANSPARENT_PEN != pen))
+    {
+        if (*wxWHITE_PEN == pen)
+            wxWindowDC::SetPen( *wxBLACK_PEN );
+        else
+            wxWindowDC::SetPen( *wxWHITE_PEN );
+    }
+    else
+    {
+        wxWindowDC::SetPen( pen );
+    }
+}
+
+void wxMemoryDC::SetBrush( const wxBrush &brush )
+{
+    if (m_selected.Ok() && m_selected.GetBitmap() && (*wxTRANSPARENT_BRUSH != brush))
+    {
+        if (*wxWHITE_BRUSH == brush)
+            wxWindowDC::SetBrush( *wxBLACK_BRUSH );
+        else
+            wxWindowDC::SetBrush( *wxWHITE_BRUSH );
+    }
+    else
+    {
+        wxWindowDC::SetBrush( brush );
+    }
+}
+
+void wxMemoryDC::SetTextForeground( const wxColour &col )
+{
+    if (m_selected.Ok() && m_selected.GetBitmap())
+    {
+        if (col == *wxWHITE)
+            wxWindowDC::SetTextForeground( *wxBLACK );
+        else
+            wxWindowDC::SetTextForeground( *wxWHITE );
+    }
+    else
+    {
+        wxWindowDC::SetTextForeground( col );
+    }
+}
+
+void wxMemoryDC::SetTextBackground( const wxColour &col )
+{
+    if (m_selected.Ok() && m_selected.GetBitmap())
+    {
+        if (col == *wxWHITE)
+            wxWindowDC::SetTextBackground( *wxBLACK );
+        else
+            wxWindowDC::SetTextBackground( *wxWHITE );
+    }
+    else
+    {
+        wxWindowDC::SetTextBackground( col );
+    }
+}
+
 void wxMemoryDC::DoGetSize( int *width, int *height ) const
 {
     if (m_selected.Ok())