Annotation of mstools/samples/sdktools/imagedit/imagedit.h, revision 1.1.1.1

1.1       root        1: /****************************************************************************/
                      2: /*                                                                          */
                      3: /*                         Microsoft Confidential                           */
                      4: /*                                                                          */
                      5: /*                 Copyright (c) Microsoft Corp.  1987, 1990                */
                      6: /*                           All Rights Reserved                            */
                      7: /*                                                                          */
                      8: /****************************************************************************/
                      9: /****************************** Module Header *******************************
                     10: * Module Name: imagedit.h
                     11: *
                     12: * Main header file for the Image Editor.
                     13: *
                     14: * History:
                     15: *
                     16: ****************************************************************************/
                     17: 
                     18: #define WIN31
                     19: #define _WINDOWS
                     20: #define NOMINMAX
                     21: #include <windows.h>
                     22: 
                     23: 
                     24: #ifdef DBG
                     25: #define STATICFN
                     26: #else
                     27: #define STATICFN         static
                     28: #endif
                     29: 
                     30: #define WINDOWPROC      LONG  APIENTRY
                     31: #define DIALOGPROC      BOOL  APIENTRY
                     32: 
                     33: /*
                     34:  * Typedef for a drawing proc (a tool).
                     35:  */
                     36: typedef VOID (*DRAWPROC)(HWND, UINT, POINT);
                     37: 
                     38: #define CCHTEXTMAX      256
                     39: 
                     40: /*
                     41:  * Maximum size of a file name plus path specification.
                     42:  */
                     43: #define CCHMAXPATH              260
                     44: 
                     45: 
                     46: /*
                     47:  * Defines for the different tools.  These are indexes into
                     48:  * the gaTools table.
                     49:  */
                     50: #define TOOL_FIRST                  0
                     51: #define TOOL_PENCIL                 0
                     52: #define TOOL_BRUSH                  1
                     53: #define TOOL_SELECT                 2
                     54: #define TOOL_LINE                   3
                     55: #define TOOL_RECT                   4
                     56: #define TOOL_SOLIDRECT              5
                     57: #define TOOL_CIRCLE                 6
                     58: #define TOOL_SOLIDCIRCLE            7
                     59: #define TOOL_FLOODFILL              8
                     60: #define TOOL_HOTSPOT                9
                     61: 
                     62: #define CTOOLS                      10      /* Number of tools.             */
                     63: 
                     64: 
                     65: /*
                     66:  * Macros to simplify working with menus. */
                     67: #define MyEnableMenuItem(hMenu, wIDEnableItem, fEnable) \
                     68:     EnableMenuItem((hMenu),(wIDEnableItem),(fEnable)?MF_ENABLED:MF_GRAYED)
                     69: 
                     70: #define MyCheckMenuItem(hMenu, wIDCheckItem, fCheck) \
                     71:     CheckMenuItem((hMenu),(wIDCheckItem),(fCheck)?MF_CHECKED:MF_UNCHECKED)
                     72: 
                     73: 
                     74: /*
                     75:  * Defines for strings.
                     76:  */
                     77: #define IDS_NULL                    0
                     78: #define IDS_VERSION                 1
                     79: #define IDS_VERSIONMINOR            2
                     80: #define IDS_OUTOFMEMORY             3
                     81: #define IDS_MEMERROR                4
                     82: #define IDS_BADBMPFILE              5
                     83: #define IDS_BADICOCURFILE           6
                     84: #define IDS_BADPALFILE              7
                     85: #define IDS_CANTOPEN                8
                     86: #define IDS_READERROR               9
                     87: #define IDS_WRITEERROR              10
                     88: #define IDS_CANTCREATE              11
                     89: #define IDS_NOCLIPBOARDFORMAT       12
                     90: #define IDS_NOCLIPBOARD             13
                     91: #define IDS_CANTEDITIMAGE           14
                     92: #define IDS_SAVEFILE                15
                     93: #define IDS_ENTERANUMBER            16
                     94: #define IDS_BADDEVICESIZE           17
                     95: #define IDS_BADDEVICECOLORS         18
                     96: #define IDS_NOTSUPPORT              19
                     97: #define IDS_NOIMAGES                20
                     98: #define IDS_BADBMPSIZE              21
                     99: 
                    100: #define IDS_APPNAME                 22
                    101: #define IDS_PGMTITLE                23
                    102: #define IDS_UNTITLED                24
                    103: #define IDS_DOTBMP                  25
                    104: #define IDS_HELPFILE                26
                    105: #define IDS_IMAGEDITINI             27
                    106: #define IDS_ICONIMAGELABEL          28
                    107: #define IDS_BITMAPIMAGELABEL        29
                    108: #define IDS_CURSORIMAGELABEL        30
                    109: #define IDS_ICONDEVNAMEEGAVGA       31
                    110: #define IDS_ICONDEVNAMEMONO         32
                    111: #define IDS_ICONDEVNAMECGA          33
                    112: #define IDS_CURDEVNAMEVGAMONO       34
                    113: #define IDS_CURDEVNAMEVGACOLOR      35
                    114: #define IDS_ICONINISECTION          36
                    115: #define IDS_CURSORINISECTION        37
                    116: #define IDS_BMPFILTER               38
                    117: #define IDS_BMPFILTEREXT            39
                    118: #define IDS_ICOFILTER               40
                    119: #define IDS_ICOFILTEREXT            41
                    120: #define IDS_CURFILTER               42
                    121: #define IDS_CURFILTEREXT            43
                    122: #define IDS_PALFILTER               44
                    123: #define IDS_PALFILTEREXT            45
                    124: #define IDS_ALLFILTER               46
                    125: #define IDS_ALLFILTEREXT            47
                    126: #define IDS_DEFEXTBMP               48
                    127: #define IDS_DEFEXTICO               49
                    128: #define IDS_DEFEXTCUR               50
                    129: #define IDS_DEFEXTPAL               51
                    130: #define IDS_UNKNOWNIMAGEFORMAT      52
                    131: 
                    132: /*
                    133:  * The total number of strings.  This MUST be updated if strings are
                    134:  * added or removed.
                    135:  */
                    136: #define CSTRINGS                    53
                    137: 
                    138: 
                    139: /*
                    140:  * Defines for messages.  These are indexes into the gamdMessage table.
                    141:  */
                    142: #define MSG_OUTOFMEMORY             0
                    143: #define MSG_MEMERROR                1
                    144: #define MSG_BADBMPFILE              2
                    145: #define MSG_BADICOCURFILE           3
                    146: #define MSG_BADPALFILE              4
                    147: #define MSG_CANTOPEN                5
                    148: #define MSG_READERROR               6
                    149: #define MSG_WRITEERROR              7
                    150: #define MSG_CANTCREATE              8
                    151: #define MSG_NOCLIPBOARDFORMAT       9
                    152: #define MSG_NOCLIPBOARD             10
                    153: #define MSG_CANTEDITIMAGE           11
                    154: #define MSG_SAVEFILE                12
                    155: #define MSG_ENTERANUMBER            13
                    156: #define MSG_BADDEVICESIZE           14
                    157: #define MSG_BADDEVICECOLORS         15
                    158: #define MSG_NOTSUPPORT              16
                    159: #define MSG_NOIMAGES                17
                    160: #define MSG_BADBMPSIZE              18
                    161: 
                    162: 
                    163: /*
                    164:  * Defines for the different file types.
                    165:  */
                    166: #define FT_BITMAP                   0
                    167: #define FT_ICON                     1
                    168: #define FT_CURSOR                   2
                    169: #define FT_PALETTE                  3
                    170: 
                    171: 
                    172: /*
                    173:  * Macro to properly cast a FAR pointer to a near pointer.
                    174:  * Casts a FAR pointer to void, then to an unsigned long integral
                    175:  * value, then truncate it to a short integral value, then cast
                    176:  * to a near pointer.
                    177:  */
                    178: #ifdef WIN32
                    179: #define FAR2NEAR(lpstr)     (lpstr)
                    180: #else
                    181: #define FAR2NEAR(lpstr)     ((PSTR)(WORD)(DWORD)(LPVOID)(lpstr))
                    182: #endif
                    183: 
                    184: /*
                    185:  * RGB color values.
                    186:  */
                    187: #define RGB_BLACK               RGB(  0,   0,   0)
                    188: #define RGB_WHITE               RGB(255, 255, 255)
                    189: #define RGB_LIGHTGRAY           RGB(192, 192, 192)
                    190: #define RGB_DARKGRAY            RGB(128, 128, 128)
                    191: 
                    192: 
                    193: /*
                    194:  * Maximum rows and columns in the color box.  This includes room for
                    195:  * screen/inverse and a separating blank column.
                    196:  */
                    197: #define COLORCOLS               16
                    198: #define COLORROWS               2
                    199: 
                    200: /*
                    201:  * Maximum colors in the palette (not including screen/inverse).
                    202:  */
                    203: #define COLORSMAX               28
                    204: 
                    205: /*
                    206:  * Defines for the different color modes that the left and right
                    207:  * mouse buttons can have.
                    208:  */
                    209: #define MODE_COLOR              0       // A standard color.
                    210: #define MODE_SCREEN             1       // The screen color.
                    211: #define MODE_INVERSE            2       // The inverse screen color.
                    212: 
                    213: 
                    214: /*
                    215:  * Margin (in pixels) within each of the palette and toolbox windows.
                    216:  */
                    217: #define PALETTEMARGIN           2
                    218: 
                    219: /* raster op combination modes */
                    220: #define ROP_DSna                0x00220326L
                    221: #define ROP_DSPao               0x00EA02E9L
                    222: 
                    223: #define DEFAULTBITMAPWIDTH      32      // Default bitmap width.
                    224: #define DEFAULTBITMAPHEIGHT     32      // Default bitmap height.
                    225: #define DEFAULTBITMAPCOLORS     16      // Default bitmap colors.
                    226: 
                    227: #define MAXIMAGEDIM             256     // Max image width/height (dimension).
                    228: #define MAXIMAGES               64      // Maximum images in an ico/cur file.
                    229: 
                    230: #define CCHDESCRIPTOR        80  /* length of image descriptor string */
                    231: #define CCHDEVICENAMEMAX     20  /* maximum length of a device name */
                    232: 
                    233: /*
                    234:  * Maximum sizes of the app window when running ImagEdit for the first time.
                    235:  * This makes it so that the editor does not default to a huge size when
                    236:  * run on a super-vga resolution monitor.
                    237:  */
                    238: #define MAXDEFAULTAPPCX         640
                    239: #define MAXDEFAULTAPPCY         480
                    240: 
                    241: 
                    242: /*************************************************************************/
                    243: 
                    244: /* 3.0 icon/cursor header  */
                    245: typedef struct {
                    246:     WORD iReserved;            /* always 0 */
                    247:     WORD iResourceType;
                    248:     WORD iResourceCount;       /* number of resources in file */
                    249: } ICOCURSORHDR;
                    250: 
                    251: /* 3.0 icon/cursor descriptor  */
                    252: typedef struct {
                    253:     BYTE iWidth;               /* width of image (icons only ) */
                    254:     BYTE iHeight;              /* height of image(icons only) */
                    255:     BYTE iColorCount;          /* number of colors in image */
                    256:     BYTE iUnused;              /*  */
                    257:     WORD iHotspotX;            /* hotspot x coordinate (CURSORS only) */
                    258:     WORD iHotspotY;            /* hotspot y coordinate (CURSORS only) */
                    259:     DWORD DIBSize;             /* size of DIB for this image */
                    260:     DWORD DIBOffset;           /* offset to DIB for this image */
                    261: } ICOCURSORDESC, *PICOCURSORDESC;
                    262: 
                    263: typedef struct DeviceNode {
                    264:     struct DeviceNode *pDeviceNext; // Pointer to next device node.
                    265:     INT iType;                      // Type of image (FT_*).
                    266:     INT nColors;                    // Number of colors.
                    267:     INT cx;                         // Width of image.
                    268:     INT cy;                         // Height of image.
                    269:     CHAR szName[CCHDEVICENAMEMAX];  // Device name.
                    270:     CHAR szDesc[CCHDESCRIPTOR];     // Full description string.
                    271: } DEVICE;
                    272: typedef DEVICE *PDEVICE;
                    273: 
                    274: /*
                    275:  * Structure that describes a link in the image list.
                    276:  */
                    277: typedef struct ImageNode {
                    278:     struct ImageNode *pImageNext;   // Pointer to next image.
                    279:     PDEVICE pDevice;                // Pointer to device structure.
                    280:     INT cx;                         // Image width.
                    281:     INT cy;                         // Image height.
                    282:     INT iHotspotX;                  // Hotspot x coordinate (cursors only).
                    283:     INT iHotspotY;                  // Hotspot y coordinate (cursors only).
                    284:     INT nColors;                    // Number of colors.
                    285:     DWORD DIBSize;                  // Size of DIB for this image.
                    286:     HANDLE DIBhandle;               // Handle to DIB bits.
                    287:     LPSTR DIBPtr;                   // Pointer to DIB bits.
                    288: } IMAGEINFO, *PIMAGEINFO;
                    289: 
                    290: /*
                    291:  * Defines an entry in the gamdMessages table of error and warning messages.
                    292:  */
                    293: typedef struct {
                    294:     UINT ids;                   /* String id for the message text.          */
                    295:     UINT fMessageBox;           /* Flags for the MessageBox function.       */
                    296: } MESSAGEDATA;
                    297: 
                    298: /*
                    299:  * This structure defines each tool used in the editor.
                    300:  */
                    301: typedef struct {
                    302:     DRAWPROC pfnDrawProc;   /* Drawing procedure for this tool type.        */
                    303:     HCURSOR hcur;           /* Handle to the cursor for this tool.          */
                    304:     INT idbmToolBtnUp;      /* ID of "up" bmp res. for the Toolbox button.  */
                    305:     HBITMAP hbmToolBtnUp;   /* hbm of "up" bitmap for the Toolbox button.   */
                    306:     INT idbmToolBtnDown;    /* ID of "down" bmp res. for the Toolbox button.*/
                    307:     HBITMAP hbmToolBtnDown; /* hbm of "down" bitmap for the Toolbox button. */
                    308:     UINT fDrawOnDown:1;     /* TRUE if tool draws on down click.            */
                    309:     UINT fDrawOnUp:1;       /* TRUE if tool draws on up click.              */
                    310: } TOOLS;
                    311: 
                    312: /*
                    313:  * One single entry for an environment setting saved in the
                    314:  * profile file.  Used by ReadEnv and WriteEnv.
                    315:  */
                    316: typedef struct _INIENTRY {
                    317:     PSTR pstrKeyName;
                    318:     PINT pnVar;
                    319:     INT nDefault;
                    320:     INT nSave;
                    321: } INIENTRY;
                    322: 
                    323: /*
                    324:  * Structure that maps a subject (like a menu id or a dialog id) with
                    325:  * a help context to pass in to WinHelp.
                    326:  */
                    327: typedef struct {
                    328:     INT idSubject;              // Subject, usually a menu or dialog id.
                    329:     INT HelpContext;            // The matching help context.
                    330: } HELPMAP;
                    331: typedef HELPMAP *PHELPMAP;
                    332: 
                    333: 
                    334: #include "iefuncs.h"
                    335: 
                    336: #include "globals.h"

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.