2010-02-04 13:33:47 +02:00
|
|
|
#ifndef ICONBUTTON_H
|
|
|
|
#define ICONBUTTON_H
|
|
|
|
|
|
|
|
#include "button.h"
|
2011-05-09 06:17:25 +03:00
|
|
|
|
|
|
|
#include <string>
|
2010-02-04 13:33:47 +02:00
|
|
|
|
|
|
|
class GMenu2X;
|
2010-05-02 15:52:46 +03:00
|
|
|
class Surface;
|
2010-02-04 13:33:47 +02:00
|
|
|
|
2013-08-13 02:47:02 +03:00
|
|
|
class IconButton : private Button {
|
2010-02-04 13:33:47 +02:00
|
|
|
public:
|
2011-12-23 15:03:05 +02:00
|
|
|
IconButton(GMenu2X *gmenu2x, Touchscreen &ts,
|
|
|
|
const std::string &icon, const std::string &label = "");
|
2010-02-04 13:33:47 +02:00
|
|
|
virtual ~IconButton() {};
|
|
|
|
|
|
|
|
virtual void paint();
|
|
|
|
|
2010-05-03 23:21:36 +03:00
|
|
|
virtual void setPosition(int x, int y);
|
2010-02-04 13:33:47 +02:00
|
|
|
|
2013-07-29 19:58:25 +03:00
|
|
|
void setAction(function_t action);
|
2011-10-23 13:37:39 +03:00
|
|
|
|
2013-08-13 02:47:02 +03:00
|
|
|
// Expose some Button functionality:
|
|
|
|
SDL_Rect getRect() { return Button::getRect(); }
|
|
|
|
bool handleTS() { return Button::handleTS(); }
|
|
|
|
|
2011-10-23 13:37:39 +03:00
|
|
|
private:
|
2013-08-13 02:47:02 +03:00
|
|
|
void recalcSize();
|
2011-10-23 13:37:39 +03:00
|
|
|
|
|
|
|
GMenu2X *gmenu2x;
|
|
|
|
std::string icon, label;
|
|
|
|
SDL_Rect iconRect, labelRect;
|
|
|
|
|
|
|
|
Surface *iconSurface;
|
2010-02-04 13:33:47 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|