]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/image/image.cpp
More wxFileDialog things
[wxWidgets.git] / samples / image / image.cpp
index 5f215657ad42391a238214237a3019548a20bfc7..30bb7eb986d92c1aafde8f1c4c1ce5df337cbbed 100644 (file)
@@ -20,6 +20,8 @@
 
 #include "wx/image.h"
 
+#include "wx/file.h"
+
 // derived classes
 
 class MyFrame;
@@ -36,7 +38,10 @@ public:
     void OnPaint( wxPaintEvent &event );
     void CreateAntiAliasedBitmap();
 
-    wxBitmap  *my_horse;
+    wxBitmap  *my_horse_png;
+    wxBitmap  *my_horse_jpeg;
+    wxBitmap  *my_horse_gif;
+    wxBitmap  *my_horse_bmp;
     wxBitmap  *my_square;
     wxBitmap  *my_anti;
 
@@ -84,7 +89,10 @@ MyCanvas::MyCanvas( wxWindow *parent, wxWindowID id,
                     const wxPoint &pos, const wxSize &size )
         : wxScrolledWindow( parent, id, pos, size, wxSUNKEN_BORDER )
 {
-  my_horse = (wxBitmap*) NULL;
+  my_horse_png = (wxBitmap*) NULL;
+  my_horse_jpeg = (wxBitmap*) NULL;
+  my_horse_gif = (wxBitmap*) NULL;
+  my_horse_bmp = (wxBitmap*) NULL;
   my_square = (wxBitmap*) NULL;
   my_anti = (wxBitmap*) NULL;
 
@@ -99,27 +107,52 @@ MyCanvas::MyCanvas( wxWindow *parent, wxWindowID id,
   dc.DrawRectangle( 0, 0, 100, 100 );
   dc.SelectObject( wxNullBitmap );
 
-  wxString dir("");
-
-#ifdef __WXGTK__
-  dir = wxString("../");
-#endif
+  // try to find the directory with our images
+  wxString dir;
+  if ( wxFile::Exists("./horse.png") )
+      dir = "./";
+  else if ( wxFile::Exists("../horse.png") )
+      dir = "../";
+  else
+      wxLogWarning("Can't find image files in either '.' or '..'!");
 
   wxImage image( bitmap );
-  image.SaveFile( dir + wxString("test.png"), wxBITMAP_TYPE_PNG );
   
-  image.LoadFile( dir + wxString("horse.png"), wxBITMAP_TYPE_PNG );
-  my_horse = new wxBitmap( image.ConvertToBitmap() );
+  if ( !image.SaveFile( dir + wxString("test.png"), wxBITMAP_TYPE_PNG ) )
+      wxLogError("Can't save file");
+  
+  if ( !image.LoadFile( dir + wxString("horse.png"), wxBITMAP_TYPE_PNG ) )
+      wxLogError("Can't load PNG image");
+  else
+    my_horse_png = new wxBitmap( image.ConvertToBitmap() );
+  
+  if ( !image.LoadFile( dir + wxString("horse.jpg"), wxBITMAP_TYPE_JPEG ) )
+      wxLogError("Can't load JPG image");
+  else
+      my_horse_jpeg = new wxBitmap( image.ConvertToBitmap() );
+  
+  if ( !image.LoadFile( dir + wxString("horse.gif"), wxBITMAP_TYPE_GIF ) )
+      wxLogError("Can't load GIF image");
+  else
+    my_horse_gif = new wxBitmap( image.ConvertToBitmap() );
+  
+  if ( !image.LoadFile( dir + wxString("horse.bmp"), wxBITMAP_TYPE_BMP ) )
+      wxLogError("Can't load BMP image");
+  else
+    my_horse_bmp = new wxBitmap( image.ConvertToBitmap() );
   
   image.LoadFile( dir + wxString("test.png"), wxBITMAP_TYPE_PNG );
   my_square = new wxBitmap( image.ConvertToBitmap() );
-
+  
   CreateAntiAliasedBitmap();
 }
 
 MyCanvas::~MyCanvas()
 {
-  delete my_horse;
+  delete my_horse_png;
+  delete my_horse_jpeg;
+  delete my_horse_gif;
+  delete my_horse_bmp;
   delete my_square;
   delete my_anti;
 }
@@ -131,7 +164,7 @@ void MyCanvas::OnPaint( wxPaintEvent &WXUNUSED(event) )
 
   dc.DrawText( "Loaded image", 30, 10 );
   if (my_square && my_square->Ok()) dc.DrawBitmap( *my_square, 30, 30 );
-
+  
   dc.DrawText( "Drawn directly", 150, 10 );
   dc.SetBrush( wxBrush( "orange", wxSOLID ) );
   dc.SetPen( *wxWHITE_PEN );
@@ -139,7 +172,17 @@ void MyCanvas::OnPaint( wxPaintEvent &WXUNUSED(event) )
 
   if (my_anti && my_anti->Ok()) dc.DrawBitmap( *my_anti, 250, 140 );
   
-  if (my_horse && my_horse->Ok()) dc.DrawBitmap( *my_horse, 30, 140 );
+  dc.DrawText( "PNG handler", 30, 135 );
+  if (my_horse_png && my_horse_png->Ok()) dc.DrawBitmap( *my_horse_png, 30, 150 );
+  
+  dc.DrawText( "JPEG handler", 30, 365 );
+  if (my_horse_jpeg && my_horse_jpeg->Ok()) dc.DrawBitmap( *my_horse_jpeg, 30, 380 );
+  
+  dc.DrawText( "GIF handler", 30, 595 );
+  if (my_horse_gif && my_horse_gif->Ok()) dc.DrawBitmap( *my_horse_gif, 30, 610 );
+  
+  dc.DrawText( "BMP handler", 30, 815 );
+  if (my_horse_bmp && my_horse_bmp->Ok()) dc.DrawBitmap( *my_horse_bmp, 30, 830 );
 }
 
 void MyCanvas::CreateAntiAliasedBitmap()
