X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c801d85f158c4cba50b588807daabdcbd0ed3853..8ed57d9312ecf5ad792f011e2384a86b92001c55:/samples/png/pngdemo.cpp diff --git a/samples/png/pngdemo.cpp b/samples/png/pngdemo.cpp index 0106b34ed9..d97f4058dd 100644 --- a/samples/png/pngdemo.cpp +++ b/samples/png/pngdemo.cpp @@ -20,14 +20,14 @@ #pragma hdrstop #endif -#ifdef __WINDOWS__ +#ifdef __WXMSW__ #include #endif #include "pngdemo.h" -MyFrame *frame = NULL; -wxBitmap *g_TestBitmap = NULL; +MyFrame *frame = (MyFrame *) NULL; +wxBitmap *g_TestBitmap = (wxBitmap *) NULL; IMPLEMENT_APP(MyApp) @@ -37,12 +37,12 @@ MyApp::MyApp() bool MyApp::OnInit(void) { -#ifdef __WINDOWS__ +#ifdef __WXMSW__ wxBitmap::AddHandler(new wxPNGFileHandler); #endif // Create the main frame window - frame = new MyFrame(NULL, "wxPNGBitmap Demo", wxPoint(0, 0), wxSize(300, 300)); + frame = new MyFrame((wxFrame *) NULL, "wxPNGBitmap Demo", wxPoint(0, 0), wxSize(300, 300)); // Give it a status line frame->CreateStatusBar(2); @@ -52,6 +52,7 @@ bool MyApp::OnInit(void) wxMenu *help_menu = new wxMenu; file_menu->Append(PNGDEMO_LOAD_FILE, "&Load file", "Load file"); + file_menu->Append(PNGDEMO_SAVE_FILE, "&Save file", "Save file"); file_menu->Append(PNGDEMO_QUIT, "E&xit", "Quit program"); help_menu->Append(PNGDEMO_ABOUT, "&About", "About PNG demo"); @@ -80,30 +81,58 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_MENU(PNGDEMO_QUIT, MyFrame::OnQuit) EVT_MENU(PNGDEMO_ABOUT, MyFrame::OnAbout) EVT_MENU(PNGDEMO_LOAD_FILE, MyFrame::OnLoadFile) + EVT_MENU(PNGDEMO_SAVE_FILE, MyFrame::OnSaveFile) END_EVENT_TABLE() // Define my frame constructor MyFrame::MyFrame(wxFrame *frame, const wxString& title, const wxPoint& pos, const wxSize& size): wxFrame(frame, -1, title, pos, size) { - canvas = NULL; + canvas = (MyCanvas *) NULL; } -void MyFrame::OnQuit(wxCommandEvent& event) +void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event)) { Close(TRUE); } -void MyFrame::OnAbout(wxCommandEvent& event) +void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event)) { (void)wxMessageBox("PNG demo\nJulian Smart (c) 1998", "About PNG Demo", wxOK); } -void MyFrame::OnLoadFile(wxCommandEvent& event) +void MyFrame::OnSaveFile(wxCommandEvent& WXUNUSED(event)) +{ + char *f = wxFileSelector( "Save Image", (const char *)NULL, (const char *)NULL, + "png", "PNG files (*.png)|*.png" ); + + if (!f) return; + + wxBitmap *backstore = new wxBitmap( 150, 150 ); + + wxMemoryDC memDC; + memDC.SelectObject( *backstore ); + memDC.Clear(); + memDC.SetBrush( *wxBLACK_BRUSH ); + memDC.SetPen( *wxWHITE_PEN ); + memDC.DrawRectangle( 0, 0, 150, 150 ); + memDC.SetPen( *wxBLACK_PEN ); + memDC.DrawLine( 0, 0, 0, 10 ); + memDC.SetTextForeground( *wxWHITE ); + memDC.DrawText( "This is a memory dc.", 10, 10 ); + + memDC.SelectObject( wxNullBitmap ); + + backstore->SaveFile( f, wxBITMAP_TYPE_PNG, (wxPalette*)NULL ); + + delete backstore; +} + +void MyFrame::OnLoadFile(wxCommandEvent& WXUNUSED(event)) { // Show file selector. - char *f = wxFileSelector("Open Image", NULL, NULL,"png", + char *f = wxFileSelector("Open Image", (const char *) NULL, (const char *) NULL,"png", "PNG files (*.png)|*.png"); if (!f) @@ -115,7 +144,7 @@ void MyFrame::OnLoadFile(wxCommandEvent& event) if (!g_TestBitmap->Ok()) { delete g_TestBitmap; - g_TestBitmap = NULL; + g_TestBitmap = (wxBitmap *) NULL; } canvas->Refresh(); @@ -136,7 +165,7 @@ MyCanvas::~MyCanvas(void) } // Define the repainting behaviour -void MyCanvas::OnPaint(wxPaintEvent& event) +void MyCanvas::OnPaint(wxPaintEvent& WXUNUSED(event)) { wxPaintDC dc(this); dc.SetPen(wxRED_PEN); @@ -159,7 +188,7 @@ void MyCanvas::OnPaint(wxPaintEvent& event) // Normal, non-transparent blitting dc.Blit(20, 20, g_TestBitmap->GetWidth(), g_TestBitmap->GetHeight(), & memDC, 0, 0, wxCOPY, FALSE); - memDC.SelectObject(NULL); + memDC.SelectObject(wxNullBitmap); } if ( g_TestBitmap && g_TestBitmap->Ok() ) @@ -171,7 +200,7 @@ void MyCanvas::OnPaint(wxPaintEvent& event) dc.Blit(20 + g_TestBitmap->GetWidth() + 20, 20, g_TestBitmap->GetWidth(), g_TestBitmap->GetHeight(), & memDC, 0, 0, wxCOPY, TRUE); - memDC.SelectObject(NULL); + memDC.SelectObject(wxNullBitmap); } }