home *** CD-ROM | disk | FTP | other *** search
/ Crawly Crypt Collection 2 / crawlyvol2.bin / program / c / rsctocs / rsc_tree.c < prev   
C/C++ Source or Header  |  1986-02-05  |  4KB  |  161 lines

  1. #include    <define.h>
  2. #include    <stdio.h>
  3. #include    <gemdefs.h>
  4. #include    <obdefs.h>
  5. #include    <osbind.h>
  6.  
  7. #define        NIL        -1
  8. #define        Wait()    {printf("\033p Weiter - Return \033q\n"); gemdos(1);}
  9.  
  10. int        handle;
  11. int        vdi_handle;
  12. int     work_in[11],work_out[57];
  13. int     contrl[12],intin[128],ptsin[128],intout[128],ptsout[128];
  14.  
  15. extern int    global[];
  16.  
  17. RSHDR    header;
  18.  
  19. main(argc, argv)
  20. int        argc;
  21. char    **argv;
  22. {
  23.     int        i, ret, hndl, height, room;
  24.     int        *help;
  25.     int        print_object();
  26.     OBJECT    **treeadress,
  27.             *ob;
  28.         
  29.     for (i=0; i<10; work_in[i++]=1)
  30.         ;
  31.     work_in[10]=2;
  32.     v_opnvwk (work_in, &vdi_handle, work_out);
  33.         
  34.     appl_init();
  35.     
  36.     if (argc != 2)
  37.     {
  38.         form_alert (1,"[1][ | Falsche Parameter][  OK  ]");
  39.         goto ENDE;
  40.     }
  41.     
  42.     if ((hndl = Fopen(argv[1],0)) < 0)
  43.     {
  44.         form_alert (1, "[1][ | Fehler beim öffnen | der Datei. ][  OK  ]");
  45.         goto ENDE;
  46.     }
  47.     Fread (hndl, (long) sizeof(RSHDR), &header);
  48.     print_rshdr (&header);
  49.     Fclose (hndl);
  50.     Wait();
  51.     
  52.     if (!rsrc_load (argv[1]))
  53.     {
  54.         form_alert (1,"[1][ | FATAL, keine Resource ! ][  OK  ]");
  55.         goto ENDE;
  56.     }
  57.     
  58.     v_hide_c (vdi_handle);
  59.     
  60.     help = (int *) &treeadress;
  61.     help[0] = global[5];
  62.     help[1] = global[6];
  63.     
  64.     for (i = 0;i < header.rsh_ntree; i++)
  65.         treewalk (treeadress[i], ROOT, NIL, print_object);
  66.         
  67. ENDE:
  68.     v_show_c (vdi_handle);
  69.     appl_exit();
  70.     v_clsvwk(vdi_handle);
  71. }
  72.  
  73.  
  74.  
  75. int print_object (tree, index)
  76. OBJECT    *tree;
  77. int        index;
  78. {
  79.     OBJECT    *o;
  80.     
  81.     o = tree + index;
  82.     
  83.     printf ("\033E");
  84.     printf ("Adresse des Objekts: 0x%08lx\n",o);
  85.     printf ("OB_NEXT   = %d\n",     o->ob_next);
  86.     printf ("OB_HEAD   = %d\n",     o->ob_head);
  87.     printf ("OB_TAIL   = %d\n",     o->ob_tail);
  88.     printf ("OB_TYPE   = %u\n",     o->ob_type);
  89.     printf ("OB_FLAGS  = %04x\n",   o->ob_flags);
  90.     printf ("OB_STATE  = %04x\n",   o->ob_state);
  91.     printf ("OB_SPEC   = 0x%08lx\n",o->ob_spec);
  92.     printf ("OB_X      = %d\n",     o->ob_x);
  93.     printf ("OB_Y      = %d\n",     o->ob_y);
  94.     printf ("OB_WIDTH  = %d\n",     o->ob_width);
  95.     printf ("OB_HEIGHT = %d\n",     o->ob_height);
  96.     
  97.     o->ob_x = 639 - o->ob_width;
  98.     o->ob_y = 399 - o->ob_height;
  99.     objc_draw (o,0,0,0,0,640,400);
  100.     
  101.     Wait();
  102.     return(TRUE);
  103. }
  104.  
  105.  
  106.  
  107. int print_rshdr(h)
  108. RSHDR    *h;
  109. {
  110.     printf ("\033EResource Header\n\n");
  111.     printf ("RSH_VRSN    = %d\n",h->rsh_vrsn);
  112.     printf ("RSH_OBJECT  = %d\n",h->rsh_object);
  113.     printf ("RSH_TEDINFO = %d\n",h->rsh_tedinfo);
  114.     printf ("RSH_ICONBLK = %d\n",h->rsh_iconblk);
  115.     printf ("RSH_BITBLK  = %d\n",h->rsh_bitblk);
  116.     printf ("RSH_STRING  = %d\n",h->rsh_string);
  117.     printf ("RSH_IMDATA  = %d\n",h->rsh_imdata);
  118.     printf ("RSH_FRIMG   = %d\n",h->rsh_frimg);
  119.     printf ("RSH_TRINDEX = %d\n",h->rsh_trindex);
  120.     printf ("RSH_NOBS    = %d\n",h->rsh_nobs);
  121.     printf ("RSH_NTREE   = %d\n",h->rsh_ntree);
  122.     printf ("RSH_NTED    = %d\n",h->rsh_nted);
  123.     printf ("RSH_NIB     = %d\n",h->rsh_nib);
  124.     printf ("RSH_NBB     = %d\n",h->rsh_nbb);
  125.     printf ("RSH_NSTRING = %d\n",h->rsh_nstring);
  126.     printf ("RSH_NIMAGES = %d\n",h->rsh_nimages);
  127.     printf ("RSH_RSSIZE  = %d\n",h->rsh_rssize);
  128. }
  129.  
  130.  
  131.  
  132. treewalk (tree, first, last, routine)
  133. OBJECT    *tree;
  134. int        first,
  135.         last;
  136. int        (*routine)();
  137. {
  138.     register int    this,
  139.                     prev;
  140.                     
  141.     prev = this = first;
  142.     
  143.     while ((this != last) && (this != NIL))
  144.         if (tree[this].ob_tail != prev)
  145.         {
  146.             prev = this;
  147.             this = NIL;
  148.             
  149.             if ((*routine)(tree, prev))
  150.                 this = tree[prev].ob_head;
  151.             
  152.             if (this == NIL)
  153.                 this = tree[prev].ob_next;
  154.         }
  155.         else
  156.         {
  157.             prev = this;
  158.             this = tree[prev].ob_next;
  159.         }
  160. }
  161.