1. perform deep comparison for the classes for which it makes sense in the ports where this wasn't done yet 2. remove (shallow) comparison operators for the classes for which it does not make sense (such as wxBitmap) 3. makes wxBitmap use COW on all ports 4. adds wxObject::IsRefTo() 5. centralizes and improves COW docs git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@42752 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
159 lines
4.6 KiB
C++
159 lines
4.6 KiB
C++
/////////////////////////////////////////////////////////////////////////////
|
|
// Name: wx/gtk1/bitmap.h
|
|
// Purpose:
|
|
// Author: Robert Roebling
|
|
// RCS-ID: $Id$
|
|
// Copyright: (c) 1998 Robert Roebling
|
|
// Licence: wxWindows licence
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
#ifndef __GTKBITMAPH__
|
|
#define __GTKBITMAPH__
|
|
|
|
#include "wx/defs.h"
|
|
#include "wx/object.h"
|
|
#include "wx/string.h"
|
|
#include "wx/palette.h"
|
|
#include "wx/gdiobj.h"
|
|
|
|
class WXDLLEXPORT wxPixelDataBase;
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// classes
|
|
//-----------------------------------------------------------------------------
|
|
|
|
class WXDLLIMPEXP_CORE wxMask;
|
|
class WXDLLIMPEXP_CORE wxBitmap;
|
|
class WXDLLIMPEXP_CORE wxImage;
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// wxMask
|
|
//-----------------------------------------------------------------------------
|
|
|
|
class WXDLLIMPEXP_CORE wxMask: public wxObject
|
|
{
|
|
public:
|
|
wxMask();
|
|
wxMask( const wxBitmap& bitmap, const wxColour& colour );
|
|
#if wxUSE_PALETTE
|
|
wxMask( const wxBitmap& bitmap, int paletteIndex );
|
|
#endif // wxUSE_PALETTE
|
|
wxMask( const wxBitmap& bitmap );
|
|
virtual ~wxMask();
|
|
|
|
bool Create( const wxBitmap& bitmap, const wxColour& colour );
|
|
#if wxUSE_PALETTE
|
|
bool Create( const wxBitmap& bitmap, int paletteIndex );
|
|
#endif // wxUSE_PALETTE
|
|
bool Create( const wxBitmap& bitmap );
|
|
|
|
// implementation
|
|
GdkBitmap *m_bitmap;
|
|
|
|
GdkBitmap *GetBitmap() const;
|
|
|
|
private:
|
|
DECLARE_DYNAMIC_CLASS(wxMask)
|
|
};
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// wxBitmap
|
|
//-----------------------------------------------------------------------------
|
|
|
|
class WXDLLIMPEXP_CORE wxBitmap: public wxBitmapBase
|
|
{
|
|
public:
|
|
wxBitmap();
|
|
wxBitmap( int width, int height, int depth = -1 );
|
|
wxBitmap( const char bits[], int width, int height, int depth = 1 );
|
|
wxBitmap( const char* const* bits );
|
|
#if defined (__GNUC__) && __GNUC__ < 3
|
|
// needed for old GCC
|
|
wxBitmap(char** data)
|
|
{
|
|
*this = wxBitmap(wx_const_cast(const char* const*, data));
|
|
}
|
|
#endif
|
|
wxBitmap( const wxString &filename, wxBitmapType type = wxBITMAP_TYPE_XPM );
|
|
wxBitmap( const wxImage& image, int depth = -1 ) { (void)CreateFromImage(image, depth); }
|
|
virtual ~wxBitmap();
|
|
bool Ok() const { return IsOk(); }
|
|
bool IsOk() const;
|
|
|
|
bool Create(int width, int height, int depth = -1);
|
|
|
|
int GetHeight() const;
|
|
int GetWidth() const;
|
|
int GetDepth() const;
|
|
|
|
wxImage ConvertToImage() const;
|
|
|
|
// copies the contents and mask of the given (colour) icon to the bitmap
|
|
virtual bool CopyFromIcon(const wxIcon& icon);
|
|
|
|
wxMask *GetMask() const;
|
|
void SetMask( wxMask *mask );
|
|
|
|
wxBitmap GetSubBitmap( const wxRect& rect ) const;
|
|
|
|
bool SaveFile(const wxString &name, wxBitmapType type,
|
|
const wxPalette *palette = (wxPalette *)NULL) const;
|
|
bool LoadFile(const wxString &name, wxBitmapType type = wxBITMAP_TYPE_XPM );
|
|
|
|
#if wxUSE_PALETTE
|
|
wxPalette *GetPalette() const;
|
|
void SetPalette(const wxPalette& palette);
|
|
wxPalette *GetColourMap() const { return GetPalette(); };
|
|
#endif // wxUSE_PALETTE
|
|
|
|
static void InitStandardHandlers();
|
|
|
|
// implementation
|
|
// --------------
|
|
|
|
void SetHeight( int height );
|
|
void SetWidth( int width );
|
|
void SetDepth( int depth );
|
|
void SetPixmap( GdkPixmap *pixmap );
|
|
void SetBitmap( GdkBitmap *bitmap );
|
|
|
|
GdkPixmap *GetPixmap() const;
|
|
GdkBitmap *GetBitmap() const;
|
|
bool HasPixmap() const;
|
|
|
|
// Basically, this corresponds to Win32 StretchBlt()
|
|
wxBitmap Rescale( int clipx, int clipy, int clipwidth, int clipheight, int width, int height );
|
|
|
|
// raw bitmap access support functions
|
|
void *GetRawData(wxPixelDataBase& data, int bpp);
|
|
void UngetRawData(wxPixelDataBase& data);
|
|
|
|
bool HasAlpha() const;
|
|
void UseAlpha();
|
|
|
|
protected:
|
|
bool CreateFromImage(const wxImage& image, int depth);
|
|
|
|
private:
|
|
// to be called from CreateFromImage only!
|
|
bool CreateFromImageAsBitmap(const wxImage& image);
|
|
bool CreateFromImageAsPixmap(const wxImage& image);
|
|
|
|
friend class wxBitmapHandler;
|
|
|
|
private:
|
|
DECLARE_DYNAMIC_CLASS(wxBitmap)
|
|
};
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// wxBitmapHandler
|
|
//-----------------------------------------------------------------------------
|
|
|
|
class WXDLLIMPEXP_CORE wxBitmapHandler: public wxBitmapHandlerBase
|
|
{
|
|
DECLARE_ABSTRACT_CLASS(wxBitmapHandler)
|
|
};
|
|
|
|
#endif // __GTKBITMAPH__
|