]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/image/image.cpp
fix unused variable warning (part of #10162)
[wxWidgets.git] / samples / image / image.cpp
index a365d34310ec4c4f5128e12747165b0f25d384e9..01af647f11d9fa230abc2a97486378bcb1bcd625 100644 (file)
@@ -26,6 +26,7 @@
 #include "wx/mstream.h"
 #include "wx/wfstream.h"
 #include "wx/quantize.h"
+#include "wx/stopwatch.h"
 
 #if wxUSE_CLIPBOARD
     #include "wx/dataobj.h"
@@ -119,6 +120,8 @@ public:
     void OnAbout( wxCommandEvent &event );
     void OnNewFrame( wxCommandEvent &event );
     void OnImageInfo( wxCommandEvent &event );
+    void OnThumbnail( wxCommandEvent &event );
+
 #ifdef wxHAVE_RAW_BITMAP
     void OnTestRawBitmap( wxCommandEvent &event );
 #endif // wxHAVE_RAW_BITMAP
@@ -149,9 +152,10 @@ private:
 
 enum
 {
-    ID_ROTATE_LEFT = 100,
+    ID_ROTATE_LEFT = wxID_HIGHEST+1,
     ID_ROTATE_RIGHT,
-    ID_RESIZE
+    ID_RESIZE,
+    ID_PAINT_BG
 };
 
 class MyImageFrame : public wxFrame
@@ -167,6 +171,8 @@ public:
         wxMenu *menu = new wxMenu;
         menu->Append(wxID_SAVE);
         menu->AppendSeparator();
+        m_pClearBgMenu = menu->AppendCheckItem(ID_PAINT_BG, _T("&Paint background"));
+        menu->AppendSeparator();
         menu->Append(ID_RESIZE, _T("&Fit to window\tCtrl-F"));
         menu->AppendSeparator();
         menu->Append(ID_ROTATE_LEFT, _T("Rotate &left\tCtrl-L"));
@@ -181,6 +187,8 @@ public:
         SetClientSize(bitmap.GetWidth(), bitmap.GetHeight());
 
         UpdateStatusBar();
+
+//        SetBackgroundColour(*wxWHITE);
     }
 
     void OnEraseBackground(wxEraseEvent& WXUNUSED(event))
@@ -191,6 +199,10 @@ public:
     void OnPaint(wxPaintEvent& WXUNUSED(event))
     {
         wxPaintDC dc(this);
+
+        if (m_pClearBgMenu->IsChecked())
+            ClearBackground();
+
         const wxSize size = GetClientSize();
         dc.DrawBitmap(m_bitmap,
                       (size.x - m_bitmap.GetWidth())/2,
@@ -365,6 +377,7 @@ private:
     }
 
     wxBitmap m_bitmap;
+    wxMenuItem* m_pClearBgMenu;
 
     DECLARE_EVENT_TABLE()
 };
@@ -1110,7 +1123,8 @@ enum
     ID_ABOUT = wxID_ABOUT,
     ID_NEW = 100,
     ID_INFO,
-    ID_SHOWRAW
+    ID_SHOWRAW,
+    ID_SHOWTHUMBNAIL
 };
 
 IMPLEMENT_DYNAMIC_CLASS( MyFrame, wxFrame )
@@ -1120,6 +1134,7 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
   EVT_MENU    (ID_QUIT,  MyFrame::OnQuit)
   EVT_MENU    (ID_NEW,   MyFrame::OnNewFrame)
   EVT_MENU    (ID_INFO,  MyFrame::OnImageInfo)
+  EVT_MENU    (ID_SHOWTHUMBNAIL, MyFrame::OnThumbnail)
 #ifdef wxHAVE_RAW_BITMAP
   EVT_MENU    (ID_SHOWRAW, MyFrame::OnTestRawBitmap)
 #endif
@@ -1144,6 +1159,9 @@ MyFrame::MyFrame()
   menuImage->Append( ID_SHOWRAW, _T("Test &raw bitmap...\tCtrl-R"));
 #endif
   menuImage->AppendSeparator();
+  menuImage->Append( ID_SHOWTHUMBNAIL, _T("Test &thumbnail...\tCtrl-T"),
+                    "Test scaling the image during load (try with JPEG)");
+  menuImage->AppendSeparator();
   menuImage->Append( ID_ABOUT, _T("&About..."));
   menuImage->AppendSeparator();
   menuImage->Append( ID_QUIT, _T("E&xit\tCtrl-Q"));
@@ -1309,3 +1327,37 @@ bool MyApp::OnInit()
 
     return true;
 }
+
+void MyFrame::OnThumbnail( wxCommandEvent &WXUNUSED(event) )
+{
+#if wxUSE_FILEDLG
+    wxString filename = wxFileSelector(_T("Select image file"));
+    if ( filename.empty() )
+        return;
+
+    static const int THUMBNAIL_WIDTH = 320;
+    static const int THUMBNAIL_HEIGHT = 240;
+
+    wxImage image;
+    image.SetOption(wxIMAGE_OPTION_MAX_WIDTH, THUMBNAIL_WIDTH);
+    image.SetOption(wxIMAGE_OPTION_MAX_HEIGHT, THUMBNAIL_HEIGHT);
+
+    wxStopWatch sw;
+    if ( !image.LoadFile(filename) )
+    {
+        wxLogError(_T("Couldn't load image from '%s'."), filename.c_str());
+        return;
+    }
+
+    const long loadTime = sw.Time();
+
+    MyImageFrame * const
+        frame = new MyImageFrame(this, filename, wxBitmap(image));
+    frame->Show();
+    wxLogStatus(frame, "Loaded \"%s\" in %ldms", filename, loadTime);
+#else
+    wxLogError( _T("Couldn't create file selector dialog") );
+    return;
+#endif // wxUSE_FILEDLG
+}
+