home *** CD-ROM | disk | FTP | other *** search
- /****************************************************************
- * *
- * Filename : HpPlot.c *
- * *
- ****************************************************************
- * *
- * Comment : Alle Funktionen für die Plotfunktion. *
- * *
- * Rev : V1.1 *
- * *
- * History : V1.0 erstellen dieses Files 24.06.89 *
- * *
- * Doc : *
- * *
- * Bugs : keine bekannten *
- * *
- * Autor : Oesch Silvano *
- * *
- * Datum : 02.09.89 *
- * *
- ****************************************************************/
-
-
- /****************************************************************
- * *
- * allgemeine Includedateien *
- * *
- ****************************************************************/
-
- #include <exec/types.h>
- #include <exec/exec.h>
- #include <intuition/intuition.h>
- #include <intuition/intuitionbase.h>
- #include <intuition/screens.h>
- #include <devices/printer.h>
- #include <libraries/dos.h>
- #include <stdlib.h>
- #include <string.h>
- #include <ctype.h>
- #include <stdio.h>
- #include <math.h>
- #include <Plot/PlotLib.h>
- #include <Plot/Plot.h>
- #include <libraries/reqbase.h>
- #include <proto/reqproto.h>
-
- /****************************************************************
- * *
- * programmspezifische Includedateien *
- * *
- ****************************************************************/
-
- #include "HpPlot.h" /* Window und Gadget def. */
-
-
- /****************************************************************
- * *
- * externe Definitionen *
- * *
- ****************************************************************/
-
- extern struct IntuitionBase *IntuitionBase;
- extern struct ReqLib *ReqBase;
- extern struct Plot *plot;
-
-
- /****************************************************************
- * *
- * globale Definitionen *
- * *
- ****************************************************************/
-
- static struct Window *Hp = NULL; /* HpPlot Window */
-
-
- /****************************************************************
- * *
- * Funktion : CloseHp() *
- * *
- ****************************************************************
- * *
- * Input : None *
- * *
- * *
- * Output : None *
- * *
- * *
- ****************************************************************
- * *
- * Comment : Schliesst alles offene und kehrt danach ins *
- * aufrufende Programm zurück. *
- * *
- * Rev : V1.0 *
- * *
- * History : V1.0 erstellen dieses Files 01.06.89 *
- * *
- * Doc : *
- * *
- * Bugs : keine bekannten *
- * *
- * Autor : Oesch Silvano *
- * *
- * Datum : 01.06.89 *
- * *
- ****************************************************************/
-
- void closeHp()
- {
- if ( Hp ) CloseWindow ( Hp ); /* HpPlot schliessen */
- }
-
-
- /****************************************************************
- * *
- * Funktion : HpPlot(Sc) *
- * *
- ****************************************************************
- * *
- * Input : Screenpointer *
- * *
- * Screen -> Für Workbenchscreen = NULL *
- * -> Für Customscreen = Screenpointer *
- * *
- * Output : Boolean *
- * *
- * TRUE -> HpPlot erfolgreich *
- * FALSE -> HpPlot nicht erfolgreich. *
- * *
- * *
- ****************************************************************
- * *
- * Comment : *
- * *
- * Rev : V1.0 *
- * *
- * History : V1.0 erstellen dieses Files 01.06.89 *
- * *
- * Doc : *
- * *
- * Bugs : keine bekannten *
- * *
- * Autor : Oesch Silvano *
- * *
- * Datum : 01.09.89 *
- * *
- ****************************************************************/
-
- int HpPlot(Sc) /* BOOLEAN als Rückgabewert */
- struct Screen *Sc;
- {
- struct IntuiMessage *message; /* Message Strukutr */
- struct Gadget *gadmess; /* Gadget Message */
- static struct RastPort *rp; /* HpPlot Window Rastport */
-
- static int breite = BREITE, /* Voreinstellung Breite */
- hoehe = HOEHE, /* Voreinstellung Höhe */
- x = XRAND, /* Voreinstellung X */
- y = YRAND, /* Voreinstellung Y */
- drehung = FALSE; /* Voreinstellung Normal */
-
- int loop = TRUE; /* Hauptschleife Abbruch */
-
- if ( Sc ) /* eigener Screen ? */
- { /* Ja */
- HPW.Screen = Sc; /* Init. Windowstruktur */
- HPW.Type = CUSTOMSCREEN; /* natürlich eigener Typ */
- }
-
- Hp = (struct Window *)OpenWindow(&HPW);
- /* Öffne HpPlotwindow */
- if ( Hp == NULL ) /* Fehler ? */
- { /* Hp = NULL */
- closeHp(); /* alles schliessen */
- return ( FALSE ); /* Return mit Fehler */
- }
- rp = Hp->RPort; /* HpPlot RastPort holen */
- PrintIText(rp,&ITHp1,0,0); /* Text setzen */
- DrawBorder(rp,&BHp7,0,0); /* Rahmen setzen */
-
- while ( loop ) /* Schleife für Einstellung */
- {
- message = ( struct IntuiMessage *)
- GetMsg(Hp->UserPort); /* Message holen */
- if ( message==NULL) /* keine Message */
- { /* dann warten auf Message */
- Wait(1L << Hp->UserPort->mp_SigBit);
- continue; /* Message erhalten, das */
- } /* ganze von vorne */
- gadmess = (struct Gadget *)message->IAddress;
- /* kann nur Gadget sein, */
- /* also Gadgetadresse holen */
- ReplyMsg(message); /* antworten */
-
- switch (gadmess->GadgetID) /* welches Gadget gedrückt */
- {
- case GXU: /* X wurde gedrückt */
- case GXD:
- if (gadmess->GadgetID == GXU)
- /* X auf ? */
- { /* Ja */
- if (x < (MAXBREITE-breite))
- /* noch in Grenzen ? */
- x++; /* ja, dann addiere */
- }
- else /* also X ab */
- if (x > MINXRAND) /* noch in Grenzen ? */
- x--; /* ja, dann subtrahiere */
- convert(rp,x,&ITHp4);
- /* konvertiere und schreibe */
- break; /* von vorne */
- case GYU: /* Y wurde gedrückt */
- case GYD:
- if (gadmess->GadgetID == GYU)
- /* Y auf ? */
- { /* Ja */
- if (y < (MAXHOEHE-hoehe))
- /* noch in Grenzen ? */
- y++; /* ja, dann addiere */
- }
- else /* also Y ab */
- if (y > MINYRAND) /* noch in Grenzen ? */
- y--; /* ja, dann subtrahiere */
- convert(rp,y,&ITHp5);
- /* konvertiere und schreibe */
- break; /* von vorne */
- case GBU:
- case GBD: /* Breite wurde gedrückt */
- if (gadmess->GadgetID == GBU)
- /* Breite auf ? */
- { /* Ja */
- if (breite < (MAXBREITE-x))
- /* noch in Grenzen ? */
- breite++; /* ja, dann addiere */
- }
- else /* also Breite ab */
- if (breite > MINBREITE)
- /* noch in Grenzen ? */
- breite--; /* ja, dann subtrahiere */
- convert(rp,breite,&ITHp6);
- /* konvertiere und schreibe */
- break; /* von vorne */
- case GHU:
- case GHD: /* Höhe wurde gedrückt */
- if (gadmess->GadgetID == GHU)
- /* Höhe auf ? */
- { /* ja */
- if (hoehe < (MAXHOEHE-y))
- /* noch in Grenzen ? */
- hoehe++; /* ja, dann addiere */
- }
- else /* also Höhe ab */
- if (hoehe > MINHOEHE)
- /* noch in Grenzen ? */
- hoehe--; /* ja, dann subtrahiere */
- convert(rp,hoehe,&ITHp7);
- /* konvertiere und schreibe */
- break; /* von vorne */
- case GP: /* Print wurde gedrückt */
- loop=FALSE; /* setze ende loop */
- break; /* von vorne */
- case GC: /* Cancel wurde gedrückt */
- closeHp();
- return(TRUE); /* verlasse HpPlot ohne */
- break; /* Fehler */
- case GR: /* drehung wurde gedrückt */
- drehung ^= TRUE; /* switch drehung */
- break;
- default:
- break; /* von vorne */
- } /* ende von switch */
- } /* ende von loop */
-
- CloseWindow ( Hp ); /* HpPlot schliessen */
-
- if (drehung)
- drehung = ROTATE;
- else
- drehung = NULL;
-
- loop = set_plotsize(x,y,breite,hoehe,drehung,GHpSIB1);
- if (loop)
- return(display(PLOTOUT,GRAPHSET));
- else
- return(loop);
- /* alles OK! */
- }
-
-