juce_DrawableButton.h

Go to the documentation of this file.
00001 /*
00002   ==============================================================================
00003 
00004    This file is part of the JUCE library - "Jules' Utility Class Extensions"
00005    Copyright 2004-7 by Raw Material Software ltd.
00006 
00007   ------------------------------------------------------------------------------
00008 
00009    JUCE can be redistributed and/or modified under the terms of the
00010    GNU General Public License, as published by the Free Software Foundation;
00011    either version 2 of the License, or (at your option) any later version.
00012 
00013    JUCE is distributed in the hope that it will be useful,
00014    but WITHOUT ANY WARRANTY; without even the implied warranty of
00015    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00016    GNU General Public License for more details.
00017 
00018    You should have received a copy of the GNU General Public License
00019    along with JUCE; if not, visit www.gnu.org/licenses or write to the
00020    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
00021    Boston, MA 02111-1307 USA
00022 
00023   ------------------------------------------------------------------------------
00024 
00025    If you'd like to release a closed-source product which uses JUCE, commercial
00026    licenses are also available: visit www.rawmaterialsoftware.com/juce for
00027    more information.
00028 
00029   ==============================================================================
00030 */
00031 
00032 #ifndef __JUCE_DRAWABLEBUTTON_JUCEHEADER__
00033 #define __JUCE_DRAWABLEBUTTON_JUCEHEADER__
00034 
00035 #include "juce_Button.h"
00036 #include "../../graphics/drawables/juce_Drawable.h"
00037 
00038 
00039 //==============================================================================
00048 class JUCE_API  DrawableButton  : public Button
00049 {
00050 public:
00051     //==============================================================================
00052     enum ButtonStyle
00053     {
00054         ImageFitted,                
00055         ImageRaw,                   
00057         ImageAboveTextLabel,        
00058         ImageOnButtonBackground     
00059     };
00060 
00061     //==============================================================================
00071     DrawableButton (const String& buttonName,
00072                     const ButtonStyle buttonStyle);
00073 
00075     ~DrawableButton();
00076 
00077     //==============================================================================
00106     void setImages (const Drawable* normalImage,
00107                     const Drawable* overImage = 0,
00108                     const Drawable* downImage = 0,
00109                     const Drawable* disabledImage = 0,
00110                     const Drawable* normalImageOn = 0,
00111                     const Drawable* overImageOn = 0,
00112                     const Drawable* downImageOn = 0,
00113                     const Drawable* disabledImageOn = 0);
00114 
00115 
00116     //==============================================================================
00121     void setButtonStyle (const ButtonStyle newStyle);
00122 
00123     //==============================================================================
00136     void setBackgroundColours (const Colour& toggledOffColour,
00137                                const Colour& toggledOnColour);
00138 
00143     const Colour& getBackgroundColour() const throw();
00144 
00153     void setEdgeIndent (const int numPixelsIndent);
00154 
00155     //==============================================================================
00157     const Drawable* getCurrentImage() const throw();
00158     const Drawable* getNormalImage() const throw();
00159     const Drawable* getOverImage() const throw();
00160     const Drawable* getDownImage() const throw();
00161 
00162     //==============================================================================
00163     juce_UseDebuggingNewOperator
00164 
00165 protected:
00167     void paintButton (Graphics& g,
00168                       bool isMouseOverButton,
00169                       bool isButtonDown);
00170 
00171 private:
00172     //==============================================================================
00173     ButtonStyle style;
00174     Drawable* normalImage;
00175     Drawable* overImage;
00176     Drawable* downImage;
00177     Drawable* disabledImage;
00178     Drawable* normalImageOn;
00179     Drawable* overImageOn;
00180     Drawable* downImageOn;
00181     Drawable* disabledImageOn;
00182     Colour backgroundOff, backgroundOn;
00183     int edgeIndent;
00184 
00185     void deleteImages();
00186     DrawableButton (const DrawableButton&);
00187     const DrawableButton& operator= (const DrawableButton&);
00188 };
00189 
00190 
00191 #endif   // __JUCE_DRAWABLEBUTTON_JUCEHEADER__