]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/image/image.cpp
version support
[wxWidgets.git] / samples / image / image.cpp
index e49cb5a282210dc5eac4acc52576cea78655ab47..703ef304c418b69a94adb7b1a1ab15206a53c111 100644 (file)
 #include "wx/wfstream.h"
 #include "wx/quantize.h"
 
+#if wxUSE_CLIPBOARD
+    #include "wx/dataobj.h"
+    #include "wx/clipbrd.h"
+#endif // wxUSE_CLIPBOARD
+
 #include "smile.xbm"
 
 #if !defined(__WINDOWS__) || wxUSE_XPM_IN_MSW
     #include "smile.xpm"
 #endif
 
-#define wxHAVE_RAW_BITMAP
+#if defined(__WXMSW__)
+    #define wxHAVE_RAW_BITMAP
+#endif
 
 // derived classes
 
@@ -120,6 +127,11 @@ public:
 #endif // wxHAVE_RAW_BITMAP
     void OnQuit( wxCommandEvent &event );
 
+#if wxUSE_CLIPBOARD
+    void OnCopy(wxCommandEvent& event);
+    void OnPaste(wxCommandEvent& event);
+#endif // wxUSE_CLIPBOARD
+
     MyCanvas         *m_canvas;
 
 private:
@@ -133,7 +145,7 @@ public:
     MyImageFrame(wxFrame *parent, const wxBitmap& bitmap)
         : wxFrame(parent, -1, _T("Double click to save"),
                   wxDefaultPosition, wxDefaultSize,
-                  wxCAPTION | wxSYSTEM_MENU),
+                  wxCAPTION | wxSYSTEM_MENU | wxCLOSE_BOX),
                   m_bitmap(bitmap)
     {
         SetClientSize(bitmap.GetWidth(), bitmap.GetHeight());
@@ -529,9 +541,7 @@ MyCanvas::MyCanvas( wxWindow *parent, wxWindowID id,
         else    
             my_horse_ani [i] = wxBitmap( image );
     }
-    
-    
-#endif
+#endif // wxUSE_ICO_CUR
 
     image.Destroy();
 
@@ -803,24 +813,36 @@ BEGIN_EVENT_TABLE(MyFrame,wxFrame)
 #ifdef wxHAVE_RAW_BITMAP
   EVT_MENU    (ID_SHOWRAW,  MyFrame::OnTestRawBitmap)
 #endif
+
+#if wxUSE_CLIPBOARD
+    EVT_MENU(wxID_COPY, MyFrame::OnCopy)
+    EVT_MENU(wxID_PASTE, MyFrame::OnPaste)
+#endif // wxUSE_CLIPBOARD
 END_EVENT_TABLE()
 
 MyFrame::MyFrame()
        : wxFrame( (wxFrame *)NULL, -1, _T("wxImage sample"),
                   wxPoint(20,20), wxSize(470,360) )
 {
-  wxMenu *file_menu = new wxMenu();
-  file_menu->Append( ID_NEW, _T("&Show image...\tCtrl-O"));
+  wxMenuBar *menu_bar = new wxMenuBar();
+
+  wxMenu *menuImage = new wxMenu;
+  menuImage->Append( ID_NEW, _T("&Show any image...\tCtrl-O"));
 #ifdef wxHAVE_RAW_BITMAP
-  file_menu->Append( ID_SHOWRAW, _T("Test &raw bitmap...\tCtrl-R"));
+  menuImage->Append( ID_SHOWRAW, _T("Test &raw bitmap...\tCtrl-R"));
 #endif
-  file_menu->AppendSeparator();
-  file_menu->Append( ID_ABOUT, _T("&About..."));
-  file_menu->AppendSeparator();
-  file_menu->Append( ID_QUIT, _T("E&xit\tCtrl-Q"));
-
-  wxMenuBar *menu_bar = new wxMenuBar();
-  menu_bar->Append(file_menu, _T("&File"));
+  menuImage->AppendSeparator();
+  menuImage->Append( ID_ABOUT, _T("&About..."));
+  menuImage->AppendSeparator();
+  menuImage->Append( ID_QUIT, _T("E&xit\tCtrl-Q"));
+  menu_bar->Append(menuImage, _T("&Image"));
+
+#if wxUSE_CLIPBOARD
+  wxMenu *menuClipboard = new wxMenu;
+  menuClipboard->Append(wxID_COPY, _T("&Copy test image\tCtrl-C"));
+  menuClipboard->Append(wxID_PASTE, _T("&Paste image\tCtrl-V"));
+  menu_bar->Append(menuClipboard, _T("&Clipboard"));
+#endif // wxUSE_CLIPBOARD
 
   SetMenuBar( menu_bar );
 
@@ -872,6 +894,34 @@ void MyFrame::OnTestRawBitmap( wxCommandEvent &event )
 
 #endif // wxHAVE_RAW_BITMAP
 
+#if wxUSE_CLIPBOARD
+
+void MyFrame::OnCopy(wxCommandEvent& WXUNUSED(event))
+{
+    wxBitmapDataObject *dobjBmp = new wxBitmapDataObject;
+    dobjBmp->SetBitmap(*m_canvas->my_horse_png);
+
+    if ( !wxTheClipboard->SetData(dobjBmp) )
+    {
+        wxLogError(_T("Failed to copy bitmap to clipboard"));
+    }
+}
+
+void MyFrame::OnPaste(wxCommandEvent& WXUNUSED(event))
+{
+    wxBitmapDataObject dobjBmp;
+    if ( !wxTheClipboard->GetData(dobjBmp) )
+    {
+        wxLogMessage(_T("No bitmap data in the clipboard"));
+    }
+    else
+    {
+        (new MyImageFrame(this, dobjBmp.GetBitmap()))->Show();
+    }
+}
+
+#endif // wxUSE_CLIPBOARD
+
 //-----------------------------------------------------------------------------
 // MyApp
 //-----------------------------------------------------------------------------