Main Page | Namespace List | Class Hierarchy | Class List | File List | Namespace Members | Class Members | File Members

CascadeButtonWidget.h

Go to the documentation of this file.
00001 //
00002 // CascadeButtonWidget.h - interface of class CascadeButtonWidget
00003 //
00004 // Copyright (c) 2003, Roku, LLC.  All rights reserved.
00005 //
00008 
00009 #ifndef _ROKU_INCLUDE_CASCADE_WIDGETS_CASCADEBUTTONWIDGET_H
00010 #define _ROKU_INCLUDE_CASCADE_WIDGETS_CASCADEBUTTONWIDGET_H
00011 
00012 #include <cascade/widgets/CascadeWidget.h>
00013 #include <cascade/util/CascadeString.h>
00014 
00025 class CascadeButtonWidget : public CascadeWidget
00026 {
00027 public:
00028     CascadeButtonWidget();
00032     virtual ~CascadeButtonWidget();
00036 public:
00037     enum State {
00038         kOff = 0,       
00039         kOn = 1         
00040     };
00045     enum TextVAlign {
00046         kTextAlignAbove = 0,        
00047         kTextAlignTop = 1,          
00048         kTextAlignMiddle = 2,       
00049         kTextAlignBottom = 3 ,      
00050         kTextAlignBelow = 4         
00051     };
00057 
00058     enum { kVAlignSpacing = 2 };    
00059     
00060     enum TextHAlign {
00061         kTextAlignLeft = 0,     
00062         kTextAlignCenter = 1,   
00063         kTextAlignRight = 2     
00064     };
00070 public:
00071     inline State GetState();
00077         
00078     inline void SetState(const State & state);
00084 
00085     void ToggleState();
00091 
00092     void SetBitmapUp(CascadeBitmap * pBitmap, CascadeWidget::Scheme scheme);
00103     void SetBitmapDown(CascadeBitmap * pBitmap, CascadeWidget::Scheme scheme);
00114 
00115     void SetText(const CascadeString & string);
00121 
00122     inline void SetTextAlignment(TextVAlign vAlign, TextHAlign hAlign = kTextAlignCenter);
00131     
00132     typedef void (StateChangeCallback)(const CascadeButtonWidget * pButton, const State & newState, void * pClientData);
00144         
00145     void RegisterStateChangeCallback(StateChangeCallback * pCallback, void * pClientData);
00155 
00156 protected: // class CascadeButtonWidget virtual functions
00157     virtual void OnStateChange(const State & newState);
00165 
00166 protected: // virtual functions overridden from base classes
00167     virtual bool OnKeyDown(u32 nKey);
00175 
00176     virtual void OnPaint(CascadeBitmap & bitmap);
00187 
00188 protected:
00189     State                   m_state;
00193     CascadeString           m_text;
00197     CascadeBitmap *         m_pBitmapsUp[CascadeWidget::kNumSchemes];
00202     CascadeBitmap *         m_pBitmapsDown[CascadeWidget::kNumSchemes];
00207     StateChangeCallback *   m_pCallback;
00211     void *                  m_pClientData;
00215     TextHAlign              m_textHAlign;
00219     TextVAlign              m_textVAlign;
00223 private:
00224     CascadeFont m_font;
00225     CascadeDims m_dimsText;
00226 };
00227 
00229 // class CascadePictureWidget inline functions
00230 inline CascadeButtonWidget::State
00231 CascadeButtonWidget::GetState()
00232 {
00233     return m_state;
00234 }
00235 
00236 inline void
00237 CascadeButtonWidget::SetState(const CascadeButtonWidget::State & state)
00238 {
00239     if (state != m_state) ToggleState();
00240 }
00241 
00242 inline void
00243 CascadeButtonWidget::SetTextAlignment(TextVAlign vAlign, TextHAlign hAlign)
00244 {
00245     m_textVAlign = vAlign;
00246     m_textHAlign  = hAlign;
00247 }
00248 
00249 #endif // #ifndef _ROKU_INCLUDE_CASCADE_WIDGETS_CASCADEBUTTONWIDGET_H
00250 
00252 //  LOG
00254 //  06-Mar-03   dwoodward   created
00255 //  14-May-03   dwoodward   doxygenated
00256 //  09-Nov-04   dwoodward   added m_font and m_dimsText

Generated on Sun Jul 24 14:27:17 2005 for Cascade Library by  doxygen 1.4.1