BTTNCUR.H
/* 
 * BTTNCUR.H 
 * Buttons & Cursors 
 * 
 * Public include file for the Button Images and Cursor DLL, 
 * including structures, definitions, and function prototypes. 
 * 
 * Copyright (c)1992-1995 Microsoft Corporation, All Rights Reserved 
 * 
 * Kraig Brockschmidt, Microsoft 
 * Internet  :  kraigb@microsoft.com 
 * Compuserve:  >INTERNET:kraigb@microsoft.com 
 */ 
 
 
#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 w/ buttons. 
    UINT        cxButton;   //Dimensions of a button. 
    UINT        cyButton; 
    UINT        cxImage;    //Dimensions of bitmap image 
    UINT        cyImage; 
    UINT        uIDImages;  //Standard resource ID for images 
    } TOOLDISPLAYDATA, FAR *LPTOOLDISPLAYDATA; 
 
 
 
//Public functions 
HCURSOR WINAPI UICursorLoad(UINT); 
BOOL    WINAPI UIToolConfigureForDisplay(LPTOOLDISPLAYDATA); 
BOOL    WINAPI UIToolButtonDraw(HDC, int, int, int, int, HBITMAP 
            , int, int, int, UINT, LPTOOLDISPLAYDATA); 
 
 
#ifdef __cplusplus 
    } 
#endif 
 
#endif //_BTTNCUR_H_