// RCS-ID: $Id$
// Copyright: (c) 1998-2005 Robert Roebling
// (c) 2005-2009 Vadim Zeitlin
-// License: wxWindows licence
+// Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////////
// For compilers that support precompilation, includes "wx/wx.h".
#include "wx/wfstream.h"
#include "wx/quantize.h"
#include "wx/stopwatch.h"
+#include "wx/versioninfo.h"
#if wxUSE_CLIPBOARD
#include "wx/dataobj.h"
int numImages = 1)
{
if ( !wxFrame::Create(parent, wxID_ANY,
- wxString::Format(_T("Image from %s"), desc),
+ wxString::Format(wxT("Image from %s"), desc),
wxDefaultPosition, wxDefaultSize,
wxDEFAULT_FRAME_STYLE | wxFULL_REPAINT_ON_RESIZE) )
return false;
wxMenu *menu = new wxMenu;
menu->Append(wxID_SAVE);
menu->AppendSeparator();
- menu->AppendCheckItem(ID_PAINT_BG, _T("&Paint background"),
+ menu->AppendCheckItem(ID_PAINT_BG, wxT("&Paint background"),
"Uncheck this for transparent images");
menu->AppendSeparator();
- menu->Append(ID_RESIZE, _T("&Fit to window\tCtrl-F"));
+ menu->Append(ID_RESIZE, wxT("&Fit to window\tCtrl-F"));
menu->Append(wxID_ZOOM_IN, "Zoom &in\tCtrl-+");
menu->Append(wxID_ZOOM_OUT, "Zoom &out\tCtrl--");
menu->Append(wxID_ZOOM_100, "Reset zoom to &100%\tCtrl-1");
menu->AppendSeparator();
- menu->Append(ID_ROTATE_LEFT, _T("Rotate &left\tCtrl-L"));
- menu->Append(ID_ROTATE_RIGHT, _T("Rotate &right\tCtrl-R"));
+ menu->Append(ID_ROTATE_LEFT, wxT("Rotate &left\tCtrl-L"));
+ menu->Append(ID_ROTATE_RIGHT, wxT("Rotate &right\tCtrl-R"));
wxMenuBar *mbar = new wxMenuBar;
- mbar->Append(menu, _T("&Image"));
+ mbar->Append(menu, wxT("&Image"));
SetMenuBar(mbar);
mbar->Check(ID_PAINT_BG, true);
wxPaintDC dc(this);
if ( GetMenuBar()->IsChecked(ID_PAINT_BG) )
- ClearBackground();
+ dc.Clear();
dc.SetUserScale(m_zoom, m_zoom);
wxEmptyString,
(const wxChar *)NULL,
wxT("BMP files (*.bmp)|*.bmp|")
+#if wxUSE_LIBPNG
wxT("PNG files (*.png)|*.png|")
+#endif
+#if wxUSE_LIBJPEG
wxT("JPEG files (*.jpg)|*.jpg|")
+#endif
+#if wxUSE_GIF
wxT("GIF files (*.gif)|*.gif|")
+#endif
+#if wxUSE_LIBTIFF
wxT("TIFF files (*.tif)|*.tif|")
+#endif
+#if wxUSE_PCX
wxT("PCX files (*.pcx)|*.pcx|")
+#endif
wxT("ICO files (*.ico)|*.ico|")
wxT("CUR files (*.cur)|*.cur"),
wxFD_SAVE,
wxFileName::SplitPath(savefilename, NULL, NULL, &extension);
bool saved = false;
- if ( extension == _T("bmp") )
+ if ( extension == wxT("bmp") )
{
static const int bppvalues[] =
{
const wxString bppchoices[] =
{
- _T("1 bpp color"),
- _T("1 bpp B&W"),
- _T("4 bpp color"),
- _T("8 bpp color"),
- _T("8 bpp greyscale"),
- _T("8 bpp red"),
- _T("8 bpp own palette"),
- _T("24 bpp")
+ wxT("1 bpp color"),
+ wxT("1 bpp B&W"),
+ wxT("4 bpp color"),
+ wxT("8 bpp color"),
+ wxT("8 bpp greyscale"),
+ wxT("8 bpp red"),
+ wxT("8 bpp own palette"),
+ wxT("24 bpp")
};
- int bppselection = wxGetSingleChoiceIndex(_T("Set BMP BPP"),
- _T("Image sample: save file"),
+ int bppselection = wxGetSingleChoiceIndex(wxT("Set BMP BPP"),
+ wxT("Image sample: save file"),
WXSIZEOF(bppchoices),
bppchoices,
this);
}
}
}
- else if ( extension == _T("png") )
+#if wxUSE_LIBPNG
+ else if ( extension == wxT("png") )
{
static const int pngvalues[] =
{
const wxString pngchoices[] =
{
- _T("Colour 8bpp"),
- _T("Colour 16bpp"),
- _T("Grey 8bpp"),
- _T("Grey 16bpp"),
- _T("Grey red 8bpp"),
- _T("Grey red 16bpp"),
+ wxT("Colour 8bpp"),
+ wxT("Colour 16bpp"),
+ wxT("Grey 8bpp"),
+ wxT("Grey 16bpp"),
+ wxT("Grey red 8bpp"),
+ wxT("Grey red 16bpp"),
};
- int sel = wxGetSingleChoiceIndex(_T("Set PNG format"),
- _T("Image sample: save file"),
+ int sel = wxGetSingleChoiceIndex(wxT("Set PNG format"),
+ wxT("Image sample: save file"),
WXSIZEOF(pngchoices),
pngchoices,
this);
// these values are taken from OptiPNG with -o3 switch
const wxString compressionChoices[] =
{
- _T("compression = 9, memory = 8, strategy = 0, filter = 0"),
- _T("compression = 9, memory = 9, strategy = 0, filter = 0"),
- _T("compression = 9, memory = 8, strategy = 1, filter = 0"),
- _T("compression = 9, memory = 9, strategy = 1, filter = 0"),
- _T("compression = 1, memory = 8, strategy = 2, filter = 0"),
- _T("compression = 1, memory = 9, strategy = 2, filter = 0"),
- _T("compression = 9, memory = 8, strategy = 0, filter = 5"),
- _T("compression = 9, memory = 9, strategy = 0, filter = 5"),
- _T("compression = 9, memory = 8, strategy = 1, filter = 5"),
- _T("compression = 9, memory = 9, strategy = 1, filter = 5"),
- _T("compression = 1, memory = 8, strategy = 2, filter = 5"),
- _T("compression = 1, memory = 9, strategy = 2, filter = 5"),
+ wxT("compression = 9, memory = 8, strategy = 0, filter = 0"),
+ wxT("compression = 9, memory = 9, strategy = 0, filter = 0"),
+ wxT("compression = 9, memory = 8, strategy = 1, filter = 0"),
+ wxT("compression = 9, memory = 9, strategy = 1, filter = 0"),
+ wxT("compression = 1, memory = 8, strategy = 2, filter = 0"),
+ wxT("compression = 1, memory = 9, strategy = 2, filter = 0"),
+ wxT("compression = 9, memory = 8, strategy = 0, filter = 5"),
+ wxT("compression = 9, memory = 9, strategy = 0, filter = 5"),
+ wxT("compression = 9, memory = 8, strategy = 1, filter = 5"),
+ wxT("compression = 9, memory = 9, strategy = 1, filter = 5"),
+ wxT("compression = 1, memory = 8, strategy = 2, filter = 5"),
+ wxT("compression = 1, memory = 9, strategy = 2, filter = 5"),
};
- int sel = wxGetSingleChoiceIndex(_T("Select compression option (Cancel to use default)\n"),
- _T("PNG Compression Options"),
+ int sel = wxGetSingleChoiceIndex(wxT("Select compression option (Cancel to use default)\n"),
+ wxT("PNG Compression Options"),
WXSIZEOF(compressionChoices),
compressionChoices,
this);
}
}
}
- else if ( extension == _T("cur") )
+#endif // wxUSE_LIBPNG
+ else if ( extension == wxT("cur") )
{
image.Rescale(32,32);
image.SetOption(wxIMAGE_OPTION_CUR_HOTSPOT_X, 0);
wxImage img(m_bitmap.ConvertToImage());
img = img.Rotate(angle, wxPoint(img.GetWidth() / 2, img.GetHeight() / 2));
- if ( !img.Ok() )
+ if ( !img.IsOk() )
{
- wxLogWarning(_T("Rotation failed"));
+ wxLogWarning(wxT("Rotation failed"));
return;
}
void UpdateStatusBar()
{
- wxLogStatus(this, _T("Image size: (%d, %d), zoom %.2f"),
+ wxLogStatus(this, wxT("Image size: (%d, %d), zoom %.2f"),
m_bitmap.GetWidth(),
m_bitmap.GetHeight(),
m_zoom);
};
MyRawBitmapFrame(wxFrame *parent)
- : wxFrame(parent, wxID_ANY, _T("Raw bitmaps (how exciting)")),
+ : wxFrame(parent, wxID_ANY, wxT("Raw bitmaps (how exciting)")),
m_bitmap(SIZE, SIZE, 24),
m_alphaBitmap(SIZE, SIZE, 32)
{
wxAlphaPixelData data( m_alphaBitmap, wxPoint(0,0), wxSize(SIZE, SIZE) );
if ( !data )
{
- wxLogError(_T("Failed to gain raw access to bitmap data"));
+ wxLogError(wxT("Failed to gain raw access to bitmap data"));
return;
}
wxAlphaPixelData::Iterator p(data);
wxSize(REAL_SIZE, REAL_SIZE));
if ( !data )
{
- wxLogError(_T("Failed to gain raw access to bitmap data"));
+ wxLogError(wxT("Failed to gain raw access to bitmap data"));
return;
}
wxNativePixelData data(m_bitmap);
if ( !data )
{
- wxLogError(_T("Failed to gain raw access to bitmap data"));
+ wxLogError(wxT("Failed to gain raw access to bitmap data"));
return;
}
void OnPaint(wxPaintEvent& WXUNUSED(event))
{
wxPaintDC dc( this );
- dc.DrawText(_T("This is alpha and raw bitmap test"), 0, BORDER);
- dc.DrawText(_T("This is alpha and raw bitmap test"), 0, SIZE/2 - BORDER);
- dc.DrawText(_T("This is alpha and raw bitmap test"), 0, SIZE - 2*BORDER);
+ dc.DrawText(wxT("This is alpha and raw bitmap test"), 0, BORDER);
+ dc.DrawText(wxT("This is alpha and raw bitmap test"), 0, SIZE/2 - BORDER);
+ dc.DrawText(wxT("This is alpha and raw bitmap test"), 0, SIZE - 2*BORDER);
dc.DrawBitmap( m_alphaBitmap, 0, 0, true /* use mask */ );
- dc.DrawText(_T("Raw bitmap access without alpha"), 0, SIZE+5);
+ dc.DrawText(wxT("Raw bitmap access without alpha"), 0, SIZE+5);
dc.DrawBitmap( m_bitmap, 0, SIZE+5+dc.GetCharHeight());
}
END_EVENT_TABLE()
MyFrame::MyFrame()
- : wxFrame( (wxFrame *)NULL, wxID_ANY, _T("wxImage sample"),
+ : wxFrame( (wxFrame *)NULL, wxID_ANY, wxT("wxImage sample"),
wxPoint(20, 20), wxSize(950, 700) )
{
SetIcon(wxICON(sample));
wxMenuBar *menu_bar = new wxMenuBar();
wxMenu *menuImage = new wxMenu;
- menuImage->Append( ID_NEW, _T("&Show any image...\tCtrl-O"));
- menuImage->Append( ID_INFO, _T("Show image &information...\tCtrl-I"));
+ menuImage->Append( ID_NEW, wxT("&Show any image...\tCtrl-O"));
+ menuImage->Append( ID_INFO, wxT("Show image &information...\tCtrl-I"));
#ifdef wxHAVE_RAW_BITMAP
menuImage->AppendSeparator();
- menuImage->Append( ID_SHOWRAW, _T("Test &raw bitmap...\tCtrl-R"));
+ menuImage->Append( ID_SHOWRAW, wxT("Test &raw bitmap...\tCtrl-R"));
#endif
menuImage->AppendSeparator();
- menuImage->Append( ID_SHOWTHUMBNAIL, _T("Test &thumbnail...\tCtrl-T"),
+ menuImage->Append( ID_SHOWTHUMBNAIL, wxT("Test &thumbnail...\tCtrl-T"),
"Test scaling the image during load (try with JPEG)");
menuImage->AppendSeparator();
- menuImage->Append( ID_ABOUT, _T("&About..."));
+ menuImage->Append( ID_ABOUT, wxT("&About...\tF1"));
menuImage->AppendSeparator();
- menuImage->Append( ID_QUIT, _T("E&xit\tCtrl-Q"));
- menu_bar->Append(menuImage, _T("&Image"));
+ menuImage->Append( ID_QUIT, wxT("E&xit\tCtrl-Q"));
+ menu_bar->Append(menuImage, wxT("&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"));
+ menuClipboard->Append(wxID_COPY, wxT("&Copy test image\tCtrl-C"));
+ menuClipboard->Append(wxID_PASTE, wxT("&Paste image\tCtrl-V"));
+ menu_bar->Append(menuClipboard, wxT("&Clipboard"));
#endif // wxUSE_CLIPBOARD
SetMenuBar( menu_bar );
// 500 width * 2750 height
m_canvas->SetScrollbars( 10, 10, 50, 275 );
+ m_canvas->SetCursor(wxImage("cursor.png"));
}
void MyFrame::OnQuit( wxCommandEvent &WXUNUSED(event) )
Close( true );
}
+#if wxUSE_ZLIB && wxUSE_STREAMS
+#include "wx/zstream.h"
+#endif
+
void MyFrame::OnAbout( wxCommandEvent &WXUNUSED(event) )
{
- (void)wxMessageBox( "wxImage demo\n"
- "(c) Robert Roebling 1998-2005"
- "(c) Vadim Zeitlin 2005-2009",
+ wxArrayString array;
+
+ array.Add("wxImage demo");
+ array.Add("(c) Robert Roebling 1998-2005");
+ array.Add("(c) Vadim Zeitlin 2005-2009");
+
+ array.Add(wxEmptyString);
+ array.Add("Version of the libraries used:");
+
+#if wxUSE_LIBPNG
+ array.Add(wxPNGHandler::GetLibraryVersionInfo().ToString());
+#endif
+#if wxUSE_LIBJPEG
+ array.Add(wxJPEGHandler::GetLibraryVersionInfo().ToString());
+#endif
+#if wxUSE_LIBTIFF
+ array.Add(wxTIFFHandler::GetLibraryVersionInfo().ToString());
+#endif
+#if wxUSE_ZLIB && wxUSE_STREAMS
+ // zlib is used by libpng
+ array.Add(wxGetZlibVersionInfo().ToString());
+#endif
+ (void)wxMessageBox( wxJoin(array, '\n'),
"About wxImage Demo",
wxICON_INFORMATION | wxOK );
}
wxString filename;
#if wxUSE_FILEDLG
- filename = wxFileSelector(_T("Select image file"));
+ filename = wxLoadFileSelector(wxT("image"), wxEmptyString);
if ( !filename.empty() )
{
if ( !image.LoadFile(filename) )
{
- wxLogError(_T("Couldn't load image from '%s'."), filename.c_str());
+ wxLogError(wxT("Couldn't load image from '%s'."), filename.c_str());
return wxEmptyString;
}
if ( !wxTheClipboard->SetData(dobjBmp) )
{
- wxLogError(_T("Failed to copy bitmap to clipboard"));
+ wxLogError(wxT("Failed to copy bitmap to clipboard"));
}
wxTheClipboard->Close();
wxTheClipboard->Open();
if ( !wxTheClipboard->GetData(dobjBmp) )
{
- wxLogMessage(_T("No bitmap data in the clipboard"));
+ wxLogMessage(wxT("No bitmap data in the clipboard"));
}
else
{
- new MyImageFrame(this, _T("Clipboard"), dobjBmp.GetBitmap());
+ new MyImageFrame(this, wxT("Clipboard"), dobjBmp.GetBitmap());
}
wxTheClipboard->Close();
}
void MyFrame::OnThumbnail( wxCommandEvent &WXUNUSED(event) )
{
#if wxUSE_FILEDLG
- wxString filename = wxFileSelector(_T("Select image file"));
+ wxString filename = wxLoadFileSelector(wxT("image"), wxEmptyString, wxEmptyString, this);
if ( filename.empty() )
return;
wxStopWatch sw;
if ( !image.LoadFile(filename) )
{
- wxLogError(_T("Couldn't load image from '%s'."), filename.c_str());
+ wxLogError(wxT("Couldn't load image from '%s'."), filename.c_str());
return;
}
MyImageFrame * const frame = new MyImageFrame(this, filename, image);
wxLogStatus(frame, "Loaded \"%s\" in %ldms", filename, loadTime);
#else
- wxLogError( _T("Couldn't create file selector dialog") );
+ wxLogError( wxT("Couldn't create file selector dialog") );
return;
#endif // wxUSE_FILEDLG
}