🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: dnet.graphik
Article #73

Re: GKS-Implementierung fuer PC's unter MS-DOS

#73
From: Ruediger Kolb
Date: Tue, 30 Jan 1990 07:34
390 lines
12993 bytes
------------------------------------------------------------------------------

Date:  29 Januar 1990 8:07:14 CET
From:  Arnold Schick <SCHICK@DMRHRZ11.BITNET>
Subject: GKS-Implementierung fuer PC's unter MS-DOS
Comments To: GRAFIK-L@DEARN.BITNET SCHICK@DMRHRZ11.BITNET

Hallo liebe Mitglieder der Diskussionsliste GRAFIK-L,

Frau Selig von der ETH Zuerich fragte nach einer GKS-Implementierung
fuer PC's unter MS-DOS. Hier in Marburg benutzen wir die Implementierung
von der Firma GTS-GRAL in D-6100 Darmstadt Friedberger-Str. 25.

Zu diesem Softwareprodukt habe ich ein Papier (EINZELSCHRIFT) erstellt.
Anbei stelle ich Ihnen diese EINZELSCHRIFT informationshalber auch zur
Verfuegung:

HRZ MARBURG             01.09.89              MIKROCOMPUTER
EINZELSCHRIFT                                 GKSGRAL


                        GKSGRAL


Das Land Hessen hat fuer das Softwareprodukt GKSGRAL eine
Campus-Lizenz erworben. Mit dem Vertrieb dieses Software-
produktes in der Philipps-Universitaet Marburg ist das Hoch-
schulrechenzentrum (HRZ) beauftragt. Eine Installation von
GKSGRAL auf einem Personal-Computer wird auf Anforderung
durch den Betreuer vorgenommen, dies schliesst eine Kurzein-
weisung des Anwenders mit ein.

In dieser EINZELSCHRIFT werden die Anwendungen von GKSGRAL
kurz aufgefuehrt, die Voraussetzungen fuer den Einsatz von
GKSGRAL aufgelistet und eine Anwendung anhand eines
Beispiels gezeigt.

Name

GKSGRAL (Graphical Kernel System von GTS-GRAL) 7.4
Level 2b

Zweck

Anwenderlibraries mit FORTRAN77 Unterprogrammen zur Ent-
wicklung rechner- und geraeteunabhaengiger Anwendersoft-
ware fuer passive und interaktive Graphik.

Schluesselwoerter

Computergraphik, passive Graphik, interaktive Graphik,
graphische Grundfunktionen, 2D-Graphik

Beschreibung

GKSGRAL ist eine GKS Implementation des nationalen (DIN
66252) und internationalen Standards (ISO 7942) fuer
Computergraphik. Im GKS-Standard sind rechner- und
geraeteunabhaengige graphische Grundfunktionen als
FORTRAN77-Unterprogramme (Unterprogrammname, Parameter)
definiert; GKSGRAL stellt diese Unterprogramme (ca. 350)
in Libraries zur Verfuegung. Bei der Entwicklung von grap-
hischen Anwendungsprogrammen, koennen diese Unterprogramme
beim Binden (vgl. LINK Command) einbezogen werden.


Die graphischen Grundfunktionen umfassen:

- Ausgabe graphischer Primitiver (POLYLINE, POLYMARKER,
  TEXT, FILL AREA, CELL AREA).
- Steuerung der Darstellung graphischer Primitiver durch
  Attribute (Linienart, Markierungstyp, Zeichenhoehe,
  Muster, Farbe).
- Handhabung von Transformationen und Koordinatensyste-
  men (WORLD, WINDOW, VIEPORT, normalisierte Devicekoor-
  dinaten).
- Erzeugen und Manipulation von Segmenten (transformie-
  ren, hervorheben, loeschen).
- Graphische Eingabe (lokalisieren,  digitalisieren).
- Speichern und Interpretieren  von Graphiken ueber Meta-
  file.
- Abfrage (INQUIRE) von Geraeteeigenschaften und GKS-
  Zustaenden (z.B. Werte von Attributen).
- Fehlerbehandlung.


Anbieter

GTS-GRAL Graphische Standards fuer Computer-Systeme GmbH,
Darmstadt

Umgebung

