]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/image/image.cpp
added wxUSE_DEBUG_NEW_ALWAYS to --enable-mem_tracing (quite useless otherwise)
[wxWidgets.git] / samples / image / image.cpp
index 705797f04393e2bb030c25586ff01b358b50c738..b55dcc9eb18d103058614a2d309bb83ad462fa64 100644 (file)
@@ -23,6 +23,7 @@
 #include "wx/file.h"
 
 #include "smile.xbm"
+#include "smile.xpm"
 
 // derived classes
 
@@ -51,6 +52,10 @@ public:
     wxBitmap  *my_square;
     wxBitmap  *my_anti;
 
+protected:
+    wxBitmap m_bmpSmileXpm;
+    wxIcon   m_iconSmileXpm;
+
 private:
     DECLARE_DYNAMIC_CLASS(MyCanvas)
     DECLARE_EVENT_TABLE()
@@ -95,7 +100,9 @@ END_EVENT_TABLE()
 
 MyCanvas::MyCanvas( wxWindow *parent, wxWindowID id,
                     const wxPoint &pos, const wxSize &size )
-        : wxScrolledWindow( parent, id, pos, size, wxSUNKEN_BORDER )
+        : wxScrolledWindow( parent, id, pos, size, wxSUNKEN_BORDER ),
+          m_bmpSmileXpm((const char **) smile_xpm),
+          m_iconSmileXpm((const char **) smile_xpm)
 {
     my_horse_png = (wxBitmap*) NULL;
     my_horse_jpeg = (wxBitmap*) NULL;
@@ -124,7 +131,7 @@ MyCanvas::MyCanvas( wxWindow *parent, wxWindowID id,
     // try to find the directory with our images
     wxString dir;
     if ( wxFile::Exists("./horse.png") )
-        dir = "./";
+        dir = "./";          
     else if ( wxFile::Exists("../horse.png") )
         dir = "../";
     else
@@ -132,6 +139,7 @@ MyCanvas::MyCanvas( wxWindow *parent, wxWindowID id,
 
     wxImage image( bitmap );
 
+#if wxUSE_LIBPNG
     if ( !image.SaveFile( dir + wxString("test.png"), wxBITMAP_TYPE_PNG ) )
         wxLogError("Can't save file");
 
@@ -139,11 +147,14 @@ MyCanvas::MyCanvas( wxWindow *parent, wxWindowID id,
         wxLogError("Can't load PNG image");
     else
         my_horse_png = new wxBitmap( image.ConvertToBitmap() );
+#endif // wxUSE_LIBPNG
 
+#if wxUSE_LIBJPEG
     if ( !image.LoadFile( dir + wxString("horse.jpg") ) )
         wxLogError("Can't load JPG image");
     else
         my_horse_jpeg = new wxBitmap( image.ConvertToBitmap() );
+#endif // wxUSE_LIBJPEG
 
 #if wxUSE_GIF
     if ( !image.LoadFile( dir + wxString("horse.gif") ) )
@@ -178,13 +189,17 @@ MyCanvas::MyCanvas( wxWindow *parent, wxWindowID id,
         my_horse_tiff = new wxBitmap( image.ConvertToBitmap() );
 #endif
 
-    image.LoadFile( dir + wxString("test.png") );
+    image.LoadFile( dir + wxString("test.pcx") );
     my_square = new wxBitmap( image.ConvertToBitmap() );
 
     CreateAntiAliasedBitmap();
 
     my_smile_xbm = new wxBitmap( (const char*)smile_bits, smile_width,
                                  smile_height, 1 );
+
+    // demonstrates XPM automatically using the mask when saving
+    if ( m_bmpSmileXpm.Ok() )
+        m_bmpSmileXpm.SaveFile("saved.xpm", wxBITMAP_TYPE_XPM);
 }
 
 MyCanvas::~MyCanvas()
@@ -274,7 +289,7 @@ void MyCanvas::OnPaint( wxPaintEvent &WXUNUSED(event) )
     wxBitmap mono( 60,50,1 );
     wxMemoryDC memdc;
     memdc.SelectObject( mono );
-    memdc.SetPen( *wxTRANSPARENT_PEN );
+    memdc.SetPen( *wxBLACK_PEN );
     memdc.SetBrush( *wxWHITE_BRUSH );
     memdc.DrawRectangle( 0,0,60,50 );
     memdc.SetTextForeground( *wxBLACK );
@@ -291,7 +306,9 @@ void MyCanvas::OnPaint( wxPaintEvent &WXUNUSED(event) )
         dc.SetTextBackground( "GREEN" );
         dc.DrawBitmap( mono, 30, 1860 );
 
+        dc.SetTextForeground( "BLACK" );
         dc.DrawText( "After wxImage conversion", 150, 1845 );
+        dc.SetTextForeground( "RED" );
         wxImage i( mono );
         i.SetMaskColour( 255,255,255 );
         i.Replace( 0,0,0,
@@ -299,6 +316,19 @@ void MyCanvas::OnPaint( wxPaintEvent &WXUNUSED(event) )
                wxRED_PEN->GetColour().Green(),
                wxRED_PEN->GetColour().Blue() );
         dc.DrawBitmap( i.ConvertToBitmap(), 150, 1860, TRUE );
+        dc.SetTextForeground( "BLACK" );
+    }
+
+    dc.DrawText("XPM bitmap", 30, 1950);
+    if ( m_bmpSmileXpm.Ok() )
+    {
+        dc.DrawBitmap(m_bmpSmileXpm, 30, 1975, TRUE);
+    }
+
+    dc.DrawText("XPM icon", 150, 1950);
+    if ( m_iconSmileXpm.Ok() )
+    {
+        dc.DrawIcon(m_iconSmileXpm, 150, 1975);
     }
 }
 
@@ -382,8 +412,8 @@ MyFrame::MyFrame()
 
   m_canvas = new MyCanvas( this, -1, wxPoint(0,0), wxSize(10,10) );
 
-  // 500 width * 1900 height
-  m_canvas->SetScrollbars( 10, 10, 50, 200 );
+  // 500 width * 2100 height
+  m_canvas->SetScrollbars( 10, 10, 50, 210 );
 }
 
 void MyFrame::OnQuit( wxCommandEvent &WXUNUSED(event) )