Rasterbilder


%!PS-Adobe-1.0
%%Creator: Holger Gehringer
%%Title: Beispiel fuer Rasterbild
%%CreationDate: Mo, 23.11.1998
%%DocumentMedia: A4 595 842 0 () ()
%%Orientation: Portrait
%%Pages: (atend)
%%DocumentFonts: Times-Roman Helvetica
%%EndComments

% Dieses Programm demonstriert den Gebrauch des image-Operators. Darueberhinaus
% wird gezeigt, wie die Daten fuer ein Rasterbild eingelesen werden koennen.
% Das Programm enthaelt eine nuetzliche Prozedur 'ConcatProcs', mit der zwei
% Prozeduren zu einer neuen vereinigt werden koennen.

/ConcatProcs                  % ConcatProcs nimmt zwei Prozeduren vom stack
                              % und fuegt sie zu einer neuen zusammen, die auf
                              % dem stack zurueckbleibt. ConcatProcs wird bei
                              % der Definition einer neuen Transfer-Prozedur
                              % benutzt.
{ /Proc2 exch cvlit def       % Konvertiere die Prozeduren in Literale
  /Proc1 exch cvlit def
  /NewProc Proc1 length       % Definiere ein Array, das gross genug fuer
  Proc2 length add array def  % beide Prozeduren ist.
  NewProc 0 Proc1 putinterval % 1. Prozedur an Anfang der neuen setzen
  NewProc Proc1 length Proc2  % 2. Prozedur hinter die 1. setzen
  putinterval
  NewProc cvx                 % Array in ausfuehrbares Objekt konvertieren
} def

/PicString 3 string def       % Benutzung beim Einlesen der Hex-Werte - jede
                              % Zeile besteht aus drei Bytes

/ImageTurkey                  % liest Rasterbild als Hex-String ein (+ Output)
{ 24 23 1                     % Bild ist 24 Spalten breit; 23 Zeilen hoch
                              % Fuer jeden Bildpunkt wird nur ein Bit benutzt,
                              % d.h. der Punkt ist schwarz oder weiss.
  [24 0 0 -23 0 23]           % Matrix bildet Rasterbild auf Einheitsquadrat
                              % im Benutzer-Koordinatensystem ab.
  { currentfile PicString     % Prozedur liest Hexwerte vom aktuellen file
    readhexstring pop         % ein. image-Operator ruft sie so oft auf, bis
  } image                     % das Bild komplett ist.
} def

%%EndProlog

%%Page: 1 1
gsave                         % aktuellen graphics state retten, da er durch
                              % das folgende settransfer veraendert wird
200 300 translate             % Ursprung in Seitenmitte verschieben
150 150 scale                 % Bildgroesse in Punkten

{ 1 exch sub } currenttransfer   % Bild ist negativ spezifiziert (d.h. 1 =
ConcatProcs settransfer       % schwarz; 2 = weiss) => Transferfunktion muss
                              % dies umkehren. Statt diese Funktion voellig
                              % neu zu definieren, wird die bestehende
                              % einfach mit der Umkehrfunktion verknuepft.

                              % Wird ImageTurkey ausgefuehrt, beginnt der
                              % Interpreter sofort, die Hexwerte vom aktuellen
                              % File zu lesen. Der sicherste Weg, Daten in
                              % einem Programm-File unterzubringen, besteht
                              % darin, die Lese-Befehle in eine Prozedur zu
                              % schreiben, deren Aufruf unmittelbar von einem
                              % Cariage Return und den Daten gefolgt wird.
ImageTurkey
003B00 002700 002480 0E4940 114920 14B220 3CB650 75FE88 17FF8C 175F14
1C07E2 3803C4 703182 F8EDFC B2BBC2 BB6F84 31BFC2 18EA3C 0E3E00 07FC00
03F800 1E1800 1FF800
grestore

showpage

%%Trailer
%%Pages: 1


Vorschau:

Download PostScript-File

© Holger Gehringer, Dezember 1998