Ein Anwenderprogramm, das GKS Unterprogrammaufrufe in der
richtigen Art und Reihenfolge enthaelt, ist von Ihnen zu
entwickeln (Edieren des Quelltextes, Compilieren und
Binden des Programms). Der Quelltext kann in der
Programmiersprache formuliert sein, die Aufrufe von
FORTRAN77 Unterprogrammen auf dem Personal-Computer
unterstuetzt (z.B. MS-FORTRAN, Profesional FORTRAN, MS-
Pascal, MS-C). Beim Compilieren ist die Groesse des
Speicherplatzes fuer die INTEGER und LOCICAL Variablen auf
2 Byte festzulegen (z.B. $STORAGE:2 bei MS-FORTRAN).

Beim Binden sind die GKSGRAL-Libraries mit anzugeben. Ihr
ausfuehrbares Programm ist dann zu starten.

Die graphische Ausgabe ist auf dem Bildschirm oder auf
einem Plotter, und die Eingabe z.Z. nur ueber Tastatur
moeglich. Die permanente Abspeicherung von Graphiken wird
mit dem Metafile realisiert; im Anwenderprogramm ist dazu
der Workstation-Type und die Connection-id im GOPWK
Aufruf zu waehlen:

                      Workstation-Type    Connection-id
    Bildschirm:               171              2
    HP-Plotter 7475 DIN A4:  4011    fuer COM1: 1, COM2: 2
    HP-Plotter 7475 DIN A3:  4012    fuer COM1: 1, COM2: 2
    HP-Plotter 7550 DIN A4:  4121    fuer COM1: 1, COM2: 2
    HP-Plotter 7550 DIN A3:  4122    fuer COM1: 1, COM2: 2
    Metafile OUTPUT:            4              3
    Metafile INPUT:             5              4

Zur graphischen Ausgabe auf einem Plotter, sind
zusaetzliche Unterprogramme einzubinden (siehe Beispiel).

Die FORTRAN Unit-Numbers 7, 8 und 9 duerfen im Anwender-
programm nicht benutzt werden.

Fuer die graphische Ausgabe auf dem Bildschirm ist beim
Booten des Personal-Computers ein Device-Treiber fuer den
Bildschirm zu laden; ein EGA Bildschirm erfordert z.B.
die folgende Anweisung im File CONFIG.SYS:

  DEVICE = C:\GTSGRAL\DISPLAY\EGADEV.SYS

Die graphische Ausgabe auf einem Plotter erfordert die
Ausfuehrung des DOS-Commands MODE (z.B. MODE
COM1:9600,n,8,1,p) vor dem Start des Programms.

Installation

Die Voraussetzungen fuer die Installation von  GKSGRAL auf
einem Personal-Computer sind:

Personal-Computer: IBM PS/2, IBM-PC/AT, IBM-PC/XT, M24,
                   Kompatible; COM Port fuer den Plotter.

Betriebssystem: PC-DOS ab 2.0, MS-DOS ab 3.0

Bildschirm: Farbgraphikbildschirm (EGA-, CGA-, Herkules-
            oder VGA-Bildschirm im EGA-Modus)

Plotter: HP 7475, HP 7550, (Kompatible mit HP-GL),
         fotografische Reproduktion des Bildschirmin-
         halts)

Hauptspeicher: abhaengig von der Groesse des Anwender-
               programms, >= 512 KByte (vgl. CHKDSK
               Command)

Speicherplatzbedarf fuer die GKSGRAL Libraries: 1,5 MByte

Diskettenbedarf fuer die GKSGRAL Libraries beim Backup:
          5 1/4" DSDD    5 1/4" DSHD       3 1/2" DSHD
             5              2                 2

Es koennen Libraries installiert werden, die GKSGRAL
Unterprogramme enthalten, die mit MS-FORTRAN 3.3 oder mit
Professional FORTRAN 1.0 compiliert wurden.

VORAUSSETZUNGEN

Neben den notwendigen Voraussetzungen zur Installation
gibt es weitere:

- Editor (z.B. WORD, WORDSTAR, etc.), mit dem der
  Quelltext in einen File eingetragen werden kann;
- Compiler (MS-FORTRAN Version 3.3, Profesional FORTRAN
  Version 1.0, MS-Pascal Version 3.3, MS-C Version 3.0)
  der Ihr Anwenderprogramm uebersetzt;
- Binder (MS-Linker, Version 3.0), der die GKSGRAL
  Unterprogramme in Ihr uebersetztes Programm einbindet;
- Programmierkenntnisse und etwas Programmiererfahrung.

Abweichungen und Erweiterungen

