void OnPaint( wxPaintEvent &event );
wxBitmap *my_horse;
+ wxBitmap *my_square;
DECLARE_EVENT_TABLE()
};
wxMemoryDC dc;
dc.SelectObject( bitmap );
dc.SetBrush( wxBrush( "orange", wxSOLID ) );
- dc.SetPen( *wxTRANSPARENT_PEN );
+ dc.SetPen( *wxWHITE_PEN );
dc.DrawRectangle( 0, 0, 100, 100 );
dc.SelectObject( wxNullBitmap );
image = bitmap.ConvertToImage();
image.SaveFile( "../test.png", wxBITMAP_TYPE_PNG );
- image.LoadFile( "../test.png", wxBITMAP_TYPE_PNG );
+ image.LoadFile( "../horse.png", wxBITMAP_TYPE_PNG );
my_horse = new wxBitmap( image );
+
+ image.LoadFile( "../test.png", wxBITMAP_TYPE_PNG );
+ my_square = new wxBitmap( image );
}
MyCanvas::~MyCanvas(void)
{
delete my_horse;
+ delete my_square;
}
void MyCanvas::OnPaint( wxPaintEvent &WXUNUSED(event) )
PrepareDC( dc );
dc.DrawText( "Loaded image", 30, 100 );
- if (my_horse->Ok()) dc.DrawBitmap( *my_horse, 30, 120 );
+ if (my_square->Ok()) dc.DrawBitmap( *my_square, 30, 120 );
dc.DrawText( "Drawn directly", 150, 100 );
dc.SetBrush( wxBrush( "orange", wxSOLID ) );
- dc.SetPen( *wxTRANSPARENT_PEN );
+ dc.SetPen( *wxWHITE_PEN );
dc.DrawRectangle( 150, 120, 100, 100 );
+
+ if (my_horse->Ok()) dc.DrawBitmap( *my_horse, 30, 240 );
}
// MyFrame
gdk_window_get_size( M_BMPDATA->m_pixmap, &(M_BMPDATA->m_width), &(M_BMPDATA->m_height) );
M_BMPDATA->m_bpp = gdk_window_get_visual( parent )->depth; // ?
-
if (wxTheBitmapList) wxTheBitmapList->AddBitmap(this);
}
// Retrieve depth
- M_BMPDATA->m_bpp = data_image->depth;
-
- int render_depth = 8;
- if (M_BMPDATA->m_bpp > 8) render_depth = M_BMPDATA->m_bpp;
-
+ GdkVisual *visual = gdk_window_get_visual( M_BMPDATA->m_pixmap );
+ if (visual == NULL) visual = gdk_window_get_visual( (GdkWindow*) &gdk_root_parent );
+ int bpp = visual->depth;
+ if ((bpp == 16) && (visual->red_mask == 0xfc00)) bpp = 15;
+ if (bpp < 8) bpp = 8;
+
// Render
enum byte_order { RGB, RBG, BRG, BGR, GRB, GBR };
byte_order b_o = RGB;
- if (render_depth >= 24)
+ if (bpp >= 24)
{
GdkVisual *visual = gdk_visual_get_system();
if ((visual->red_mask > visual->green_mask) && (visual->green_mask > visual->blue_mask)) b_o = RGB;
gdk_image_put_pixel( mask_image, x, y, 0 );
}
- switch (render_depth)
+ switch (bpp)
{
case 8:
{
GdkVisual *visual = gdk_window_get_visual( M_BMPDATA->m_pixmap );
if (visual == NULL) visual = gdk_window_get_visual( (GdkWindow*) &gdk_root_parent );
int bpp = visual->depth;
-
+ if ((bpp == 16) && (visual->red_mask == 0xfc00)) bpp = 15;
+
GdkColormap *cmap = gtk_widget_get_default_colormap();
long pos = 0;
M_COLDATA->m_hasPixel = gdk_color_alloc( cmap, &M_COLDATA->m_color );
}
+ int p = M_COLDATA->m_color.pixel;
+
M_COLDATA->m_colormap = cmap;
}
gdk_window_get_size( M_BMPDATA->m_pixmap, &(M_BMPDATA->m_width), &(M_BMPDATA->m_height) );
M_BMPDATA->m_bpp = gdk_window_get_visual( parent )->depth; // ?
-
if (wxTheBitmapList) wxTheBitmapList->AddBitmap(this);
}
// Retrieve depth
- M_BMPDATA->m_bpp = data_image->depth;
-
- int render_depth = 8;
- if (M_BMPDATA->m_bpp > 8) render_depth = M_BMPDATA->m_bpp;
-
+ GdkVisual *visual = gdk_window_get_visual( M_BMPDATA->m_pixmap );
+ if (visual == NULL) visual = gdk_window_get_visual( (GdkWindow*) &gdk_root_parent );
+ int bpp = visual->depth;
+ if ((bpp == 16) && (visual->red_mask == 0xfc00)) bpp = 15;
+ if (bpp < 8) bpp = 8;
+
// Render
enum byte_order { RGB, RBG, BRG, BGR, GRB, GBR };
byte_order b_o = RGB;
- if (render_depth >= 24)
+ if (bpp >= 24)
{
GdkVisual *visual = gdk_visual_get_system();
if ((visual->red_mask > visual->green_mask) && (visual->green_mask > visual->blue_mask)) b_o = RGB;
gdk_image_put_pixel( mask_image, x, y, 0 );
}
- switch (render_depth)
+ switch (bpp)
{
case 8:
{
GdkVisual *visual = gdk_window_get_visual( M_BMPDATA->m_pixmap );
if (visual == NULL) visual = gdk_window_get_visual( (GdkWindow*) &gdk_root_parent );
int bpp = visual->depth;
-
+ if ((bpp == 16) && (visual->red_mask == 0xfc00)) bpp = 15;
+
GdkColormap *cmap = gtk_widget_get_default_colormap();
long pos = 0;
M_COLDATA->m_hasPixel = gdk_color_alloc( cmap, &M_COLDATA->m_color );
}
+ int p = M_COLDATA->m_color.pixel;
+
M_COLDATA->m_colormap = cmap;
}