PostScript -Graphik. Jens Pönisch

Ähnliche Dokumente
Einführungskurs PostScript

Werkzeuge der Informatik

Vortrag Postscript, Einführung, Koordinatgeometrie und Prozeduren

VL8: Von ASCII nach Postscript. Inhalt. 1. Einleitung. 2.Postscript-Programme

Vom T E X-Dokument zur Druckerei

Grafikformate Ein kurzer Überblick

Graphik-Workshop. Klaus Betzler. Universität Osnabrück Sommersemester Inhaltsverzeichnis

Scalable Vector Graphics (SVG)

Proseminar Datenkomprimierung Dr. U. Tamm. Bildkompression WS 2002/03. Florian Strunk

Graphikformate Ein kurzer Überblick

PostScript spielt MASTER MIND

4 Grundlagen zu SVG-Karten und -Diagrammen...33

JPEG, PDF & Co. JPEG, PDF & Co. Theorie und Praxis zu Bildern auf Computern und Druckern

Foto und Grafik. Arbeitsheft für den Informatikunterricht. Fotos, Pixel und Vektoren sowie Bildbearbeitung am PC. Name. ... Klasse ...

Formen und Pfade. Rechteck, Quadrat

Erzeugen von PDF-Dateien ohne ODS: Das Makro Lst2Pdf

Funktionen der UTFT-Library

Vektorobjekte auf der Formebene zeichnen. Form-Werkzeug wählen und über die Optionsleiste die Formeigenschaften festlegen

Grafikeinbindung in LaTeX

Unterlagen zur. CAD-Schulung. Inhalt. Benutzeroberfläche Tastenkombinationen Funktionstasten Flansch Drehteil Schriftfeld

Konstruktion nach Plan Wie Vektorformate Grafiken beschreiben

Sonderzeichen-Referenztabelle, sortiert nach Unicode

08. übung. Illustrator. medienwerkstatt // seite 1

TEXTEFFEKTE TEXTFELDER VERWENDUNG VON TEXTFELDERN. Markieren Sie den Text, und klicken Sie in der Registerkarte Start auf das Symbol

Document Engineering. Zeichen- und Fontmanagement Realisierung in Dateiformaten. Daniel Weber. Document Engineering p. 1

Gimp Workshop. f Freie Auswahl Damit ist eine freihand Auswahl möglich

Die Klasse TCanvas (Canvas = Leinwand) stellt eine abstrakte Zeichenfläche dar.

Vektorisieren von Bitmaps

VERWENDETE BRICSCAD VERSION

L A TEX Ferienkurs TUM SS13 Kapitel 7: Bilder und Zeichnungen in L A TEX

4. 3. Grafik-Programmierung

Computergrafiken lassen sich grob in zwei Kategorien einteilen: Vektorgrafiken und Bitmap-Grafiken, die man auch Pixelgrafiken nennt.

Digitale Whiteboard-Software mit HTML5, SVG und WebSockets

Illustrator CS6. Grundlagen. Jan Götzelmann. 1. Ausgabe, September 2012 ILLCS6

CorelDRAW X6 Einfache Grundobjekte

Kurs zur Ergänzungsprüfung Darstellende Geometrie CAD. Ebenes Zeichnen (2D-CAD) und die ersten Befehle

Schalter für Zeichnungshilfen Statuszeile

CorelDRAW X7 Ansichten

Adobe Photoshop. Seminare. Bereich: INHALTSVERZEICHNIS Der Arbeitsplatz Grundlagen Bildbearbeitung

Template-Übersicht für Origin 9.1

Vorstellung der L A TEX-Pakete PGF/TikZ

Vektorgrafik / Bitmap (bmp)

Bugs beim Kompilieren einer Betty-App: Vergleich ARM/Keil versus GCC

Anwendung und Programmierung von Mikrocontrollern. Anwendung und Programmierung von Mikrocontrollern

Grafikformate. Grafikformate. Digitale Bildverarbeitung Bildkompression

Grafikeinbindung in L A T E X

Scalable Vector Graphics (SVG)

Let's talk Gimp Farbräume. RGB-Farbraum. Digitales Gestalten mit Open Source

Grafikformate 2

Kurzanleitung Zeichnungsmodul ACD Chemsketch 11.0 Freeware

Grafikformate. Auflösung Farbtiefe Farbmodelle

Schaltplan- und Layout- Erstellung mit freier Software

Bilddatenformate BMP GIF JPG. Digitale Bildverarbeitung Liedtke 7.1. Bezeichnung: Microsoft Windows Bitmap, BMP, DIB

