wxBitmap *my_square;
wxBitmap *my_anti;
+ wxBitmap *my_horse_asciigrey_pnm;
+ wxBitmap *my_horse_rawgrey_pnm;
+
int xH, yH ;
int m_ani_images ;
wxT(""),
wxT(""),
(const wxChar *)NULL,
- wxT("BMP files (*.bmp)|*.bmp|")
- wxT("PNG files (*.png)|*.png|")
- wxT("JPEG files (*.jpg)|*.jpg|")
- wxT("GIF files (*.gif)|*.gif|")
- wxT("TIFF files (*.tif)|*.tif|")
- wxT("PCX files (*.pcx)|*.pcx|")
- wxT("ICO files (*.ico)|*.ico|")
- wxT("CUR files (*.cur)|*.cur"),
+ wxT("BMP files (*.bmp)|*.bmp|")
+ wxT("PNG files (*.png)|*.png|")
+ wxT("JPEG files (*.jpg)|*.jpg|")
+ wxT("GIF files (*.gif)|*.gif|")
+ wxT("TIFF files (*.tif)|*.tif|")
+ wxT("PCX files (*.pcx)|*.pcx|")
+ wxT("ICO files (*.ico)|*.ico|")
+ wxT("CUR files (*.cur)|*.cur"),
wxSAVE,
this);
wxBMP_24BPP
};
- static const wxString bppchoices[] =
+ const wxString bppchoices[] =
{
_T("1 bpp color"),
_T("1 bpp B&W"),
cmap[i] = (unsigned char)i;
image.SetPalette(wxPalette(256, cmap, cmap, cmap));
- delete cmap;
+ delete[] cmap;
}
}
}
wxPNG_TYPE_GREY_RED,
};
- static const wxString pngchoices[] =
+ const wxString pngchoices[] =
{
_T("Colour 8bpp"),
_T("Colour 16bpp"),
return;
}
-// data.UseAlpha();
+ data.UseAlpha();
Data::Iterator p(data);
for ( int x = 0; x < REAL_SIZE; ++x )
{
- p.Red() = r;
- p.Green() = g;
- p.Blue() = b;
- p.Alpha() = (Data::Iterator::ChannelType)((x*255.)/REAL_SIZE);
+ // note that RGB must be premultiplied by alpha
+ unsigned a = (Data::Iterator::ChannelType)((x*255.)/REAL_SIZE);
+ p.Red() = r * a / 256;
+ p.Green() = g * a / 256;
+ p.Blue() = b * a / 256;
+ p.Alpha() = a;
++p; // same as p.OffsetX(1)
}
my_square = (wxBitmap*) NULL;
my_anti = (wxBitmap*) NULL;
+ my_horse_asciigrey_pnm = (wxBitmap*) NULL;
+ my_horse_rawgrey_pnm = (wxBitmap*) NULL;
+
m_ani_images = 0 ;
SetBackgroundColour(* wxWHITE);
wxLogError(wxT("Can't load PNM image"));
else
my_horse_pnm = new wxBitmap( image );
+
+ image.Destroy();
+
+ if ( !image.LoadFile( dir + _T("horse_ag.pnm"), wxBITMAP_TYPE_PNM ) )
+ wxLogError(wxT("Can't load PNM image"));
+ else
+ my_horse_asciigrey_pnm = new wxBitmap( image );
+
+ image.Destroy();
+
+ if ( !image.LoadFile( dir + _T("horse_rg.pnm"), wxBITMAP_TYPE_PNM ) )
+ wxLogError(wxT("Can't load PNM image"));
+ else
+ my_horse_rawgrey_pnm = new wxBitmap( image );
#endif
#if wxUSE_LIBTIFF
delete my_smile_xbm;
delete my_square;
delete my_anti;
+ delete my_horse_asciigrey_pnm;
+ delete my_horse_rawgrey_pnm;
}
void MyCanvas::OnPaint( wxPaintEvent &WXUNUSED(event) )
if (my_horse_pnm && my_horse_pnm->Ok())
dc.DrawBitmap( *my_horse_pnm, 30, 1300 );
+ dc.DrawText( _T("PNM handler (ascii grey)"), 280, 1285 );
+ if (my_horse_asciigrey_pnm && my_horse_asciigrey_pnm->Ok())
+ dc.DrawBitmap( *my_horse_asciigrey_pnm, 280, 1300 );
+
+ dc.DrawText( _T("PNM handler (raw grey)"), 530, 1285 );
+ if (my_horse_rawgrey_pnm && my_horse_rawgrey_pnm->Ok())
+ dc.DrawBitmap( *my_horse_rawgrey_pnm, 530, 1300 );
+
dc.DrawText( _T("TIFF handler"), 30, 1515 );
if (my_horse_tiff && my_horse_tiff->Ok())
dc.DrawBitmap( *my_horse_tiff, 30, 1530 );
enum
{
- ID_QUIT = 108,
- ID_ABOUT,
- ID_NEW,
- ID_SHOWRAW
+ ID_QUIT = wxID_EXIT,
+ ID_ABOUT = wxID_ABOUT,
+ ID_NEW = 100,
+ ID_SHOWRAW = 101
};
IMPLEMENT_DYNAMIC_CLASS( MyFrame, wxFrame )