GKSGRAL hat gegenueber dem GKS Standard Abweichungen und
Erweiterungen .Z.B.:

 - Unterprogramme, denen Strings uebergeben werden, erfor-
   dern die Laenge des Strings als zusaetzlichen Parameter
   und haben einen anderen Unterprogrammname (vgl. z.B.
   GTX mit GTXS);
 - zusaetzliche Unterprogramme (z.B. Initialisieren eines
   GKS-Programms, Zeichnen eines Kreises, Interpolieren)
   koennen das praktische Arbeiten erleichtern; das Unter-
   programm zum Zeichnen von Umlauten ist noch nicht
   implementiert.

Dokumentation

Zu GKSGRAL auf dem Personal-Computer ist folgendes
Handbuch verfuegbar (erwerbbar im Sekretariat des HRZ's):

  GKSGRAL User and Reference Manual FORTRAN

Dieses Handbuch ist zum Arbeiten mit GKSGRAL erforder-
lich, kann jedoch durch andere GKS-Dokumentationen oder
GKS-Beschreibungen ersetzt werden (da GKS
ein Standard ist); z.B:

  Bechlars, J., R. Buhtz: 'GKS in der Praxis'
  Berlin Heidelberg New York Tokyo 1986

Betreuer

  Arnold Schick

Beispiel

Machen Sie sich bitte mit dem folgenden in MS-FORTRAN
formulierte Programm vertraut; es soll ein gefuelltes,
eingerahmtes Quadrat zeichnen und in der Mitte ein
Diagramm mit Beschriftung symbolisieren:

$storage:2
$nodebug
      PROGRAM BEISPIEL
C Vereinbarungsteil
      INTEGER WORKST, CONID, WTYPE, FLAGS(13), ANTWOR
      INTEGER STATUS, CHOICE
      REAL XRAHME(5), YRAHME(5), XWERTE(30), YWERTE(30)
      REAL POLYMX(9), POLYMY(9), DELTA, TMAT(2,3), PI
      CHARACTER*11 SATZ
      DATA XRAHME /0.0,1.0,1.0,0.0,0.0/
      DATA YRAHME /0.0,0.0,1.0,1.0,0.0/
      DATA POLYMX /0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9/
      DATA POLYMY /0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9/
      DATA FLAGS  /1,1,1,1,1,1,1,1,1,1,1,1,1/
      DATA PI     /3.14159/
C Anweisungsteil
      WRITE (*,*) 'Bitte Ausgabegeraet fuer Graphik
     + bestimmen :'
      WRITE (*,*) '   Graphikbildschirm  :   1'
      WRITE (*,*) ' Plotter HP7475, COM1 :   2'
      WRITE (*,*) ' Plotter HP7475, COM2 :   3'
      READ (*,*) ANTWOR
      GOTO (1,2,3) ANTWOR
      GOTO 5
    1 WTYPE = 171
      CONID = 6
      GOTO 6
    2 WTYPE = 4011
      CONID = 1
      GOTO 6
    3 WTYPE = 4011
      CONID = 2
      GOTO 6
    5 STOP 'dieses Programm sieht das gewaehlte
     + Ausgabegeraet nicht vor'
    6 CONTINUE
C Initialisierung von GKS
      OPEN(20,FILE='GKSERR.DAT',STATUS='NEW')
      CALL GOPKS(20,-1)
      WORKST = 2
      CALL GOPWK(WORKST,CONID,WTYPE)
      CALL GACWK(WORKST)
      CALL GSELNT(0)
      CALL GSASF(FLAGS)
C Erstellen der Graphik
C Fillarea
      IF (WTYPE .EQ. 171) THEN
          CALL GSFAIS(1)
          CALL GSFACI(2)
          CALL GFA(5,XRAHME,YRAHME)
      ENDIF
C  Rahmen
      CALL GSPLCI(1)
      CALL GSLN(1)
      CALL GPL(5,XRAHME,YRAHME)
C Segment 1 kreieren und transformieren
      CALL GEVTM(0.0,0.0,0.25,0.25,0.0,0.5,0.5,1,TMAT)
      CALL GCRSG(1)
      CALL GSSGT(1,TMAT)
C  Polymarker
      CALL GSPMCI(3)
      CALL GSMK(2)
      CALL GSMKSC(1.0)
      CALL GPM(9,POLYMX,POLYMY)
C Polyline
      XWERTE(1) = 0.0
      YWERTE(1) = 0.0
      DELTA = 1.0/30.0
      DO 20 K = 2,4
        DO 10 I = 2,30
          XWERTE(I) = XWERTE(I-1) + DELTA
          YWERTE(I) = XWERTE(I) ** K
   10   CONTINUE
        CALL GSLN(K)
        CALL GSPLCI(K+2)
        CALL GPL(30,XWERTE,YWERTE)
   20 CONTINUE
      CALL GSPLCI(1)
      CALL GSLN(1)
      CALL GSLWSC(2.0)
      CALL GPL(5,XRAHME,YRAHME)
C Schliessen des Segments 1
      CALL GCLSG
C Segment 1 verschieben und drehen
      CALL GACTM(TMAT,0.25,0.25,
     +                0.5, 0.5 ,PI,1.0,1.0,1,TMAT)
      CALL GSSGT(1,TMAT)
C Text
      CALL GSCHUP(0.0,1.0)
      CALL GSCHH(0.05)
      CALL GSTXAL(2,0)
      CALL GSTXCI(1)
      SATZ = 'Testausgabe'
      CALL GTXS(0.5,0.9,11,SATZ)
      CALL GSTXFP(2,0)
      SATZ = 'HRZ Marburg'
      CALL GTXS(0.5,0.8,11,SATZ)
      SATZ = 'Abzisse    '
      CALL GTXS(0.5,0.125,11,SATZ)
      CALL GSCHUP(-1.0,0.0)
      SATZ = 'Ordinate   '
      CALL GTXS(0.175,0.5,11,SATZ)
C Beenden von GKS
      CALL GRQCH(WORKST,1,STATUS,CHOICE)
      CALL GDAWK(WORKST)
      CALL GCLWK(WORKST)
      CALL GCLKS
      CLOSE(20)
      STOP
      END


Dieses Programm im File BEISPIEL.FOR ist mit dem MS-FORTRAN Compiler
Version 3.3 zu compilieren (der Compiler befindet sich auf Diskette
im Laufwerk  A und der File mit dem Programm auf der Festplatte im
Subdirectory \GTSGRAL\MS\LIB):

  A:FOR1 beispiel
  A:PAS2

Nun sind die GKSGRAL-Unterprogramme in das  vom Compiler erzeugte
Objekt-Programm mit Hilfe des MS-Linkers, Version 3.0 einzubinden
(der Linker befindet sich auch auf der Diskette im Laufwerk A):

  A:LINK beispiel +GKBLCK +GKDDLK,,/SEGMENTS:1023,+
  GKSGRAL+
  PC74+
  GKZ+
  GKX+
  A:MATH+
  A:FORTRAN

Soll die Ausgabe auch auf einem am Port COM1: oder COM2: angeschlos-
senen Plotte HP7475 erfolgen, ist das Beispiel wie folgt zu binden:

  A:LINK beispiel +GKBLCK +GKD40A,,/SEGMENTS:1023,+
  GKSGRAL+
  DRV40A+
  PC74+
  GKZ+
  GKX+
  A:MATH+
  A:FORTRAN

Gestartet wird das Programm mit:

beispiel

Entsprechend, wie Sie das Programm gebunden und das gestartete Programm
bedient haben, wird die nachfolgende Graphik entweder

   a) auf dem Bildschirm oder
   b) auf dem angeschlossenen Plotter

