--- /dev/null
+#ifndef CARDLIB_INCLUDED
+#define CARDLIB_INCLUDED
+
+#include <stdarg.h>
+#include <stdlib.h>
+
+#define WIN32_NO_STATUS
+#include <windef.h>
+#include <winbase.h>
+#include <wingdi.h>
+#include <winuser.h>
+
+#define CARDLIBPROC __stdcall
+
+void CardBlt(HDC hdc, int x, int y, int nCardNum);
+void CardLib_SetZoomSpeed(int);
+
+#define CS_EI_NONE 0
+#define CS_EI_SUNK 1
+#define CS_EI_CIRC 67
+#define CS_EI_X 66
+
+#define CS_DEFXOFF 12 //x-offset
+#define CS_DEFYOFF 18 //y-offset
+#define CS_NO3D 1 //default 3d counts (recommened)
+#define CS_DEF3D 10 //(best for decks)
+
+#define CS_DRAG_NONE 0
+#define CS_DRAG_TOP 1
+#define CS_DRAG_ALL 2
+#define CS_DRAG_CALLBACK 3
+
+#define CS_DROP_NONE 0
+#define CS_DROP_ALL 1
+#define CS_DROP_CALLBACK 2
+
+#define CS_XJUST_NONE 0
+#define CS_XJUST_RIGHT 1
+#define CS_XJUST_CENTER 2
+
+#define CS_YJUST_NONE 0
+#define CS_YJUST_BOTTOM 1
+#define CS_YJUST_CENTER 2
+
+#define CB_STATIC 0 //static text label
+#define CB_PUSHBUTTON 1 //normal button
+#define CB_ALIGN_CENTER 0 //centered is default
+#define CB_ALIGN_LEFT 2
+#define CB_ALIGN_RIGHT 4
+
+#define CS_FACE_UP 0 //all cards face-up
+#define CS_FACE_DOWN 1 //all cards face-down
+#define CS_FACE_DOWNUP 2 //bottom X cards down, top-most face-up
+#define CS_FACE_UPDOWN 3 //bottom X cards up, top-most face-down
+#define CS_FACE_ANY 4 //cards can be any orientation
+
+#define CS_DROPZONE_NODROP -1
+
+//
+// Define the standard card-back indices
+//
+#define ecbCROSSHATCH 53
+#define ecbWEAVE1 54
+#define ecbWEAVE2 55
+#define ecbROBOT 56
+#define ecbFLOWERS 57
+#define ecbVINE1 58
+#define ecbVINE2 59
+#define ecbFISH1 60
+#define ecbFISH2 61
+#define ecbSHELLS 62
+#define ecbCASTLE 63
+#define ecbISLAND 64
+#define ecbCARDHAND 65
+#define ecbUNUSED 66
+#define ecbTHE_X 67
+#define ecbTHE_O 68
+
+
+class CardRegion;
+class CardButton;
+class CardStack;
+class CardWindow;
+
+typedef bool (CARDLIBPROC *pCanDragProc) (CardRegion &stackobj, int iNumDragging);
+typedef bool (CARDLIBPROC *pCanDropProc) (CardRegion &stackobj, CardStack &cards);
+typedef void (CARDLIBPROC *pClickProc) (CardRegion &stackobj, int iNumCards);
+typedef void (CARDLIBPROC *pAddProc) (CardRegion &stackobj, const CardStack &cards);
+typedef void (CARDLIBPROC *pRemoveProc) (CardRegion &stackobj, int iNumRemoved);
+
+typedef void (CARDLIBPROC *pResizeWndProc) (int width, int height);
+typedef int (CARDLIBPROC *pDropZoneProc) (int dzid, const CardStack &cards);
+
+typedef void (CARDLIBPROC *pButtonProc) (CardButton &pButton);
+
+#include "globals.h"
+#include "card.h"
+#include "cardbutton.h"
+#include "cardcolor.h"
+#include "cardstack.h"
+#include "cardregion.h"
+#include "dropzone.h"
+#include "cardwindow.h"
+
+#ifdef _DEBUG
+typedef bool (CARDLIBPROC *pDebugClickProc) (CardRegion &stackobj);
+void CardLib_SetStackClickProc(pDebugClickProc proc);
+#endif
+
+#endif /* CARDLIB_INCLUDED */