home *** CD-ROM | disk | FTP | other *** search
/ GEMini Atari / GEMini_Atari_CD-ROM_Walnut_Creek_December_1993.iso / zip / utility / gemfut15.lzh / AESUTRS1.C < prev    next >
C/C++ Source or Header  |  1990-05-26  |  2KB  |  60 lines

  1.  
  2. /**************************************************************************
  3.  *
  4.  * AESFAST PD utilties.
  5.  *
  6.  *  Resource-related utilities 1...
  7.  *   rsc_sstrings
  8.  *
  9.  * 05/26/90 - v1.4
  10.  *            > Added support for ICONs.
  11.  *************************************************************************/
  12.  
  13. #include <gemfast.h>
  14.  
  15. /*-------------------------------------------------------------------------
  16.  * rsc_sstrings - Set string pointers within rsc tree.
  17.  *
  18.  *   Will this work with MWC?  Good question, it depends on how MWC puts
  19.  *   parms on the stack...
  20.  *-----------------------------------------------------------------------*/
  21.  
  22. typedef struct {
  23.     int  object;
  24.     long stringptr;
  25.     } OBJSTR;
  26.     
  27. void
  28. rsc_sstrings(ptree, parms)
  29.     register OBJECT *ptree;
  30.     OBJSTR          parms[];
  31. {
  32.     register OBJECT *pobj;
  33.     register OBJSTR *pparms;
  34.     register long   *pspec;
  35.     
  36.     for (pparms = parms; pparms->object >= 0; pparms++) {
  37.         pobj  = &ptree[pparms->object];
  38.         pspec = &(pobj->ob_spec);
  39.  
  40.         if (pobj->ob_flags & INDIRECT) {
  41.             pspec = (long *)*pspec;
  42.         }
  43.         
  44.         switch (pobj->ob_type & 0x00FF) {
  45.         case G_ICON:
  46.             pspec = (long *)*pspec;
  47.             pspec = &pspec[2];      /* add 12-byte offset to pointer */
  48.             break;              
  49.         case G_TEXT:
  50.         case G_BOXTEXT:
  51.         case G_FTEXT:
  52.         case G_FBOXTEXT:
  53.             pspec = (long *)*pspec;
  54.             break;
  55.         }
  56.  
  57.         *pspec = pparms->stringptr;
  58.     }
  59. }
  60.