Die Daten der Plangestaltung werden in einer ASCII-Datei mit der Dateierweiterung.DZG gespeichert.

Daniel S. Steingrube Institut für Quantenoptik Leibniz Universität Hannover.

Thema: Ein Ausblick auf die Möglichkeiten durch den Software-Einsatz im Mathematikunterricht.

ITG Mathefritz Informationstechnische Grundbildung

Digitale Bildverarbeitung (DBV)

Erstellung eines Logos

Im Original veränderbare Word-Dateien


Kennen, können, beherrschen lernen was gebraucht wird

SMS Zeichensatz GSM 7-Bit (GSM 03.38)

version 23 photo Stand: Neuste Version: ftp://ftp.cadwork.ch/cadwork.ftp/i386-nt/exe_ing/manuals

Photoshop Abspeichern von Dokumenten...

Hinzufügen Serienbemassung horizontal und vertikal. Hinzufügen Bewehrung, Matten, GIS. in den Vorder- oder Hintergrund verschieben

Flex und Flo. Name: l Parallelen zeichnen mit dem Geodreieck 1

1 von :00

Verfasser: M. Krokowski, R. Dietrich Einzelteilzeichnung CATIA-Praktikum. Ableitung einer. Einzelteilzeichnung. mit CATIA P2 V5 R11

Initiative Junge Forscherinnen und Forscher e.v. Mach die Zukunft zu deiner Idee!

Dossier: Pfeile und Linien

Datenbanken und Informationssysteme. Bildbearbeitung. DI (FH) Levent Öztürk

Template-Übersicht (Vorlage: Formatvorlage Bachelor-/Masterarbeiten)

6.2 Scan-Konvertierung (Scan Conversion)

1.1 Erstellen von Anwenderdefinierten Symbolen

Wie modelliere ich einen Bilderrahmen?

3D-Algebra Version 2

0 C (Carry) Überlauf des 8ten Bits. 1 DC (Digit Carry) Überlauf des 4ten Bits. Mnemonic Parameter Beschreibung Status-Flags.

Grafikausgabe mit dem Abstract- Windowing-Toolkit. Eine Einführung

DRUCKDATENANLEITUNG. Wenn Sie zur Erstellung Ihrer Druckdaten genauere Informationen

Java - Zahlen, Wahrheitswerte und Zeichen. Leibniz Universität IT Services Anja Aue

Datenbanken und Informationssysteme. Bildbearbeitung. DI (FH) Levent Öztürk

Adobe Illustrator Einführungskurs

Datenbanken. 5 Tabellen. Karl Meier karl.meier@kasec.ch Inhalt. Domänen verwenden Tabellen anzeigen, ändern, löschen Übung

Neben dem Symbol Entwurfsmodus ist das Symbol Befehlschaltfläche zu sehen.

Bedienungsanleitung Version: 1.0 Datum:

Microsoft Paint Gestalten am Computer

Erinnerung. Arbeitsschritte der Computergraphik. Modellierung. Animation. Rendering. Ausgabemedium. Generierung

Schrift Schrift II. Schrift und Signaletik Deutsch und deutlich Die Gestaltungsfrage Datenformate Achtung Kunde!

Kurzeinführungin Blender & Gimp

2. MFC Microsoft Foundation Classes

4. Übung Adobe Illustrator

Tipps & Tricks ArCon. Schriftfeldmakro. Informationszeitschrift der DI KRAUS & CO GesmbH Seite 18

Inhalt 1 Vorwort 2 Einleitung 3 Für Schnellstarter

Microsoft Visio 2007-Programmierung

Transkript:

PostScript -Graphik Jens Pönisch 2003-02-14 poenisch@isym.tu-chemnitz.de

Koordinatensystem PostScript benutzt im (Gegensatz zu X11 und Windows) ein positiv orientiertes Koordinatensystem. y Zeichenfläche Standardeinheit ist Punkt (= 1/72 = 0.35 mm) Umrechnung: /mm {72 mul 25.4 div} def Verwendung: 10 mm 10 mm moveto Im weiteren verwenden wir Punkte. x Jens Pönisch: PostScript -Graphik 1

Graphics state Der Graphics state sammelt die aktuellen Einstellungen, die für das nachfolgende Rendern benutzt werden: Aktuelle Position (current point) Akueller Pfad Farbe Linienstärke Linenstil, Linienenden Font... Er kann gespeichert und später wiederverwendet werden: gsave grestore Jens Pönisch: PostScript -Graphik 2

