Annotation of os232sdk/toolkt20/c/samples/jigsaw/jigsaw.h, revision 1.1.1.1

1.1       root        1: #define INCL_BITMAPFILEFORMAT
                      2:  
                      3: #define INCL_DOSMEMMGR
                      4: #define INCL_DOSINFOSEG
                      5: #define INCL_DOSPROCESS
                      6: #define INCL_DOSSEMAPHORES
                      7: 
                      8: #define INCL_DEV
                      9: #define INCL_BASE
                     10: 
                     11: #define INCL_WINSYS
                     12: #define INCL_WININPUT
                     13: #define INCL_WINMENUS
                     14: #define INCL_WINDIALOGS
                     15: #define INCL_WINFRAMEMGR
                     16: #define INCL_WINPOINTERS
                     17: #define INCL_WINWINDOWMGR
                     18: #define INCL_WINMESSAGEMGR
                     19: #define INCL_WINRECTANGLES
                     20: #define INCL_WINSCROLLBARS
                     21: #define INCL_WINSWITCHLIST
                     22: #define INCL_WINENTRYFIELDS
                     23: 
                     24: 
                     25: #define INCL_GPIPATHS
                     26: #define INCL_GPILCIDS
                     27: #define INCL_GPIREGIONS
                     28: #define INCL_GPICONTROL
                     29: #define INCL_GPIBITMAPS
                     30: #define INCL_GPIPRIMITIVES
                     31: #define INCL_GPITRANSFORMS
                     32:  
                     33: #define INCL_ERRORS
                     34: 
                     35: #include <os2.h>
                     36: 
                     37: #define CALLBACK EXPENTRY
                     38: 
                     39: #define APPMENU             1   /* app menu */
                     40: #define APPTABLE            1   /* app accel table */
                     41: #define APPICON             1
                     42: 
                     43: #define SM_EXIT             1   /* menu item ids */
                     44: #define SM_ZOOM             10
                     45: #define SM_HELP             20
                     46: #define SM_FILE            30
                     47: #define MENU_RESUME         2
                     48: #define MENU_EXIT           3
                     49: #define MENU_PRINT          11
                     50: #define MENU_STATUS         12
                     51: #define MENU_SHOW           13
                     52: #define MENU_HIDE           14
                     53: #define MENU_ZOOMIN         15
                     54: #define MENU_ZOOMOUT       16
                     55: #define MENU_BYTEALIGN     17
                     56: #define MENU_HELP_EXTENDED  21
                     57: #define MENU_HELP_INDEX     22
                     58: #define MENU_HELP_KEYS     23
                     59: #define MENU_LOAD           31
                     60: #define MENU_JUMBLE        40
                     61: #define MENU_DUMMY          9999
                     62:  
                     63:  
                     64: #define TITLEBAR            1    /* string table ids */
                     65: #define TERMINATE           2
                     66: #define XFORMFAIL           3
                     67: #define HELP_EXTENDED       4
                     68: #define HELP_INDEX          5
                     69: #define HELP_KEYS           6
                     70: 
                     71: #define IDD_OPEN            256
                     72: #define IDD_STATUS          257
                     73: #define IDD_NULL            0
                     74: 
                     75: #define EID_NAME            258
                     76: 
                     77: #define SID_ZOOMFACT        259
                     78: #define SID_STATUS          260
                     79: 
                     80: #define HID_ZOOM            261
                     81: 
                     82: #define ADD_HEAD_SEG        1
                     83: #define ADD_TAIL_SEG        2
                     84: #define DEL_SEG             3
                     85: #define MAKE_TAIL_SEG       4
                     86: #define MAKE_HEAD_SEG       5
                     87: #define PICTURE_CREATE     0
                     88: #define PICTURE_UPDATE     1
                     89: #define ZOOM_MAX            8
                     90: #define ZOOM_IN             1
                     91: #define ZOOM_OUT            -1
                     92: #define UNITY              65536L
                     93: #define STACKSIZE           4096         /* async thread stack size          */
                     94: 
                     95: 
                     96: /*----------------------- helper macros --------------------------------------*/
                     97: 
                     98: #define ROUND_DOWN_MOD( arg, mod)          \
                     99:     {                                      \
                    100:        if( arg < 0)                        \
                    101:        {                                   \
                    102:            arg -= mod - 1;                 \
                    103:            arg += arg % mod;               \
                    104:        } else                              \
                    105:            arg -= arg % mod;               \
                    106:     }
                    107: 
                    108: #define ROUND_UP_MOD( arg, mod)            \
                    109:     {                                      \
                    110:        if( arg < 0)                        \
                    111:        {                                   \
                    112:            arg -= arg % mod;               \
                    113:        } else                              \
                    114:        {                                   \
                    115:            arg += mod - 1;                 \
                    116:            arg -= arg % mod;               \
                    117:        }                                   \
                    118:     }
                    119: 
                    120: /*
                    121:  * macro will convert BITMAPFILEHEADER2 to BITMAPFILEHEADER
                    122:  */
                    123: #define PBFH1(A)           ((PBITMAPFILEHEADER) (A))
                    124: /*
                    125:  * macro will convert BITMAPINFOHEADER2 to BITMAPINFOHEADER
                    126:  */
                    127: #define PBMP1(A)           ((PBITMAPINFOHEADER) (A))
                    128: 
                    129: /* macro will adjust structure type depending on wiether old or new
                    130:  * BITMAPINFOHEADER is read in from a BMP file.
                    131:  */
                    132: #define ADJUSTED_PBMP(A)    (((A)->cbFix == sizeof(BITMAPINFOHEADER)) \
                    133:                                     ? PBMP1(A) : (PVOID)(A))
                    134: 
                    135: 
                    136: 
                    137: 
                    138: #define STATUS_SHOW(A)                                           \
                    139: {                                                                \
                    140:     if (A) {                                                     \
                    141:         WinSendMsg( hwndStatusOption,                            \
                    142:                     MM_SETITEMATTR,                              \
                    143:                     MPFROM2SHORT( MENU_SHOW, TRUE),              \
                    144:                     MPFROM2SHORT( MIA_DISABLED, ~MIA_DISABLED)); \
                    145:         }                                                        \
                    146:     else {                                                       \
                    147:         WinSendMsg( hwndStatusOption,                            \
                    148:                     MM_SETITEMATTR,                              \
                    149:                     MPFROM2SHORT( MENU_SHOW, TRUE),              \
                    150:                     MPFROM2SHORT( MIA_DISABLED, MIA_DISABLED));  \
                    151:         }                                                        \
                    152: }
                    153: 
                    154: 
                    155: #define STATUS_HIDE(A)                                           \
                    156: {                                                                \
                    157:     if (A) {                                                     \
                    158:         WinSendMsg( hwndStatusOption,                            \
                    159:                     MM_SETITEMATTR,                              \
                    160:                     MPFROM2SHORT( MENU_HIDE, TRUE),              \
                    161:                     MPFROM2SHORT( MIA_DISABLED, ~MIA_DISABLED)); \
                    162:         }                                                        \
                    163:     else {                                                       \
                    164:         WinSendMsg( hwndStatusOption,                            \
                    165:                     MM_SETITEMATTR,                              \
                    166:                     MPFROM2SHORT( MENU_HIDE, TRUE),              \
                    167:                     MPFROM2SHORT( MIA_DISABLED, MIA_DISABLED));  \
                    168:         }                                                        \
                    169: }
                    170: 
                    171: /*----------------------- inter-thread messages ------------------------------*/
                    172:  
                    173: #define UM_DIE       WM_USER+1        /* instruct async thread to terminate  */
                    174: #define UM_DRAW       WM_USER+2        /* draw the current picture           */
                    175: #define UM_VSCROLL    WM_USER+3        /* perform scroll by recalculating the */
                    176:                                        /* default viewing transform           */
                    177: #define UM_HSCROLL    WM_USER+4        /* perform scroll by recalculating the */
                    178:                                        /* default viewing transform           */
                    179: #define UM_SIZING     WM_USER+5        /* perform sizing by recalculating the */
                    180:                                        /* default viewing transform           */
                    181: #define UM_ZOOM       WM_USER+6        /* zoom the picture by recalculating   */
                    182:                                        /* the default viewing transform       */
                    183: #define UM_REDRAW     WM_USER+8        /* redraw the entire client window     */
                    184: #define UM_JUMBLE     WM_USER+9        /* scatter the pieces on the window    */
                    185: #define UM_LOAD       WM_USER+10       /* load a bitmap from disk            */
                    186: #define UM_LEFTDOWN   WM_USER+11       /* correlate and prepare to drag       */
                    187: #define UM_MOUSEMOVE  WM_USER+12       /* remove, reposition, and redraw      */
                    188: #define UM_LEFTUP     WM_USER+13       /* stop dragging                      */
                    189: #define UM_CHAR       WM_USER+14       /* a keyboard key                     */
                    190: #define UM_LAST       WM_USER+15
                    191:  
                    192:  
                    193: /*------------------------- correlation parameters ---------------------------*/
                    194:  
                    195: #define HITS   1L                     /* maximum number of hits to return    */
                    196: #define DEPTH  2L                     /* max depth of seg calls to return    */
                    197:  
                    198: /*-------------------------- old-style bitmap header -------------------------*/
                    199: 
                    200: typedef struct {
                    201:     USHORT    wType;
                    202:     ULONG     dwSize;
                    203:     int       xHotspot;
                    204:     int       yHotspot;
                    205:     ULONG     dwBitsOffset;
                    206:     USHORT    bmWidth;
                    207:     USHORT    bmHeight;
                    208:     USHORT    bmPlanes;
                    209:     USHORT    bmBitcount;
                    210: } RCBITMAP;
                    211: typedef RCBITMAP FAR *PRCBITMAP;
                    212: 
                    213: /*-------------------------- bitmap-related data -----------------------------*/
                    214: typedef struct _LOADINFO {            /* li                                  */
                    215:     HFILE   hf;
                    216:     CHAR    szFileName[CCHMAXPATH];
                    217: } LOADINFO, FAR *PLOADINFO;       /* pli                                     */
                    218: 
                    219: 
                    220: 
                    221: /*-------------------------- segment list ------------------------------------*/
                    222: 
                    223: typedef struct _SEGLIST {             /* sl                                  */
                    224:   LONG                 lSegId;
                    225:   struct _SEGLIST FAR * pslPrev;
                    226:   struct _SEGLIST FAR * pslNext;
                    227:   POINTL               ptlLocation;   /* piece location, world coordinates   */
                    228:   RECTL                rclCurrent;    /* segment bounding box, model coords  */
                    229:   RECTL                rclBitBlt;     /* segment bounding box, world coords  */
                    230:   POINTL               aptlBitBlt[4]; /* BitBlt parameters                   */
                    231:   LONG                 lAdjacent[8];  /* adjacent segments in original pict  */
                    232:   struct _SEGLIST FAR * pslNextIsland; /* next member in island list         */
                    233:   BOOL                 fIslandMark;   /* used for marking island members     */
                    234:   POINTL               aptlSides[12]; /* control points for piece outline    */
                    235:   HDC                  hdcHole;       /* used to punch hole in target        */
                    236:   HPS                  hpsHole;
                    237:   HBITMAP              hbmHole;
                    238:   HDC                  hdcFill;       /* used to fill hole                   */
                    239:   HPS                  hpsFill;
                    240:   HBITMAP              hbmFill;
                    241:   POINTL               ptlModelXlate; /* lM31 and lM31 for piece             */
                    242:   BOOL                 fVisible;      /* TRUE iff should be drawn            */
                    243: } SEGLIST ;
                    244: typedef SEGLIST FAR *PSEGLIST;        /* psl                                 */
                    245: typedef PSEGLIST FAR *PPSEGLIST;       /* ppsl                               */
                    246: 
                    247: 
                    248: /*------------------------- Function Prototypes ------------------------------*/
                    249: 
                    250: extern VOID             CalcBounds( VOID);
                    251: extern VOID              CalcSize( MPARAM mp1, MPARAM mp2);
                    252: extern VOID              CalcTransform( HWND hwnd);
                    253: extern VOID              CheckPsl( PSEGLIST psl);
                    254: extern MRESULT EXPENTRY  ClientWndProc( HWND hwnd, USHORT msg, MPARAM mp1,
                    255:                                  MPARAM  mp2);
                    256: extern PSEGLIST          Correlate( PPOINTL pptl);
                    257: extern BOOL              CreateBitmapHdcHps( PHDC phdc, PHPS phps);
                    258: extern BOOL              CreatePicture( SHORT sUpdate);
                    259: extern BOOL              DoDraw( HPS hps, HRGN hrgn, BOOL fPaint);
                    260: extern VOID              DoHorzScroll( VOID);
                    261: extern VOID              DoVertScroll( VOID);
                    262: extern VOID              DrawPiece( HPS hps, PSEGLIST psl, BOOL fFill);
                    263: extern BOOL              DumpPicture( VOID);
                    264: extern VOID              Finalize( VOID);
                    265: extern BOOL              Initialize( VOID);
                    266: extern VOID              Jumble( VOID);
                    267: extern VOID              LeftDown( MPARAM mp);
                    268: extern VOID              LeftUp( VOID);
                    269: extern VOID              Load( PLOADINFO pli);
                    270: extern VOID cdecl        main( VOID);
                    271: extern VOID              MarkIsland( PSEGLIST pslMark, BOOL fMark);
                    272: /*
                    273: VOID              MessageInt( HWND, INT, PCH);
                    274: */
                    275: extern VOID              MouseMove( MPARAM mp);
                    276: extern VOID              MyMessageBox( HWND hWnd, PSZ psz);
                    277: extern VOID FAR          NewThread( VOID);
                    278: extern BOOL              PrepareBitmap( VOID);
                    279: extern BOOL              ReadBitmap( HFILE hfile);
                    280: extern VOID              Redraw( VOID);
                    281: extern VOID              ReportError( HAB hab);
                    282: extern VOID              ResetScrollBars( VOID);
                    283: extern BOOL              SegListCheck( INT iLoc);
                    284: extern PSEGLIST          SegListGet( LONG lSeg);
                    285: extern PSEGLIST          SegListUpdate( USHORT usOperation, PSEGLIST pslUpdate);
                    286: extern BOOL              SendCommand( USHORT usCommand, MPARAM mp1, MPARAM mp2);
                    287: extern VOID              SetDVTransform( FIXED fx11, FIXED fx12, FIXED fx21,
                    288:                                  FIXED fx22,
                    289:                          FIXED l31,FIXED l32, FIXED lType);
                    290: extern VOID              SetRect( PSEGLIST psl);
                    291: extern VOID              ToBottom( PSEGLIST pslDown);
                    292: extern VOID              ToggleMenuItem( USHORT usMenuMajor, USHORT usMenuMinor,
                    293:                          PBOOL pfFlag);
                    294: extern VOID              DisplayZoomFactor(LONG lScaleFactor);
                    295: extern MRESULT           WndProcCommand( HWND hwnd, USHORT msg, MPARAM mp1,
                    296:                                  MPARAM mp2);
                    297: extern MRESULT           WndProcCreate( HWND hwnd);
                    298: extern MRESULT           WndProcPaint( VOID);
                    299: /*
                    300: MRESULT           WndProcSize( MPARAM, MPARAM);
                    301: */
                    302: extern VOID              Zoom(VOID);
                    303: extern MRESULT EXPENTRY  CheapWndProc(HWND hwnd, USHORT  msg, MPARAM  mp1,
                    304:                                  MPARAM mp2);
                    305: extern MRESULT EXPENTRY  CheapWndProc(HWND hwnd, USHORT msg, MPARAM mp1,
                    306:                                  MPARAM mp2);
                    307: extern MRESULT EXPENTRY  StatusDlgProc(HWND hwnd, USHORT msg, MPARAM mp1,
                    308:                                  MPARAM mp2);

unix.superglobalmegacorp.com

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