/// === PULSANTE 1.0 (31/01/2014) ==============================================
#ifndef PULSANTE_H
#define PULSANTE_H
#include <windows.h>
#include "offscreen.h"
#include <objidl.h>
#include <gdiplus.h>
using namespace Gdiplus;
#define kPULSANTEDisattivo -1
#define kPULSANTESelezionato 0
#define kPULSANTEPremuto 1
#define kPULSANTESopra 2
#define kPULSANTENormale 3
class PULSANTE {
public:
PULSANTE();
PULSANTE( int x, int y, int w, int h, const char *titolo = NULL );
// NOTA: le funzioni creatrici potrebbero lanciare
// un'eccezione di tipo const char *
virtual ~PULSANTE();
void attiva( BOOL att = TRUE, BOOL agg = TRUE );
void sta_giu( BOOL giu = TRUE ) { staGiu = giu; }
void seleziona( BOOL sel = TRUE, BOOL agg = TRUE );
void set_rettangolo( int x, int y, int w, int h );
void set_titolo( const char *titolo, BOOL agg = TRUE );
// NOTA: la funzione set_titolo() potrebbe lanciare
// un'eccezione di tipo const char *
void set_dimensione_font( REAL dim, BOOL agg = TRUE );
void set_allineamento_orizzontale( int allineamento, BOOL agg = TRUE );
void set_allineamento_verticale( int allineamento, BOOL agg = TRUE );
void set_spessore_bordo( unsigned int spBordo, BOOL agg = TRUE );
void set_colori_sfondo( ARGB cDisattivo, ARGB cNormale, ARGB cSopra,
ARGB cPremuto, ARGB cSelezionato, BOOL agg = TRUE );
void set_colori_tratto( ARGB cDisattivo, ARGB cNormale, ARGB cSopra,
ARGB cPremuto, ARGB cSelezionato, BOOL agg = TRUE );
void set_offscreen( OFFSCREEN *os );
BOOL selezionato( void ) { return stato == kPULSANTESelezionato; }
RECT *get_rettangolo( RECT *rct );
Rect *get_rettangolo( Rect *rct );
RectF *get_rettangolo( RectF *rct );
BOOL in( LONG x, LONG y );
BOOL sopra( LONG x, LONG y );
BOOL click( LONG x, LONG y );
void simula_click( void );
void traccia( BOOL agg = TRUE );
void aggiorna( void );
protected:
private:
OFFSCREEN *os;
RECT r;
int wBordo;
WCHAR *t;
REAL dimFont;
char allinOrizz;
char allinVert;
char stato;
char staGiu;
ARGB sfondo[5];
ARGB tratto[5];
void TracciaTitolo( Graphics *gfx, SolidBrush *pennello, RectF *rf );
BOOL SeguiMouse( LONG x, LONG y );
ARGB Colore( short tipo );
};
typedef PULSANTE* PULSANTEPTR;
#endif // PULSANTE_H