Pfade Gezeichnet wird, indem zunächst ein Pfad konstruiert wird. Dieser besteht aus einzelnen Segmenten, die nicht zusammenhängen müssen. Nach Setzen der Zeichenparameter (Farbe, Dicke,... ) wird der Pfad verwendet: Nachzeichnen: stroke Füllen (geschlossener Pfad): fill Ausschneiden (geschlossener Pfad): clip Nach dem Rendern wird der Pfad gelöscht (newpath). Jens Pönisch: PostScript -Graphik 3

Zeichnen von Pfaden Position verändern: x y moveto oder dx dy rmoveto Line ziehen: xneu yneu lineto oder dx dy rlineto Beziérkurve: x1 y1 x2 y2 xneu yneu curveto Pfad schließen: closepath Jens Pönisch: PostScript -Graphik 4

Beispiel 1 Problem: Ecke am Anfangspunkt %!PS-Adobe-3.0 %%BoundingBox: 0 0 120 120 10 10 moveto % Anfangspunkt setzen 110 10 lineto % Linie ziehen 0 100 rlineto % relative Linie ziehen -> 110 110 40 110 10 70 10 10 curveto % Kurve ziehen 10 setlinewidth stroke % Zeichen %showpage % entfällt, da encapsulated Jens Pönisch: PostScript -Graphik 5

Beispiel 2 %!PS-Adobe-3.0 %%BoundingBox: 0 0 120 120 10 10 moveto % Anfangspunkt setzen 110 10 lineto % Linie ziehen 0 100 rlineto % relative Linie ziehen -> 110 110 40 110 10 70 10 10 curveto % Kurve ziehen closepath % Pfad schließen 10 setlinewidth stroke % Zeichen %showpage % entfällt, da encapsulated closepath wandelt die Ecke auf den eingestellten Eckenstil (linejoin) um. Jens Pönisch: PostScript -Graphik 6

Beispiel 3 %!PS-Adobe-3.0 %%BoundingBox: 0 0 120 120 10 10 moveto % Anfangspunkt setzen 110 10 lineto % Linie ziehen 0 100 rlineto % relative Linie ziehen -> 110 110 40 110 10 70 10 10 curveto % Kurve ziehen closepath % Pfad schließen 1.0 0.0 0.0 setrgbcolor % Farbe setzen fill % Füllen %showpage % entfällt, da encapsulated Fläche wird gefüllt. Jens Pönisch: PostScript -Graphik 7

Beispiel 4 Sollen gleichzeitig Rand nachgezogen und die Fläche gefüllt werden, wird der Pfad zweimal benötigt. Mittels gsave kann er gespeichert (und damit dupliziert) werden. %!PS-Adobe-3.0 %%BoundingBox: 0 0 120 120 10 10 moveto 110 10 lineto 0 100 rlineto 40 110 10 70 10 10 curveto closepath % Pfad schließen gsave % Pfad speichern 10 setlinewidth stroke grestore % Pfad zurückholen 1.0 0.0 0.0 setrgbcolor % Farbe setzen fill % Füllen Jens Pönisch: PostScript -Graphik 8

Linejoin 0 setlinejoin Default (Miter) 1 setlinejoin Abgerundete Ecken (Round) 2 setlinejoin Abgeschnittene Ecken (Bevel) Analog für Enden einzelner Linien: nr setlinecap Jens Pönisch: PostScript -Graphik 9

Strichlinien Angabe einer Matrix mit den Längen von Strich und Lücke sowie einer Verschiebung für den Anfang. [2 4] 1 setdash [4 2] 2 setdash [1 2 4 2] 0.5 setdash Jens Pönisch: PostScript -Graphik 10

Farben Farbmodelle: Graustufen, RGB, CMYK,... Farbangabe durch entsprechende Anzahl von Werten zwischen 0 und 1 0.0 0.5 0.5 setrgbcolor 1.0 0.0 0.0 0.0 setcmykcolor 0.8 setgray Jens Pönisch: PostScript -Graphik 11

Transformationen Problem: PostScript kann nur Kreise, aber keine Ovale zeichnen. x y radius startwinkel endwinkel arc Lösung: Koordinatentransformationen Verschiebung des Ursprungs: dx dy translate Skalierung: sx sy scale Drehung: winkel rotate Es wird eine Transformationsmatrix (CTM - current transformation matrix) gesetzt: [a b c d dx dy]: x = a x + b y + dx y = c x + d y + dy Jens Pönisch: PostScript -Graphik 12

