GLOBALS.H

/****************************************************************************/ 
/* */
/* Copyright (C) 1987-1996 Microsoft Corp. */
/* All Rights Reserved */
/* */
/****************************************************************************/
/****************************** Module Header *******************************
* Module Name: globals.h
*
* Declares global data for the image editor.
*
* History:
*
****************************************************************************/


/*
* Initialized data and structures -----------------------------------------
*/

extern INIENTRY gaie[]; // Initialization data structure.

extern BOOL gfGrid; // TRUE if the grid is on.
extern BOOL gfShowColor; // TRUE if Color palette is to be shown.
extern BOOL gfShowView; // TRUE if View window is to be shown.
extern BOOL gfShowToolbox; // TRUE if Toolbox is to be shown.
extern INT gnBrushSize; // Current brush size.

extern CHAR szAppPos[]; // App window's position keyname.
extern CHAR szTBPos[]; // Toolbox window's position keyname.
extern CHAR szViewPos[]; // View window's position keyname.
extern CHAR szColorPos[]; // Color palette window's position keyname.
extern CHAR szrgbScreen[]; // Screen color keyname.


/*
* Instance handles, window handles and class strings ----------------------
*/

extern HANDLE ghInst; // App instance handle.
extern HANDLE haccelTbl; // Accelerator table handle.
extern HCURSOR hcurWait; // Standard hourglass cursor.

extern HWND ghwndMain; // Main app window handle.
extern HWND ghwndWork; // Workspace window handle.
extern HWND ghwndPropBar; // Properties Bar window handle.
extern HWND ghwndToolbox; // Toolbox window handle.
extern HWND ghwndView; // View window handle.
extern HWND ghwndColor; // Color palette window handle.

extern CHAR szMainClass[]; // Main window class.
extern CHAR szWorkClass[]; // Work window class.
extern CHAR szToolboxClass[]; // Toolbox window class.
extern CHAR szToolBtnClass[]; // Toolbox button window class.
extern CHAR szViewClass[]; // View window class.
extern CHAR szColorBoxClass[]; // Color box window class.
extern CHAR szColorLRClass[]; // Color Left-Right sample class.


/*
* Device list globals -----------------------------------------------------
*/

extern PDEVICE gpIconDeviceHead; // Head of icon device list.
extern INT gnIconDevices; // Number of icon devices.
extern PDEVICE gpCursorDeviceHead; // Head of cursor device list.
extern INT gnCursorDevices; // Number of cursor devices.


/*
* Globals that describe the current file and image being edited -----------
*/

extern CHAR gszFullFileName[]; // Full path name of current file.
extern PSTR gpszFileName; // Current file name (or NULL).
extern INT giType; // Type of object being edited currently.
extern PIMAGEINFO gpImageHead; // Head of image linked list.
extern INT gnImages; // Number of images in the file.
extern BOOL fFileDirty; // TRUE if the file is dirty.

extern PIMAGEINFO gpImageCur; // Pointer to current image.
extern INT gcxImage; // Width of the image.
extern INT gcyImage; // Height of the image.
extern INT gnColors; // Number of colors of current image.
extern BOOL fImageDirty; // TRUE if the image is dirty.


/*
* Drawing DC's and bitmaps ------------------------------------------------
*/

extern HDC ghdcImage; // Image XOR DC.
extern HBITMAP ghbmImage; // Image XOR bitmap.

extern HDC ghdcANDMask; // Image AND mask DC.
extern HBITMAP ghbmANDMask; // Image AND mask bitmap.

extern HBITMAP ghbmUndo; // Backup of XOR bitmap for undo.
extern HBITMAP ghbmUndoMask; // Backup of AND mask bitmap for undo.


/*
* Globals for the color palette and drawing -------------------------------
*/

extern INT giColorLeft; // Index to the left color in gargbCurrent.
extern INT giColorRight; // Index to the right color in gargbCurrent.
extern INT gfModeLeft; // Mode of the left color brush.
extern INT gfModeRight; // Mode of the right color brush.
extern HBRUSH ghbrLeft; // Brush with left mouse button color.
extern HBRUSH ghbrLeftSolid; // Brush with solid left button color.
extern HBRUSH ghbrRight; // Brush with right mouse button color.
extern HBRUSH ghbrRightSolid; // Brush with solid right button color.
extern HBRUSH ghbrScreen; // Brush with screen color.
extern HBRUSH ghbrInverse; // Brush with inverse screen color.
extern HPEN ghpenLeft; // Left color pen.
extern HPEN ghpenRight; // Right color pen.
extern DWORD grgbScreenDefault; // Default screen color.
extern DWORD grgbScreen; // RGB of screen color.
extern DWORD grgbInverse; // RGB of inverse screen color.
extern DWORD *gargbCurrent; // Points to the current color table.
extern DWORD gargbColor[]; // Current color color table.
extern DWORD gargbMono[]; // Current monochrome color table.
extern HPEN hpenDarkGray; // A dark gray pen.

extern DRAWPROC gpfnDrawProc; // Current drawing functions.
extern INT gCurTool; // Current tool (TOOL_* define).
extern HBRUSH ghbrDraw; // Current drawing brush.
extern HBRUSH ghbrDrawSolid; // Current solid drawing brush.
extern HPEN ghpenDraw; // Current drawing pen.
extern INT gfDrawMode; // Mode of current drawing brush.

extern DWORD gargbDefaultColor[]; // The default color palette.

extern DWORD gargbDefaultMono[]; // The default monochrome palette.

extern DWORD gargbColorTable2[]; // Color table for monochrome DIB's.

extern TOOLS gaTools[]; // Tool table.


/*
* Globals and tables for messages and help --------------------------------
*/

extern MESSAGEDATA gamdMessages[]; // Message box messages table.

extern INT gidCurrentDlg; // Current dialog id (null if none).
extern INT gMenuSelected; // Currently selected menu item.
extern CHAR gszHelpFile[]; // Path to the help file.
extern HHOOK ghhkMsgFilter; // Hook handle for message filter func.
extern FARPROC lpfnMsgFilterHookFunc; // The message filter proc instance.

extern HELPMAP gahmapMenu[]; // Menu item to help topic mapping table.

extern HELPMAP gahmapDialog[]; // Dialog id to help topic mapping table.


/*
* Misc. globals -----------------------------------------------------------
*/

extern INT gcxWorkSpace; // Width of workspace window.
extern INT gcyWorkSpace; // Height of workspace window.
extern INT gZoomFactor; // Magnification factor of image.

extern RECT grcPick; // The current picking rectangle.
extern INT gcxPick; // Width of picking rectangle.
extern INT gcyPick; // Height of picking rectangle.

extern UINT ClipboardFormat; // ID of private clipboard format.
extern BOOL fStretchClipboardData; // TRUE to default to stretch on paste.

extern INT iNewFileType; // New file type the user selected.

extern INT gcyBorder; // System border height.
extern INT gcyPropBar; // Height of PropBar window.

extern WNDPROC lpfnPropBarDlgProc; // Proc inst. of PropBar dialog proc.
extern WNDPROC lpfnColorDlgProc; // Proc inst. of Color palette dlg proc.