/*---------------------------------------------------------------------------*/
/* PrivComd.h : UI dialog header                                             */
/*                                                                           */
/* Copyright (c) Microsoft Corporation, 1991-                                */
/*---------------------------------------------------------------------------*/

#include "commdlg.h"
#include "dlgs.h"
#include "_xlib.h"
#include "isz.h"
#include "cderr.h"

#ifdef FILEOPENDIALOGS
#include "fileopen.h"
#endif

#define	CODESEG		_based(_segname("_CODE"))

#define MAXFILENAMELEN   12
#define SEM_NOERROR      0x8003

/*---------------------------------------------------------------------------
 *  DOS Disk Transfer Area Structure -
 *--------------------------------------------------------------------------*/

typedef struct tagDOSDTA
  {
    BYTE            Reserved[21];        	    /* 21 */
    BYTE	    Attrib;			    /* 22 */
    WORD	    Time;			    /* 24 */
    WORD	    Date;			    /* 26 */
    DWORD	    Length;			    /* 30 */
    char	    szName[MAXFILENAMELEN+1];	    /* 43 */
    char	    buffer[5];			    /* 48 */
  } DOSDTA;
typedef DOSDTA	     *PDOSDTA;
typedef DOSDTA	 FAR *LPDOSDTA;

/* Avoids sharing violations.  Defined 21 Jan 1991   clarkc */
#define SHARE_EXIST                  (OF_EXIST | OF_SHARE_DENY_NONE)

/*---------------------------------------------------------------------------
 *  DOS Extended File Control Block Structure -
 *--------------------------------------------------------------------------*/
typedef struct tagEFCB
  {
    BYTE	    Flag;
    BYTE	    Reserve1[5];
    BYTE	    Attrib;
    BYTE	    Drive;
    BYTE	    Filename[11];
    BYTE	    Reserve2[5];
    BYTE	    NewName[11];
    BYTE	    Reserve3[9];
  } EFCB;

#define ATTR_VOLUME	    0x0008

/*----Globals---------------------------------------------------------------*/

extern HINSTANCE   hinsCur;    /* Instance handle of Library */
extern DWORD    dwExtError; /* Extended error code */

extern short cyCaption, cyBorder, cyVScroll;
extern short cxVScroll, cxBorder, cxSize;


extern char szNull[];
extern char szStar[];
extern char szStarDotStar[];
extern BOOL bMouse;              /* System has a mouse */
extern BOOL bCursorLock;
extern BOOL bWLO;                /* Running with WLO */
extern BOOL bDBCS;               /* Running Double-Byte Character Support? */
extern WORD wWinVer;             /* Windows version */
extern WORD wDOSVer;             /* DOS version */
extern UINT msgHELP;             /* Initialized via RegisterWindowMessage */

extern DOSDTA  DTAGlobal;
extern EFCB    VolumeEFCB;

/*----Functions--------------------------------------------------------------*/
LONG    FAR RgbInvertRgb(LONG);
HBITMAP FAR HbmpLoadBmp(WORD);

void FAR TermFind(void);
void FAR TermColor(void);
void FAR TermFont(void);
void FAR TermFile(void);
void FAR TermPrint(void);


/* Common */

VOID FAR PASCAL HourGlass(BOOL);
HBITMAP FAR PASCAL LoadAlterBitmap(int, DWORD, DWORD);
VOID FAR PASCAL MySetObjectOwner(HANDLE);
VOID FAR PASCAL RepeatMove(LPSTR, LPSTR, WORD);

/* File Open/Save */

#ifdef FILEOPENDIALOGS
BOOL FAR PASCAL SetCurrentDrive(short);
short FAR PASCAL GetCurrentDrive(VOID);
BOOL GetCurDirectory(PSTR);
BOOL FAR PASCAL mygetcwd(LPSTR, int);
BOOL FAR PASCAL mychdir(LPSTR);
BOOL FAR PASCAL FindFirst4E(LPSTR, WORD);
BOOL FAR PASCAL FindNext4F(VOID);
VOID FAR PASCAL MySetDTAAddress(LPDOSDTA);
VOID FAR PASCAL ResetDTAAddress(VOID);
BOOL UpdateListBoxes(HWND, PMYOFN, LPSTR, WORD);
#endif

/* Color */

#ifdef COLORDLG
#include "color.h"
    /* Color */
extern HDC hDCFastBlt;
extern DWORD rgbClient;
extern WORD H,S,L;
extern HBITMAP hRainbowBitmap;
extern BOOL bMouseCapture;
extern WNDPROC lpprocStatic;
extern short nDriverColors;
extern char szOEMBIN[];
extern short nBoxHeight, nBoxWidth;
extern HWND hSave;
extern FARPROC  qfnColorDlg;
BOOL FAR PASCAL ColorDlgProc(HWND, WORD, WORD, LONG);
LONG FAR PASCAL WantArrows(HWND, WORD, WPARAM, LPARAM);

void RainbowPaint(PCOLORINFO, HDC, LPRECT);
VOID NearestSolid(PCOLORINFO);
DWORD HLStoRGB(WORD, WORD, WORD);
VOID RGBtoHLS(DWORD);
VOID HLStoHLSPos(short, PCOLORINFO);
VOID SetRGBEdit(short, PCOLORINFO);
VOID SetHLSEdit(short, PCOLORINFO);
short RGBEditChange(short, PCOLORINFO);
VOID ChangeColorSettings(PCOLORINFO);
VOID CrossHairPaint(HDC, short, short, PCOLORINFO);
void EraseCrossHair(HDC, PCOLORINFO);
VOID LumArrowPaint(HDC, short, PCOLORINFO);
VOID EraseLumArrow(HDC, PCOLORINFO);
VOID HLSPostoHLS(short, PCOLORINFO);
WORD InitColor(HWND, WORD, LPCHOOSECOLOR);
BOOL InitRainbow(PCOLORINFO);
BOOL InitScreenCoords(HWND, PCOLORINFO);
VOID ColorPaint(HWND, PCOLORINFO, HDC, LPRECT);
VOID ChangeBoxSelection(PCOLORINFO, short);
VOID ChangeBoxFocus(PCOLORINFO, short);
VOID PaintBox(PCOLORINFO, HDC, short);
BOOL ColorKeyDown(WORD, int FAR *, PCOLORINFO);
BOOL BoxDrawItem(LPDIS);
VOID SetupRainbowCapture(PCOLORINFO);
void PaintRainbow(HDC, LPRECT, PCOLORINFO);
#endif


/* Dlgs.c */

int  FAR PASCAL LibMain(HANDLE, WORD, WORD, LPSTR);
int  FAR PASCAL WEP(int);

LONG FAR RgbInvertRgb(LONG);