/////////////////////////////////////////////////////////////////////////////
// Name:        wx/dfb/bitmap.h
// Purpose:     wxBitmap class
// Author:      Vaclav Slavik
// Created:     2006-08-04
// Copyright:   (c) 2006 REA Elektronik GmbH
// Licence:     wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_DFB_BITMAP_H_
#  define _WX_DFB_BITMAP_H_
#  include "wx/dfb/dfbptr.h"
class WXDLLIMPEXP_FWD_CORE wxPixelDataBase;
wxDFB_DECLARE_INTERFACE(IDirectFBSurface);
//-----------------------------------------------------------------------------
// wxBitmap
//-----------------------------------------------------------------------------
class WXDLLIMPEXP_CORE wxBitmap : public wxBitmapBase
{
public:
  wxBitmap()
  {
  }
  wxBitmap(const wxIDirectFBSurfacePtr& surface)
  {
    Create(surface);
  }
  wxBitmap(int width, int height, int depth = -1)
  {
    Create(width, height, depth);
  }
  wxBitmap(const wxSize& sz, int depth = -1)
  {
    Create(sz, depth);
  }
  wxBitmap(const char bits[], int width, int height, int depth = 1);
  wxBitmap(const wxString& filename, wxBitmapType type = wxBITMAP_DEFAULT_TYPE);
  wxBitmap(const char* const * bits);
#  if  wxUSE_IMAGE
  wxBitmap(const wxImage& image, int depth = -1, double = 1.0);
#  endif
  bool Create(const wxIDirectFBSurfacePtr& surface);
  bool Create(int width, int height, int depth = wxBITMAP_SCREEN_DEPTH);
  bool Create(const wxSize& sz, int depth = wxBITMAP_SCREEN_DEPTH)
  {
    return Create(sz.GetWidth(), sz.GetHeight(), depth);
  }
  bool Create(int width, int height, const wxDC&)
  {
    return Create(width, height);
  }
  virtual int GetHeight() const;
  virtual int GetWidth() const;
  virtual int GetDepth() const;
#  if  wxUSE_IMAGE
  virtual wxImage ConvertToImage() const;
#  endif
  virtual wxMask* GetMask() const;
  virtual void SetMask(wxMask* mask);
  virtual wxBitmap GetSubBitmap(const wxRect& rect) const;
  virtual bool SaveFile(const wxString& name, wxBitmapType type, const wxPalette* palette = NULL) const;
  virtual bool LoadFile(const wxString& name, wxBitmapType type = wxBITMAP_DEFAULT_TYPE);
#  if  wxUSE_PALETTE
  virtual wxPalette* GetPalette() const;
  virtual void SetPalette(const wxPalette& palette);
#  endif
    // copies the contents and mask of the given (colour) icon to the bitmap
  virtual bool CopyFromIcon(const wxIcon& icon);
  static void InitStandardHandlers();
    // raw bitmap access support functions
  void* GetRawData(wxPixelDataBase& data, int bpp);
  void UngetRawData(wxPixelDataBase& data);
  bool HasAlpha() const;
    // implementation:
    // get underlying native representation:
  wxIDirectFBSurfacePtr GetDirectFBSurface() const;
protected:
  virtual wxGDIRefData* CreateGDIRefData() const;
  virtual wxGDIRefData* CloneGDIRefData(const wxGDIRefData* data) const;
  bool CreateWithFormat(int width, int height, int dfbFormat);
  wxDECLARE_DYNAMIC_CLASS(wxBitmap);
};
#endif
