home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / pc / SNNSV32.ZIP / SNNSv3.2 / xgui / sources / ui_config.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-04-25  |  25.3 KB  |  783 lines

  1. /*****************************************************************************
  2.   FILE           : ui_config.c  
  3.   SHORTNAME      : config.c
  4.   SNNS VERSION   : 3.2
  5.  
  6.   PURPOSE        : handling of configuration files
  7.   NOTES          :
  8.  
  9.   AUTHOR         : Tilman Sommer
  10.   DATE           : 28.9.1990
  11.  
  12.   CHANGED BY     : Michael Vogt, Guenter Mamier
  13.   IDENTIFICATION : @(#)ui_config.c    1.15 3/2/94
  14.   SCCS VERSION   : 1.15 
  15.   LAST CHANGE    : 3/2/94  
  16.  
  17.              Copyright (c) 1990-1994  SNNS Group, IPVR, Univ. Stuttgart, FRG
  18.  
  19. ******************************************************************************/
  20.  
  21.  
  22. #include <stdio.h>
  23. #include <stdlib.h>
  24. #include <string.h>
  25.  
  26. #include "ui.h"
  27. #include "ui_display.h"
  28. #include "ui_fileP.h"
  29. #include "ui_mainP.h"
  30. #include "ui_confirmer.h"
  31. #include "ui_xWidgets.h"
  32. #include "ui_utilP.h"
  33. #include "ui_color.h"
  34. #include "ui_remote.h"
  35. #include "ui_print.h"
  36. #include "ui_main.h"
  37. #include "ui_layerP.h"
  38.  
  39. #include "d3_global.h"
  40. #include "d3_main.h"
  41. #include "d3_fonts.h"
  42. #include "d3_pannels.h"
  43. #include "d3_disp.h"
  44.  
  45. #include "ui_config.ph"
  46.  
  47.  
  48. /*****************************************************************************
  49.   FUNCTION : ui_cfg_save
  50.  
  51.   PURPOSE  : save configuration in specified file
  52.   RETURNS  : int
  53.   NOTES    : In the first line, format determines the format of the file. This
  54.              number will be checked be future routines, to be able to read 
  55.          all previous formats for compatibility reasons.
  56.  
  57.   UPDATE   : 19.3.1991
  58. ******************************************************************************/
  59.  
  60. int ui_cfg_save (FILE *filePtr)
  61.  
  62. {
  63.     int    err;
  64.     int    i, count = 0;
  65.     struct Ui_DisplayType *listPtr;
  66.  
  67.     err = fprintf(filePtr,"SNNS xgui configuration file.  format: %d\n\n",
  68.           CURRENT_FORMAT);
  69.     retchk(err);
  70.  
  71.     err = fprintf(filePtr,"filenames:\n");
  72.     retchk(err);
  73.     
  74.     err = fprintf(filePtr,"%s#\n",ui_pathname);
  75.     retchk(err);
  76.     err = fprintf(filePtr,"%s#\n",ui_filenameNET);
  77.     retchk(err);
  78.     err = fprintf(filePtr,"%s#\n",ui_filenamePAT);
  79.     retchk(err);
  80.     err = fprintf(filePtr,"%s#\n",ui_filenameRES);
  81.     retchk(err);
  82.     err = fprintf(filePtr,"%s#\n",ui_filenameCFG);
  83.     retchk(err);
  84.     err = fprintf(filePtr,"%s#\n",ui_filenameTXT);
  85.     retchk(err);
  86.  
  87.     err = fprintf(filePtr,"\n");
  88.     retchk(err);
  89.  
  90.     err = fprintf(filePtr,"Layers : %d\n", MAX_NO_LAYERS); 
  91.     retchk(err);
  92.     for (i=1; i <= MAX_NO_LAYERS; i++) {
  93.     err = fprintf(filePtr,"%s#\n",&ui_layerNames[i-1][0]);
  94.     retchk(err);
  95.     }
  96.     err = fprintf(filePtr,"\n");
  97.     retchk(err);
  98.  
  99.     err = fprintf(filePtr,"Learn parameters: %d\n", UI_NO_LEARN_PARAMS);
  100.     retchk(err);
  101.     for (i=0; i<UI_NO_LEARN_PARAMS; i++) {
  102.     err = fprintf(filePtr,"param %d: %9.5f\n",i+1,
  103.               ui_learnParameters[i]);
  104.     retchk(err);
  105.     }
  106.     err = fprintf(filePtr,"\n");
  107.     retchk(err);
  108.  
  109.     err = fprintf(filePtr,"Update parameters: %d\n", UI_NO_UPDATE_PARAMS);
  110.     retchk(err);
  111.     for (i=0; i<UI_NO_UPDATE_PARAMS; i++) {
  112.     err = fprintf(filePtr,"param %d: %9.5f\n",i+1,
  113.               ui_updateParameters[i]);
  114.     retchk(err);
  115.     }
  116.     err = fprintf(filePtr,"\n");
  117.     retchk(err);
  118.  
  119.     err = fprintf(filePtr,"Initialisation parameters: %d\n", UI_NO_INIT_PARAMS);
  120.     retchk(err);
  121.     for (i=0; i<UI_NO_INIT_PARAMS; i++) {
  122.     err = fprintf(filePtr,"param %d: %9.5f\n",i+1,
  123.               ui_initParameters[i]);
  124.     retchk(err);
  125.     }
  126.     err = fprintf(filePtr,"\n");
  127.     retchk(err);
  128.  
  129.     listPtr = ui_displ_listPtr;
  130.     while (listPtr != NULL) {
  131.     count++;
  132.     listPtr = listPtr->nextPtr;
  133.     }
  134.     err = fprintf(filePtr,"Displays: %d\n\n",count); /* no of displays */
  135.     retchk(err);
  136.  
  137.     listPtr = ui_displ_listPtr;
  138.     while (listPtr != NULL) {
  139.     err = fprintf(filePtr,"display no             : %d\n",listPtr->displayNo);
  140.     retchk(err);
  141.     err = fprintf(filePtr,"position x             : %d\n",(int) listPtr->x);
  142.     retchk(err);
  143.     err = fprintf(filePtr,"position y             : %d\n",(int) listPtr->y);
  144.     retchk(err);
  145.     err = fprintf(filePtr,"width                  : %d\n",(int) listPtr->width);
  146.     retchk(err);
  147.     err = fprintf(filePtr,"height                 : %d\n",(int) listPtr->height);
  148.     retchk(err);
  149.     err = fprintf(filePtr,"origin x               : %d\n",(int) listPtr->origin.x);
  150.     retchk(err);
  151.     err = fprintf(filePtr,"origin y               : %d\n",(int) listPtr->origin.y);
  152.     retchk(err);
  153.     err = fprintf(filePtr,"gridSize               : %d\n",listPtr->gridSize);
  154.     retchk(err);
  155.     err = fprintf(filePtr,"frozen                 : %d\n",listPtr->frozen);
  156.     retchk(err);
  157.     err = fprintf(filePtr,"raster                 : %d\n",listPtr->raster);
  158.     retchk(err);
  159.     err = fprintf(filePtr,"subNetNo               : %d\n",listPtr->subNetNo);
  160.     retchk(err);
  161.     err = fprintf(filePtr,"flags                  : %d\n",listPtr->flags);
  162.     retchk(err);
  163.     err = fprintf(filePtr,"layers                 : %d\n",(int) listPtr->layers);
  164.     retchk(err);
  165.     err = fprintf(filePtr,"update type            : %d\n",listPtr->updateType);
  166.     retchk(err);
  167.     err = fprintf(filePtr,"setup show title       : %d\n",listPtr->setup.showTitleFlg);
  168.     retchk(err);
  169.     err = fprintf(filePtr,"setup title            : %d\n",listPtr->setup.showTitle);
  170.     retchk(err);
  171.     err = fprintf(filePtr,"setup show value       : %d\n",listPtr->setup.showValueFlg);
  172.     retchk(err);
  173.     err = fprintf(filePtr,"setup value            : %d\n",listPtr->setup.showValue);
  174.     retchk(err);
  175.     err = fprintf(filePtr,"setup show link        : %d\n",listPtr->setup.showLinkFlg);
  176.     retchk(err);
  177.     err = fprintf(filePtr,"setup show direction   : %d\n",listPtr->setup.showDirectionFlg);
  178.     retchk(err);
  179.     err = fprintf(filePtr,"setup show weight      : %d\n",listPtr->setup.showWeightFlg);
  180.     retchk(err);
  181.     err = fprintf(filePtr,"setup link trigger pos : %9.5f\n",(float) listPtr->setup.linkPosTrigger);
  182.     retchk(err);
  183.     err = fprintf(filePtr,"setup link trigger neg : %9.5f\n",(float) listPtr->setup.linkNegTrigger);
  184.     retchk(err);
  185.     err = fprintf(filePtr,"setup unit scale factor: %8.5f\n",(float) listPtr->setup.unitScaleFactor);
  186.     retchk(err);
  187.     err = fprintf(filePtr,"setup link scale factor: %8.5f\n",(float) listPtr->setup.linkScaleFactor);
  188.     retchk(err);
  189.     err = fprintf(filePtr,"setup site name        : %s#\n", listPtr->setup.siteName);
  190.     retchk(err);
  191.     err = fprintf(filePtr,"setup display colors   : %02d%02d%02d\n",
  192.                                                   listPtr->setup.textColorIndex,
  193.                                                   listPtr->setup.backgroundColorIndex,
  194.                                                   listPtr->setup.selectionColorIndex);
  195.     retchk(err);
  196.  
  197.     err = fprintf(filePtr,"\n");
  198.     retchk(err);
  199.     listPtr = listPtr->nextPtr;
  200.     }
  201.  
  202.     if (d3_controlIsReady) {
  203.         err = fprintf (filePtr, "%s\n", d3_configStr);
  204.         retchk(err);
  205.         err = fprintf(filePtr,"\n");
  206.         retchk(err);
  207.     
  208.         err = fprintf (filePtr, 
  209.                   "initial rotation               : %9.4f %9.4f %9.4f\n", 
  210.                   deg(d3_state.rot_vec[0]), deg(d3_state.rot_vec[1]), 
  211.                   deg(d3_state.rot_vec[2]));
  212.         retchk(err);
  213.         err = fprintf (filePtr, 
  214.               "initial translation            : %9.4f %9.4f %9.4f\n", 
  215.               d3_state.trans_vec[0], d3_state.trans_vec[1], d3_state.trans_vec[2]);
  216.         retchk(err);
  217.         err = fprintf (filePtr, 
  218.               "initial scale                  : %9.4f %9.4f %9.4f\n", 
  219.               d3_state.scale_vec[0], d3_state.scale_vec[1], d3_state.scale_vec[2]);
  220.         retchk(err);
  221.  
  222.         err = fprintf (filePtr, 
  223.               "rotation step                  : %9.4f %9.4f %9.4f\n", 
  224.               deg(d3_state.rot_step[0]), deg(d3_state.rot_step[1]), 
  225.               deg(d3_state.rot_step[2]));
  226.         retchk(err);
  227.         err = fprintf (filePtr, 
  228.               "translation step               : %9.4f %9.4f %9.4f\n", 
  229.               d3_state.trans_step[0], d3_state.trans_step[1], 
  230.               d3_state.trans_step[2]);
  231.         retchk(err);
  232.         err = fprintf (filePtr, 
  233.               "scale step                     : %9.4f %9.4f %9.4f\n", 
  234.               d3_state.scale_step[0], d3_state.scale_step[1], 
  235.               d3_state.scale_step[2]);
  236.         retchk(err);
  237.  
  238.         err = fprintf (filePtr, "projection                     : %d\n", 
  239.               d3_state.projection_mode);
  240.         retchk(err);
  241.         err = fprintf (filePtr, 
  242.               "viewpoint                      : %9.4f %9.4f %9.4f\n",
  243.               d3_state.viewpoint[0], d3_state.viewpoint[1], d3_state.viewpoint[2]);
  244.         retchk(err);
  245.  
  246.         err = fprintf (filePtr, "font                          : %d\n", 
  247.                d3_state.font);
  248.         retchk(err);
  249.         err = fprintf (filePtr, "model mode                     : %d\n", 
  250.                d3_state.model_mode);
  251.         retchk(err);
  252.         err = fprintf (filePtr, "link mode                      : %d\n", 
  253.               d3_state.link_mode);
  254.         retchk(err);
  255.         err = fprintf (filePtr, "link scale                     : %9.4f\n", 
  256.               d3_state.link_scale);
  257.         retchk(err);
  258.         err = fprintf (filePtr, "unit aspect                    : %9.4f\n", 
  259.               d3_state.unit_aspect);
  260.             retchk(err);
  261.    
  262.         err = fprintf (filePtr, "show unit size                 : %d\n", 
  263.               d3_state.unit_mode.size);
  264.         retchk(err);
  265.         err = fprintf (filePtr, "show unit color                : %d\n", 
  266.               d3_state.unit_mode.color);
  267.         retchk(err);
  268.         err = fprintf (filePtr, "show unit top label            : %d\n", 
  269.               d3_state.unit_mode.top_label);
  270.         retchk(err);
  271.         err = fprintf (filePtr, "show unit bottom label         : %d\n", 
  272.               d3_state.unit_mode.bottom_label);
  273.         retchk(err);
  274.         err = fprintf (filePtr, 
  275.              "light position                 : %9.4f %9.4f %9.4f\n",
  276.               d3_state.light.position[0], d3_state.light.position[1], 
  277.               d3_state.light.position[2]);
  278.         retchk(err);
  279.         err = fprintf (filePtr, "ambient light intensity        : %9.4f\n",
  280.               d3_state.light.Ia);
  281.         retchk(err);
  282.         err = fprintf (filePtr, "ambient reflection coefficient : %9.4f\n",
  283.               d3_state.light.Ka);
  284.         retchk(err);
  285.         err = fprintf (filePtr, "point light intensity          : %9.4f\n",
  286.               d3_state.light.Ip);
  287.         retchk(err);
  288.         err = fprintf (filePtr, "diffuse refection coefficient  : %9.4f\n",
  289.               d3_state.light.Kd);
  290.         retchk(err);
  291.  
  292.         err = fprintf(filePtr,"\n");
  293.         retchk(err);
  294.    }  
  295.  
  296.    err = fprintf (filePtr, "%s\n", ui_printerConfigStr);
  297.    retchk(err);
  298.    err = fprintf(filePtr,"\n");
  299.    retchk(err);
  300.     
  301.    err = fprintf (filePtr, "destination               : %d\n", ui_prVal.dest); 
  302.    retchk(err);
  303.    err = fprintf (filePtr, "format                    : %d\n", ui_prVal.format); 
  304.    retchk(err);
  305.    err = fprintf (filePtr, "paper                     : %d\n", ui_prVal.paper); 
  306.    retchk(err);
  307.    err = fprintf (filePtr, "auto scale                : %d\n", ui_prVal.autoScale); 
  308.    retchk(err);
  309.    err = fprintf (filePtr, "clip on border            : %d\n", ui_prVal.clip); 
  310.    retchk(err);
  311.    err = fprintf (filePtr, "color                     : %d\n", ui_prVal.color); 
  312.    retchk(err);
  313.    err = fprintf (filePtr, "orientation               : %d\n", ui_prVal.orient); 
  314.    retchk(err);
  315.    err = fprintf (filePtr, "scale uniform             : %d\n", ui_prVal.autoUni); 
  316.    retchk(err);
  317.    err = fprintf (filePtr, "unitsize by value         : %d\n", ui_prVal.size); 
  318.    retchk(err);
  319.    err = fprintf (filePtr, "unitshape                 : %d\n", ui_prVal.shape); 
  320.    retchk(err);
  321.    err = fprintf (filePtr, "transparent text          : %d\n", ui_prVal.text); 
  322.    retchk(err);
  323.    err = fprintf (filePtr, "border                    : %d\n", ui_prVal.border); 
  324.    retchk(err);
  325.    err = fprintf (filePtr, "resolution                : %d\n", ui_prVal.resolution); 
  326.    retchk(err);
  327.    err = fprintf (filePtr, "display to print          : %d\n", ui_prVal.displayToPrint); 
  328.    retchk(err);
  329.    err = fprintf (filePtr, "horizontal border         : %.2f\n", ui_prVal.borderHoriz); 
  330.    retchk(err);
  331.    err = fprintf (filePtr, "vertical border           : %.2f\n", ui_prVal.borderVert); 
  332.    retchk(err);
  333.    err = fprintf (filePtr, "image x scale             : %.2f\n", ui_prVal.scaleValX); 
  334.    retchk(err);
  335.    err = fprintf (filePtr, "image y scale             : %.2f\n", ui_prVal.scaleValY); 
  336.    retchk(err);
  337.    err = fprintf (filePtr, "unit gray value           : %.2f\n", ui_prVal.unitGray); 
  338.    retchk(err);
  339.    err = fprintf (filePtr, "file name                 : %s\n", ui_prVal.fileNameStr); 
  340.    retchk(err);
  341.    err = fprintf (filePtr, "command line              : %s\n", ui_prVal.cmdLineStr); 
  342.    retchk(err);
  343.  
  344.    err = fprintf(filePtr,"\n");
  345.    retchk(err);
  346.  
  347.    return(TRUE); /* success */
  348. }
  349.  
  350.  
  351. /*****************************************************************************
  352.   FUNCTION : ui_cfg_load
  353.  
  354.   PURPOSE  : load a configuration
  355.   RETURNS  : int
  356.   NOTES    : future load routines have to check the value "format" to be able
  357.              to read all previous formats as well.
  358.  
  359.   UPDATE   : 19.3.1991
  360. ******************************************************************************/
  361.  
  362. int ui_cfg_load (FILE *filePtr)
  363.  
  364. {
  365.     char   header[200];
  366.     char   colorString[7];
  367.     int    i, err, noParams, dummy, count, format, lines = 1;
  368.     float  dummyf, f1, f2, f3;
  369.     char   ch[1];
  370.  
  371.     struct Ui_DisplayType *listPtr;
  372.  
  373.     ch[0] = '\0';
  374.  
  375.     ui_configHas3dSection = FALSE; 
  376.     err = fscanf(filePtr,"%*[^:]: %d\n\n", &format);
  377.     if ((format < 1) OR (format > CURRENT_FORMAT)) 
  378.     return(-1); /* error in line 1: wrong format */
  379.     chkretline(1);
  380.     lines += 2;
  381.  
  382.     if (format >= 2) { /* read filenames */
  383.     err = fscanf(filePtr,"filenames:\n");
  384.     chkretline01;
  385.     lines++;   
  386.     err = fscanf(filePtr,"%[^#]#\n",ui_pathname );
  387.     chkretline01;
  388.     lines++;
  389.     err = fscanf(filePtr,"%[^#]#\n",ui_filenameNET);
  390.     chkretline01;
  391.     lines++;
  392.     err = fscanf(filePtr,"%[^#]#\n",ui_filenamePAT);
  393.     chkretline01;
  394.     lines++;
  395.         if (format >= 6) {
  396.             err = fscanf(filePtr,"%[^#]#\n",ui_filenameRES);
  397.         chkretline01;
  398.         lines++;
  399.     }
  400.     err = fscanf(filePtr,"%[^#]#\n",ui_filenameCFG);
  401.     chkretline01;
  402.     lines++;
  403.     err = fscanf(filePtr,"%[^#]#\n",ui_filenameTXT);
  404.     chkretline01;
  405.     lines++;
  406.  
  407.     err = fscanf(filePtr,"\n");
  408.     chkretline(0);
  409.     lines++;   
  410.     }
  411.     
  412.     err = fscanf(filePtr,"%*[^:]: %d\n", &count); 
  413.     chkretline(1);
  414.     lines++;
  415.     for (i=1; i <= count; i++) {
  416.     err = fscanf(filePtr,"%[^#]#\n",&ui_layerNames[i-1][0]);
  417.     chkretline01;
  418.     lines++;
  419.     }
  420.     err = fscanf(filePtr,"\n");
  421.     chkretline(0);
  422.     lines++;
  423.  
  424.     if (format >= 4) {
  425.     err = fscanf(filePtr,"%*[^:]: %d\n", &noParams);
  426.     chkretline(1);
  427.     lines++;
  428.     for (i=0; (i<UI_NO_LEARN_PARAMS) AND (i<noParams); i++) {
  429.         err = fscanf(filePtr,"%*[^:]: %f\n", &ui_learnParameters[i]);
  430.         chkretline(1);
  431.         lines++;
  432.         if (ui_remoteIsCreated) {
  433.         char buf[20];
  434.         sprintf(buf,"%6.4f",ui_learnParameters[i]);
  435.         ui_cutTrailingZeros(buf);
  436.         ui_xSetString(ui_learnParameterWidgets[i], buf);
  437.         }
  438.     }
  439.     err = fscanf(filePtr,"\n");
  440.     chkretline(0);
  441.     lines++;
  442.     
  443.     err = fscanf(filePtr,"%*[^:]: %d\n", &noParams);
  444.     chkretline(1);
  445.     lines++;
  446.     for (i=0; (i<UI_NO_UPDATE_PARAMS) AND (i<noParams); i++) {
  447.         err = fscanf(filePtr,"%*[^:]: %f\n", &ui_updateParameters[i]);
  448.         chkretline(1);
  449.         lines++;
  450.         if (ui_remoteIsCreated) {
  451.         char buf[20];
  452.         sprintf(buf,"%6.4f",ui_updateParameters[i]);
  453.         ui_cutTrailingZeros(buf);
  454.         ui_xSetString(ui_updateParameterWidgets[i], buf);
  455.         }
  456.     }
  457.     err = fscanf(filePtr,"\n");
  458.     chkretline(0);
  459.     lines++;
  460.     
  461.     err = fscanf(filePtr,"%*[^:]: %d\n", &noParams);
  462.     chkretline(1);
  463.     lines++;
  464.     for (i=0; (i<UI_NO_INIT_PARAMS) AND (i<noParams); i++) {
  465.         err = fscanf(filePtr,"%*[^:]: %f\n", &ui_initParameters[i]);
  466.         chkretline(1);
  467.         lines++;
  468.     }
  469.     err = fscanf(filePtr,"\n");
  470.     chkretline(0);
  471.     lines++;
  472.     }
  473.  
  474.     err = fscanf(filePtr,"%*[^:]: %d\n\n",&count);
  475.     chkretline(1);
  476.     lines += 2;
  477.  
  478.     ui_displ_resetList();
  479.     for (i=1; i<=count; i++) {
  480.     if ((listPtr = ui_displ_getFreeItem()) == NULL) {
  481.         ui_confirmOk("No more memory for displays available!");
  482.         return 1;
  483.     }
  484.         
  485.     err = fscanf(filePtr,"%*[^:]: %d\n",&(listPtr->displayNo));
  486.     chkfreeretline(1);
  487.     lines++;
  488.     err = fscanf(filePtr,"%*[^:]: %d\n",&dummy);
  489.     chkfreeretline(1);
  490.     lines++;
  491.     listPtr->x = (Position) dummy;
  492.     err = fscanf(filePtr,"%*[^:]: %d\n",&dummy);
  493.     chkfreeretline(1);
  494.     lines++;
  495.     listPtr->y = (Position) dummy;
  496.     err = fscanf(filePtr,"%*[^:]: %d\n",&dummy);
  497.     chkfreeretline(1);
  498.     lines++;
  499.     listPtr->width = (Dimension) dummy;
  500.     err = fscanf(filePtr,"%*[^:]: %d\n",&dummy);
  501.     chkfreeretline(1);
  502.     lines++;
  503.     listPtr->height = (Dimension) dummy;
  504.     err = fscanf(filePtr,"%*[^:]: %d\n",&dummy);
  505.     chkfreeretline(1);
  506.     lines++;
  507.     listPtr->origin.x = (short) dummy;
  508.     err = fscanf(filePtr,"%*[^:]: %d\n",&dummy);
  509.     chkfreeretline(1);
  510.     lines++;
  511.     listPtr->origin.y = (short) dummy;
  512.     err = fscanf(filePtr,"%*[^:]: %d\n",&(listPtr->gridSize));
  513.     chkfreeretline(1);
  514.     lines++;
  515.     err = fscanf(filePtr,"%*[^:]: %d\n",&(listPtr->frozen));
  516.     chkfreeretline(1);
  517.     lines++;
  518.     err = fscanf(filePtr,"%*[^:]: %d\n",&(listPtr->raster));
  519.     chkfreeretline(1);
  520.     lines++;
  521.     err = fscanf(filePtr,"%*[^:]: %d\n",&(listPtr->subNetNo));
  522.     chkfreeretline(1);
  523.     lines++;
  524.     err = fscanf(filePtr,"%*[^:]: %d\n",&(listPtr->flags));
  525.     chkfreeretline(1);
  526.     lines++;
  527.     err = fscanf(filePtr,"%*[^:]: %d\n",&dummy);
  528.     chkfreeretline(1);
  529.     lines++;
  530.     listPtr->layers = (unsigned short) dummy;
  531.     err = fscanf(filePtr,"%*[^:]: %d\n",&(listPtr->updateType));
  532.     chkfreeretline(1);
  533.     lines++;
  534.     err = fscanf(filePtr,"%*[^:]: %d\n",&(listPtr->setup.showTitleFlg));
  535.     chkfreeretline(1);
  536.     lines++;
  537.     err = fscanf(filePtr,"%*[^:]: %d\n",&(listPtr->setup.showTitle));
  538.     chkfreeretline(1);
  539.     lines++;
  540.     err = fscanf(filePtr,"%*[^:]: %d\n",&(listPtr->setup.showValueFlg));
  541.     chkfreeretline(1);
  542.     lines++;
  543.     err = fscanf(filePtr,"%*[^:]: %d\n",&(listPtr->setup.showValue));
  544.     chkfreeretline(1);
  545.     lines++;
  546.     err = fscanf(filePtr,"%*[^:]: %d\n",&(listPtr->setup.showLinkFlg));
  547.     chkfreeretline(1);
  548.     lines++;
  549.     err = fscanf(filePtr,"%*[^:]: %d\n",&(listPtr->setup.showDirectionFlg));
  550.     chkfreeretline(1);
  551.     lines++;
  552.     err = fscanf(filePtr,"%*[^:]: %d\n",&(listPtr->setup.showWeightFlg));
  553.     chkfreeretline(1);
  554.     lines++;
  555.     err = fscanf(filePtr,"%*[^:]: %f\n",&dummyf);
  556.     chkfreeretline(1);
  557.     lines++;
  558.     listPtr->setup.linkPosTrigger = dummyf;
  559.     err = fscanf(filePtr,"%*[^:]: %f\n",&dummyf);
  560.     chkfreeretline(1);
  561.     lines++;
  562.     listPtr->setup.linkNegTrigger = dummyf;
  563.     err = fscanf(filePtr,"%*[^:]: %f\n",&dummyf);
  564.     chkfreeretline(1);
  565.     lines++;
  566.     listPtr->setup.unitScaleFactor= dummyf;
  567.     if (format >= 3) {
  568.         err = fscanf(filePtr,"%*[^:]: %f\n",&dummyf);
  569.         chkfreeretline(1);
  570.         lines++;
  571.         listPtr->setup.linkScaleFactor= dummyf;
  572.         err = fscanf(filePtr,"%*[^:]: %[^#]#\n",listPtr->setup.siteName);
  573.         chkretline01;
  574.         lines++;
  575.         err = fscanf(filePtr,"%*[^:]: %s\n", colorString);
  576.         chkfreeretline(1);
  577.         lines++;
  578.             ui_convertColorString(colorString, &(listPtr->setup.textColorIndex), 
  579.                                   &(listPtr->setup.backgroundColorIndex),
  580.                                   &(listPtr->setup.selectionColorIndex));
  581.     }
  582.     err = fscanf(filePtr,"\n");
  583.  
  584.  
  585.     lines++;
  586.  
  587.     /* popup display */
  588.     ui_displayGraphic(NULL, listPtr, NULL);
  589.     }
  590.  
  591.     if (format >= 5) {
  592.     err = fscanf(filePtr,"%s\n", header);
  593.     if (strcmp (header, d3_configStr) == 0) {
  594.             ui_configHas3dSection = TRUE; 
  595.         chkretline(1);
  596.         lines++;
  597.             err = fscanf(filePtr,"\n");
  598.         chkretline(0);
  599.         lines++;
  600.  
  601.             err = fscanf(filePtr, "%*[^:]: %f %f %f\n", &f1, &f2, &f3); 
  602.         chkretline(3);
  603.         lines++;
  604.             d3_state.rot_vec[0] = rad(f1);
  605.             d3_state.rot_vec[1] = rad(f2);
  606.             d3_state.rot_vec[2] = rad(f3);
  607.             err = fscanf(filePtr, "%*[^:]: %f %f %f\n", 
  608.                &d3_state.trans_vec[0], &d3_state.trans_vec[1], 
  609.                &d3_state.trans_vec[2]);
  610.         chkretline(3);
  611.         lines++;
  612.             err = fscanf(filePtr, "%*[^:]: %f %f %f\n", 
  613.                &d3_state.scale_vec[0], &d3_state.scale_vec[1], 
  614.                &d3_state.scale_vec[2]);
  615.             chkretline(3);
  616.             lines++;
  617.  
  618.             err = fscanf(filePtr, "%*[^:]: %f %f %f\n", &f1, &f2, &f3); 
  619.         chkretline(3);
  620.         lines++;
  621.             d3_state.rot_step[0] = rad(f1);
  622.             d3_state.rot_step[1] = rad(f2);
  623.             d3_state.rot_step[2] = rad(f3);
  624.             err = fscanf(filePtr, "%*[^:]: %f %f %f\n", &d3_state.trans_step[0], 
  625.                &d3_state.trans_step[1], &d3_state.trans_step[2]);
  626.         chkretline(3);
  627.         lines++;
  628.             err = fscanf(filePtr, "%*[^:]: %f %f %f\n", &d3_state.scale_step[0], 
  629.                &d3_state.scale_step[1], &d3_state.scale_step[2]);
  630.             chkretline(3);
  631.             lines++;
  632.  
  633.             err = fscanf(filePtr, "%*[^:]: %d\n", &d3_state.projection_mode); 
  634.             chkretline(1);
  635.             lines++;
  636.             err = fscanf(filePtr, "%*[^:]: %f %f %f\n", &d3_state.viewpoint[0], 
  637.                &d3_state.viewpoint[1], &d3_state.viewpoint[2]);
  638.         chkretline(3);
  639.         lines++;
  640.  
  641.             err = fscanf(filePtr, "%*[^:]: %d\n", &d3_state.font); 
  642.             chkretline(1);
  643.             lines++;
  644.  
  645.             err = fscanf(filePtr, "%*[^:]: %d\n", &d3_state.model_mode); 
  646.             chkretline(1);
  647.             lines++;
  648.             err = fscanf(filePtr, "%*[^:]: %d\n", &d3_state.link_mode); 
  649.             chkretline(1);
  650.             lines++;
  651.             err = fscanf(filePtr, "%*[^:]: %f\n", &d3_state.link_scale); 
  652.             chkretline(1);
  653.             lines++;
  654.             err = fscanf(filePtr, "%*[^:]: %f\n", &d3_state.unit_aspect); 
  655.             chkretline(1);
  656.             lines++;
  657.             err = fscanf(filePtr, "%*[^:]: %d\n", &d3_state.unit_mode.size); 
  658.             chkretline(1);
  659.             lines++;
  660.             err = fscanf(filePtr, "%*[^:]: %d\n", &d3_state.unit_mode.color); 
  661.             chkretline(1);
  662.             lines++;
  663.             err = fscanf(filePtr, "%*[^:]: %d\n", &d3_state.unit_mode.top_label); 
  664.             chkretline(1);
  665.             lines++;
  666.             err = fscanf(filePtr, "%*[^:]: %d\n", &d3_state.unit_mode.bottom_label);            chkretline(1);
  667.             lines++;
  668.  
  669.             err = fscanf(filePtr, "%*[^:]: %f %f %f\n", &d3_state.light.position[0],                &d3_state.light.position[1], &d3_state.light.position[2]);
  670.         chkretline(3);
  671.         lines++;
  672.             err = fscanf(filePtr, "%*[^:]: %f\n", &d3_state.light.Ia); 
  673.             chkretline(1);
  674.         lines++;
  675.             err = fscanf(filePtr, "%*[^:]: %f\n", &d3_state.light.Ka); 
  676.             chkretline(1);
  677.         lines++;
  678.             err = fscanf(filePtr, "%*[^:]: %f\n", &d3_state.light.Ip); 
  679.             chkretline(1);
  680.         lines++;
  681.             err = fscanf(filePtr, "%*[^:]: %f\n", &d3_state.light.Kd); 
  682.             chkretline(1);
  683.         lines++;
  684.  
  685.         err = fscanf(filePtr,"\n");
  686.         chkretline(0);
  687.         lines++;
  688.     
  689.             d3_select_font (d3_state.font);
  690.             if (d3_state.model_mode == solid) 
  691.                 d3_initZbuffer ();
  692.             d3_displayGraphic ();
  693.             d3_createDisplayWindow ();
  694.         }
  695.     }
  696.  
  697.     if (format >= 6) {
  698.         if (ui_configHas3dSection)
  699.             err = fscanf(filePtr,"%s\n", header);
  700.     if (strcmp (header, ui_printerConfigStr) == 0) { 
  701.         chkretline(1);
  702.         lines++;
  703.             err = fscanf(filePtr,"\n");
  704.         chkretline(0);
  705.         lines++;
  706.  
  707.             err = fscanf(filePtr, "%*[^:]: %d\n", &ui_prVal.dest); 
  708.         chkretline(1);
  709.         lines++;
  710.             err = fscanf(filePtr, "%*[^:]: %d\n", &ui_prVal.format); 
  711.         chkretline(1);
  712.         lines++;
  713.             err = fscanf(filePtr, "%*[^:]: %d\n", &ui_prVal.paper); 
  714.         chkretline(1);
  715.         lines++;
  716.             err = fscanf(filePtr, "%*[^:]: %d\n", &ui_prVal.autoScale); 
  717.         chkretline(1);
  718.         lines++;
  719.             err = fscanf(filePtr, "%*[^:]: %d\n", &ui_prVal.clip); 
  720.         chkretline(1);
  721.         lines++;
  722.             err = fscanf(filePtr, "%*[^:]: %d\n", &ui_prVal.color); 
  723.         chkretline(1);
  724.         lines++;
  725.             err = fscanf(filePtr, "%*[^:]: %d\n", &ui_prVal.orient); 
  726.         chkretline(1);
  727.         lines++;
  728.             err = fscanf(filePtr, "%*[^:]: %d\n", &ui_prVal.autoUni); 
  729.         chkretline(1);
  730.         lines++;
  731.             err = fscanf(filePtr, "%*[^:]: %d\n", &ui_prVal.size); 
  732.         chkretline(1);
  733.         lines++;
  734.             err = fscanf(filePtr, "%*[^:]: %d\n", &ui_prVal.shape); 
  735.         chkretline(1);
  736.         lines++;
  737.             err = fscanf(filePtr, "%*[^:]: %d\n", &ui_prVal.text); 
  738.         chkretline(1);
  739.         lines++;
  740.             err = fscanf(filePtr, "%*[^:]: %d\n", &ui_prVal.border); 
  741.         chkretline(1);
  742.         lines++;
  743.             err = fscanf(filePtr, "%*[^:]: %d\n", &ui_prVal.resolution); 
  744.         chkretline(1);
  745.         lines++;
  746.             err = fscanf(filePtr, "%*[^:]: %d\n", &ui_prVal.displayToPrint); 
  747.         chkretline(1);
  748.         lines++;
  749.             err = fscanf(filePtr, "%*[^:]: %f\n", &ui_prVal.borderHoriz); 
  750.         chkretline(1);
  751.         lines++;
  752.             err = fscanf(filePtr, "%*[^:]: %f\n", &ui_prVal. borderVert); 
  753.         chkretline(1);
  754.         lines++;
  755.             err = fscanf(filePtr, "%*[^:]: %f\n", &ui_prVal.scaleValX); 
  756.         chkretline(1);
  757.         lines++;
  758.             err = fscanf(filePtr, "%*[^:]: %f\n", &ui_prVal.scaleValY); 
  759.         chkretline(1);
  760.         lines++;
  761.             err = fscanf(filePtr, "%*[^:]: %f\n", &ui_prVal.unitGray); 
  762.         chkretline(1);
  763.         lines++;
  764.             err = fscanf(filePtr, "%*[^:]: %s\n", ui_prVal.fileNameStr); 
  765.         chkretline(1);
  766.         lines++;
  767.  
  768.             err = fscanf(filePtr, "%*[^:]: ");
  769.             ui_prVal.cmdLineStr[0] = '\0';
  770.             while ((*ch = getc(filePtr)) != '\n')
  771.                strncat (ui_prVal.cmdLineStr, ch, 1);
  772.         lines++;
  773.     }
  774.     }   
  775.     return(TRUE);
  776.  
  777. }
  778.  
  779.  
  780.  
  781. /* end of file */
  782. /* lines: 682 */
  783.