ausgegeben.

Durch Druecken der ESC-Taste (Eing Loesch) wird das Programm fortgesetzt
und damit beendet.

-- 
Ruediger Kolb		                Phone: +49-2241-14-2644  
GMD   					e-mail:
Postfach 1240               		kolb@gmdzi                   
D-5205 Sankt Augustin       		kolb@f3.gmd.dbp.de           
Technical Details
Message-ID: <1930@gmdzi.UUCP>
Path: arc1-ca.pugleaf.net!gmdzi!kolb

Show Full Headers
Complete Article Headers
X-Google-Language: GERMAN,ASCII-7-bit
X-Google-Thread: 115c6e,e6588bb77d577bbc,start
X-Google-Attributes: gid115c6e,public
X-Google-ArrivalTime: 1990-01-29 23:34:22 PST
Path: arc1-ca.pugleaf.net!gmdzi!kolb
From: kolb@gmdzi.UUCP (Ruediger Kolb)
Newsgroups: dnet.graphik
Subject: Re: GKS-Implementierung fuer PC's unter MS-DOS
Keywords: GKS
Message-ID: <1930@gmdzi.UUCP>
Date: 30 Jan 90 07:34:20 GMT
Distribution: dnet
Organization: GMD, Sankt Augustin, F. R. Germany
Lines: 390
Approved: kolb@gmdzi.UUCP