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

CascadeWindow.h

Go to the documentation of this file.
00001 //
00002 // CascadeWindow.h - header file for class CascadeWindow
00003 //
00004 // Copyright (c) 2003, Roku, LLC.  All rights reserved.
00005 //
00008 
00009 #ifndef _ROKU_INCLUDE_CASCADE_APP_CASCADEWINDOW_H
00010 #define _ROKU_INCLUDE_CASCADE_APP_CASCADEWINDOW_H
00011 
00012 #include <cascade/CascadeObject.h>
00013 #include <cascade/graphics/CascadeRect.h>
00014 #include <cascade/graphics/CascadeBitmap.h>
00015 
00036 class CascadeWindow : public CascadeObject
00037 {
00038 public:
00039         CascadeWindow();
00044         virtual ~CascadeWindow();
00055         
00056 public: // dealing with top-level window visibility and z-order
00057     enum Plane {
00058         kBottomMost = 0,            
00059         kTopMost = 2,               
00060         kAppNormal = 1              
00061     };
00081     void Materialize(Plane plane = kAppNormal);
00093     void Vanish();
00102     void Redraw();
00111     void Redraw(const CascadeRect & rect);
00117     static void RedrawScreen();
00121 public: // dealing with my geometry
00122     CascadeRect GetRectRelative() const;
00129     CascadeRect GetRectAbsolute() const;
00139     void SetRectRelative(const CascadeRect & rect);
00146     void SetRectAbsolute(const CascadeRect & rect);
00156 
00157  public: // dealing with my relationship to other windows
00158     inline CascadeWindow * GetParent();
00164     inline CascadeWindow * GetFirstChild();
00170     inline CascadeWindow * GetFirstSibling();
00176     void AddChild(CascadeWindow * pWndChild);
00184     void RemoveChild(CascadeWindow * pWndChild);
00192     bool IsParentOf(CascadeWindow * pWindow);
00200     bool IsChildOf(CascadeWindow * pWindow);
00208     bool IsSiblingOf(CascadeWindow * pWindow);
00216     CascadeWindow * GetTopLevelWindow();
00221 
00222 public: // enumerating my child window tree
00223     typedef bool (EnumProc)(CascadeWindow * pWindow, void * pClientData);
00233     bool EnumerateTree(EnumProc * pEnumProc, void * pClientData);
00241 
00242 public:  // dealing with painting
00243     virtual void OnPaint(CascadeBitmap & bitmap);
00263     void PaintTree(CascadeBitmap & bitmap);
00272         
00273 public: // visibility
00274     bool IsVisible();
00280     
00281 public: // dealing with materialization
00282     virtual void OnMaterialize();
00288     virtual void OnMaterialized();
00294     virtual void OnVanish();
00300 
00301 public: // dealing with focus
00302     virtual void OnClearFocus();
00311     virtual void OnSetFocus();
00320 
00321 public: // dealing with notification
00322 
00323     virtual bool OnKeyDown(u32 nKey);
00334     virtual bool OnKeyUp(u32 nKey);
00345     virtual bool OnNavKey(u32 nKey, CascadeWindow * & pProposedNewFocusWnd);
00364 
00365 public: // functions dealing with focus
00366     virtual bool WillAcceptFocus();
00372     bool IsActiveFocus();
00380     bool IsInactiveFocus();
00387     bool IsFocus();
00394     void SetFocus(bool bRedraw = true);
00400     void ClearFocus(bool bRedraw = true);
00405     static CascadeWindow * GetFocus();
00412 
00413 private:
00414     bool EnumerateRecursively(CascadeWindow * pWindow, CascadeWindow::EnumProc * pEnumProc, void * pClientData);
00415     static bool StaticPaintTreeEnumProc(CascadeWindow * pWindow, void * pClientData);
00416 
00417 #ifndef DOXY_SKIP
00418 friend class CascadeApp;
00419 #endif
00420 
00421     bool ProcessNavKey(u32 nKey);
00422 
00423 private:
00424     CascadeRect     m_rect;
00425     CascadeWindow * m_pWndParent;
00426     CascadeWindow * m_pWndChild;
00427     CascadeWindow * m_pWndSibling;
00428 };
00429 
00431 // class CascadeWindow inline functions
00432 inline CascadeWindow *
00433 CascadeWindow::GetParent()
00434 {
00435     return m_pWndParent;
00436 }
00437 
00438 inline CascadeWindow *
00439 CascadeWindow::GetFirstChild()
00440 {
00441     return m_pWndChild;
00442 }
00443 
00444 inline CascadeWindow *
00445 CascadeWindow::GetFirstSibling()
00446 {
00447     return m_pWndSibling;
00448 
00449 }
00450 
00451 #endif // #ifndef _ROKU_INCLUDE_CASCADE_APP_CASCADEWINDOW_H
00452 
00454 //  LOG
00456 //  10-Feb-03   dwoodward       created
00457 //  19-Feb-03   dwoodward   got rid of nRepeatCount parm to OnKeyDown
00458 //  20-Feb-03   dwoodward   added WillAcceptFocus()
00459 //  25-Feb-03   dwoodward   added Redraw()
00460 //  25-Feb-03   dwoodward   added OnSetFocus() and OnClearFocus()
00461 //  12-Mar-03   dwoodward   added IsVisible()
00462 //  14-Apr-03   dwoodward   changed OnNavKey() behavior
00463 //  14-Apr-03   dwoodward   added ProcessNavKey
00464 //  01-May-03   dwoodward   added a version of Redraw() that takes a rect
00465 //  05-May-03   dwoodward   doxygenated
00466 //  04-Jun-03   dwoodward   added RedrawScreen
00467 //  28-Jul-03   dwoodward   added bRedraw parameter to SetFocus and ClearFocus
00468 //  07-Jul-03   mjkobb      Updated GetRectAbsolute, GetRectRelative to be
00469 //                          const.
00470 //  09-Sep-04   dwoodward   added OnMaterialized()
00471 

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