Back to index

extremetuxracer  0.5beta
button.h
Go to the documentation of this file.
00001 /* 
00002  * PPRacer 
00003  * Copyright (C) 2004-2005 Volker Stroebel <volker@planetpenguin.de>
00004  * 
00005  * This program is free software; you can redistribute it and/or
00006  * modify it under the terms of the GNU General Public License
00007  * as published by the Free Software Foundation; either version 2
00008  * of the License, or (at your option) any later version.
00009  * 
00010  * This program is distributed in the hope that it will be useful,
00011  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00012  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00013  * GNU General Public License for more details.
00014  * 
00015  * You should have received a copy of the GNU General Public License
00016  * along with this program; if not, write to the Free Software
00017  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
00018  */
00019  
00020 #ifndef _PP_BUTTON_H
00021 #define _PP_BUTTON_H
00022 
00023 #include "widget.h"
00024 
00025 #include "alg/color.h"
00026 #include "font.h"
00027 
00028 namespace pp {
00029        
00030 class Button : public Widget {
00031        typedef struct {
00033               const char *binding;
00035               pp::Color color; 
00037               pp::Vec2d ll;
00039               pp::Vec2d ur;  
00040        } texture_region_t;
00041 
00042     texture_region_t m_tex;
00043     texture_region_t m_hilitTex;
00044     texture_region_t m_clickedTex;
00045     texture_region_t m_disabledTex;
00046        
00047        pp::Font *mp_font;
00048        pp::Font *mp_hilitFont;
00049        pp::Font *mp_disabledFont;
00050        
00051     const char *mp_label;
00052 
00053 public:
00054        Button( pp::Vec2d pos, pp::Vec2d size,
00055                      const char *binding, const char *label );
00056 
00057        void setHighlight(bool highlight);
00058        void setHilitFontBinding( const char *binding );
00059        
00060        void setDisabledFontBinding( const char *binding );
00061        void setImage(const char *binding,
00062                      pp::Vec2d p0, pp::Vec2d p1, pp::Color color);
00063        void setDisabledImage(const char *binding,
00064                             pp::Vec2d p0, pp::Vec2d p1, pp::Color color );
00065        void setHilitImage(const char *binding,
00066                           pp::Vec2d p0, pp::Vec2d p1, pp::Color color );     
00067        void setClickedImage(const char *binding,
00068                             pp::Vec2d p0, pp::Vec2d p1, pp::Color color );
00069 
00070        void draw();
00071 };
00072        
00073 } //namespace pp
00074 
00075 #endif // _PP_BUTTON_H