home *** CD-ROM | disk | FTP | other *** search
- /****************************************************************
- * *
- * Filename : Test.c *
- * *
- *****************************************************************
- * *
- * Comment : Testprogramm für die Plotlibrary *
- * *
- * Rev : V1.0 *
- * *
- * History : V1.0 erstellen dieses Files 01/12/89 *
- * *
- * Doc : Plotlibrary User's Guide *
- * *
- * Bugs : keine bekannten *
- * *
- * Autor : Oesch Silvano *
- * *
- * Datum : 01/12/89 *
- * *
- ****************************************************************/
-
- /****************************************************************
- * *
- * allgemeine Includedateien *
- * *
- ****************************************************************/
-
- #include <ctype.h>
- #include <string.h>
- #include <signal.h>
- #include <stdio.h>
- #include <math.h>
-
- /****************************************************************
- * *
- * Plotlibrary Includedateien *
- * *
- ****************************************************************/
-
- #include "plotlib.h"
-
- /****************************************************************
- * *
- * Die nächsten Includedateien sind nur für das Testprogramm *
- * notwendig. Bei einem normalen Applikationsprogramm müssen *
- * und dürfen diese Dateien nicht geladen werden. *
- * *
- ****************************************************************/
-
- #include "Plot.h"
- #include "DebugL2.h"
-
- /****************************************************************
- * *
- * Globale Variablen *
- * *
- ****************************************************************/
-
- extern int plerr;
- extern struct Plot *plot;
-
- /****************************************************************
- * *
- * Math. Funktionsdefinitionen für die Get_data Funktion *
- * *
- ****************************************************************/
-
- #define LASTFCT 9 /* max. definierte Fkt */
-
- char *fct[] = /* Funktionstext */
- {
- "sin(x)",
- "cos(x)",
- "tan(x)",
- "exp(x)",
- "log(x)",
- "sqrt(x)",
- "sin(x)/x",
- "x",
- "x^2"
- };
-
- DATA myfct(); /* eine eigene Fkt */
- DATA linear();
- DATA quadrat();
-
-
-
- DATA (*funcptr[])() = /* Array von Fkt. adressen */
- {
- sin,
- cos,
- tan,
- exp,
- log,
- sqrt,
- myfct,
- linear,
- quadrat
- };
-
- /****************************************************************
- * *
- * Function : myfct() *
- * *
- *****************************************************************
- * *
- * Input : DATA x x-Wert *
- * *
- * Output : DATA y Resultat der Berechnung *
- * *
- *****************************************************************
- * *
- * Comment : Beispiel einer eigenen math. Funktion. *
- * *
- ****************************************************************/
-
- DATA myfct(x) /* eine eigene Fkt */
- DATA x;
- {
- if (x == 0.0)
- return(1.0);
- else
- return((DATA)(sin(x)/x));
- }
-
- /****************************************************************
- * *
- * Function : linear() *
- * *
- *****************************************************************
- * *
- * Input : DATA x x-Wert *
- * *
- * Output : DATA y Resultat der Berechnung *
- * *
- *****************************************************************
- * *
- * Comment : Beispiel einer eigenen math. Funktion. *
- * *
- ****************************************************************/
-
- DATA linear(x) /* eine eigene Fkt */
- DATA x;
- {
- return(x);
- }
-
-
- /****************************************************************
- * *
- * Function : Quadrat() *
- * *
- *****************************************************************
- * *
- * Input : DATA x x-Wert *
- * *
- * Output : DATA y Resultat der Berechnung *
- * *
- *****************************************************************
- * *
- * Comment : Beispiel einer eigenen math. Funktion. *
- * *
- ****************************************************************/
-
- DATA quadrat(x) /* eine eigene Fkt */
- DATA x;
- {
- return((DATA)(x*x));
- }
-
-
- /****************************************************************
- * *
- * Function : displayfct() *
- * *
- *****************************************************************
- * *
- * Input : void *
- * *
- * Output : int Nummer der Funktion *
- * *
- *****************************************************************
- * *
- * Comment : Zeigt die verschiedenen definierten Funktionen. *
- * *
- ****************************************************************/
-
- int displayfct()
- {
- int i;
- for (i=0;i<LASTFCT;i++) /* zeige alle Fkt mit ID */
- printf("[%d] -> %s\n",i,fct[i]);
- printf("\nWelche Nummer : ");
- scanf("%d",&i); /* Hole Wahl */
- if ((i >= LASTFCT) or /* in Range */
- (i < 0 ))
- {
- printf("Funktion nicht bekannt!\n");
- return(-1);
- }
- else
- return(i);
- }
-
-
- /****************************************************************
- * *
- * Function : axmenu() *
- * *
- *****************************************************************
- * *
- * Input : int *axis *
- * *
- * Output : void *
- * *
- *****************************************************************
- * *
- * Comment : Achsenauswahlmenu *
- * *
- ****************************************************************/
-
- void axmenu(axis)
- int *axis;
- {
- printf("\n[%d] -> X-Achse\n",XAXIS);
- printf("[%d] -> Y-Achse\n",YAXIS);
- printf("[%d] -> Z-Achse\n\n",ZAXIS);
- printf("Welche Achse : ");
- scanf("%d",axis);
- }
-
- /****************************************************************
- * *
- * Function : status() *
- * *
- *****************************************************************
- * *
- * Input : id,string *
- * int id Rückgabewert *
- * char *string TRUE Ausgabetext *
- * *
- * Output : void *
- * *
- *****************************************************************
- * *
- * Comment : Rückgabewert Auswertung *
- * *
- ****************************************************************/
-
- void status(id,string)
- int id;
- char *string;
- {
- if (id == FALSE)
- dis_ploterror();
- else
- printf("Rückgabewert %d : %s\n",id,string);
- }
-
- /****************************************************************
- * *
- * Function : gettyp() *
- * *
- *****************************************************************
- * *
- * Input : void *
- * *
- * Output : int typ *
- * *
- *****************************************************************
- * *
- * Comment : Typauswahl *
- * *
- ****************************************************************/
-
- int gettyp()
- {
- int i;
-
- printf("\n[%d] -> Eingabe des Namens\n",NOID);
- printf("[%d] -> Eingabe der ID\n",1);
- printf("Bitte Kennzahl eingeben : ");
- scanf("%d",&i);
- return(i);
- }
-
- /****************************************************************
- * *
- * Function : getid() *
- * *
- *****************************************************************
- * *
- * Input : id *
- * int *id gesuchte ID *
- * *
- * Output : void *
- * *
- *****************************************************************
- * *
- * Comment : Hole ID *
- * *
- ****************************************************************/
-
- void getid(id)
- int *id;
- {
- printf("Bitte ID geben : ");
- scanf("%d",id);
- }
-
- /****************************************************************
- * *
- * Function : getname() *
- * *
- *****************************************************************
- * *
- * Input : string *
- * char *string gesuchter String *
- * *
- * Output : void *
- * *
- *****************************************************************
- * *
- * Comment : Hole String *
- * *
- ****************************************************************/
-
- void getname(buffer)
- char *buffer;
- {
- printf("Bitte Namen geben : ");
- scanf("%s",buffer);
- }
-
- /****************************************************************
- * *
- * Function : menu() *
- * *
- *****************************************************************
- * *
- * Input : void *
- * *
- * Output : void *
- * *
- *****************************************************************
- * *
- * Comment : Menu Auswahl *
- * *
- ****************************************************************/
-
- int menu()
- {
- int returnset,i;
-
- #define MENUITEMS 24
-
- char *menutext[MENUITEMS] =
- {
- "\nT E S T P R O G R A M M für die Plotlibrary\n",
- "---------------------------------------------\n\n",
- "[ 1] Library öffnen\t[ 2] Library schliessen\n",
- "[ 3] 2D Daten laden\t[ 4] Niveau Daten laden\n",
- "[ 5] 3D Daten Laden\t[ 6] Kurve berechnen\n",
- "[ 7] Plot Struktur\t[ 8] Kurve zeigen\n",
- "[ 9] Werte zeigen\n",
- "[10] Kurve löschen\t[11] alles löschen\n",
- "[12] Plotter Parameter\n",
- "[14] Muster ON\t\t[15] Muster OFF\n",
- "[20] Value setzen\t[21] Value löschen\n",
- "[22] Autoval ON\t\t[23] Autoval OFF\n",
- "[24] Gitter ON\t\t[25] Gitter OFF\n",
- "[26] Masstab setzen\n",
- "[28] Kurvenfarbe\t[29] Farbe löschen\n",
- "[30] Display\t\t[31] Bildschirm schliessen\n",
- "[40] Achsenname setzen\t[41] Achsenname löschen\n",
- "[42] Einheit setzen\t[43] Einheit löschen\n",
- "[44] Titel setzen\t[45] Titel löschen\n",
- "[46] Kurvenname setzen\t[47] Kurvenname löschen\n",
- "[48] Crosshatching ein\t[49] Crosshatching aus\n",
- "[50] Hiddenline ein\t[51] Hiddenline aus\n",
- "[99] Exit\n",
- "Bitte eine Zahl eingeben : "
- };
-
- for (i=0;i<MENUITEMS;i++)
- printf("%s",menutext[i]);
- scanf("%d",&returnset);
- return(returnset);
- }
-
-
- /****************************************************************
- * *
- * H A U P T P R O G R A M M *
- * *
- ****************************************************************/
-
- main()
- {
-
- int i,id,wahl,count,fctid,typ,color,out,
- dis = FALSE,x,y,xl,yl,attr;
- DATA xmin,xmax,value;
- char buffer[80];
-
- for (;;)
- {
- wahl = menu();
- switch (wahl)
- {
- case 1: id = open_plot();
- status(id,"Plotlibrary geöffnet");
- break;
-
- case 2: id = close_plot();
- status(id,"Plotlibrary geschlossen");
- dis = FALSE;
- break;
-
- case 3: getname(buffer);
- id = load_data(buffer,D2);
- status(id,"Datenfile geladen");
- break;
-
- case 4: getname(buffer);
- id = load_data(buffer,NIV);
- status(id,"Datenfile geladen");
- break;
-
- case 5: getname(buffer);
- id = load_data(buffer,D3);
- status(id,"Datenfile geladen");
- break;
-
- case 6: fctid = displayfct();
- if (fctid == -1) break;
- printf("Grenzen angeben : xmin,xmax,iterate :");
- scanf("%lf,%lf,%d",&xmin,&xmax,&count);
- id = get_data(funcptr[fctid],xmin,xmax,count);
- status(id,"Kurve berechnet");
- break;
-
- case 7: dispplot();
- break;
-
- case 8: getid(&id);
- displaycurve(id);
- break;
-
- case 9: getid(&id);
- displaydata(id);
- break;
-
- case 10: typ = gettyp();
- if (typ != NOID)
- {
- getid(&id);
- id = del_data(id,NULL);
- }
- else
- {
- getname(buffer);
- id = del_data(NOID,buffer);
- }
- status(id,"Kurve gelöscht");
- break;
-
- case 11: id = del_data(DELALL,NULL);
- status(id,"Kurven gelöscht");
- break;
-
- case 12: printf("Eingabe von Start x,y in cm : ");
- scanf("%d,%d",&x,&y);
- printf("Grösse des Bildes x,y in cm : ");
- scanf("%d,%d",&xl,&yl);
- printf(" [%d] -> Normal\n",0);
- printf(" [%d] -> Drehung\n",ROTATE);
- printf(" Ihre Wahl : ");
- scanf("%d",&attr);
- printf(" Filename : ");
- scanf("%s",buffer);
- id = set_plotsize(x,y,xl,yl,attr,buffer);
- status(id,"Parameter gesetzt");
- break;
-
- case 14: id = set_fill(STYLE);
- status(id,"Muster auf ON gesetzt");
- break;
-
- case 15: id = set_fill(NOSTYLE);
- status(id,"Muster auf OFF gesetzt");
- break;
-
- case 20: printf("\n[%d] -> Xmin\n",XMIN);
- printf("[%d] -> Xmax\n",XMAX);
- printf("[%d] -> Ymin\n",YMIN);
- printf("[%d] -> Ymax\n",YMAX);
- printf("[%d] -> Zmin\n",ZMIN);
- printf("[%d] -> Zmax\n",ZMAX);
- printf("Welcher Typ : ");
- scanf("%d",&id);
- printf("Neuer Wert : ");
- scanf("%lf",&value);
- id = set_value(id,value);
- status(id,"Neuer Wert gesetzt");
- break;
-
- case 21: id = set_value(CLEAR,(DATA)NULL);
- status(id,"Alle Werte gelöscht");
- break;
-
- case 22: id = set_autoval(AUTOON);
- status(id,"Autoval auf ON gesetzt");
- break;
-
- case 23: id = set_autoval(AUTOOFF);
- status(id,"Autoval auf OFF gesetzt");
- break;
-
- case 24: id = set_grid(GRID);
- status(id,"Gitter auf ON gesetzt");
- break;
-
- case 25: id = set_grid(NOGRID);
- status(id,"Gitter auf OFF gesetzt");
- break;
-
- case 26: axmenu(&id);
- printf("\n[%d] -> Linear\n",LIN);
- printf("[%d] -> Logarithmisch\n",LOG);
- printf("[%d] -> natürlich Logarithmisch\n",LN);
- printf(" Kennwert eingeben :");
- scanf("%d",&typ);
- id = set_mes(id,typ);
- status(id,"Masstab gesetzt");
- break;
-
- case 28: typ = gettyp();
- if (typ != NOID)
- getid(&id);
- else
- getname(buffer);
- printf("Welche Farbe : ");
- scanf("%d",&color);
- if (typ != NOID)
- id = set_curvecolor(id,NULL,color);
- else
- id = set_curvecolor(NOID,buffer,color);
- status(id,"Farbe gesetzt");
- break;
-
- case 29: typ = gettyp();
- if (typ != NOID)
- {
- getid(&id);
- id = set_curvecolor(id,NULL,COLDET);
- }
- else
- {
- getname(buffer);
- id = set_curvecolor(NOID,buffer,COLDET);
- }
- status(id,"Farbe gelöscht");
- break;
-
- case 30: printf("\n[%d] -> Bildschirm\n",SCREENOUT);
- printf("[%d] -> Matrixdrucker\n",PRINTOUT);
- printf("[%d] -> Plotter\n",PLOTOUT);
- printf("Welche Art Ausgabe : ");
- scanf("%d",&id);
- if (id == SCREENOUT)
- {
- printf ("[%d] -> Ausgabe NSET\n",GRAPHNOTSET);
- printf ("[%d] -> Ausgabe SET\n",GRAPHSET);
- printf("Welche Art Ausgabe : ");
- scanf("%d",&out);
- /*******************/
- #ifdef __MSDOS__
- #ifdef __TURBOC__
- /*******************/
- id = display(id,out);
- id = (int)getch();
- id = display(SCREENCLOSE,NULL);
- dis = FALSE;
- #endif
- #endif
-
- /*******************/
- #ifdef AMIGA
- /*******************/
- id = display(id,out);
- dis = TRUE;
- #endif
- }
- else
- {
- id = display(id,GRAPHNOTSET);
- dis = TRUE;
- }
- status(id,"Ausgabe gemacht");
- break;
-
- case 31: id = display(SCREENCLOSE,NULL);
- status(id,"Graphikschirm geschlossen");
- dis = FALSE;
- break;
-
- case 40: axmenu(&id);
- getname(buffer);
- id = set_axisname(id,buffer);
- status(id,"Achsenname gesetzt");
- break;
-
- case 41: axmenu(&id);
- id = set_axisname(id,NULL);
- status(id,"Achsenname gelöscht");
- break;
-
- case 42: axmenu(&id);
- getname(buffer);
- id = set_unit(id,buffer);
- status(id,"Achseneinheit gesetzt");
- break;
-
- case 43: axmenu(&id);
- id = set_unit(id,NULL);
- status(id,"Achseneinheit gelöscht");
- break;
-
- case 44: getname(buffer);
- id = set_titel(buffer);
- status(id,"Titel gesetzt");
- break;
-
- case 45: id = set_titel(NULL);
- status(id,"Titel gelöscht");
- break;
-
- case 46: getid(&id);
- getname(buffer);
- id = set_curvename(id,buffer);
- status(id,"Kurvenname gesetzt");
- break;
-
- case 47: getid(&id);
- id = set_curvename(id,NULL);
- status(id,"Kurvenname gelöscht");
- break;
-
- case 48: id = set_3doptions(CROSHON);
- status(id,"Crosshatching eingeschaltet");
- break;
-
- case 49: id = set_3doptions(CROSHOFF);
- status(id,"Crosshatching ausgeschaltet");
- break;
-
- case 50: id = set_3doptions(HIDDENON);
- status(id,"Hiddenlines eingeschaltet");
- break;
-
- case 51: id = set_3doptions(HIDDENOFF);
- status(id,"Hiddenlines ausgeschaltet");
- break;
-
- case 99: if (dis == TRUE)
- {
- printf ("Graphik noch geöffnet");
- break;
- }
- else exit(0);
-
- default: printf("keine legale Funktion angewählt");
- break;
- }
- printf("\n\nRETURN to continue");
- while (getchar() != '\n');
- while (getchar() != '\n');
- }
- }
-
-