1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-07-28 14:39:28 +02:00
audacity/src/widgets/ImageRoll.h
Paul Licameli 7824e94030 Harmlessly qualify classes as final (or explicitly comment not)...
... Should have no effect on generated code, except perhaps some slight faster
virtual function calls.  Mostly useful as documentation of design intent.

Tried to mark every one of our classes that inherits from another, or is a
base for others, or has abstract virtual functions, and a few others besides.
2016-02-24 20:58:30 -05:00

97 lines
2.2 KiB
C++

/**********************************************************************
Audacity: A Digital Audio Editor
ImageRoll.h
Dominic Mazzoni
**********************************************************************/
#ifndef __AUDACITY_IMAGE_ROLL__
#define __AUDACITY_IMAGE_ROLL__
#include <wx/dc.h>
#include <wx/dcclient.h>
#include <wx/defs.h>
#include <wx/dynarray.h>
#include <wx/panel.h>
#include <wx/version.h>
#if !wxCHECK_VERSION(3,0,0)
#define wxRasterOperationMode int
#endif
WX_DECLARE_OBJARRAY(wxBitmap, BitmapArray);
WX_DECLARE_OBJARRAY(wxImage, ImageArray);
class ImageRoll
{
public:
enum RollType {
Uninitialized,
FixedImage,
HorizontalRoll,
VerticalRoll,
Frame
};
ImageRoll();
ImageRoll(const wxImage &src);
ImageRoll(RollType type, const wxImage &src, wxColour magicColor);
bool Ok() const;
wxSize GetMinSize() const { return mMinSize; }
wxSize GetMaxSize() const { return mMaxSize; }
void Draw(wxDC &dc, wxRect rect,
wxRasterOperationMode logicalFunc = wxCOPY);
static ImageArray SplitH(const wxImage &src, wxColour magicColor);
static ImageArray SplitV(const wxImage &src, wxColour magicColor);
protected:
void DrawBitmap(wxDC &dc, wxBitmap &bitmap,
int x, int y, wxRasterOperationMode logicalFunc = wxCOPY);
void Init(RollType type, const wxImage &src, wxColour magicColor);
RollType mType;
BitmapArray mPieces;
wxSize mMinSize;
wxSize mMaxSize;
};
// A very simple class that just display an ImageRoll that doesn't
// do anything
class ImageRollPanel final : public wxPanel
{
public:
DECLARE_DYNAMIC_CLASS(ImageRollPanel);
ImageRollPanel(wxWindow *parent,
wxWindowID id,
ImageRoll &imgRoll,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
long style = wxTAB_TRAVERSAL);
void SetLogicalFunction(wxRasterOperationMode func);
void OnPaint(wxPaintEvent &evt);
void OnSize(wxSizeEvent &evt);
protected:
ImageRoll mImageRoll;
wxRasterOperationMode mLogicalFunction;
DECLARE_EVENT_TABLE();
};
#endif // __AUDACITY_IMAGE_ROLL__