@@ -158,6 +201,7 @@ void MyCanvas::CreateAntiAliasedBitmap()
   dc.DrawText( "And a Rectangle.", 20, 60 );
   
   dc.SetBrush( *wxRED_BRUSH );
+  dc.SetPen( *wxTRANSPARENT_PEN );
   dc.DrawRoundedRectangle( 20, 100, 200, 180, 20 );
   
   wxImage original( bitmap );
@@ -207,11 +251,11 @@ MyFrame::MyFrame()
                   wxPoint(20,20), wxSize(470,360) )
 {
   wxMenu *file_menu = new wxMenu();
-  file_menu->Append( ID_ABOUT, "About..");
-  file_menu->Append( ID_QUIT, "Exit");
+  file_menu->Append( ID_ABOUT, "&About..");
+  file_menu->Append( ID_QUIT, "E&xit");
 
   wxMenuBar *menu_bar = new wxMenuBar();
-  menu_bar->Append(file_menu, "File");
+  menu_bar->Append(file_menu, "&File");
 
   SetMenuBar( menu_bar );
 
@@ -220,7 +264,7 @@ MyFrame::MyFrame()
   SetStatusWidths( 2, widths );
 
   m_canvas = new MyCanvas( this, -1, wxPoint(0,0), wxSize(10,10) );
-  m_canvas->SetScrollbars( 10, 10, 50, 50 );
+  m_canvas->SetScrollbars( 10, 10, 50, 100 );
 }
 
 void MyFrame::OnQuit( wxCommandEvent &WXUNUSED(event) )
@@ -231,6 +275,7 @@ void MyFrame::OnQuit( wxCommandEvent &WXUNUSED(event) )
 void MyFrame::OnAbout( wxCommandEvent &WXUNUSED(event) )
 {
   (void)wxMessageBox( "wxImage demo\n"
+                      "\n"
                       "Robert Roebling (c) 1998",
                       "About wxImage Demo", wxICON_INFORMATION | wxOK );
 }
@@ -249,6 +294,8 @@ bool MyApp::OnInit()
   wxImage::AddHandler( new wxJPEGHandler );
 #endif
 
+  wxImage::AddHandler( new wxGIFHandler );
+
   wxFrame *frame = new MyFrame();
   frame->Show( TRUE );