Beispiel %!PS %%BoundingBox: 0 0 200 200 100 100 translate 45 rotate 3 1 scale 0 0 30 0 360 arc % Kreis mit Radius 30 % in x-richtung skaliert 10 setlinewidth stroke % Testlinie 10 100 moveto 100 100 lineto stroke Problem(?): Ungleiche Linienstärke, Koordinatensystem für nächste Operation zurücksetzen. Jens Pönisch: PostScript -Graphik 13

CTM Lösung der Probleme: Zurücksetzen der Transformation nach dem Festlegen des Pfades, aber vor dem Zeichnen. %!PS %%BoundingBox: 0 0 200 200 [1 0 0 1 0 0] currentmatrix % legt CTM auf Stack, [1 0 0 1 0 0] ist Dummy 100 100 translate 45 rotate 3 1 scale 0 0 30 0 360 arc % Kreis mit Radius 30 % Hole alte CTM vom Stack und setze CTM setmatrix 10 setlinewidth stroke 10 100 moveto 100 100 lineto stroke Jens Pönisch: PostScript -Graphik 14

Text Textausgabe: (String) show Zuvor: Position setzen (moveto) und Font auswählen: Font selbst: /Helvetica findfont, Größe: 24 scalefont, im Graphics state setzen: setfont Jens Pönisch: PostScript -Graphik 15

Beispiel %!PS %%BoundingBox: 0 0 100 50 Hallo Problem: Umlaute H llo 250 10 10 moveto /Helvetica findfont 24 scalefont setfont (Hallo) show %!PS %%BoundingBox: 0 0 100 50 10 10 moveto /Helvetica findfont 18 scalefont setfont (Hällo 250 ) show Jens Pönisch: PostScript -Graphik 16

Encoding Adobe benutzt eigenes Font-Encoding mit max. 256 Zeichen, was jedoch geändert werden kann. Umlaute sind nicht zulässig, sondern müssen oktal geschrieben werden. %!PS %%BoundingBox: 0 0 100 50 Hællo 250 10 10 moveto /Helvetica findfont 18 scalefont setfont (H\361llo 250\250) show ä ist nicht im Adobe-Standard-Encoding enthalten! Jens Pönisch: PostScript -Graphik 17

ISO-Encoding 1 /ISOLatin1Encoding [... /space /exclam /quotedbl... /at /A /B /C /D /E /F /G... /dotlessi /grave /acute /circumflex /tilde /macron /breve /dotacc ] def Hällo 250 /ISOEncode { dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding ISOLatin1Encoding def currentdict end /Temporary exch definefont } bind def 10 10 moveto /Helvetica findfont 18 scalefont ISOEncode setfont (H\344llo 250\244) show Jens Pönisch: PostScript -Graphik 18

ISO-Encoding 2 Anzeige des e-symbols: Ändern des Encoding-Vectors Ersetze /currency durch /Euro Font muss Symbol enthalten! /ISOLatin15Encoding [... /space /exclamdown /cent /sterling /Euro /yen /brokenbar /section... ] def /ISOEncode { dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding ISOLatin15Encoding def currentdict end /Temporary exch definefont } bind def 10 10 moveto /Helvetica findfont 18 scalefont ISOEncode setfont (H\344llo 250\244) show Jens Pönisch: PostScript -Graphik 19

Character Paths 1 Umwandlung einer Schrift in einen Pfad mit false charpath Anwenden von Linienstärke, Füllung,... %!PS %%BoundingBox: 0 0 100 50 10 10 moveto /Helvetica findfont 44 scalefont setfont (Hallo) false charpath gsave 1 0.5 0.5 setrgbcolor fill grestore 1 setlinewidth [4 2] 0 setdash stroke Jens Pönisch: PostScript -Graphik 20

Character Paths 2 Nachzeichnen der Umrisse mit verschiedenen Linienstärken und - farben %!PS %%BoundingBox: 0 0 100 50 10 10 moveto /HelveticaItalic findfont 44 scalefont setfont (Hallo) false charpath gsave 4 setlinewidth 0 setgray stroke grestore 2 setlinewidth 1 setgray stroke Jens Pönisch: PostScript -Graphik 21

Character Paths 3 Nutzen der Buchstaben zum Ausschneiden einer Clipping Region. Es wird eine schräge, sehr breite Linie mit der Buchstabenkontur ausgestanzt. %!PS-Adobe-3.0 %%BoundingBox: 0 0 100 50 10 10 moveto /HelveticaItalic findfont 44 scalefont setfont (Hallo) false charpath clip % Schnittmaske newpath % Neuen Pfad beginnen 0 0 moveto 100 50 lineto 150 setlinewidth [2 2] 0 setdash 0 0 1 setrgbcolor stroke Jens Pönisch: PostScript -Graphik 22

