home *** CD-ROM | disk | FTP | other *** search
/ Crawly Crypt Collection 2 / crawlyvol2.bin / program / c / rsctocs / rsc_to_c.c < prev    next >
C/C++ Source or Header  |  1991-07-09  |  22KB  |  653 lines

  1. /*             Transformer:      *.RSC   ->   *.CX                 */
  2.  
  3.  
  4. #include    <define.h>
  5. #include    <stdio.h>
  6. #include    <gemdefs.h>
  7. #include    <obdefs.h>
  8. #include    <osbind.h>
  9. #include    "rsc_to_c.h"
  10. #include    "rsc_to_c.cx"
  11.  
  12. extern FILE    *fopen();
  13.  
  14.  
  15. #define        NIL        -1
  16.  
  17. int        handle;
  18. int        vdi_handle;
  19. int     work_in[11],work_out[57];
  20. int     contrl[12],intin[128],ptsin[128],intout[128],ptsout[128];
  21.  
  22. RSHDR    header;
  23. int        r_strings[4000];
  24.         
  25.             
  26.  
  27. main()
  28. {
  29.     FILE    *stream;
  30.     int        dx, dy,
  31.             object_type,
  32.             i, lauf, ll,
  33.             zaehl,
  34.             ret,
  35.             error,
  36.             hndl,
  37.             end_string;
  38.     int        *pi;
  39.     long    memory,
  40.             mem,
  41.             marker,
  42.             rel_adr;
  43.     char    *pc,
  44.             *str;
  45.     char    path[80],
  46.             file[20],
  47.             hilf[200];
  48.             
  49.             
  50.     for (i=0; i<10; work_in[i++]=1)
  51.         ;
  52.     work_in[10]=2;
  53.     v_opnvwk (work_in, &vdi_handle, work_out);
  54.         
  55.     appl_init();
  56.     
  57.     if (rsrc_load ("RSC_TO_C.RSC"))
  58.     {
  59.         dx = dy = 3;
  60.         if (Getrez() == 2)
  61.             dy =4;
  62.             
  63.         for (lauf = 0; lauf < 4000; lauf++)
  64.         {
  65.             r_strings[lauf] = 0L;
  66.         }
  67.         
  68.         fsel_exten (0, "*.RSC");
  69.         fsel_exten (1, "*.C");
  70.         fsel_exten (2, "*.H");
  71.         fsel_exten (3, "*.DEF");
  72.         strcpy (path, "A:\\*.RSC");
  73.         strcpy (file, "");
  74.         
  75.         if (fsel_in (path, file, "Laden der Resource"))
  76.         {
  77.             strcpy (hilf, path);
  78.             for (i = strlen(hilf); hilf[i] != '\\'; i--)
  79.                 hilf[i] = '\0';
  80.             strcat (hilf, file);
  81.         
  82.             if ((hndl = Fopen(hilf,0)) < 0)
  83.             {
  84.                 form_alert (1, "[1][ | Fehler beim öffnen | der Datei. ][  OK  ]");
  85.                 goto ENDE;
  86.             }
  87.             Fread (hndl, (long) sizeof(RSHDR), &header);
  88.             print_rshdr (&header);
  89.             
  90.             memory = ((mem = Malloc( (long) header.rsh_rssize)) + 1) & 0xfffffffe;
  91.             if (memory != 0)
  92.             {
  93.                 Fseek (0L, hndl, 0);
  94.                 Fread (hndl, (long) header.rsh_rssize, memory);
  95.                 
  96.                 Fclose (hndl);
  97.                     
  98.                 for (i = strlen(path); path[i] != '\\'; i--)
  99.                     path[i] = '\0';
  100.                 strcat (path, "*.CX");
  101.                 lauf = strlen (file);
  102.                 file[lauf - 3] = 'C';
  103.                 file[lauf - 2] = 'X';
  104.                 file[lauf - 1] = '\0';
  105.                 pc = file;
  106.                 str = hilf;
  107.                 for (lauf = 0; lauf < 8; lauf++)
  108.                     if (*pc != '.')
  109.                         *str++ = *pc++;
  110.                     else
  111.                         *str++ = ' ';
  112.                 pc++;
  113.                 for (lauf = 0; lauf < 3; lauf++)
  114.                     *str++ = *pc++;
  115.                 
  116.                 if (fsel_in (path, hilf, "Speichern der C-Source"))
  117.                 {
  118.                 for (i = strlen(path); path[i] != '\\'; i--)
  119.                     path[i] = '\0';
  120.                 strcat (path, hilf);
  121.                 
  122.                 stream = fopen (path, "w");
  123.                 
  124.                 
  125.                 
  126.      /*
  127.      *        Vorspann :
  128.     */
  129.                 fprintf (stream, "/*                      Copyright  1988 by Dieter Fiebelkorn                 */\n\n\n");
  130.                 fprintf (stream, "#include    <tos.h>\n");
  131.                 fprintf (stream, "#include    <aes.h>\n\n");
  132.                 lauf = strlen (hilf);
  133.                 for (pc = file + lauf; pc > file; pc--)
  134.                     if (*pc == '.')
  135.                         break;
  136.                 if (*pc == '.')
  137.                     *pc = '\0';
  138.                 strcat (file, ".H");
  139.                 fprintf (stream, "#include    \"%s\"\n\n", file);
  140.     
  141.                 fprintf (stream, "#define        WHITEBAK    NORMAL\n");
  142.                 fprintf (stream, "#define        HIGH        2\n\n");
  143.     
  144.                 fprintf (stream, "extern int    *global = _GemParBlk.global;\n");
  145.                 fprintf (stream, "static int    rsrcload_flag = 0;\n\n\n");
  146.     
  147.     
  148.                 fprintf (stream,"\n");
  149.                 pi = (int *) (memory + header.rsh_trindex);
  150.                 for (lauf = 1; lauf <= header.rsh_ntree; lauf++)
  151.                 {
  152.                     rel_adr = 65536 * (*pi++) + (*pi++);
  153.                     zaehl = (((int)rel_adr) - ((int)header.rsh_object))/24;
  154.                     fprintf (stream, "#define T%dOBJ    %d;\n", lauf-1, zaehl);
  155.                 }
  156.                 
  157.                 fprintf (stream, "#define NOBS        %d;\n",header.rsh_nobs);
  158.                 fprintf (stream, "#define NTREE        %d;\n",header.rsh_ntree);
  159.                 fprintf (stream, "#define NTED        %d;\n",header.rsh_nted);
  160.                 fprintf (stream, "#define NIB            %d;\n",header.rsh_nib);
  161.                 fprintf (stream, "#define NBB            %d;\n",header.rsh_nbb);
  162.                 fprintf (stream, "#define NSTRING        %d;\n",header.rsh_nstring);
  163.                 fprintf (stream, "#define NIMAGES        %d;\n",header.rsh_nimages);
  164.                 fprintf (stream,"\n\n\n");
  165.     
  166.     
  167.      /*
  168.      *        Do    String            
  169.     */
  170.                 lauf = 0;
  171.                 
  172.                 end_string = header.rsh_object;
  173.                 if (header.rsh_tedinfo < end_string)
  174.                     end_string = header.rsh_tedinfo;
  175.                 if (header.rsh_iconblk < end_string)
  176.                     end_string = header.rsh_iconblk;
  177.                 if (header.rsh_bitblk < end_string)
  178.                     end_string = header.rsh_bitblk;
  179.                 if (header.rsh_frstr < end_string)
  180.                     end_string = header.rsh_frstr;
  181.                 if (header.rsh_imdata < end_string)
  182.                     end_string = header.rsh_imdata;
  183.                 if (header.rsh_frimg < end_string)
  184.                     end_string = header.rsh_frimg;
  185.                 if (header.rsh_trindex < end_string)
  186.                     end_string = header.rsh_trindex;
  187.                 
  188.                 fprintf (stream, "char   *rs_strings[] = {\n");
  189.                 pc = (char *) (memory + header.rsh_string);
  190.                 
  191.                 while (pc < (char *) (memory + end_string))
  192.                 {
  193.                     r_strings[lauf++] = (int) pc - memory;
  194.                     fprintf (stream, "          /*%04x*/     \"",lauf-1);
  195.                     while (*pc != '\0')
  196.                         if ((unsigned int) *pc < 32) 
  197.                             fprintf (stream, "\\%03o", (char) ((int)*pc++ & 0x000000ff));
  198.                         else
  199.                             fprintf (stream, "%c", *pc++);
  200.                     pc++;
  201.                     if (pc < (char *) (memory + end_string))
  202.                         fprintf (stream, "\", \n");
  203.                     else
  204.                         fprintf (stream, "\"");
  205.                 }
  206.                 if (lauf == 1)
  207.                     fprintf (stream, "\"\"");
  208.                 fprintf (stream, "};\n\n");
  209.                 
  210.                 
  211.      /*
  212.      *        Do    Images
  213.     */
  214.                 end_string = header.rsh_object;
  215.                 if ((header.rsh_tedinfo < end_string) && (header.rsh_imdata <= header.rsh_tedinfo))
  216.                     end_string = header.rsh_tedinfo;
  217.                 if ((header.rsh_iconblk < end_string) && (header.rsh_imdata <= header.rsh_iconblk))
  218.                     end_string = header.rsh_iconblk;
  219.                 if ((header.rsh_bitblk < end_string) && (header.rsh_imdata <= header.rsh_bitblk))
  220.                     end_string = header.rsh_bitblk;
  221.                 if ((header.rsh_frstr < end_string) && (header.rsh_imdata <= header.rsh_frstr))
  222.                     end_string = header.rsh_frstr;
  223.                 if ((header.rsh_frimg < end_string) && (header.rsh_imdata <= header.rsh_frimg))
  224.                     end_string = header.rsh_frimg;
  225.                 if ((header.rsh_trindex < end_string) && (header.rsh_imdata <= header.rsh_trindex))
  226.                     end_string = header.rsh_trindex;
  227.                 
  228.                 
  229.                 fprintf (stream, "struct IMDATA {\n");
  230.                 fprintf (stream, "       int     image;\n");
  231.                 fprintf (stream, "       } rs_imdata[] = {\n");
  232.                 header.rsh_imdata = (header.rsh_imdata + 1) & 0xfffffffe;
  233.                 pi = (int *) (memory + header.rsh_imdata);
  234.                 
  235.                 for (lauf = 1; pi < (int *)(memory + end_string); lauf+=2)
  236.                 {
  237.                     if ((lauf-1) % 4 == 0)
  238.                     {
  239.                         if ((lauf-1) % 16 == 0)
  240.                             fprintf (stream, "          /*%04x*/     ",lauf-1);
  241.                         else
  242.                             fprintf (stream, "                       ");
  243.                     }
  244.                     fprintf (stream, "0x%04x, ",*pi++);
  245.                     fprintf (stream, "0x%04x",*pi++);
  246.                     if (pi < (int *)(memory + end_string))
  247.                         fprintf (stream, ", ");
  248.                     if ((lauf+1) % 4 == 0)
  249.                         fprintf (stream, "\n");
  250.                 }
  251.                 if ((int *) (memory + header.rsh_imdata) == (int *)(memory + end_string))
  252.                     fprintf (stream, "          0  ");
  253.                 fprintf (stream, "};\n\n");
  254.                 
  255.                 
  256.      /*
  257.      *        Do    BitBlocks    (BitImages)
  258.     */            
  259.                 fprintf (stream, "BITBLK rs_bitblk[] = {\n");
  260.                 pi = (int *) (memory + header.rsh_bitblk);
  261.                 
  262.                 for (lauf = 1; lauf <= header.rsh_nbb; lauf++)
  263.                 {
  264.                     fprintf (stream, "          /*%04x*/     ",lauf-1);
  265.                     rel_adr = 65536 * (*pi++) + (*pi++);
  266.                     zaehl = (((int)rel_adr) - ((int)header.rsh_imdata))/2;
  267.                     fprintf (stream, "0x%04xL, ",zaehl);
  268.                     fprintf (stream, "%d, ",*pi++);
  269.                     fprintf (stream, "%d, ",*pi++);
  270.                     fprintf (stream, "%d, ",*pi++);
  271.                     fprintf (stream, "%d, ",*pi++);
  272.                     fprintf (stream, "%d",*pi++);
  273.                     if (lauf < header.rsh_nbb)
  274.                         fprintf (stream, ", \n");
  275.                 }
  276.                 if (header.rsh_nbb == 0)
  277.                     fprintf (stream, "          0  ");
  278.                 fprintf (stream, "};\n\n");
  279.                 
  280.                 
  281.      /*
  282.      *        Do IconBlocks
  283.     */            
  284.                 fprintf (stream, "ICONBLK rs_iconblk[] = {\n");
  285.                 pi = (int *) (memory + header.rsh_iconblk);
  286.                 
  287.                 for (lauf = 1; lauf <= header.rsh_nib; lauf++)
  288.                 {
  289.                     fprintf (stream, "          /*%04x*/     ",lauf-1);
  290.                     rel_adr = 65536 * (*pi++) + (*pi++);
  291.                     zaehl = (((int)rel_adr) - ((int)header.rsh_imdata))/2;
  292.                     fprintf (stream, "0x%04xL, ",zaehl);
  293.                     rel_adr = 65536 * (*pi++) + (*pi++);
  294.                     zaehl = (((int)rel_adr) - ((int)header.rsh_imdata))/2;
  295.                     fprintf (stream, "0x%04xL, ",zaehl);
  296.                     rel_adr = 65536 * (*pi++) + (*pi++);
  297.                     for (zaehl = 0; r_strings[zaehl] != rel_adr; zaehl++)
  298.                         ;
  299.                     fprintf (stream, "0x%04xL, ",zaehl);
  300.                     fprintf (stream, "%d, ",*pi++);
  301.                     fprintf (stream, "%d, ",*pi++);
  302.                     fprintf (stream, "%d, ",*pi++);
  303.                     fprintf (stream, "%d, ",*pi++);
  304.                     fprintf (stream, "%d, ",*pi++);
  305.                     fprintf (stream, "%d, ",*pi++);
  306.                     fprintf (stream, "%d, ",*pi++);
  307.                     fprintf (stream, "%d, ",*pi++);
  308.                     fprintf (stream, "%d, ",*pi++);
  309.                     fprintf (stream, "%d, ",*pi++);
  310.                     fprintf (stream, "%d",*pi++);
  311.                     if (lauf < header.rsh_nib)
  312.                         fprintf (stream, ", \n");
  313.                 }
  314.                 if (header.rsh_nib == 0)
  315.                     fprintf (stream, "          0  ");
  316.                 fprintf (stream, "};\n\n");
  317.                 
  318.                 
  319.      /*
  320.      *        Do    TextInfos
  321.     */
  322.                 fprintf (stream, "TEDINFO rs_tedinfo[] = {\n");
  323.                 pi = (int *) (memory + header.rsh_tedinfo);
  324.                 
  325.                 for (lauf = 1; lauf <= header.rsh_nted; lauf++)
  326.                 {
  327.                     fprintf (stream, "          /*%04x*/     ",lauf-1);
  328.                     rel_adr = 65536 * (*pi++) + (*pi++);
  329.                     for (zaehl = 0; r_strings[zaehl] != rel_adr; zaehl++)
  330.                         ;
  331.                     fprintf (stream, "0x%04xL, ",zaehl);
  332.                     rel_adr = 65536 * (*pi++) + (*pi++);
  333.                     if (rel_adr == 0L)
  334.                         fprintf (stream, "0x%04xL, ", 0x0000);
  335.                     else
  336.                     {
  337.                         for (zaehl = 0; r_strings[zaehl] != rel_adr; zaehl++)
  338.                             ;
  339.                         fprintf (stream, "0x%04xL, ",zaehl);
  340.                     }
  341.                     rel_adr = 65536 * (*pi++) + (*pi++);
  342.                     for (zaehl = 0; r_strings[zaehl] != rel_adr; zaehl++)
  343.                         ;
  344.                     fprintf (stream, "0x%04xL, ",zaehl);
  345.                     fprintf (stream, "%d, ",*pi++);
  346.                     fprintf (stream, "%d, ",*pi++);
  347.                     fprintf (stream, "%d, ",*pi++);
  348.                     fprintf (stream, "%d, ",*pi++);
  349.                     fprintf (stream, "%d, ",*pi++);
  350.                     fprintf (stream, "%d, ",*pi++);
  351.                     fprintf (stream, "%d, ",*pi++);
  352.                     fprintf (stream, "%d",*pi++);
  353.                     if (lauf < header.rsh_nted)
  354.                         fprintf (stream, ", \n");
  355.                 }
  356.                 if (header.rsh_nted == 0)
  357.                     fprintf (stream, "          0  ");
  358.                 fprintf (stream, "};\n\n");
  359.                 
  360.                 
  361.      /*
  362.      *        Do    Objects
  363.     */
  364.                 fprintf (stream, "OBJECT rs_object[] = {\n");
  365.                 pi = (int *) (memory + header.rsh_object);
  366.                 
  367.                 for (lauf = 1, ll = 0; lauf <= header.rsh_nobs; lauf++, ll++)
  368.                 {
  369.                     if (*pi == -1)
  370.                         ll = 0;
  371.                     fprintf (stream, "          /*%04d*/     ",ll);
  372.                     fprintf (stream, "%d, ",*pi++);
  373.                     fprintf (stream, "%d, ",*pi++);
  374.                     fprintf (stream, "%d, ",*pi++);
  375.                     switch (object_type = *pi++)
  376.                     {
  377.                         case G_BOX      : fprintf (stream, "G_BOX     , ");
  378.                                           break;
  379.                         case G_TEXT     : fprintf (stream, "G_TEXT    , ");
  380.                                           break;
  381.                         case G_BOXTEXT  : fprintf (stream, "G_BOXTEXT , ");
  382.                                           break;
  383.                         case G_IMAGE    : fprintf (stream, "G_IMAGE   , ");
  384.                                           break;
  385.                         case G_USERDEF  : fprintf (stream, "G_PROGDEF , ");
  386.                                           break;
  387.                         case G_IBOX     : fprintf (stream, "G_IBOX    , ");
  388.                                           break;
  389.                         case G_BUTTON   : fprintf (stream, "G_BUTTON  , ");
  390.                                           break;
  391.                         case G_BOXCHAR  : fprintf (stream, "G_BOXCHAR , ");
  392.                                           break;
  393.                         case G_STRING   : fprintf (stream, "G_STRING  , ");
  394.                                           break;
  395.                         case G_FTEXT    : fprintf (stream, "G_FTEXT   , ");
  396.                                           break;
  397.                         case G_FBOXTEXT : fprintf (stream, "G_FBOXTEXT, ");
  398.                                           break;
  399.                         case G_ICON     : fprintf (stream, "G_ICON    , ");
  400.                                           break;
  401.                         case G_TITLE    : fprintf (stream, "G_TITLE   , ");
  402.                                           break;
  403.                     }         
  404.                     fprintf (stream, "0x%04x, ",*pi++);
  405.                     fprintf (stream, "0x%04x, ",*pi++);
  406.                     rel_adr = 65536 * (*pi++) + (*pi++);
  407.                     
  408.                     if (rel_adr == 0L)
  409.                         fprintf (stream, "0x%08lxL, ",rel_adr);
  410.                     else
  411.                     {
  412.                         switch (object_type)
  413.                         {
  414.                             case G_FTEXT    :
  415.                             case G_BOXTEXT  :
  416.                             case G_FBOXTEXT :
  417.                             case G_TEXT     :
  418.                             {
  419.                                 zaehl = (((int)rel_adr) - ((int)header.rsh_tedinfo))/28;
  420.                                 fprintf (stream, "0x%04xL    , ",zaehl);
  421.                                 break;
  422.                             }
  423.                             case G_BUTTON   :
  424.                             case G_TITLE    :
  425.                             case G_STRING   :
  426.                             {
  427.                                 for (zaehl = 0; r_strings[zaehl] != rel_adr; zaehl++)
  428.                                     ;
  429.                                 fprintf (stream, "0x%04xL    , ",zaehl);
  430.                                 break;
  431.                             }
  432.                             case G_ICON     :
  433.                             {
  434.                                 zaehl = (((int)rel_adr) - ((int)header.rsh_iconblk))/34;
  435.                                 fprintf (stream, "0x%04xL    , ",zaehl);
  436.                                 break;
  437.                             }
  438.                             case G_IMAGE    :
  439.                             {
  440.                                 zaehl = (((int)rel_adr) - ((int)header.rsh_bitblk))/14;
  441.                                 fprintf (stream, "0x%04xL    , ",zaehl);
  442.                                 break;
  443.                             }
  444.                             default:
  445.                                 fprintf (stream, "0x%08lxL, ",rel_adr);
  446.                         }
  447.                     }
  448.                     fprintf (stream, "%d, ",*pi);
  449.                     pi++;
  450.                     fprintf (stream, "%d, ",*pi);
  451.                     pi++;
  452.                     fprintf (stream, "%d, ",*pi);
  453.                     pi++;
  454.                     fprintf (stream, "%d",*pi);
  455.                     pi++;
  456.                     if (lauf < header.rsh_nobs)
  457.                         fprintf (stream, ", \n");
  458.                 }
  459.                 if (header.rsh_nobs == 0)
  460.                     fprintf (stream, "          0  ");
  461.                 fprintf (stream, "};\n\n");
  462.                 
  463.                 
  464.      /*
  465.      *        Do Trees
  466.     */
  467.                 fprintf (stream, "long   rs_trindex[] = {\n");
  468.                 pi = (int *) (memory + header.rsh_trindex);
  469.                 for (lauf = 1; lauf <= header.rsh_ntree; lauf++)
  470.                 {
  471.                     fprintf (stream, "          /*%04d*/     ",lauf-1);
  472.                     rel_adr = 65536 * (*pi++) + (*pi++);
  473.                     zaehl = (((int)rel_adr) - ((int)header.rsh_object))/24;
  474.                     fprintf (stream, "0x%04xL",zaehl);
  475.                     if (lauf < header.rsh_ntree)
  476.                         fprintf (stream, ",\n");                
  477.                 }
  478.                 if (header.rsh_ntree == 0)
  479.                     fprintf (stream,"          0  ");
  480.                 fprintf (stream, "};\n\n");
  481.                 
  482.                 
  483.                 fprintf (stream, "\n\n\n\n\n/*                       Entnommen aus der ST-Computer 12'87                  */\n\n");
  484.                 fprintf (stream, "/*                      Modifiziert 1988 by Dieter Fiebelkorn                 */\n\n\n\n");
  485.                 fprintf (stream, "/*                    ========= Resource-Load-Segment =========               */\n\n");
  486.                 fprintf (stream, "int    rsrc_load (RscFile)\n");
  487.                 fprintf (stream, "    char    *RscFile;\n");
  488.                 fprintf (stream, "{\n");
  489.                 fprintf (stream, "    int        dx,\n");
  490.                 fprintf (stream, "            dy,\n");
  491.                 fprintf (stream, "            Obj;\n\n");
  492.                 
  493.                 fprintf (stream, "    OBJECT    **GEM_rsc;\n\n");
  494.         
  495.                 fprintf (stream, "    GEM_rsc = (OBJECT **) &global[5];\n");
  496.                 fprintf (stream, "    *GEM_rsc = (OBJECT *) &rs_trindex[0];\n\n");
  497.                 fprintf (stream, "    if (rsrcload_flag == 0)\n");
  498.                 fprintf (stream, "    {\n");
  499.                 fprintf (stream, "    rsrcload_flag = 1;\n");
  500.                 fprintf (stream, "    dx = dy = 3;\n");
  501.                 fprintf (stream, "    if (Getrez() == HIGH)\n");
  502.                 fprintf (stream, "        dy = 4;\n\n");
  503.             
  504.                 fprintf (stream, " /*\n");
  505.                 fprintf (stream, " *    Do Objects\n");
  506.                 fprintf (stream, "*/\n");
  507.                 fprintf (stream, "    for (Obj = 0; Obj < NOBS; Obj++)\n");
  508.                 fprintf (stream, "    {\n");
  509.                 fprintf (stream, "        rs_object[Obj].ob_x = ((rs_object[Obj].ob_x & 0x00ff) << dx) +\n");
  510.                 fprintf (stream, "                               (rs_object[Obj].ob_x >> 8);\n");
  511.                 fprintf (stream, "        rs_object[Obj].ob_y = ((rs_object[Obj].ob_y & 0x00ff) << dy) +\n");
  512.                 fprintf (stream, "                               (rs_object[Obj].ob_y >> 8);\n");
  513.                 fprintf (stream, "        rs_object[Obj].ob_width = ((rs_object[Obj].ob_width & 0x00ff) << dx) +\n");
  514.                 fprintf (stream, "                                   (rs_object[Obj].ob_width >> 8);\n");
  515.                 fprintf (stream, "        rs_object[Obj].ob_height = ((rs_object[Obj].ob_height & 0x00ff) << dy) +\n");
  516.                 fprintf (stream, "                                    (rs_object[Obj].ob_height >> 8);\n");
  517.                 fprintf (stream, "        switch (rs_object[Obj].ob_type)\n");
  518.                 fprintf (stream, "        {\n");
  519.                 fprintf (stream, "            case G_FTEXT    :\n");
  520.                 fprintf (stream, "            case G_BOXTEXT  :\n");
  521.                 fprintf (stream, "            case G_FBOXTEXT :\n");
  522.                 fprintf (stream, "            case G_TEXT     :\n");
  523.                 fprintf (stream, "                rs_object[Obj].ob_spec = (long) &rs_tedinfo[(int) rs_object[Obj].ob_spec];\n");
  524.                 fprintf (stream, "                break;\n");
  525.                 fprintf (stream, "            case G_BUTTON   :\n");
  526.                 fprintf (stream, "            case G_TITLE    :\n");
  527.                 fprintf (stream, "            case G_STRING   :\n");
  528.                 fprintf (stream, "                rs_object[Obj].ob_spec = (long) rs_strings[(int) rs_object[Obj].ob_spec];\n");
  529.                 fprintf (stream, "                break;\n");
  530.                 fprintf (stream, "            case G_ICON     :\n");
  531.                 fprintf (stream, "                rs_object[Obj].ob_spec = (long) &rs_iconblk[(int) rs_object[Obj].ob_spec];\n");
  532.                 fprintf (stream, "                break;\n");
  533.                 fprintf (stream, "            case G_IMAGE    :\n");
  534.                 fprintf (stream, "                rs_object[Obj].ob_spec = (long) &rs_bitblk[(int) rs_object[Obj].ob_spec];\n");
  535.                 fprintf (stream, "                break;\n");
  536.                 fprintf (stream, "        }\n");
  537.                 fprintf (stream, "    }\n\n");
  538.         
  539.                 fprintf (stream, " /*\n");
  540.                 fprintf (stream, " *    Do TextInfos\n");
  541.                 fprintf (stream, "*/\n");
  542.                 fprintf (stream, "    for (Obj = 0; Obj < NTED; Obj++)\n");
  543.                 fprintf (stream, "    {\n");
  544.                 fprintf (stream, "        rs_tedinfo[Obj].te_ptext  = (char *)rs_strings[(int) rs_tedinfo[Obj].te_ptext];\n");
  545.                 fprintf (stream, "        rs_tedinfo[Obj].te_ptmplt = (char *)rs_strings[(int) rs_tedinfo[Obj].te_ptmplt];\n");
  546.                 fprintf (stream, "        rs_tedinfo[Obj].te_pvalid = (char *)rs_strings[(int) rs_tedinfo[Obj].te_pvalid];\n");
  547.                 fprintf (stream, "    }\n\n");
  548.         
  549.                 fprintf (stream, " /*\n");
  550.                 fprintf (stream, " *    Do IconBlocks\n");
  551.                 fprintf (stream, "*/\n");
  552.                 fprintf (stream, "    for (Obj = 0; Obj < NIB; Obj++)\n");
  553.                 fprintf (stream, "    {\n");
  554.                 fprintf (stream, "        rs_iconblk[Obj].ib_pmask = (int *)&rs_imdata[(int) rs_iconblk[Obj].ib_pmask];\n");
  555.                 fprintf (stream, "        rs_iconblk[Obj].ib_pdata = (int *)&rs_imdata[(int) rs_iconblk[Obj].ib_pdata];\n");
  556.                 fprintf (stream, "        rs_iconblk[Obj].ib_ptext = (int *)rs_strings[(int) rs_iconblk[Obj].ib_ptext];\n");
  557.                 fprintf (stream, "    }\n\n");
  558.         
  559.                 fprintf (stream, " /*\n");
  560.                 fprintf (stream, " *    Do BitImages\n");
  561.                 fprintf (stream, "*/\n");
  562.                 fprintf (stream, "    for (Obj = 0; Obj < NBB; Obj++)\n");
  563.                 fprintf (stream, "        rs_bitblk[Obj].bi_pdata = (int *)&rs_imdata[(int) rs_bitblk[Obj].bi_pdata];\n\n");
  564.             
  565.                 fprintf (stream, " /*\n");
  566.                 fprintf (stream, " *    Do TreeIndex\n");
  567.                 fprintf (stream, "*/\n");
  568.                 fprintf (stream, "    for (Obj = 0; Obj < NTREE; Obj++)\n");
  569.                 fprintf (stream, "        rs_trindex[Obj] = (long) &rs_object[(int) rs_trindex[Obj]];\n\n");
  570.     
  571.                 fprintf (stream, "  }\n");
  572.                 fprintf (stream, "    return(1);\n");
  573.                 fprintf (stream, "}\n\n\n\n");
  574.     
  575.     
  576.                 fprintf (stream, "rsrc_free()\n");
  577.                 fprintf (stream, "{\n");
  578.                 fprintf (stream, "    return (1);\n");
  579.                 fprintf (stream, "}\n");
  580.                             
  581.             
  582.                 fclose (stream);
  583.                 }
  584.                 Mfree (mem);
  585.             }
  586.             else
  587.                 form_alert (1, "[1][ | Kein Speicher vorhanden !   ][  OK  ]");
  588.         }
  589.         rsrc_free();
  590.     }
  591. ENDE:
  592.     appl_exit();
  593.     v_clsvwk(vdi_handle);
  594. }
  595.  
  596.  
  597.  
  598. int print_rshdr(h)
  599. RSHDR    *h;
  600. {
  601.     OBJECT    *o;
  602.     long    tree;
  603.     int        i,
  604.             x, y, w, hg;
  605.     char    hilf[20];
  606.     
  607.     rsrc_gaddr (0, 0, &tree);
  608.     o = (OBJECT *) tree;
  609.     i = STRINGS;
  610.     sprintf (hilf, "RSH_VRSN    = %d",h->rsh_vrsn);
  611.     strcpy ((o + (i++))->ob_spec, hilf);
  612.     sprintf (hilf, "RSH_OBJECT  = %d",h->rsh_object);
  613.     strcpy ((o + (i++))->ob_spec, hilf);
  614.     sprintf (hilf, "RSH_TEDINFO = %d",h->rsh_tedinfo);
  615.     strcpy ((o + (i++))->ob_spec, hilf);
  616.     sprintf (hilf, "RSH_ICONBLK = %d",h->rsh_iconblk);
  617.     strcpy ((o + (i++))->ob_spec, hilf);
  618.     sprintf (hilf, "RSH_BITBLK  = %d",h->rsh_bitblk);
  619.     strcpy ((o + (i++))->ob_spec, hilf);
  620.     sprintf (hilf, "RSH_STRING  = %d",h->rsh_string);
  621.     strcpy ((o + (i++))->ob_spec, hilf);
  622.     sprintf (hilf, "RSH_IMDATA  = %d",h->rsh_imdata);
  623.     strcpy ((o + (i++))->ob_spec, hilf);
  624.     sprintf (hilf, "RSH_FRIMG   = %d",h->rsh_frimg);
  625.     strcpy ((o + (i++))->ob_spec, hilf);
  626.     sprintf (hilf, "RSH_TRINDEX = %d",h->rsh_trindex);
  627.     strcpy ((o + (i++))->ob_spec, hilf);
  628.     sprintf (hilf, "RSH_NOBS    = %d",h->rsh_nobs);
  629.     strcpy ((o + (i++))->ob_spec, hilf);
  630.     sprintf (hilf, "RSH_NTREE   = %d",h->rsh_ntree);
  631.     strcpy ((o + (i++))->ob_spec, hilf);
  632.     sprintf (hilf, "RSH_NTED    = %d",h->rsh_nted);
  633.     strcpy ((o + (i++))->ob_spec, hilf);
  634.     sprintf (hilf, "RSH_NIB     = %d",h->rsh_nib);
  635.     strcpy ((o + (i++))->ob_spec, hilf);
  636.     sprintf (hilf, "RSH_NBB     = %d",h->rsh_nbb);
  637.     strcpy ((o + (i++))->ob_spec, hilf);
  638.     sprintf (hilf, "RSH_NSTRING = %d",h->rsh_nstring);
  639.     strcpy ((o + (i++))->ob_spec, hilf);
  640.     sprintf (hilf, "RSH_NIMAGES = %d",h->rsh_nimages);
  641.     strcpy ((o + (i++))->ob_spec, hilf);
  642.     sprintf (hilf, "RSH_RSSIZE  = %d",h->rsh_rssize);
  643.     strcpy ((o + (i++))->ob_spec, hilf);
  644.     form_center (o, &x, &y, &w, &hg);
  645.     form_dial (0, 0, 0, 2, 2, x, y, w, hg);
  646.     form_dial (1, 0, 0, 2, 2, x, y, w, hg);
  647.     objc_draw (o, 0, 8, x, y, w, hg);
  648.     form_do (o, 0);
  649.     form_dial (2, 0, 0, 2, 2, x, y, w, hg);
  650.     form_dial (3, 0, 0, 2, 2, x, y, w, hg);
  651. }
  652.             
  653.