/* * NineGridLayout */ #ifndef DUI_NINEGRIDLAYOUT_H_INCLUDED #define DUI_NINEGRIDLAYOUT_H_INCLUDED #pragma once namespace DirectUI { // BorderLayout positions #define NGLP_TopLeft 0 #define NGLP_Top 1 #define NGLP_TopRight 2 #define NGLP_Left 3 #define NGLP_Client 4 #define NGLP_Right 5 #define NGLP_BottomLeft 6 #define NGLP_Bottom 7 #define NGLP_BottomRight 8 //////////////////////////////////////////////////////// // NineGridLayout class NineGridLayout : public Layout { public: static HRESULT Create(int dNumParams, int* pParams, OUT Value** ppValue); // For parser static HRESULT Create(OUT Layout** ppLayout); // Layout callbacks virtual void DoLayout(Element* pec, int dWidth, int dHeight); virtual SIZE UpdateDesiredSize(Element* pec, int dConstW, int dConstH, Surface* psrf); virtual void OnAdd(Element* pec, Element** ppeAdd, UINT cCount); virtual void OnRemove(Element* pec, Element** ppeRemove, UINT cCount); virtual void OnLayoutPosChanged(Element* pec, Element* peChanged, int dOldLP, int dNewLP); virtual Element* GetAdjacent(Element* pec, Element* peFrom, int iNavDir, NavReference const* pnr, bool bKeyableOnly); NineGridLayout() { }; void Initialize(); virtual ~NineGridLayout() { }; private: enum { }; enum ESlot { Margin1 = 0, Left = 1, Top = 1, Margin2 = 2, Center = 3, Margin3 = 4, Right = 5, Bottom = 5, Margin4 = 6, NumSlots = 7 }; enum EDim { X = 0, Y = 1, NumDims = 2 }; enum EConst { NumCells = 9, CellsPerRow = 3 }; Element* _peTiles[NumCells]; SIZE _sizeDesired; int _length[NumDims][NumSlots]; void _UpdateTileList(int iTile, Element* pe); }; } // namespace DirectUI #endif // DUI_NINEGRIDLAYOUT_H_INCLUDED