Messen mit Character Paths Textfeld farbig hinterlegen Textgröße wird benötigt: pathbbox Hallo %!PS-Adobe-3.0 %%BoundingBox: 0 0 150 50 /HelveticaItalic findfont 44 scalefont setfont (Hallo) dup 10 10 moveto gsave false charpath flattenpath pathbbox 3 index 3 index moveto 1 index 3 index lineto 2 copy lineto 3 index 1 index lineto pop pop pop pop closepath 1 0 0 setrgbcolor fill grestore 1 1 1 setrgbcolor show Jens Pönisch: PostScript -Graphik 23

Verbesserung: Box vergrößern Hallo %!PS-Adobe-3.0 %%BoundingBox: 0 0 150 50 /HelveticaItalic findfont 44 scalefont setfont (Hallo) dup 10 10 moveto gsave false charpath flattenpath pathbbox 3 index 5 sub 3 index 5 sub moveto 1 index 5 add 3 index 5 sub lineto 1 index 5 add 1 index 5 add lineto 3 index 5 sub 1 index 5 add lineto pop pop pop pop closepath 1 0 0 setrgbcolor fill grestore 1 1 1 setrgbcolor show Jens Pönisch: PostScript -Graphik 24

Stringbreite Exakt: pathbbox, vereinfacht: stringwidth x y Font vorher setzen, y gibt den Versatz der Höhe in der Schrift an (= 0)! Hallo Ancient Europe! /HelveticaBoldItalic findfont 24 scalefont setfont 100 45 (Hallo) center_show 100 15 (Ancient Europe!) center_show 100 0 moveto 100 70 lineto stroke /center_show { % x y s -> -- dup stringwidth pop 2 div 4-1 roll exch sub 3-1 roll moveto show } def Jens Pönisch: PostScript -Graphik 25

Einbinden von Bildern (Bitmaps) Bild mit bitmap invers und an Senkrechte gespiegelt speichern. Bytes paarweise vertauschen. #define bier_width 16 #define bier_height 16 static unsigned char bier_bits[] = { 0xff, 0xff, 0xff, 0xff, 0xcf, 0xf8, 0x37, 0xf7, 0xf7, 0xef, 0xef, 0xef, 0x0f, 0xf0, 0xef, 0xe7, 0x2f, 0xd5, 0xef, 0xb7, 0x4f, 0xb2, 0xef, 0xb7, 0xaf, 0xb4, 0xef, 0xc7, 0x0f, 0xf0, 0xff, 0xff}; %!PS %%BoundingBox: 0 0 100 100 /Bild < ffff ffff f8cf f737 eff7 efef f00f e7ef d52f b7ef b24f b7ef b4af c7ef f00f ffff > def 50 50 translate 50 50 scale 16 16 1 [16 0 0-16 8 8] % An x-achse spiegeln { Bild } image Jens Pönisch: PostScript -Graphik 26

Bilddaten Die Bilddaten können verschieden eingebunden werden, hier als Hexstring im Dictionary gespeichert: <Hexadezimalstring> Der image-befehl benötigt zunächst die Größe und Farbtiefe des Bildes. Die Transformationsmatrix beschreibt die notwendigen Parameter, um das Pixelbild auf ein 1x1-Quadrat zu transformieren. Üblich: [breite 0 0 höhe 0 0] (rechtsdrehendes Koordinatensystem) [breite 0 0 -höhe 0 höhe] (linksdrehendes Koordinatensystem) Jens Pönisch: PostScript -Graphik 27

Beispiele Verschiedene Transformationsmatrizen [16 0 0 16 8 8] [8 0 0 16 8 8] [24 0 0-12 8 8] Jens Pönisch: PostScript -Graphik 28

Daten direkt lesen Problem: Stack-Überlauf bei großen Bildern. Alternative: String aus File direkt lesen. %!PS-Adobe-3.0 %%BoundingBox: 0 0 100 100 50 50 translate 50 50 scale 16 16 1 [16 0 0-16 8 8] % An x-achse spiegeln { currentfile 8 string readhexstring pop } image ffff ffff f8cf f737 eff7 efef f00f e7ef d52f b7ef b24f b7ef b4af c7ef f00f ffff % Bildaten 8 Byte/Zeile Jens Pönisch: PostScript -Graphik 29

ENDE PostScript -Graphik