home *** CD-ROM | disk | FTP | other *** search
- >>>>>>>>>>>>>>>>>>>>>>>>>>>>> MFDB Structure <<<<<<<<<<<<<<<<<<<<<<<<<<<<<
- /* Memory Form Definition Block */
- typedef struct fdbstr
- {
- long fd_addr; /* Form address */
- int fd_w; /* Form width in pixels */
- int fd_h; /* Form height in pixels */
- int fd_wdwidth; /* Form width in memory words */
- int fd_stand; /* Standard form flag */
- int fd_nplanes; /* Number of color planes */
- int fd_r1; /* Dummy locations: */
- int fd_r2; /* Reserved for future use */
- int fd_r3;
- } MFDB;
-
- >>>>>>>>>>>>>>>>>>>>>>> Resource Transform Utilities <<<<<<<<<<<<<<<<<<<<<
- /*------------------------------*/
- /* vdi_fix */
- /*------------------------------*/
- VOID
- vdi_fix(pfd, theaddr, wb, h) /* This routine loads the MFDB */
- MFDB *pfd; /* Input values are the MFDB's */
- LONG theaddr; /* address, the form's address,*/
- WORD wb, h; /* the form's width in bytes, */
- { /* and the height in pixels */
- pfd->fww = wb >> 1;
- pfd->fwp = wb << 3;
- pfd->fh = h;
- pfd->np = 1; /* Monochrome assumed */
- pfd->mp = theaddr;
- }
-
- /*------------------------------*/
- /* vdi_trans */
- /*------------------------------*/
- WORD
- vdi_trans(saddr, swb, daddr, dwb, h) /* Transform the standard form */
- LONG saddr; /* pointed at by saddr and */
- UWORD swb; /* store in the form at daddr */
- LONG daddr; /* Byte widths and pixel height*/
- UWORD dwb; /* are given */
- UWORD h;
- {
- MFDB src, dst; /* These are on-the-fly MFDBs */
-
- vdi_fix(&src, saddr, swb, h); /* Load the source MFDB */
- src.ff = TRUE; /* Set it's std form flag */
-
- vdi_fix(&dst, daddr, dwb, h); /* Load the destination MFDB */
- dst.ff = FALSE; /* Clear the std flag */
- vr_trnfm(vdi_handle, &src, &dst ); /* Call the VDI */
- }
-
- /*------------------------------*/
- /* trans_bitblk */
- /*------------------------------*/
- VOID
- trans_bitblk(obspec) /* Transform the image belonging */
- LONG obspec; /* to the bitblk pointed to by */
- { /* obspec. This routine may also*/
- LONG taddr; /* be used with free images */
- WORD wb, hl;
-
- if ( (taddr = LLGET(BI_PDATA(obspec))) == -1L)
- return; /* Get and validate image address */
- wb = LWGET(BI_WB(obspec)); /* Extract image dimensions */
- hl = LWGET(BI_HL(obspec));
- vdi_trans(taddr, wb, taddr, wb, hl); /* Perform a transform */
- } /* in place */
-
- /*------------------------------*/
- /* trans_obj */
- /*------------------------------*/
- VOID
- trans_obj(tree, obj) /* Examine the input object. If */
- LONG tree; /* it is an icon or image, trans- */
- WORD obj; /* form the associated raster */
- { /* forms in place. */
- WORD type, wb, hl; /* This routine may be used with */
- LONG taddr, obspec; /* map_tree() to transform an */
- /* entire resource tree */
-
- type = LLOBT(LWGET(OB_TYPE(obj))); /* Load object type */
- if ( (obspec = LLGET(OB_SPEC(obj))) == -1L) /* Load and check */
- return (TRUE); /* ob_spec pointer */
- switch (type) {
- case G_IMAGE:
- trans_bitblk(obspec); /* Transform image */
- return (TRUE);
- case G_ICON: /* Load icon size */
- hl = LWGET(IB_HICON(obspec));
- wb = (LWGET(IB_WICON(obspec)) + 7) >> 3;
- /* Transform data */
- if ( (taddr = LLGET(IB_PDATA(obspec))) != -1L)
- vdi_trans(taddr, wb, taddr, wb, hl);
- /* Transform mask */
- if ( (taddr = LLGET(IB_PMASK(obspec))) != -1L)
- vdi_trans(taddr, wb, taddr, wb, hl);
- return (TRUE);
- default:
- return (TRUE);
- }
- }
-
- >>>>>>>>>>>>>>>>>>> Macro definitions for the code above <<<<<<<<<<<<<<<<<<
-
- #define BI_PDATA(x) (x)
- #define BI_WB(x) (x + 4)
- #define BI_HL(x) (x + 6)
- #define OB_TYPE(x) (tree + (x) * sizeof(OBJECT) + 6)
- #define OB_SPEC(x) (tree + (x) * sizeof(OBJECT) + 12)
- #define IB_PMASK(x) (x)
- #define IB_PDATA(x) (x + 4)
- #define IB_WICON(x) (x + 22)
- #define IB_HICON(x) (x + 24)
-
- >>>>>>>>>>>>>>>>>>>>>>>>>>> VDI Copy Mode Table <<<<<<<<<<<<<<<<<<<<<<<<<<<<
-
- Symbols: N = new destination pixel value (0 or 1)
- D = old destination pixel value (0 or 1)
- S = source pixel value (0 or 1)
- ~ = Boolean not (inversion)
- & = Boolean and
- | = Boolean or
- ^ = Boolean xor (exclusive-or)
-
- Mode Number Action
- ---------- ------
- 0 N = 0 (USE V_BAR INSTEAD)
- 1 N = S & D
- 2 N = S & ~D
- 3 N = S (REPLACE)
- 4 N = ~S & D (ERASE)
- 5 N = D (USELESS)
- 6 N = S ^ D (XOR)
- 7 N = S | D (TRANSPARENT)
- 8 N = ~ (S | D)
- 9 N = ~ (S ^ D)
- 10 N = ~D (USE V_BAR INSTEAD)
- 11 N = S | ~D
- 12 N = ~S
- 13 N = ~S | D (REVERSE TRANSPARENT)
- 14 N = ~ (S & D)
- 15 N = 1 (USE V_BAR INSTEAD)
-
- >>>>>>>>>>>>>>>>>>>>>>>>>>> END OF DOWNLOAD <<<<<<<<<<<<<<<<<<<<<<<<<<<<<
-
-