update SVN properties
[reactos.git] / rosapps / games / solitaire / cardlib / cardregion.h
index 1dc9498..d3b4179 100644 (file)
-#ifndef CARDREGION_INCLUDED\r
-#define CARDREGION_INCLUDED\r
-\r
-#include "globals.h"\r
-#include "cardstack.h"\r
-#include "cardlib.h"\r
-\r
-class CardWindow;\r
-\r
-//\r
-//     This class defines a physical card-stack,\r
-//     which draws the cards, supports\r
-//\r
-\r
-class CardRegion\r
-{\r
-       friend class CardWindow;\r
-       friend class CardStack;\r
-\r
-       //\r
-       //      Constructor is PRIVATE - only\r
-       //  a CardWindow can create cardstacks!\r
-       //\r
-       CardRegion(CardWindow &parent, int id, bool fVisible, \r
-               int x, int y, int xOffset, int yOffset);\r
-\r
-       ~CardRegion();\r
-\r
-public:\r
-\r
-       void SetBackColor(COLORREF cr);\r
-       \r
-       void              SetCardStack(const CardStack &cs);\r
-       const CardStack & GetCardStack();\r
-\r
-       //\r
-       //      Event-callback support\r
-       //\r
-       bool SetDragRule(UINT uDragType, pCanDragProc proc = 0);\r
-       bool SetDropRule(UINT uDropType, pCanDropProc proc = 0);\r
-       \r
-       void SetClickProc    (pClickProc proc);\r
-       void SetDblClickProc (pClickProc proc);\r
-\r
-       void SetAddCardProc    (pAddProc proc);\r
-       void SetRemoveCardProc (pRemoveProc proc);\r
-\r
-       //\r
-       //      Physical attribute support\r
-       //\r
-       bool SetThreedCount (int count);\r
-       void SetOffsets     (int x, int y);\r
-       void SetPos         (int x, int y);\r
-       void Show           (bool fShow);\r
-       bool IsVisible      ();\r
-\r
-       void SetEmptyImage      (UINT uImage);\r
-       void SetBackCardIdx (UINT uBackIdx);\r
-       void SetPlacement   (UINT xJustify, UINT yJustify, int xAdjust, int yAdjust);\r
-\r
-       void Update();\r
-       void Redraw();\r
-\r
-       void SetFaceDirection(UINT uDirType, int nOption);\r
-       UINT GetFaceDirection(int *pnOption);\r
-\r
-       void Flash(int count, int timeout);\r
-       void StopFlash();\r
-\r
-       int  Id();\r
-\r
-       CardWindow &GetCardWindow() { return parentWnd; }\r
-\r
-       bool PlayCard(CardRegion *pDestStack, int value, int num);\r
-       bool MoveCard(CardRegion *pDestStack, int nNumCards, bool fAnimate);\r
-       bool SimulateDrag(CardRegion *pDestStack, int nNumCards, bool fAnimate);\r
-\r
-       bool Lock();\r
-       bool UnLock();\r
-\r
-       //\r
-       //      Common wrappers for the CardStack object\r
-       //\r
-       int         NumCards() const;\r
-       void        NewDeck()        { cardstack.NewDeck();  }\r
-       void        Shuffle()        { cardstack.Shuffle();  }\r
-       void        Clear()          { cardstack.Clear();    }\r
-\r
-       void            Reverse()        { cardstack.Reverse();  }\r
-       \r
-       void            Push(const Card card)     { cardstack.Push(card); }\r
-       void            Push(const CardStack &cs) { cardstack.Push(cs);   }\r
-\r
-       Card            Pop()          { return cardstack.Pop();      }\r
-       CardStack       Pop(int items) { return cardstack.Pop(items); }\r
-\r
-       Card            Top()          { return cardstack.Top();      }\r
-       CardStack       Top(int items) { return cardstack.Top(items); }\r
-\r
-\r
-private:\r
-\r
-       void DoFlash();\r
-       void RedrawIfNotDim(CardRegion *compare, bool fFullRedraw);\r
-\r
-       void UpdateFaceDir(CardStack &cards);\r
-       void Clip(HDC hdc);\r
-       void Render(HDC hdc);\r
-       int      GetOverlapRatio(int x, int y, int width, int height);\r
-\r
-       void MoveDragCardTo(HDC hdc, int x, int y);\r
-       void ZoomCard(HDC hdc, int xpos, int ypos, CardRegion *dest);\r
-\r
-       void RenderBottomMost(HDC hdc, int minustopmost = 0);\r
-       void PrepareDragBitmaps(int numtodrag);\r
-       void PrepareDragBitmapsThreed(int numtodrag);\r
-       void ReleaseDragBitmaps(void);\r
-\r
-       bool CanDragCards(int iNumCards);\r
-       bool CanDropCards(CardStack &cards);\r
-       \r
-       void CalcApparentCards();\r
-       int      CalcApparentCards(int realnum);\r
-\r
-       void UpdateSize();\r
-       void AdjustPosition(int winwidth, int winheight);\r
-\r
-       bool IsPointInStack(int x, int y);\r
-\r
-       int       GetNumDragCards(int x, int y);\r
-       bool  OnLButtonDown(int x, int y);\r
-       bool  OnLButtonDblClk(int x, int y);\r
-       bool  OnMouseMove(int x, int y);\r
-       bool  OnLButtonUp(int x, int y);\r
-\r
-       \r
-       //\r
-       //      Private data members\r
-       //\r
-\r
-       int             id;\r
-       \r
-       CardWindow &parentWnd;\r
-       \r
-       CardStack  cardstack;   //cards in this stack\r
-       CardStack  dragstack;   //cards which we might be dragging\r
-\r
-       bool    fMouseDragging;\r
-\r
-       int             xpos;                   //coordinates of stack\r
-       int             ypos;\r
-\r
-       int             xoffset;                //direction that cards take\r
-       int             yoffset;\r
-\r
-       int             width;                  //stack-size of all cards\r
-       int             height;\r
-\r
-       //\r
-       //      justify / placement vars\r
-       int             xjustify;\r
-       int             yjustify;\r
-       int             xadjust;\r
-       int             yadjust;\r
-\r
-       //\r
-       //      Used for mouse-dragging / moving cards\r
-       //\r
-       int             iNumDragCards;\r
-       int             mousexoffset;   \r
-       int             mouseyoffset;\r
-       int             oldx;\r
-       int             oldy;\r
-       \r
-       int             nDragCardWidth;\r
-       int             nDragCardHeight;\r
-       \r
-       HDC             hdcBackGnd;\r
-       HBITMAP hbmBackGnd;\r
-       HDC             hdcDragCard;\r
-       HBITMAP hbmDragCard;\r
-\r
-       int             nNumApparentCards;\r
-       int             nThreedCount;\r
-       bool    fVisible;\r
-       \r
-       int             nFlashCount;\r
-       bool    fFlashVisible;\r
-       UINT    uFlashTimer;\r
-\r
-       COLORREF crBackgnd;\r
-\r
-       UINT    uEmptyImage;\r
-       UINT    uFaceDirType;\r
-       int             nFaceDirOption;\r
-       int             nBackCardIdx;\r
-\r
-       UINT    uDragRule;\r
-       UINT    uDropRule;\r
-       \r
-       //\r
-       //      Stack callback support\r
-       //      \r
-       pCanDragProc    CanDragCallback;\r
-       pCanDropProc    CanDropCallback;\r
-       pClickProc              ClickCallback;\r
-       pClickProc              DblClickCallback;\r
-       pAddProc                AddCallback;\r
-       pRemoveProc             RemoveCallback;\r
-\r
-       //locking mechanism to prevent user dragging etc\r
-       HANDLE                  mxlock;         \r
-};\r
-\r
-#endif\r
-\r
+#ifndef CARDREGION_INCLUDED
+#define CARDREGION_INCLUDED
+
+#include "globals.h"
+#include "cardstack.h"
+#include "cardlib.h"
+
+class CardWindow;
+
+//
+//     This class defines a physical card-stack,
+//     which draws the cards, supports
+//
+
+class CardRegion
+{
+       friend class CardWindow;
+       friend class CardStack;
+
+       //
+       //      Constructor is PRIVATE - only
+       //  a CardWindow can create cardstacks!
+       //
+       CardRegion(CardWindow &parent, int id, bool fVisible, 
+               int x, int y, int xOffset, int yOffset);
+
+       ~CardRegion();
+
+public:
+
+       void SetBackColor(COLORREF cr);
+       
+       void              SetCardStack(const CardStack &cs);
+       const CardStack & GetCardStack();
+
+       //
+       //      Event-callback support
+       //
+       bool SetDragRule(UINT uDragType, pCanDragProc proc = 0);
+       bool SetDropRule(UINT uDropType, pCanDropProc proc = 0);
+       
+       void SetClickProc    (pClickProc proc);
+       void SetDblClickProc (pClickProc proc);
+
+       void SetAddCardProc    (pAddProc proc);
+       void SetRemoveCardProc (pRemoveProc proc);
+
+       //
+       //      Physical attribute support
+       //
+       bool SetThreedCount (int count);
+       void SetOffsets     (int x, int y);
+       void SetPos         (int x, int y);
+       void Show           (bool fShow);
+       bool IsVisible      ();
+
+       void SetEmptyImage      (UINT uImage);
+       void SetBackCardIdx (UINT uBackIdx);
+       void SetPlacement   (UINT xJustify, UINT yJustify, int xAdjust, int yAdjust);
+
+       void Update();
+       void Redraw();
+
+       void SetFaceDirection(UINT uDirType, int nOption);
+       UINT GetFaceDirection(int *pnOption);
+
+       void Flash(int count, int timeout);
+       void StopFlash();
+
+       int  Id();
+
+       CardWindow &GetCardWindow() { return parentWnd; }
+
+       bool PlayCard(CardRegion *pDestStack, int value, int num);
+       bool MoveCard(CardRegion *pDestStack, int nNumCards, bool fAnimate);
+       bool SimulateDrag(CardRegion *pDestStack, int nNumCards, bool fAnimate);
+
+       bool Lock();
+       bool UnLock();
+
+       //
+       //      Common wrappers for the CardStack object
+       //
+       int         NumCards() const;
+       void        NewDeck()        { cardstack.NewDeck();  }
+       void        Shuffle()        { cardstack.Shuffle();  }
+       void        Clear()          { cardstack.Clear();    }
+
+       void            Reverse()        { cardstack.Reverse();  }
+       
+       void            Push(const Card card)     { cardstack.Push(card); }
+       void            Push(const CardStack &cs) { cardstack.Push(cs);   }
+
+       Card            Pop()          { return cardstack.Pop();      }
+       CardStack       Pop(int items) { return cardstack.Pop(items); }
+
+       Card            Top()          { return cardstack.Top();      }
+       CardStack       Top(int items) { return cardstack.Top(items); }
+
+
+private:
+
+       void DoFlash();
+       void RedrawIfNotDim(CardRegion *compare, bool fFullRedraw);
+
+       void UpdateFaceDir(CardStack &cards);
+       void Clip(HDC hdc);
+       void Render(HDC hdc);
+       int      GetOverlapRatio(int x, int y, int width, int height);
+
+       void MoveDragCardTo(HDC hdc, int x, int y);
+       void ZoomCard(HDC hdc, int xpos, int ypos, CardRegion *dest);
+
+       void RenderBottomMost(HDC hdc, int minustopmost = 0);
+       void PrepareDragBitmaps(int numtodrag);
+       void PrepareDragBitmapsThreed(int numtodrag);
+       void ReleaseDragBitmaps(void);
+
+       bool CanDragCards(int iNumCards);
+       bool CanDropCards(CardStack &cards);
+       
+       void CalcApparentCards();
+       int      CalcApparentCards(int realnum);
+
+       void UpdateSize();
+       void AdjustPosition(int winwidth, int winheight);
+
+       bool IsPointInStack(int x, int y);
+
+       int       GetNumDragCards(int x, int y);
+       bool  OnLButtonDown(int x, int y);
+       bool  OnLButtonDblClk(int x, int y);
+       bool  OnMouseMove(int x, int y);
+       bool  OnLButtonUp(int x, int y);
+
+       
+       //
+       //      Private data members
+       //
+
+       int             id;
+       
+       CardWindow &parentWnd;
+       
+       CardStack  cardstack;   //cards in this stack
+       CardStack  dragstack;   //cards which we might be dragging
+
+       bool    fMouseDragging;
+
+       int             xpos;                   //coordinates of stack
+       int             ypos;
+
+       int             xoffset;                //direction that cards take
+       int             yoffset;
+
+       int             width;                  //stack-size of all cards
+       int             height;
+
+       //
+       //      justify / placement vars
+       int             xjustify;
+       int             yjustify;
+       int             xadjust;
+       int             yadjust;
+
+       //
+       //      Used for mouse-dragging / moving cards
+       //
+       int             iNumDragCards;
+       int             mousexoffset;   
+       int             mouseyoffset;
+       int             oldx;
+       int             oldy;
+       
+       int             nDragCardWidth;
+       int             nDragCardHeight;
+       
+       HDC             hdcBackGnd;
+       HBITMAP hbmBackGnd;
+       HDC             hdcDragCard;
+       HBITMAP hbmDragCard;
+
+       int             nNumApparentCards;
+       int             nThreedCount;
+       bool    fVisible;
+       
+       int             nFlashCount;
+       bool    fFlashVisible;
+       UINT    uFlashTimer;
+
+       COLORREF crBackgnd;
+
+       UINT    uEmptyImage;
+       UINT    uFaceDirType;
+       int             nFaceDirOption;
+       int             nBackCardIdx;
+
+       UINT    uDragRule;
+       UINT    uDropRule;
+       
+       //
+       //      Stack callback support
+       //      
+       pCanDragProc    CanDragCallback;
+       pCanDropProc    CanDropCallback;
+       pClickProc              ClickCallback;
+       pClickProc              DblClickCallback;
+       pAddProc                AddCallback;
+       pRemoveProc             RemoveCallback;
+
+       //locking mechanism to prevent user dragging etc
+       HANDLE                  mxlock;         
+};
+
+#endif
+