BTTNCUR.H

/* 
* BTTNCUR.H
* Buttons & Cursors Version 1.1, March 1993
*
* Public include file for the Button Images and Cursor DLL, including
* structures, definitions, and function prototypes.
*
* Copyright (c)1992-1996 Microsoft Corporation, All Rights Reserved,
* as applied to redistribution of this source code in source form
* License is granted to use of compiled code in shipped binaries.
*/


#ifndef _BTTNCUR_H_
#define _BTTNCUR_H_

#ifdef __cplusplus
extern "C"
{
#endif


//Standard image bitmap

//WARNING: Obsolete. Use the return from UIToolDisplayData
#define IDB_STANDARDIMAGES 400

//New values for display types
#define IDB_STANDARDIMAGESMIN 400
#define IDB_STANDARDIMAGES96 400
#define IDB_STANDARDIMAGES72 401
#define IDB_STANDARDIMAGES120 402



//Image indices inside the standard bitmap.
#define TOOLIMAGE_MIN 0
#define TOOLIMAGE_EDITCUT 0
#define TOOLIMAGE_EDITCOPY 1
#define TOOLIMAGE_EDITPASTE 2
#define TOOLIMAGE_FILENEW 3
#define TOOLIMAGE_FILEOPEN 4
#define TOOLIMAGE_FILESAVE 5
#define TOOLIMAGE_FILEPRINT 6
#define TOOLIMAGE_HELP 7
#define TOOLIMAGE_HELPCONTEXT 8
#define TOOLIMAGE_MAX 8


//Additional Standard Cursors as defined in the UI Design Guide.
#define IDC_NEWUICURSORMIN 500
#define IDC_RIGHTARROW 500
#define IDC_CONTEXTHELP 501
#define IDC_MAGNIFY 502
#define IDC_NODROP 503
#define IDC_TABLETOP 504
#define IDC_HSIZEBAR 505
#define IDC_VSIZEBAR 506
#define IDC_HSPLITBAR 507
#define IDC_VSPLITBAR 508
#define IDC_SMALLARROWS 509
#define IDC_LARGEARROWS 510
#define IDC_HARROWS 511
#define IDC_VARROWS 512
#define IDC_NESWARROWS 513
#define IDC_NWSEARROWS 514
#define IDC_NEWUICURSORMAX 514



//Standard sizes for toolbar buttons and bitmaps on display types

//WARNING: These are obsolete for version 1.0 compatibility/
#define TOOLBUTTON_STDWIDTH 24
#define TOOLBUTTON_STDHEIGHT 22
#define TOOLBUTTON_STDIMAGEWIDTH 16
#define TOOLBUTTON_STDIMAGEHEIGHT 15

/*
* Applications can call UIToolDisplayData to get the particular
* values to use for the current display instead of using these values
* directly. However, if the application has the aspect ratio already
* then these are available for them.
*/

//Sizes for 72 DPI (EGA)
#define TOOLBUTTON_STD72WIDTH 24
#define TOOLBUTTON_STD72HEIGHT 16
#define TOOLBUTTON_STD72IMAGEWIDTH 16
#define TOOLBUTTON_STD72IMAGEHEIGHT 11

//Sizes for 96 DPI (VGA)
#define TOOLBUTTON_STD96WIDTH 24
#define TOOLBUTTON_STD96HEIGHT 22
#define TOOLBUTTON_STD96IMAGEWIDTH 16
#define TOOLBUTTON_STD96IMAGEHEIGHT 15

//Sizes for 120 DPI (8514/a)
#define TOOLBUTTON_STD120WIDTH 32
#define TOOLBUTTON_STD120HEIGHT 31
#define TOOLBUTTON_STD120IMAGEWIDTH 24
#define TOOLBUTTON_STD120IMAGEHEIGHT 23


//Sizes of a standard button bar depending on the display
#define CYBUTTONBAR72 23
#define CYBUTTONBAR96 29
#define CYBUTTONBAR120 38



/*
* The low-word of the state contains the display state where each
* value is mutually exclusive and contains one or more grouping bits.
* Each group represents buttons that share some sub-state in common.
*
* The high-order byte controls which colors in the source bitmap,
* black, white, gray, and dark gray, are to be converted into the
* system colors COLOR_BTNTEXT, COLOR_HILIGHT, COLOR_BTNFACE, and
* COLOR_BTNSHADOW. Any or all of these bits may be set to allow
* the application control over specific colors.
*
* The actual state values are split into a command group and an
* attribute group. Up, mouse down, and disabled states are identical,
* but only attributes can have down, down disabled, and indeterminate
* states.
*
* BUTTONGROUP_BLANK is defined so an application can draw only the button
* without an image in the up, down, mouse down, or indeterminate
* state, that is, BUTTONGROUP_BLANK is inclusive with BUTTONGROUP_DOWN
* and BUTTONGROUP_LIGHTFACE.
*/


#define BUTTONGROUP_DOWN 0x0001
#define BUTTONGROUP_ACTIVE 0x0002
#define BUTTONGROUP_DISABLED 0x0004
#define BUTTONGROUP_LIGHTFACE 0x0008
#define BUTTONGROUP_BLANK 0x0010

//Command buttons only
#define COMMANDBUTTON_UP (BUTTONGROUP_ACTIVE)
#define COMMANDBUTTON_MOUSEDOWN (BUTTONGROUP_ACTIVE | BUTTONGROUP_DOWN)
#define COMMANDBUTTON_DISABLED (BUTTONGROUP_DISABLED)

//Attribute buttons only
#define ATTRIBUTEBUTTON_UP (BUTTONGROUP_ACTIVE)
#define ATTRIBUTEBUTTON_MOUSEDOWN (BUTTONGROUP_ACTIVE | BUTTONGROUP_DOWN)
#define ATTRIBUTEBUTTON_DISABLED (BUTTONGROUP_DISABLED)
#define ATTRIBUTEBUTTON_DOWN (BUTTONGROUP_ACTIVE | BUTTONGROUP_DOWN | BUTTONGROUP_LIGHTFACE)
#define ATTRIBUTEBUTTON_INDETERMINATE (BUTTONGROUP_ACTIVE | BUTTONGROUP_LIGHTFACE)
#define ATTRIBUTEBUTTON_DOWNDISABLED (BUTTONGROUP_DISABLED | BUTTONGROUP_DOWN | BUTTONGROUP_LIGHTFACE)

//Blank buttons only
#define BLANKBUTTON_UP (BUTTONGROUP_ACTIVE | BUTTONGROUP_BLANK)
#define BLANKBUTTON_DOWN (BUTTONGROUP_ACTIVE | BUTTONGROUP_BLANK | BUTTONGROUP_DOWN | BUTTONGROUP_LIGHTFACE)
#define BLANKBUTTON_MOUSEDOWN (BUTTONGROUP_ACTIVE | BUTTONGROUP_BLANK | BUTTONGROUP_DOWN)
#define BLANKBUTTON_INDETERMINATE (BUTTONGROUP_ACTIVE | BUTTONGROUP_BLANK | BUTTONGROUP_LIGHTFACE)


/*
* Specific bits to prevent conversions of specific colors to system
* colors. If an application uses this newer library and never specified
* any bits, then they benefit from color conversion automatically.
*/
#define PRESERVE_BLACK 0x0100
#define PRESERVE_DKGRAY 0x0200
#define PRESERVE_LTGRAY 0x0400
#define PRESERVE_WHITE 0x0800

#define PRESERVE_ALL (PRESERVE_BLACK | PRESERVE_DKGRAY | PRESERVE_LTGRAY | PRESERVE_WHITE)
#define PRESERVE_NONE 0 //Backwards compatible



//Structure for UIToolConfigureForDisplay
typedef struct tagTOOLDISPLAYDATA
{
UINT uDPI; //Display driver DPI
UINT cyBar; //Vertical size for a bar containing buttons.
UINT cxButton; //Dimensions of a button.
UINT cyButton;
UINT cxImage; //Dimensions of bitmap image
UINT cyImage;
UINT uIDImages; //Standard resource ID for display-sensitive images
} TOOLDISPLAYDATA, FAR *LPTOOLDISPLAYDATA;



//Public functions in BTTNCUR.DLL
HCURSOR WINAPI UICursorLoad(UINT);
BOOL WINAPI UIToolConfigureForDisplay(LPTOOLDISPLAYDATA);
BOOL WINAPI UIToolButtonDraw(HDC, int, int, int, int, HBITMAP, int, int, int, UINT);
BOOL WINAPI UIToolButtonDrawTDD(HDC, int, int, int, int, HBITMAP, int, int, int, UINT, LPTOOLDISPLAYDATA);


#ifdef __cplusplus
}
#endif

#endif //_BTTNCUR_H_