1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
|
#ifndef PANEL_INCLUDED
#define PANEL_INCLUDED
#include "Button.h"
#include "minorGems/util/SimpleVector.h"
// abstract base class
// panel with a close button at the top
class Panel {
public:
Panel( int inW, int inH);
virtual ~Panel();
virtual void setVisible( char inIsVisible );
virtual char isVisible() {
return mVisible;
}
// forces to become completely visible/invisible instantly
virtual void forceVisible();
virtual void forceInvisible();
virtual char isFullyVisible() {
return mVisible && (mFadeProgress == 1);
}
char isSubPanelVisible();
// tells panel that pointer released inside it
// returns true if release consumed (triggered a button somewhere)
virtual char pointerUp( int inX, int inY );
// steps animations
virtual void step();
// draws onto screen
// don't override this
void draw();
protected:
void addSubPanel( Panel *inPanel );
void addButton( Button *inButton );
char isSubPanelFullyVisible();
// subclasses override these
virtual void drawBase();
virtual void closePressed() = 0;
int mW, mH;
float mFadeProgress;
char mVisible;
private:
void drawSubPanels();
Button mCloseButton;
SimpleVector<Button *> mButtons;
SimpleVector<Panel *> mSubPanels;
};
#endif
|