/////////////////////////////////////////////////////////////////////////////
-// Name: bitmap.cpp
+// Name: src/gtk/bitmap.cpp
// Purpose:
// Author: Robert Roebling
// RCS-ID: $Id$
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
-#pragma implementation "bitmap.h"
-#endif
-
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#include "wx/dcmemory.h"
#include "wx/app.h"
-#ifdef __WXGTK20__
#include "wx/rawbmp.h"
// need this to get gdk_image_new_bitmap()
#define GDK_ENABLE_BROKEN
-#endif
#include <gdk/gdk.h>
#include <gtk/gtk.h>
#include <gdk/gdkx.h>
-#ifdef __WXGTK20__
- #include <gdk/gdkimage.h>
-#else // GTK+ 1.2
- #include <gdk/gdkrgb.h>
-#endif // GTK+ 2.0/1.2
+#include <gdk/gdkimage.h>
#include "wx/math.h"
Create( bitmap, colour );
}
+#if wxUSE_PALETTE
wxMask::wxMask( const wxBitmap& bitmap, int paletteIndex )
{
m_bitmap = (GdkBitmap *) NULL;
Create( bitmap, paletteIndex );
}
+#endif // wxUSE_PALETTE
wxMask::wxMask( const wxBitmap& bitmap )
{
return true;
}
+#if wxUSE_PALETTE
bool wxMask::Create( const wxBitmap& bitmap, int paletteIndex )
{
unsigned char r,g,b;
return Create(bitmap, wxColour(r, g, b));
}
+#endif // wxUSE_PALETTE
bool wxMask::Create( const wxBitmap& bitmap )
{
GdkPixmap *m_pixmap;
GdkBitmap *m_bitmap;
-#ifdef __WXGTK20__
GdkPixbuf *m_pixbuf;
-#endif
wxMask *m_mask;
int m_width;
int m_height;
{
m_pixmap = (GdkPixmap *) NULL;
m_bitmap = (GdkBitmap *) NULL;
-#ifdef __WXGTK20__
m_pixbuf = (GdkPixbuf *) NULL;
-#endif
m_mask = (wxMask *) NULL;
m_width = 0;
m_height = 0;
gdk_pixmap_unref( m_pixmap );
if (m_bitmap)
gdk_bitmap_unref( m_bitmap );
-#ifdef __WXGTK20__
if (m_pixbuf)
gdk_pixbuf_unref( m_pixbuf );
-#endif
delete m_mask;
+#if wxUSE_PALETTE
delete m_palette;
+#endif // wxUSE_PALETTE
}
//-----------------------------------------------------------------------------
M_BMPDATA->m_bitmap = gdk_pixmap_new( wxGetRootWindow()->window, width, height, 1 );
M_BMPDATA->m_bpp = 1;
}
-#ifdef __WXGTK20__
else if (depth == 32)
{
M_BMPDATA->m_pixbuf = gdk_pixbuf_new( GDK_COLORSPACE_RGB, true,
8, width, height);
M_BMPDATA->m_bpp = 32;
}
-#endif
else
{
M_BMPDATA->m_pixmap = gdk_pixmap_new( wxGetRootWindow()->window, width, height, depth );
wxBitmap bmp;
-#ifdef __WXGTK20__
if (HasPixbuf())
{
bmp.SetWidth(width);
GDK_INTERP_BILINEAR);
}
else
-#endif // __WXGTK20__
{
GdkImage *img = (GdkImage*) NULL;
if (GetPixmap())
old_x = x;
}
- if (bpp == 1)
+ if ( dst )
{
if (!pixval)
{
char bit=1;
- char shift = bit << w % 8;
+ char shift = bit << (w % 8);
outbyte |= shift;
}
}
// do not forget the last byte
- if ((bpp == 1) && (width % 8 != 0))
+ if ( dst && (width % 8 != 0) )
dst[h*dstbyteperline+width/8] = outbyte;
}
gdk_image_destroy( img );
if (gc) gdk_gc_unref( gc );
- if (bpp == 1)
+ if ( dst )
{
bmp = wxBitmap( (const char *)dst, width, height, 1 );
free( dst );
if (pixval)
{
char bit=1;
- char shift = bit << w % 8;
+ char shift = bit << (w % 8);
outbyte |= shift;
}
}
else
{
-#ifdef __WXGTK20__
if (image.HasAlpha())
return CreateFromImageAsPixbuf(image);
-#endif
+
return CreateFromImageAsPixmap(image);
}
}
return true;
}
-#ifdef __WXGTK20__
bool wxBitmap::CreateFromImageAsPixbuf(const wxImage& image)
{
int width = image.GetWidth();
return true;
}
-#endif // __WXGTK20__
wxImage wxBitmap::ConvertToImage() const
{
return wxNullImage;
}
-#ifdef __WXGTK20__
if (HasPixbuf())
{
GdkPixbuf *pixbuf = GetPixbuf();
}
}
else
-#endif // __WXGTK20__
{
// the colour used as transparent one in wxImage and the one it is
// replaced with when it really occurs in the bitmap
return image;
}
-wxBitmap::wxBitmap( const wxBitmap& bmp )
- : wxBitmapBase()
-{
- Ref( bmp );
-}
-
wxBitmap::wxBitmap( const wxString &filename, wxBitmapType type )
{
LoadFile( filename, type );
{
}
-wxBitmap& wxBitmap::operator = ( const wxBitmap& bmp )
-{
- if ( m_refData != bmp.m_refData )
- Ref( bmp );
-
- return *this;
-}
-
bool wxBitmap::operator == ( const wxBitmap& bmp ) const
{
return m_refData == bmp.m_refData;
{
return (m_refData != NULL) &&
(
-#ifdef __WXGTK20__
M_BMPDATA->m_pixbuf ||
-#endif
M_BMPDATA->m_bitmap || M_BMPDATA->m_pixmap
);
}
wxBitmap ret( rect.width, rect.height, M_BMPDATA->m_bpp );
wxASSERT_MSG( ret.Ok(), wxT("GetSubBitmap error") );
-#ifdef __WXGTK20__
if (HasPixbuf())
{
GdkPixbuf *pixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB,
gdk_pixbuf_get_has_alpha(GetPixbuf()),
- 8, GetWidth(), GetHeight());
+ 8, rect.width, rect.height);
ret.SetPixbuf(pixbuf);
gdk_pixbuf_copy_area(GetPixbuf(),
rect.x, rect.y, rect.width, rect.height,
pixbuf, 0, 0);
}
else
-#endif // __WXGTK20__
{
if (ret.GetPixmap())
{
return true;
}
+#if wxUSE_PALETTE
wxPalette *wxBitmap::GetPalette() const
{
if (!Ok())
{
// TODO
}
+#endif // wxUSE_PALETTE
void wxBitmap::SetHeight( int height )
{
m_refData = new wxBitmapRefData();
M_BMPDATA->m_pixmap = pixmap;
-#ifdef __WXGTK20__
PurgeOtherRepresentations(Pixmap);
-#endif
}
void wxBitmap::SetBitmap( GdkPixmap *bitmap )
m_refData = new wxBitmapRefData();
M_BMPDATA->m_bitmap = bitmap;
-#ifdef __WXGTK20__
PurgeOtherRepresentations(Pixmap);
-#endif
}
GdkPixmap *wxBitmap::GetPixmap() const
{
wxCHECK_MSG( Ok(), (GdkPixmap *) NULL, wxT("invalid bitmap") );
-#ifdef __WXGTK20__
// create the pixmap on the fly if we use Pixbuf representation:
if (HasPixbuf() && !HasPixmap())
{
&M_BMPDATA->m_mask->m_bitmap,
128 /*threshold*/);
}
-#endif // __WXGTK20__
return M_BMPDATA->m_pixmap;
}
return M_BMPDATA->m_bitmap;
}
-#ifdef __WXGTK20__
GdkPixbuf *wxBitmap::GetPixbuf() const
{
wxCHECK_MSG( Ok(), NULL, wxT("invalid bitmap") );
}
}
-#endif // __WXGTK20__
-
void *wxBitmap::GetRawData(wxPixelDataBase& data, int bpp)
{
-#ifdef __WXGTK20__
if (bpp != 32)
return NULL;
data.m_stride = gdk_pixbuf_get_rowstride( pixbuf );
return gdk_pixbuf_get_pixels( pixbuf );
-#else
- return NULL;
-#endif
}
-void wxBitmap::UngetRawData(wxPixelDataBase& data)
+void wxBitmap::UngetRawData(wxPixelDataBase& WXUNUSED(data))
{
}
bool wxBitmap::HasAlpha() const
{
-#ifdef __WXGTK20__
return HasPixbuf();
-#else
- return false;
-#endif
}
void wxBitmap::UseAlpha()
{
-#ifdef __WXGTK20__
GetPixbuf();
-#endif
}
//-----------------------------------------------------------------------------
{
}
-bool wxBitmapHandler::Create(wxBitmap *bitmap, void *data, long type, int width, int height, int depth)
+bool wxBitmapHandler::Create(wxBitmap * WXUNUSED(bitmap),
+ void * WXUNUSED(data),
+ long WXUNUSED(type),
+ int WXUNUSED(width),
+ int WXUNUSED(height),
+ int WXUNUSED(depth))
{
+ wxFAIL_MSG( _T("not implemented") );
+
return false;
}
-bool wxBitmapHandler::LoadFile(wxBitmap *bitmap, const wxString& name, long flags,
- int desiredWidth, int desiredHeight)
+bool wxBitmapHandler::LoadFile(wxBitmap * WXUNUSED(bitmap),
+ const wxString& WXUNUSED(name),
+ long WXUNUSED(flags),
+ int WXUNUSED(desiredWidth),
+ int WXUNUSED(desiredHeight))
{
+ wxFAIL_MSG( _T("not implemented") );
+
return false;
}
-bool wxBitmapHandler::SaveFile(const wxBitmap *bitmap, const wxString& name, int type, const wxPalette *palette)
+bool wxBitmapHandler::SaveFile(const wxBitmap * WXUNUSED(bitmap),
+ const wxString& WXUNUSED(name),
+ int WXUNUSED(type),
+ const wxPalette * WXUNUSED(palette))
{
+ wxFAIL_MSG( _T("not implemented") );
+
return false;
}
{
// TODO: Insert handler based on GdkPixbufs handler later
}
-
-