DE69526289T2 - Optimierungsverfahren für effiziente Bilderzeugung - Google Patents
Optimierungsverfahren für effiziente BilderzeugungInfo
- Publication number
- DE69526289T2 DE69526289T2 DE69526289T DE69526289T DE69526289T2 DE 69526289 T2 DE69526289 T2 DE 69526289T2 DE 69526289 T DE69526289 T DE 69526289T DE 69526289 T DE69526289 T DE 69526289T DE 69526289 T2 DE69526289 T2 DE 69526289T2
- Authority
- DE
- Germany
- Prior art keywords
- bounding box
- expression tree
- nodes
- image
- tree
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
- 238000000034 method Methods 0.000 title claims description 64
- 238000005457 optimization Methods 0.000 title description 31
- 230000008569 process Effects 0.000 title description 28
- 230000014509 gene expression Effects 0.000 claims description 125
- 238000004458 analytical method Methods 0.000 claims description 3
- 238000012545 processing Methods 0.000 claims description 3
- 230000015572 biosynthetic process Effects 0.000 claims 3
- 238000004590 computer program Methods 0.000 claims 1
- 239000000203 mixture Substances 0.000 description 44
- 241001061260 Emmelichthys struhsakeri Species 0.000 description 34
- 238000009877 rendering Methods 0.000 description 23
- 238000003860 storage Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 10
- 238000013459 approach Methods 0.000 description 9
- 230000008859 change Effects 0.000 description 6
- 230000000694 effects Effects 0.000 description 5
- 238000013507 mapping Methods 0.000 description 5
- 238000013519 translation Methods 0.000 description 4
- 238000009825 accumulation Methods 0.000 description 3
- 230000003111 delayed effect Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 238000010422 painting Methods 0.000 description 3
- 230000009467 reduction Effects 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 230000000903 blocking effect Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 239000003086 colorant Substances 0.000 description 2
- 238000000844 transformation Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000003973 paint Substances 0.000 description 1
- 235000020004 porter Nutrition 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000010561 standard procedure Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/60—Editing figures and text; Combining figures or text
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
Description
- Die vorliegende Erfindung bezieht sich auf die Erzeugung von computererzeugten Bildern sowohl in der Form von Standbildern als auch bei einer Videoabbildung und bezieht sich insbesondere auf den Zusammensetzungsvorgang zur Erzeugung eines Bilds bestehend aus einer Vielzahl von Unterkomponenten.
- Computererzeugte Bilder bestehen typischerweise aus vielen sich unterscheidenden Komponenten oder graphischen Elementen, die "zusammengesetzt" oder zusammen wiedergegeben werden, um ein abschließendes Bild zu erzeugen. Ein Bild wird in seine Bestandteilelemente aufgeteilt, so dass sie unabhängig wiedergegeben werden können, wodurch aufgrund der Verwendung kleinerer Bildfragmente potentiell große Mengen Zeit eingespart werden. Jedes Element oder Objekt besitzt mit sich verbunden eine Zugehörigkeits- oder "Alpha-Kanal"-Information, die im allgemeinen die Form und transparente Natur des Elements bezeichnende Bedeckungsinformationen enthält. Die Zugehörigkeits- oder Alpha-Kanal-Information ist normalerweise für jedes Bildelement getrennt gespeichert. Jedes Bildelement speichert normalerweise zusätzlich die Farbkomponenten (beispielsweise Rot, Grün, Blau (RGB)) auch für jedes Bildelement. Daher kann jedes Bildelement eines Elements durch ein Quadrupel (R,G,B,α) dargestellt werden, wobei α die Transparenz eines Elements darstellt und im allgemeinen als der "Alpha"- oder Undurchsichtigkeits-Kanal bekannt ist. Wenn beispielsweise Schwarz durch die RGB-Farbkomponenten (0,0,0) dargestellt wird, dann kann die Farbe Schwarz durch das Quadrupel (0,0,0,1) und eine klare oder vollständig transparente Farbe oder vollständig transparente Farbe durch das Quadrupel (0,0,0,0) dargestellt werden.
- Weiterhin ist es manchmal vorteilhaft, die Farbkomponenten mit ihrer Undurchsichtigkeit "vorzumultiplizieren". In diesem Fall ist die Farbe (R,G,B) durch (R,G,B) (αR,αG,αβ) dargestellt.
- Unter Bezugnahme auf die Fig. 1 bis 3 wird nun ein einfaches Beispiel für eine Bildzusammensetzung gezeigt. In Fig. 1 ist ein Beispiel für ein kreisförmiges graphisches Element 1 gezeigt, dessen Außenlinie durch die Kante des Kreises definiert ist. Innerhalb des Kreises ist eine bestimmte Farbe oder Variation 2 davon definiert. Das Äußere 3 der Kreisgrenze wird als unendliches Ausmaß angenommen und ist definiert, dass es einen Alphawert von Null annimmt (d. h. unsichtbar). In Fig. 2 ist ein zweites kreisförmiges graphisches Element 4 mit einer von der Farbe des Elements aus Fig. 1 verschiedenen Farbe 5 gezeigt. In Fig. 3 ist ein Beispiel für ein komplexeres Bild 6 gezeigt, das aus der Zusammensetzung einer Kopie jedes der Elemente 1,4 der Fig. 1 und 2 auf einer Seite gebildet ist. Ein Überlappteil 7 ist als eine Kombination der zwei Elemente 1,4 definiert und nimmt einen Farbwert an, der von den Zusammensetzungsoperatoren abhängt, die die zwei Elemente kombinieren, um ein komplexeres Bild 6 zu erzeugen.
- Thomas Porter und Tom Duff legen in einem Artikel mit dem Titel "Compositing Digital Images", erschienen in Computer Graphics, Vol. 18, Nr. 3, Juli 1984 auf den Seiten 253-259 ein Verfahren zur Zusammensetzung von Elementen, um "Super- Elemente" zu bilden, dar. Porter und Duff diskutieren auch Verfahren zur Kombination von zwei Bildern, wobei beide Bilder einen α-Kanal besitzen. Es gibt 13 Haupt- Zusammensetzungsarbeitsgänge zur Kombination von zwei Teilen eines einzelnen Bilds. Die Funktion jeder dieser Zusammensetzungsarbeitsgänge ist in der nachstehenden Tabelle 1 dargelegt, wobei Dc das vormultiplizierte Ziel oder die sich ergebende Farbe, Do das Ziel oder ein sich ergebender α-Kanal-Wert ist, Ac die vormultiplizierte Bildelementfarbe eines ersten Teils einer ersten Quelle A, Ao der α-Wert entsprechend dem Bildelement, dessen Farbe Ac ist, Bc der vormultiplizierte Bildelement-Farbwert eines Teils eines Bilds einer zweiten Quelle B und Bo der α-Kanal-Wert des Bildelements entsprechend Bc der Quelle B ist.
- Löschen Dc = 0 Do = 0
- A Dc = Ac Do = Ao
- B Dc = Bc Do = Bo
- A over B Dc = Ac + Bc (1 - Ao) Do = Ao + Bo (1 - Ao)
- A rover B Dc = AC (1 - Bo) + Bc Do = Ao (1 - Bo) + Bo (Umgekehrter Fall von A over B)
- A in B Dc = AoBo Do = AoBo
- A rin B Dc = AoBc Do = AoBc (umgekehrter Fall von A in B)
- A out B Dc = Ac (1 - Bo) Do = Ao (1 - Bo)
- A rout B Dc = Bc (1 - Ao) Do = Bo (1 - Ao) (Umgekehrter Fall von A out B)
- A atop B Dc = AoBo + Bc (1 - Ao) Do = AoBo + Bo (1 - Ao)
- A ratop B Dc = Ac (1 - Bo) + BcAo Do = Ao (1 - Bo) + BoAo
- A xor B Dc = Ac (1 - Bo) + Bc (1 - Ao) Do = Ao (1 - Bo) + Bo (1 - Ao)
- A plusW B Dc = Ac + Bc (mit Dc "umlaufen") Do = Ao + Bo (mit Do "umlaufen")
- A plusC B Dc = Ac + Bc (mit Dc "blockiert") Do = Ao + Bo (mit Do "blockiert")
- In Tabelle 1 sind zahlreiche Verfahren zur Kombination zwei verschiedener Bilder miteinander unter Verwendung verschiedener Operatoren gezeigt. Zusätzliche Operatoren zu den vorstehend verwendeten sind möglich. Die zusätzlichen Operatoren können hauptsächlich verwendet werden, um Spezialeffekte zu realisieren.
- Die "Umlauf"-Natur des "plusW"-Operators bedeutet, daß, wenn beispielsweise die Summe von Ac + Bc größer als ein Maximalwert einer Farbkomponente ist, der Wert "umlaufen" wird, um wieder unter Bezugnahme auf den Minimalwert im Farbraum zu beginnen. Alternativ enthält der Vorgang eines "Blockierens", der durch "plusC" verwendet wird, ein Blockieren beispielsweise der Summe Ac + Bc auf den Maximalwert einer Farbkomponente, wenn die Summe größer als diese Komponente ist.
- Gemäß Fig. 4 sind zahlreiche Beispiele des Endbilds gezeigt, das erzeugt wird, wenn zahlreiche Arbeitsgänge, wie in Tabelle 1 dargelegt, bei der Zusammensetzung von zwei vollständig undurchsichtigen Kreisen A und B verwendet werden. Es ist zu beachten, daß die Operatoren "rover", "rin", "rout" und "ratop" äquivalent dem Überlauf der Operanden auf die "r"(umgekehrten)-Operatoren und Anwenden der entsprechenden Operatoren "over", "in", "out" bzw. "atop" sind.
- Kürzlich wurden graphische Sprachen in der Form von Seitenbeschreibungssprachen, wie beispielsweise POSTSCRIPT (Marke) verfügbar. Diese Sprachen bieten die volle Funktionalität einer relativ komplexen Programmiersprache, wodurch eine kompakte Beschreibung komplexer Bilder durch die Verwendung von Wiederholungsabsichten, einen Steuerablauf und eine prozedurale Definition von Bildelementen ermöglicht wird. Diese Seitenbeschreibungssprachen wurden entwickelt, um den Anwendungsschreiber von irgendwelchen maschinenabhängigen Einzelheiten von Druckern zu isolieren, wodurch eine Übertragbarkeit unterstützt wird. Diese Sprachen bieten eine extensive Unterstützung für Text, kurvenbasierte graphische Objekte und abgetastete Bilder. Ein Übersetzer für die Sprache kann dann erstellt werden und befindet sich beispielsweise in einer Druckeinrichtung, was eine kompakte Darstellung eines komplexen Bilds erlaubt. Zusätzlich unterstützen Seitenbeschreibungssprachen eine Übertragbarkeit von einer Ausgabeeinrichtung zu einer anderen, da die Übersetzung der Sprache maschinen-unabhängig gemacht werden kann. Sprachen wie POSTSCRIPT wurden ursprünglich erstellt, um die Erscheinung einer Bitmap-Seite oder eines - Bildschirms zu beschreiben und bestimmte graphische Stammelemente zu verwenden, die auf der Absicht eines Malens mit undurchsichtiger Tinte auf dem Bitmap-Bild basieren.
- Wie die meisten Programmiersprachen bestehen die Seitenheschreibungssprachen häufig aus Operanden und Operatoren, die auf die Operanden einwirken, um neue Ergebnisse oder Effekte zu erzeugen. Die Operanden können manchmal grundlegende graphische Umgebungen, wie beispielsweise eine Linie, ein Bogen, eine Sammlung von Linien und Kurven, eine Textkette oder ein abgetastetes Bild enthalten und sind entworfen, auf die Operatoren angewendet zu werden. Die Operatoren können in viele verschiedene Kategorien einschließlich der folgenden klassifiziert werden:
- 1. Operatoren, die gegenwärtige Attribute von zahlreichen Operanden oder globalen Zustandsvariablen bestimmen.
- 2. Operatoren, die die zahlreichen Koordinatensysteme verändern, in denen grundlegende Umgebungen zu definieren sind.
- 3. Bahnoperatoren, die bestimmte Grundumgebungen aktualisieren, um zahlreiche Bahnen zu definieren, wodurch die Herstellung komplexer Objekte ermöglicht wird.
- 4. Zahlreiche "Wiedergabe"-Operatoren, die Bilddaten erzeugen, die möglicherweise die. Farbe der einzelnen Punkte bestimmen, die auf einer Ausgabeseite erscheinen.
- 5. Eine spezielle Klasse von Operatoren wird normalerweise zur Spezifizierung, Modifizierung und Auswahl von Text und Schriftarten verwendet. Dies ist aufgrund der speziellen Natur von Zeichenschriftarten, die vorbereitet und in konstanter Verwendung sind.
- 6. Zahlreiche Einrichtungs-Einstellungs- und Ausgabe- Operatoren, die zur Steuerung einer Ausgabe eines Bilds an einer Anzeigeeinrichtung, wie beispielsweise einem Drucker oder einem Bildschirm verwendet werden kann.
- Unglücklicherweise hängen Sprachen wie beispielsweise POSTSCRIPT und dergleichen von einem auf das Malen mit undurchsichtiger Farbe auf einer Bildspeichereinrichtung oder dergleichen gerichteten "Einrichtungsmodell" ab. Die Verwendung einer Bildspeichereinrichtung erfordert ausgedehnte Ausmaße von Speicher und dies kann mit modernen, eine Ausgabe hoher Qualität erfordernden Abbildungstechniken häufig ausgedehnte Ausmaße von Speicher und Berechnung erfordern, die zur Erzeugung eines Bilds erforderlich sind, wobei häufig jedes graphische Element, das das Bild bildet, getrennt gespeichert und hei der Erzeugung des Endbilds auf die Bildspeichereinrichtung "gemalt" werden muß. Zusätzlich wird die Ineffizienz bei der Verwendung von Maltechniken mit einer Erhöhung von Ausgabeauflösungen betont.
- Es ist Aufgabe der vorliegenden Erfindung, eine wirkungsvollere Einrichtung zur Erzeugung eines Bilds auszubilden, die bei der Erzeugung von zumindest einer Klasse von Bildern effizienter ist.
- Es ist aus der US-A-5,307,452 bekannt, eine Bildmanipulation mit einer Kombination von Operatoren auszubilden und einen Ausdrucksbaum zu erzeugen, der die Abfolge darstellt, in der das sich ergebende Bild ausgewertet wird. Die Abfolge von Arbeitsgängen für den gesamten Baum wird nacheinander auf jede Abtastzeile eines Bilds ausgeführt.
- Erfindungsgemäß ist ein Verfahren zum Erzeugen eines aus einer Reihe von Anweisungen und einer Vielzahl von graphischen Elementen gebildeten Bilds offenbart, mit den Schritten: Bestimmen eines Ausdrucksbaums aus der Reihe von Anweisungen und den graphischen Elementen für das Bilden des Bilds durch automatische Syntaxanalyse und Ausführen der Reihe von Anweisungen, von denen eine oder mehrere Arbeitsgänge enthalten, die verwendet werden, den Ausdrucksbaum zu erzeugen, gekennzeichnet durch die weiteren Schritte Bilden einer Begrenzungsbox für jedes der graphischen Elemente in dem Baum und Verringern einer Größe der Begrenzungsbox des ersten graphischen Elements um den Teil, der durch ein zweites graphisches Element verborgen wird.
- Das bevorzugte Ausführungsbeispiel der vorliegenden Erfindung wird nun unter Bezugnahme auf die Zeichnung beschrieben.
- Es zeigen:
- Fig. 1 und 2 zwei einfache graphische Elemente,
- Fig. 3 die Zusammensetzung graphischer Elemente,
- Fig. 4 zahlreiche Zusammensetzungsoperatoren und die nachfolgende Ausgabe, wie sie im bevorzugten Ausführungsbeispiel verwendet wird,
- Fig. 5 bis 9 den Aufbau eines Ausdrucksbaums für eine erste Reihe von Anweisungen,
- Fig. 10 bis 14 die Zusammensetzungsverarbeitung der ersten Reihe von Anweisungen,
- Fig. 15 ein sich aus einer zweiten Reihe von Anweisungen ergebendes Endbild,
- Fig. 16 den Ausdrucksbaum der zweiten Reihe von Anweisungen,
- Fig. 17 die auf den Ausdrucksbaum angewendete Begrenzungsboxverarbeitung,
- Fig. 18 eine entsprechend dem gegenwärtigen Ausführungsbeispiel ausgeführte weitere Begrenzungsboxminimierung,
- Fig. 19 zwei unter Verwendung des "in"-Operators zu kombinierende graphische Elemente,
- Fig. 20 und 21 ein erstes Verfahren zur Kombination der graphischen Elemente aus Fig. 19,
- Fig. 22 ein zweites Verfahren zur Kombination der graphischen Elemente aus Fig. 19,
- Fig. 23 ein erstes Verfahren zur Umwandlung eines Ausdrucksbaums in entsprechende "Zwischenpegel"-Anweisungen,
- Fig. 24 ein zweites Verfahren zur Umwandlung eines Ausdrucksbaums in entsprechende Anweisungen,
- Fig. 25 eine erste auf einen Ausdrucksbaum anzuwendende Optimierung,
- Fig. 26 eine zweite auf einen Ausdrucksbaum anzuwendende Optimierung,
- Fig. 27 eine dritte auf einen Ausdrucksbaum anzuwendende Optimierung,
- Fig. 28 ein erstes Verfahren zur Optimierung eines Teils eines Ausdrucksbaums,
- Fig. 29 ein zweites Verfahren zur Optimierung eines Teils eines Ausdrucksbaums,
- Fig. 30 zwei graphische Elemente und ihre entsprechenden Begrenzungsboxen,
- Fig. 31 die Zusammensetzung der zwei graphischen Elemente aus Fig. 30,
- Fig. 32 die verringerte Begrenzungsbox eines der graphischen Elemente in Fig. 30,
- Fig. 33 eine durch das bevorzugte Ausführungsbeispiel durchgeführte Farboptimierung,
- Fig. 34 eine Computerarchitektur zur Ausführung der Anweisungen des bevorzugten Ausführungsbeispiels und
- Fig. 35 ein Ablaufdiagramm, das die Übersetzung bzw. Kompilierung und Ausführung von Anweisungen des bevorzugten Ausführungsbeispiels zeigt.
- Im bevorzugten Ausführungsbeispiel besitzt die beschriebene Programmiersprache die folgenden vorteilhaften Merkmale:
- 1. Graphische Elemente und deren Kombination sind Datenarten der Sprache und beliebige Kombinationen von graphischen Elementen sind möglich.
- 2. Graphische Operatoren nehmen graphische Elemente als ihre Operanden und werten neue graphische Elemente oder Kombinationen daraus aus.
- 3. Graphische Objekte können auf dieselbe Weise wie andere Standardsprachen-Datenarten verwendet werden, die Artbeschränkungen irgendwelcher Operatoren unterworfen sind, mit denen sie verbunden sind (beispielsweise funktioniert, der Teilungsoperator nur bei arithmetische Operanden, jedoch funktioniert der Zuweisungsoperator für irgendwelche Operandenarten).
- 4. Alle graphischen Elemente und die Ergebnisse von Kombinationen graphischer Elemente unter Verwendung graphischer Operatoren sind geeignete Operanden für weitere graphische Arbeitsgänge.
- 5. Ein Bild kann für eine Ausgabe durch die Wiedergabe eines bestimmten graphischen Elements erzeugt werden, das durch die Ausführung des Seitenbeschreibungsprogramms erzeugt wurde.
- Im bevorzugten Ausführungsbeispiel sind die grundlegenden graphischen Elemente aus den folgenden "primitiven Arten" bzw. Stammtypen erstellt:
- 1. Text einschließlich einer Vielzahl von in zahlreichen Größen bestimmten Schriftsätzen.
- 2. Objekte, deren Umrisse durch Kurvendaten, auch als Bahnen bekannt, definiert sind.
- 3. Bildelementdaten, wie beispielsweise abgetastete Bilder oder vorhergehend zusammengesetzte Bilder, die selbst graphische Elemente bilden.
- 4. Ein graphisches Element, bekannt als "alle", das als der Hintergrund einer Seite verwendet wird und zumindest ebenso groß wie das erzeugte Bild sein sollte.
- Farb- und graphische Textelemente können Attribute enthalten, die folgendes enthalten:
- (a) Farbe, ob eine feste Farbe, eine Mischung zwischen zwei Farben oder eine sich wiederholende Bildelement-basierte Kachel,
- (b) Undurchsichtigkeits- oder α-Kanaldaten mit denselben möglichen Veränderungsoptionen wie Farbdaten und
- (c) Füll- und/oder Hubdaten, die die Wiedergabe der Bahnen oder graphische Textelemente steuern. Ein "graphischer Zusammenhang" führt die Attributwerte zu, die mit jedem graphischen Element zu verbinden sind. Wenn ein neues Element zu erzeugen ist, werden die Attributwerte in dem graphischen Zusammenhang zum Zeitpunkt der Erzeugung auf das neue graphische Element angewendet.
- Die Programmiersprache selbst enthält daher die folgenden Datenarten:
- 1. Textobjekte, die die Schriftart, Größe, Anordnung und irgendwelche anderen gewünschten Eigenschaften jedes Zeichens, aber nicht die Farbe, Undurchsichtigkeit, Füllungs- oder Hubparameter des Textes definieren.
- 2. Bahnobjekte, die den Umriss einer bestimmten Objektform, aber nicht seiner Farbe, Undurchsichtigkeit, Füllungs- oder Hubparameter definieren.
- 3. Graphische Elemente, die Bildelementdaten darstellen, an "alles" bzw. "gesamtes" graphisches Element, die Zusammensetzung einer Anzahl von anderen graphischen Elementen durch irgendeinen Zusammensatzungsoperator, um ein graphisches Element zu ergeben, oder ein Textobjekt oder ein Bahnobjekt, das in einer entsprechenden Bildelementform wiedergegeben wurde.
- Eine Bildzusammensetzung erzeugt einen Satz von binären Operatoren, die Bilder als Operanden nehmen und ein Bild als ein Ergebnis erzeugen. Ein Bild ist derart definiert, daß es sowohl Farbe und α oder Undurchsichtigkeits-Kanalinformationen in jedem Bildelement besitzt, obwohl in einigen Situationen die Farbinformationen eines graphischen Elements nicht verwendet werden. Um eine Kombination oder Zusammensetzung graphischer Elemente aller Arten zu ermöglichen, werden alle graphischen Elemente einschließlich Text, Bahn und "alle" graphischen Elemente behandelt, als ob sie vor ihrer Zusammensetzung in Bildelementbilder abtastumgewandelt werden. Zusätzlich werden die graphischen Elemente, wenn sie Operanden bilden, als begrifflich unendlich im Ausmaß behandelt. Irgendein Bildelement außerhalb der Grenze eines graphischen Elements wird als vollständig transparent behandelt. Diese Ausdehnung jedes graphischen Elements wird verwendet, um eine Definition eines Ergebnisses zu ermöglichen, wenn ein Bildelement innerhalb eines normalen Ausmaßes eines Operanden, aber nicht des anderen Operanden ist. Zusätzlich erfordern einige spezielle Arbeitsgänge immer die Definition der Farbe, so dass vollständig transparente Bildelemente eine Farbe annehmen, wie sie durch die Nullkomponenten bei der Wiedergäbe des Farbraums dargestellt werden.
- Die wiedergegebene Sprache des bevorzugten Ausführungsbeispiels kann auf eine Anzahl von verschiedenen Wegen "ausgeführt" werden, ähnlich der einer normalen Computersprache.
- Computersprachen werden normalerweise durch einen entsprechenden Computer durch eine Einrichtung zur "Übersetzung" oder "Kompilierung" "ausgeführt", von denen beide dem Fachmann auf dem Gebiet des Computersprachkompilierungsschreibens bekannt sind.
- Sowohl Übersetzer als auch Kompilierer bilden normalerweise einen Syntaxanalyse- oder Ausdrucksbaum zur Sprachbeschreibung, die aus einer Grammatik gebildet ist, höchstwahrscheinlich zusammenhangsfrei, der die Sprache definiert. Für eine weitere Erklärung der Übersetzer und Kompilierer wird auf einen Standardtext verwiesen, wie beispielsweise "Compilers Principles, Techniques, and Tools" von Aho, Sethi und Ullman, 1986, verfügbar von Addison-Wesley Publishing Company, Reading, Massachusetts.
- Die Ausführung der Programme der Programmiersprache des bevorzugten Ausführungsbeispiels für Geschwindigkeit, Größe und Leichtigkeit der Anwendung wird durch einen Übersetzer ausgeführt.
- Für jede Anweisung in der Programmiersprache führt der Übersetzer eine Syntaxanalyse der Anweisung durch und wandelt die Anweisung in eine ausführbare Form um. Diese ausführbare Form wird dann ausgeführt. Während der Ausführung dieser ausführbaren Form werden Arbeitsgänge, die sich auf graphische Elemente beziehen, ausgeführt werden. Eine Anzahl von verschiedenen Techniken kann zu ihrer Durchführung verwendet werden, einschließlich einer sofortigen Ausführung und einer verzögerten Ausführung.
- Für jeden auf graphische Elemente angewandten Arbeitsgang wird ein Rasterspeicher erzeugt, der ausreichend zur Speicherung des sich ergebenden Bildelementbilds ist, und der Arbeitsgang wird zur Kombination seiner Operanden verwendet, um die Bildelementdaten des Ausgabe-Rasterbildbereichs zu erzeugen. Dieser Rasterbildbereich wird dann das graphische Element, das das Ergebnis des Arbeitsgangs ist. Wenn ein Wiedergabearbeitsgang ausgeführt wird, werden die Rasterbildelemente des gewünschten graphischen Elements zur Ausgabeeinrichtung übertragen.
- Diese Technik besitzt den Nachteil, dass große Menge von Speicher erforderlich sein können, wenn viele graphische Zwischenelemente während des Ausführungsablaufs eines Programms verwendet werden. Sie besitzt auch den weiteren Nachteil, dass wenige nachfolgende Optimierungen möglich sind, da keine Informationen über die nachfolgende Verwendung eines graphischen Elements verfügbar sind, wenn es berechnet oder erzeugt wird.
- Ein Beispiel für die Funktion des Übersetzers entsprechend dem sofortigen Ausführungsmodell wird nun unter Bezugnahme auf die Fig. 5 bis 14 beschrieben. Es werden die folgenden beispielhaften Reihen von Anweisungen betrachtet:
- A = Text ("a"): (1)
- A: = Text("b"); (2)
- A: = Text("c") (3)
- B = Kreis (); (4)
- A = Aover B (5)
- In der Programmiersprache des bevorzugten Ausführungsbeispiels weist der Ausdruck "A = B" der Variable A den Wert von B zu. Der Ausdruck "A: = B" ist eine verkürzte Form des Ausdrucks "A = A rover B", wobei "A rover B" dasselbe Ergebnis erzeugt wie "B over A".
- Die Funktion "Text" erzeugt ein Textobjekt, das, wie vorstehend erwähnt wurde, im bevorzugten Ausführungsbeispiel keine Farb- oder Undurchsichtigkeitsinformationen und nur Zeichen-, Schriftsatz-, Größen- und Positionsinformationen besitzt. Jedoch ist die Anweisung A: = Text("b") gleich "A = A rover Text("b"). Wenn der Operator "rover" auf einen Textoperanden angewendet wird, wird der Textoperand zuerst in ein graphisches Element umgewandelt. Dies wird durch begriffliche Wiedergabe des Textes erreicht, um seine Attribute zu bestimmen. Bei Ausführung des Funktionsrufs "Text" wird der gegenwärtige Punkt um die sich ergebende Breite der wiedergegebenen Textkette des graphischen Elements bewegt. Fig. 5 zeigt den entsprechenden Ausdrucksbaum nach Beendigung der ersten Anweisung.
- Die erste Anweisung, Anweisung 1, gemäss Tabelle 2 ist äquivalent einer Zuweisung des graphischen Elements entsprechend dem Zeichen 'a' zur Variable A. Das Ergebnis dieser Zuweisung ist in Fig. 10 veranschaulicht.
- Die zweite Anweisung, Anweisung 2, die durch den Übersetzer ausgeführt wird, beinhaltet eine Wiedergabe des graphischen Elements entsprechend dem Zeichen 'b' benachbart dem Zeichen 'a'. Der sich ergebende Ausdrucksbaum nach der Ausführung dieser Anweisung ist wie in Fig. 6 gezeigt und der Zustand der Variable A ist wie in Fig. 11 gezeigt.
- Die vorstehende Anweisung 3 beinhaltet die Wiedergabe des graphischen Elements entsprechend dem Zeichen 'c' benachbart diesen vorhergehend wiedergegebenen Zeichen. Der entsprechende Ausdrucksbaum für die Reihe von Anweisungen (1) bis (3) ist wie in Fig. 7 gezeigt und der Zustand der Variable A ist wie in Fig. 11 gezeigt.
- Anweisung 4 erzeugt ein graphisches Element mit einem Kreis und weist es dem durch die Variable B definierten graphischen Element zu. Der entsprechend Ausdrucksbaum für diese Anweisung ist wie in Fig. 8 gezeigt und der Zustand von Variable B ist wie in Fig. 13 gezeigt.
- Anweisung 5 beinhaltet die Zusammensetzung der graphischen Elements A über das durch das graphische Element B definierte. Fig. 9 veranschaulicht den sich ergebenden Ausdrucksbaum für das graphische Element A nach Ausführung von Anweisung 5. Der Teil 10 stellt den Ausdrucksbaum aus Fig. 7 dar, der der vorhergehende Ausdrucksbaum für A war, der auf der rechten Seite von Anweisung 5 erscheint. Fig. 14 zeigt den entsprechenden Zustand der Variable A, wenn das sofortige Ausführungsverfahren verwendet wird.
- Eine zweite Näherung für die Ausführung des Kompilierens ist das verzögerte Ausführungsmodell. In diesem Modell wird für jede auf die graphischen Elemente in der Form von Programmanweisungen angewendete Funktion ein Ausdrucksbaumknoten erzeugt, der den Arbeitsgang darstellt. Der erzeugte Ausdrucksbaumknoten zeichnet den Arbeitsgang oder den Operator auf und die Kinder des Ausdrucksbaumknotens sind die Operanden des Arbeitsgangs. Der Ausdrucksbaumknoten wird dann das graphische Element, das das Ergebnis des Arbeitsgangs ist. Da eine Ausführung einer oder mehrerer Anweisungen durchgeführt wird, werden durch vorhergehende Funktionen erzeugte Ausdrucksbäume von Zeit zu Zeit weiter mit Arbeitsgängen kombiniert, um komplexere Ausdrucksbäume auf dieselbe Weise zu erzeugen, wie den in den Fig. 5 bis 9 gezeigten.
- Wenn ein Wiedergabearbeitsgang ausgeführt wird, wird nachfolgend der gewünschte Ausdrucksbaum rekursiv gedreht und die zur Erzeugung des gewünschten Bilds, das zur Ausgabeeinrichtung übertragen wird, gewünschten Arbeitsgänge werden ausgeführt.
- Diese Technik besitzt den Vorteil, dass die Wiedergabearbeitsgänge verzögert werden können, bis Informationen über die nachfolgende Verwendung des so erzeugten graphischen Elements bekannt sind. Daher muss eine Speichereinrichtung zur Speicherung der Rasterbildelemente der graphischen Elemente nicht zugewiesen werden, bis eine Programmausführung beendet wurde und Optimierungen durchgeführt werden können, die die nachfolgende Verwendung graphischer Elemente berücksichtigen.
- Zwei Näherungen können für eine Anwendung des Übersetzers angepasst werden:
- 1. Eine "Postfix-" oder "stapelbasierte" Näherung, bei der graphische Elemente auf einen Zusammensetzungsstapel als Operanden und Operatoren geschoben werden, die zur Einwirkung auf Elemente auf dem Stapel verwendet werden. Somit kann ein binärer Operator die oberen zwei Stapeleinträge entfernen, sie zusammensetzen und das zusammengesetzte Ergebnis zurück auf den Stapel platzieren. Bei Beendigung aller Anweisungen in der eingegebenen Seitenbeschreibung kann die Oberseite des Stapels dann zur Ausgabeeinrichtung übertragen werden.
- 2. Eine "Infix-" oder "ausdrucksbasierte" Näherung, bei der graphische Stammelemente entweder direkt betätigt oder in Variablen gespeichert werden können. Ein Operator kann graphische Stammelemente oder vorhergehend in Variablen gespeicherte graphische Elemente oder Unterausdrücke kombinieren, wodurch ein neues graphisches Element erzeugt wird, das in einer Variable gespeichert oder weiter durch weitere Arbeitsgänge kombiniert werden kann. Ein einer vorbestimmten Variable zugewiesenes graphisches Element, beispielsweise eine "Seite" kann dann zu einer Ausgabeeinrichtung übertragen werden.
- Der Unterschied zwischen den vorstehenden zwei Näherungen ist analog den Unterschieden in der jeweiligen Leistung eines Kellerautomaten und einer Turing-Maschine.
- Bei der bevorzugten Anwendung des Übersetzers wird das zweite verzögerte Ausführungsmodell verwendet und:
- 1. Graphische Arbeitsgänge werden verzögert und erzeugen Ausdrucksbäume.
- 2. Eine "Infix-"Näherung wird zur Ausführung von Ausdrucksbäumen verwendet.
- 3. Alle Objekte mit Bahnumrissen, Zeichen und Bildern werden zuerst begrifflich in grundlegende graphische Elemente umgewandelt, die aus einem Bildelementbild eines unendlichen Ausmaßes bestehen. Eine Zusammensetzung wird dann durch Verwendung der Operatoren, wie in Tabelle 1 definiert, durchgeführt, die sowohl binäre als auch monadische Operatoren enthalten.
- Wenn der Ausdrucksbaum für ein Bild einmal erzeugt wurde, ist das Bild dann fertig, auf der relevanten Ausgabeeinrichtung "wiedergegeben" zu werden. Durch Verwendung einer vordefinierte Variable, wie beispielsweise einer "Seite", zur Darstellung des graphischen Elements der Ausgabeeinrichtung, kann das Ausgabebild wiedergegeben werden, indem der Ausdrucksbaum entsprechend dieser Variable wiedergegeben wird. Angenommen, dass die Ausgabeeinrichtung eine Einrichtung ist, die ein Ausgabebild Abtastzeile für Abtastzeile akzeptiert, ist eine Anzahl von verschiedenen Wiedergabetechniken möglich, einschließlich:
- 1. Für jede Abtastzeile wird der Ausdrucksbaum für die Ausgabevariable gedreht und eine Wiedergabe jedes graphischen Elements und eine Zusammensetzung von Operatoren wird durchgeführt, wie sie für diese Abtastzeile relevant ist.
- 2. Unter Berücksichtigung, dass eine binäre Baumdrehung auf jeder Abtastzeile ein teurer Vorgang ausgedrückt in Computerzeit ist, kann zuerst eine lineare Wiedergabeliste aus dem Ausdrucksbaum erzeugt werden. Nachfolgend wird für jede Abtastzeile jedes graphische Element wie erforderlich wiedergegeben und jeder Zusammensetzungsarbeitsgang wird wie erforderlich für diese Abtastzeile durchgeführt. Diese Form einer Ausführung wird erfordern, dass ein Stapel Zwischenergebnisse speichert, die ausgewerteten Unterteilen des Ausdrucksbaums entsprechen.
- 3. Unter Berücksichtigung, dass es ineffizient ist, die gesamte lineare Wiedergabeliste für jede Abtastzeile abzutasten, kann eine Art von linearer Wiedergabeliste vorgenommen werden, wobei die Liste durch die beginnende Abtastzeile eines bestimmten graphischen Elements sortiert werden kann. Wenn jede Abtastzeile übertragen wird, kann eine aktive Liste beibehalten werden, die alle diese graphischen Elemente der linearen Wiedergabeliste enthält, die eine gegenwärtig wiederzugebende Abtastzeile bewirkt. Zum Beginn jeder Abtastzeile werden Anweisungen, die auf dieser Abtastzeile beginnen, in die aktive Liste aufgenommen und Anweisungen, die nicht länger relevant sind, werden aus der aktiven Liste herausgenommen. Dies ist analog zur Technik des Beibehaltens einer aktiven Liste von Anzeigelistenanweisungen, die im Stand der Technik bekannt ist.
- Wenn einmal das Konzept der dritten der vorstehenden Näherungen begriffen wurde, um dem Verständnis des Konzepts zu assistieren, kann die Interpretation der Seitenbeschreibungs- Programmiersprachen-Anweisungen mit durch einen Kompilierer ausgeführten Arbeitsgängen verglichen werden. Der anfängliche Ausdrucksbaum kann mit einem Syntaxanalysebaum eines Kompilierers verglichen werden, die Erzeugung der Wiedergabeliste kann mit der Codeerzeugungsphase eines Kompilierers verglichen werden, die aus dem Syntaxanalysebaum erzeugte Wiedergabeliste kann mit in einigen Kompilierern verwendeten Zusammengehörigkeitsanweisungen oder Zwischencode verglichen werden und die Wiedergabe der linearen Wiedergabeliste kann mit der Ausführung von Zusammengehörigkeits-Sprachanweisungen durch einen Computer verglichen werden.
- Der Ausdrucksbaum für einen bestimmten Satz von Seitenbeschreibungs-Sprachanweisungen ist durch den Übersetzer gebildet, indem in der Seitenbeschreibung enthaltene Anweisungen ausgeführt werden, einschließlich irgendwelcher "während"- Schleifen, Bedingungsanweisungen und anderer normaler Gebilde, die in modernen Programmiersprachen, wie beispielsweise C, Pascal, Algol usw., ausgebildet sind und von denen angenommen wird, dass sie einen Teil der Programmiersprache bilden. Wenn irgendein in einer bestimmten Variable gespeicherter Ausdrucksbaum innerhalb der Seitenbeschreibung oder innerhalb der Seitenbeschreibung von nachfolgenden Seiten innerhalb eines Seitenbeschreibungs-Sprachprogramms wiederverwendet werden kann, ist es höchst wünschenswert, dass irgendein Ausdrucksbaum aus einer externen oder Benutzersicht in unmodifizierter Form gelassen wird. Wenn jedoch einmal der Übersetzer die Bildung des Ausdrucksbaums beendet hat, sind Kompiliererartoptimierungen, die die Struktur des Baums neu anordnen könnten, möglich. Um daher diese Optimierungen als einen Teil des Wiedergabevorgangs zu ermöglichen, werden zwei Sätze von Zeigeeinrichtungen innerhalb des Baums verwendet und werden die Benutzerzeigeeinrichtungen und die Arbeitszeigeeinrichtungen genannt. Wenn der Übersetzer anfänglich den Ausdrucksbaum aus der Seitenentwurfsprogrammbeschreibung herstellt, werden die Benutzerzeigeeinrichtungen verwendet. Wenn der den Seitenentwurf beschreibende Ausdrucksbaum nachfolgend zur Wiedergabe verarbeitet wird, können die Arbeitszeigeeinrichtungen verwendet werden, wobei die vom Benutzer gesetzten Zeigeeinrichtungen intakt sind.
- Wenn einmal die Ausdrucksbaumbildung beendet wurde, kann der Wiedergabelisteerzeugungsvorgang initiiert werden. Dieser Wiedergabevorgang wird durch Ausführen einer Anzahl von Optimierungsschritten auf dem Ausdrucksbaum initiiert. Diese Schritte werden im folgenden nach der Beschreibung des Wiedergabelisteerzeugungsvorgangs beschrieben.
- Der Wiedergabelisteerzeugungsvorgang ist analog zur Erzeugung eines Zusammengehörigkeitscodes oder eines Zwischencodeschritts, wie durch normale Kompilierer ausgeführt. Elemente der Wiedergabeliste können als Anweisungen betrachtet werden, um ein graphisches Element zusammenzusetzen oder irgendeine andere Aktion durchzuführen.
- Dort gibt es zwei Näherungen an die Wiedergabelisteerzeugung, von denen eine besser für eine Hardware-unterstützte Wiedergabeeinrichtung geeignet ist, wobei die andere für eine "Nur- Software" Anwendung geeignet ist. Beide Näherungen erfordern die Verwendung eines Wiedergabestapels zum Speichern der gegenwärtigen Ergebnisse von Zusammensetzungsarbeitsgängen für eine zukünftige Zusammensetzung. Die Software-ausgerichtete Näherung funktioniert mit dem Wiedergabestapel mit Anweisungen, die entweder ein graphisches Element auf den Stapel schieben oder einen Arbeitsgang auf die Operanden auf dem Stapel durchführen. Die Hardware-unterstützte Näherung nimmt die Verwendung einer "Anhäufungseinrichtung" an. Anweisungen laden entweder ein graphisches Element oder setzen ein graphisches Element in der Anhäufungseinrichtung zusammen, schieben die Inhalte der Anhäufungseinrichtung auf den Wiedergabestapel oder setzen ein herausgeholtes Element vom Stapel auf die Anhäufungseinrichtung.
- Wenn ein gerichteter azyklischer Graph erlaubt ist, wird natürlich der Wiedergabestapel selbst nicht ausreichend sein und zusätzlicher temporärer Speicherplatz wird zur Speicherung gemeinsamer Unterausdrücke erforderlich werden.
- Für die Hardware-unterstützte "Anhäufungseinrichtungs"- Näherung kann der "Anweisungssatz" angewendet werden, wie in Tabelle 3 gezeigt:
- Löschen acc ← Null
- Lade A acc ← A
- over A acc ← A over acc
- rover A acc ← acc over A
- in A acc ← A in acc
- rin A acc ← acc in A
- atop A acc ← A atop acc
- ratop A acc ← acc atop A
- xor A acc ← A xor acc
- plusW A acc ← A plusW acc
- plusC A acc ← A plusC acc
- out A acc ← A out acc
- rout A acc ← acc out A
- cmap M acc ← M(acc)
- Schieben Schieben bzw. Schreiben einer Kopie der Anhäufungseinrichtung in den Wiedergabestapel
- Begrenze A,n A wird auch als eine Begrenzerbahn n verwendet
- Schiebe Begrenzung n Schieben bzw. Schreiben der Begrenzerbahn n in einen Begrenzungsstapel
- Hole Begrenzung Holen von Informationen einer Begrenzerbahn aus dem Begrenzungsstapel
- In Tabelle 3 steht das Wort "acc" für die Anhäufungseinrichtung und M ist eine gewünschte Farbtransformationsfunktion.
- Die Variable A kann irgendein vordefiniertes graphisches Element sein oder es kann der Operand "(Information) holen" sein, was bedeutet, dass das gegenwärtig auf der Oberseite des Stapels befindliche graphische Element als Information geholt wird und als der Operand für die Anweisung verwendet wird.
- Alle vorstehenden Anweisungen bekommen eine Begrenzungsbox, in der sie funktionieren können.
- Die Korrespondenz zwischen einer Anhäufungs-basierten Hardware-entworfenen Näherung und einer stapelbasierten für eine Software-Anwendung entworfenen Näherung ist wie folgt:
- 1. Anweisungen "Löschen" und "Lade" folgen einander, außer die "Lösch"-Anweisung wird herausoptimiert. Sie entsprechen einem Schieben bzw. Schreiben eines Operanden in den durch einen Bereich mit Null-Undurchlässigkeit umgebenen Stapel. Die Anweisung "Löschen" kann daher für sich selbst gesendet werden, wenn es nichts zum nachfolgenden Laden gibt.
- 2. Die Anweisung "Schieben" kann übergangen werden.
- 3. Ein Operand von "(Information) holen" zu einer Anweisung, wie beispielsweise "over" bedeutet, dass die zwei obersten Elemente des Stapels zusammengesetzt werden sollten, wobei das sich ergebende zusammengesetzte Element auf dem Stapel verbleibt.
- 4. Ein Operand "A", der ein graphisches Element ist, bedeutet Schieben des graphischen Elements A auf den Stapel, dann Zusammensetzen der zwei obersten Elemente des Stapels, wobei das Ergebnis auf der Oberseite des Stapels verbleibt.
- Wenn ein Ausdruckssyntaxbaum in eine Wiedergabeliste umzuwandeln ist, werden zahlreiche Durchgänge durch den Ausdruckssyntaxbaum gemacht. Diese Durchgänge führen die folgenden Aufgaben durch:
- 1. Ausdehnen von Stammelementen, die nicht durch die Wiedergabehardware (oder Software), unterstützt sind, in Ausdrücke.
- 2. Durchführen monadischer Optimierungen.
- 3. Bestimmen der Begrenzungsbox der Blattknoten und der internen Knoten des Ausdrucksbaums.
- 4. Durchführen von Begrenzungsboxminimierungen.
- 5. Erfassen von Begrenzungsbahnen und Kennsatz-begrenzten Knoten.
- 6. Durchführen von Optimierungen.
- 7. Umwandeln des Ausdrucksbaums in eine entsprechende Wiedergabeanweisungssatzliste.
- 8. Herstellen einer sortierten Wiedergabeanweisungsliste.
- Die vorstehenden Durchgänge werden nun unter getrennten Überschriften genauer dargelegt.
- Zahlreiche Stammarbeitsgänge können möglicherweise nicht durch die Hardware- oder Softwareanwendung unterstützt werden. Ein Beispiel könnte sein, bei dem zwei unabhängige Bildelementströme kombiniert werden müssen, um einen einzelnen Operanden zu bilden. Wenn beispielsweise sowohl Färbe als auch Undurchsichtigkeit einen Teil eines Bilds bilden, aber von zwei verschiedenen Variablen kommen, kann die Hardware nicht in der Lage sein, einen Bildelementstrom, der die Farbe ausbildet, zur selben Zeit wie einen zweiten Bildelementstrom, der die Undurchsichtigkeit ausbildet, zu kombinieren. In diesen Fällen ist das Stammelement, das diese Situation darstellt, wie folgt:
- "Farbe = A, Undurchsichtigkeit = B"
- Dieses Stammelement kann an diesem Punkt durch den Ausdruck ersetzt werden:
- "(Farbe = A, Undurchsichtigkeit = vollständig undurchsichtig) in (Farbe = Null, Undurchsichtigkeit = B)".
- Der Vorgang zur Umwandlung des Ausdrucksbaums in eine entsprechende Wiedergabeliste (Durchgang 7) kann durch den folgenden Pseudocode beschrieben werden:
- In dem vorstehenden Übersetzungsvorgang erzeugt die Funktion "Umkehr(n.Arbeitsgang)" den umgekehrten Arbeitsgang zu seinem Parameter "n.Arbeitsgang". Beispielsweise wird "rover" anstelle von "over" erzeugt und "over" wird anstelle von "rover" erzeugt. Formaler, gegeben ist ein Operator "op", der umgekehrte Operator, bezeichnet "revop" ist der Operator, wie beispielsweise A op B = B revop A.
- Der vorstehende Übersetzungsvorgang wird durch Passieren der Wurzelknotens initiiert als ein Vorgang, der zuerst die Anweisung "Lösche Wurzel.Begrenzungsbox" erteilt und führt dann einen Ruf zu Mache_Knoten(Wurzel) mit dem Wurzelknoten als einem Argument durch.
- Als eine weitere Anwendungsoptimierung kann ein "Begrenzungsstapel" von Formen, auf die begrenzt wird, verwendet werden. Die Zusammensetzung irgendeines graphischen Elements, die kein Zwischenergebnis auf dem Wiedergabestapel ist, wird auf den Schnitt aller Begrenzungsformen auf dem Begrenzungsstapel begrenzt. Dies erhöht die Effizienz von Wiedergabearbeitsgängen. Wann immer daher eine Anweisung auf ein graphisches Element erzeugt wird, beispielsweise "Lade n.Operand" oder "n.Arbeitsgang n.linker-Operand", sollte durch irgendwelche "Schiebe Begrenzung"- oder "Hole Begrenzung"-Anweisungen verarbeitet werden, die erforderlich sind, um den Begrenzungsstapel in einem Zustand entsprechend dem zu setzen, in dem der Operand begrenzt werden muss.
- Bei der vorstehenden Erklärung wurde angenommen, dass jedes graphische Element ein begrifflich unendliches Ausmaß hat. Offensichtlich würde eine Zusammensetzung von zwei graphischen Elementen unendlichen Ausmaßes ein ausgedehnt größeres, wenn nicht unendliches Ausmaß an Zeit erfordern. Die Technik der Verwendung von Begrenzungsboxen wird verwendet, um die Anzahl von bei jedem Zusammensetzungsarbeitsgang enthaltenen Bildelementen bedeutend zu verringern. Der Vorgang der Begrenzungsboxminimierung ist weiterhin entworfen, den kleinsten Bereichsteil jedes graphischen Elements zu finden, der erforderlich ist, um das Endbild zu erstellen. Die Begrenzungsboxminimierung erstreckt sich auf das Finden des kleinsten Bereichs jedes internen Knotens des Ausdruckssyntaxbaums, um die Anzahl von zusammenzusetzenden Bildelementen weiter zu minimieren. Weiterhin erfasst die Begrenzungsboxminimierung dieses Zweige oder gesamte Unterbäume des Ausdruckssyntaxbaums, die nicht zum Endbaum beitragen. Der Vorgang eines Entfernens von Komponenten der durch den Ausdrucksbaum dargestellten Bildbeschreibung, wobei die Komponenten vollständig herausbegrenzt werden, wird als "Auslese" bezeichnet. Das Ergebnis des Begrenzungsboxminimierungsvorgangs besteht darin, jedem Knoten eine "Begrenzungsbox" zu geben, die der Wiedergeber vollständig füllen muss, wenn das Bild entsprechend dem Knoten erzeugt wird. Umgekehrt muss der Wiedergeber niemals außerhalb der Begrenzungsbox ziehen, wenn das Bild erzeugt wird, da die Begrenzungsbox der einzige Bereich ist, der im Wiedergabestapel gespeichert und von dort wiederhergestellt wird.
- Unter Bezugnahme auf die Fig. 15 bis 18 wird nun ein einfaches Beispiel für den Boxminimierungsvorgang erklärt.
- Seite = Text("T"); (6)
- Seite: = Text("E"); (7)
- Seite: = Text ("X"); (8)
- Seite: = Text("T"); (9)
- Seite = Bild in einer Seite; (10)
- B = Box out Kreis; (11)
- Seite = Seite over B; (12)
- Ein Ausdrucksbaum für diese Reihe von Anweisungen ist in Fig. 16 veranschaulicht.
- Der Vorgang der Begrenzungsboxminimierung findet über zwei Durchgänge statt. Der erste Durchgang ist eine Tiefen-Nach- Ordnung-Durchquerung des Ausdrucksbaums. Im ersten Durchgang wird die "natürliche" Begrenzungsbox jedes Knotens bestimmt. Für Blätter wird dies die Begrenzungsbox des graphischen Elements sein. Für interne Knoten werden die Begrenzungsboxen des linken und rechten Unterbaums auf eine Weise abhängig von dem Zusammensetzungsarbeitsgang des gegenwärtigen Knotens kombiniert. Die Kombination ist wie in Tabelle 5 dargelegt.
- over rover xor plusW plusC Begrenzungsbox von A & B
- in rin Schnitt der Begrenzungsboxen von A und B
- out ratop Begrenzungsbox von A
- rout atop Begrenzungsbox von B
- Gemäß Fig. 17 ist nun ein Beispiel für diesen Vorgang in Bezug auf die vorstehenden Anweisungen und den Ausdrucksbaum gemäß Fig. 16 gezeigt. Der erste Teil des in den vorstehenden Anweisungen zu wiederzugebenden Bilds wird das graphische Element entsprechend dem Buchstaben T 20 sein. Diese Wiedergabe wird auf einer Seite 21 auftreten und wird nur in einem vordefinierten Raum oder "Begrenzungsbox" 22 auftreten, die der einzige Teil des abtastumgewandelten Teils von T ist, der auf der Seite 21 niederzulegen ist. Die nächste Anweisung 7 kombiniert das gegenwärtige Seitenbild mit dem graphischen Element entsprechend dem Buchstaben E 24. Wieder besitzt dieser Buchstabe selbst eine vorbestimmte Begrenzungsbox 25. Die zwei Buchstaben E und T werden unter Verwendung des over-Operators 26 kombiniert. Daher wird die mit dem Knoten am over-Operator 26 gespeicherte Begrenzungsbox 27 wird eine Kombination der zwei Begrenzungsboxen 22, 25 sein. Da die Begrenzungsboxminimierungsroutine eine Tiefen-Nach-Ordnung-Durchquerung des Ausdrucksbaums durchführt, werden die nachfolgenden Knoten eines gegebenen Knotens besucht, bevor ein gegenwärtiger Knoten besucht wird, und daher wird die Routine alle Blattknoten zuerst besuchen. Für jeden der Blattknoten 28-32 wird die Begrenzungsböx des graphischen Elements, das zu übertragen ist, zuerst wie gezeigt berechnet. Folgend auf die Berechnung der Begrenzungsbox der Blattknoten werden die Begrenzungsboxen von internen Knoten berechnet.
- Nach der Berechnung der Begrenzungsbox 27 des internen Knotens 26 können die Begrenzungsboxen 27-28 wieder unter Verwendung des over-Operators kombiniert werden 34. Ähnlich ist die Begrenzungsbox 35 die Kombination der Begrenzungsboxen 29 und 34 unter Verwendung des over-Operators 37.
- Wie aus Fig. 4 ersichtlich, wenn die zwei graphischen Objekte A und B unter Verwendung des Operators "over" kombiniert werden, ist das sich ergebende Bild die Kombination von A und B mit A Vortritt nehmend< über bzw. over B. Daher wird es erforderlich sein, die Begrenzungsbox über die kombinierten Bereiche von A und B auszudehnen. Andererseits ist die Kombination von A und B unter Verwendung des "in"-Operators nur für diese Teile eines Bilds definiert, wobei sich A und B überlappen und daher die Begrenzungsbox für den kombinierten Bereich der Schnitt der zwei Begrenzungsboxen für A und B sein wird.
- Am Knoten 39 sind zwei Begrenzungsboxen 30, 35 unter Verwendung des "in"-Operators kombiniert und die sich so ergebende Begrenzungsbox 40 wird der Schnitt zwischen den zwei Bereichen 30 und 35 sein.
- Am Knoten 41 werden die zwei Begrenzungsboxen 31, 32 unter Verwendung des "out"-Operators kombiniert. Es ist aus Fig. 4 ersichtlich, dass die Begrenzungsbox 42 des Knotens 41 dieselbe wie die Begrenzungsbox 32 sein wird. Schließlich werden die Begrenzungsboxen 40-42 am Knoten 43 unter Verwendung des "over"-Operators kombiniert. Die entsprechende Begrenzungsbox 44 am Knoten 43 wird die Vereinigung der zwei Begrenzungsboxen 40-42 sein. Dies beendet den ersten Durchgang der Begrenzungsboxbestimmung. Es ist ersichtlich, dass der Begrenzungsboxvorgang eine Bestimmung einer kombinierten Begrenzungsbox von zwei graphischen Elementen enthält, wobei die Größe der kombinierten Begrenzungsbox durch den kombinierten sich ergebenden Bereich bestimmt wird, nachdem die Operatoren, wie in Fig. 4 gezeigt, verwendet wurden.
- Die zweite Stufe oder der Durchgang der Begrenzungsboxminimierung enthält eine Tiefen-Vor-Reihenfolge-Durchquerung des Syntaxausdrucksbaums. Beim zweiten Durchgang wird die Begrenzungsbox des nachfolgenden jedes internen Knotens mit der Begrenzungsbox der Mutter geschnitten. Diese Vorgang wird rekursiv ausgeführt, so daß die neue Begrenzungsbox der Tochter zum Schneiden oder Minimieren seiner Vorgänger-Begrenzungsboxen verwendet wird. Unter Bezugnahme auf Fig. 18 wird nun ein Beispiel für diesen Vorgang erklärt. In Fig. 18 ist derselbe Ausdruckssyntaxbaum wie in Fig. 16 und Fig. 17 gezeigt. Eine Tiefen-Vor-Reihenfolge-Durchquerung enthält zuerst einen Besuch des gegenwärtigen Knotens und dann seiner linken und rechten Töchter. Daher wird beginnend am Knoten 43 die Begrenzungsbox 44 mit der Begrenzungsbox 40 am Knoten 39 geschnitten und es tritt keine Änderung auf. Die Begrenzungsbox 44 wird auch mit der Begrenzungsbox 42 geschnitten und es tritt wieder keine Änderung auf. Die Begrenzungsbox 40 wird dann mit der am Blattknoten 45 gespeicherten Begrenzungsbox 30 geschnitten. Das Ergebnis dieses Schneidevorgangs ist die Begrenzungsbox 47.
- Daher ist der einzige Teil des Bilds oder graphischen Elements, der im Endbild erforderlich ist, eher der durch die Begrenzungsbox 47 definierte Teil als die alte Begrenzungsbox 30. Dies stellt eine wesentliche Ersparnis bei der Zusammensetzungszeit dar, da der Teil des Bilds 47 alles ist, dass zur Verwendung bei Zusammensetzungsarbeitsgängen erforderlich ist. Ähnlich ist am Knoten 37 die Begrenzungsbox 40 mit der Begrenzungsbox 35 (Fig. 17) kombiniert, was eine verringerte Größe von Begrenzungsbox 48 ergibt, was wieder eine bedeutende Ersparnis ergibt. Die Begrenzungsbox 48 wird dann mit der Begrenzungsbox 29 (Fig. 17) am Knoten 50 geschnitten. Der Schnitt der Begrenzungsboxbereiche 48, 29 ist der Nullbereich, der bedeut, dass der Knoten 5 keinen Teil des Endbilds bildet. Daher kann dieser Knoten (und seine Töchter, wenn es welche gibt) aus dem Gesamt -Ausdruckssyntaxbaum gelöscht werden, wobei der sich ergebende Baum eine vereinfachte Form annimmt.
- Die Begrenzungsbox 48 wird dann mit der Begrenzungsbox 34 (Fig. 17) am Knoten 36 geschnitten, wobei eine Begrenzungsbox 51 erzeugt wird, die wieder eine verringerte Größe aufweist.
- Die Begrenzungsbox 42 wird mit der Begrenzungsbox 32 (Fig. 17) am Knoten 52 kombiniert und es findet keine Verringerung statt. Die Begrenzungsbox 42 wird dann mit der Begrenzungsbox 31 (Fig. 17) am Knoten 53 geschnitten, was in einer Begrenzungsbox 54 mit verringerter Größe resultiert, verglichen mit der vorhergehenden Begrenzungsbox 31.
- Dieser Vorgang wird für jeden Knoten des Ausdrucksyntaxbaums fortgeführt, was hoffentlich wesentliche Verringerungen in diesen Bereichen ergibt, die erforderlich sind, um wiedergegeben zu werden, um einen Teil des Endbilds zu bilden. Wo zusätzlich die Begrenzungsbox auf einen Nullbereich verringert wird, können gesamte Unterbäume gelöscht werden, da diese Teile des Ausdruckssyntaxbaums keinen Teil des Endbilds bilden werden.
- Eine weitere Optimierung, die zur Verringerung der Größe von Begrenzungsboxen verwendet werden kann, besteht darin, zu erfassen, wenn einer der Operanden unter einem undurchsichtigen Objekt ist. Wenn beispielsweise der Operand ein "over"-Operand ist und die Begrenzungsbox des rechten Operanden vollständig oder teilweise durch die Begrenzungsbox des linken undurchsichtigen Operanden verdeckt wird, dann kann die Begrenzungsbox des rechten Operanden verringert oder beseitigt werden. Beispielsweise sind in Fig. 30 zwei Objekte A 100 und B 101 gezeigt, die jeweils eine Begrenzungsbox 102 bzw. 103 besitzen. In Fig. 31 ist der Arbeitsgang A over B gezeigt, in dem das Objekt B teilweise durch die durchsichtigen Teile des Objekts A verdeckt ist. Da ein wesentlicher Teil des Objekts B hinter dem undurchsichtigen Teil des Objekts A versteckt ist, kann seine entsprechende Begrenzungsbox um den Teil verringert werden, der vollständig durch das Objekt A bedeckt sein wird. Dies ist in Fig. 32 graphisch gezeigt, wobei eine Seite 105 der Begrenzungsbox für das Objekt B von 105 auf 106 verringert wurde.
- Eine einfache Form einer Anwendung dieses Vorgangs besteht darin, jeden Blattknoten des Ausdrucksbaums für graphische Elemente A zu überprüfen, die undurchsichtig sind und ihre Begrenzungsbox vollständig füllen. In diesem Fall kann die Begrenzungsbox von B verringert oder vielleicht beseitigt werden, abhängig davon, ob sie vollständig durch die von A verdeckt wird.
- Wie aus Fig. 4 ersichtlich, ist, wenn ein "in"- oder "out"- Arbeitsgang mit einem vollständig undurchsichtigen rechten Operanden durchgeführt wird, die Wirkung dieselbe, wie, wenn der linke Operand auf die Grenzen des rechten Operanden begrenzt wird. Mit dem "in"-Arbeitsgang ist die Wirkung nur, diese Teile des linken Operanden zu zeugen, die innerhalb des rechten Operanden liegen, und mit dem "out"-Operanden ist die Wirkung nur, diese Teile des linken Operanden zu zeigen, die außerhalb des rechten Operanden liegen. Wenn die Grenzen des rechten Operanden bekannt sind, dann können diese "in"- und "out"-Arbeitsgänge mit Begrenzung eher als eine Zusammensetzung durchgeführt werden.
- Ein einfaches Beispiel für diesen Vorgang wird nun unter Bezugnahme auf die Fig. 19 bis 22 veranschaulicht. Unter Bezugnahme auf Fig. 19 ist der gewünschte, durchzuführende Arbeitsgang "Quadrat im Kreis", wobei "Quadrat" das graphische Element 60 und "Kreis" das graphische Element 61 darstellt.
- Das normale Zusammensetzungsverfahren zur Anwendung dieses Arbeitsgangs ist in Fig. 20 gezeigt, wobei das graphische Element entsprechend dem Kreis 61 geladen wird und in der Bildebene 62 zusammengesetzt wird. Nachfolgend wird, wie in Fig. 21 gezeigt, das Bild 62 (Fig. 20) als eine Zugehörigkeit zum graphischen Element 60 verwendet wird, um einen Kreis 63 mit Farbdateninformationen vom graphischen Element 60 zu erzeugen.
- In Fig. 22 ist ein wirkungsvolleres Verfahren zur Durchführung des Arbeitsgangs gemäß Fig. 19 gezeigt. In diesem Fall wird das graphische Element 60 sofort gegenüber den Grenzen des graphischen Elements 61 begrenzt, um die endgültige Ausgabe 64 zu erzeugen.
- Es ist nicht immer klar, welches von Zusammensetzung oder Begrenzung das wirkungsvollere Verfahren sein würde, um sie sowohl für Computerzeit- als auch für Speicherraumerfordernisse zu verwenden. Jedoch sollten die folgenden Beobachtungen beachtet werden:
- 1. Wenn ein graphisches Element als der linke Operand eines "in"-Arbeitsgangs verwendet wird, mit einem undurchsichtigen graphischen Element als dem rechten Operanden, dann enthält eine Begrenzung eine Auswahl der sichtbaren Teile des linken Operanden und nur deren Zusammensetzung. Eine Zusammensetzung enthält andererseits ein Speichern des gegenwärtigen Bilds, ein Übertragen des gesamten graphischen Elements des rechten Operanden graphischen Elements, ein Zusammensetzen des gesamten linken Operanden und schließlich ein Wieder-Zusammensetzen des gespeicherten Bilds.
- 2. Große Einsparungen können sich aus einer Begrenzung von Bildern ergeben, da diese das Ausmaß von Bildelementdaten bedeutend verringern kann, das für eine Zusammensetzung erforderlich ist, und auch das Ausmaß von Bildelementdaten verringern kann, das vor dem Zusammensetzungsvorgang erzeugt wird.
- 3. Es kann Zeiten geben, in denen das Begrenzungsobjekt sehr komplex ist, so dass der Berechnungsüberhang beim Schneiden des zu begrenzenden Objekts mit dem Begrenzungsobjekt die Verstärkung bei einer verringerten Zusammensetzung nicht Wert ist. Dies ist ähnlich der Fall, wenn das Begrenzungsobjekt aus einem Text kleiner Größe oder sehr komplexen Bahnen besteht.
- Bei einer Anwendung der vorstehenden Begrenzungsoptimierung auf einen beliebigen Ausdrucksbaum sollte beachtet werden, dass eine Begrenzung, d. h. "in" oder "out" mit einem vollständig undurchsichtigen rechten Operanden oder umgekehrt "rin" oder "rout" mit einem vollständig undurchsichtigen linken Operanden über alle binären Zusammensetzungsoperatoren verteilend ist (d. h. diese Operatoren haben zwei Argumente). Daher gilt für ein gegebenes vollständig undurchsichtiges graphisches Element c für alle binären Zusammensetzungsoperatoren op die folgende Beziehung:
- (a op b) in c = (a in c) op (b in c) Gleichung 1
- Der Begrenzungsvorgang ist auch über alle monadischen Operatoren verteilend, angenommen, dass unsichtbare Bereiche in sichtbare Bereiche abgebildet werden. Diese letztere Fall wird als selten betrachtet und kann als ein Spezialfall behandelt werden.
- Ein Beispiel für die Begrenzung wird nun unter Bezugnahme auf die Fig. 23-24 diskutiert. Fig. 23 veranschaulicht ein Beispiel für den Zusammensetzungsvorgang für einen Teil eines Ausdrucksbaums 65. Dieser Teil des Ausdrucksbaums 65 ist mit der entsprechenden Liste von Maschinenanweisungen 66 kompiliert. Die Liste 66 enthalt das Schieben des gegenwärtigen Bilds auf den Stapel (Schieben), Übertragen des undurchsichtigen rechten Operanden zur Anhäufungseinrichtung (Lade P), Zusammensetzen des linken Operanden unter Verwendung des "in"- Operators (in B) und Wieder-Zusammensetzen des gespeicherten Bilds (rover holen).
- Fig. 24 veranschaulicht den Vorgang eines Begrenzens eher als einen Zusammensetzens, wenn der rechte Operand ein undurchsichtiges Objekt ist. In dieser Situation wird der Ausdrucksbaum 65 gemäß Fig. 23 als erstes verarbeitet, um alle Fälle zu orten, in denen ein graphisches Element gegen ein undurchsichtiges graphisches Element unter Verwendung eines "in"- oder "out"-Operators z. B. 68 (Fig. 23) begrenzt wird. In jedem Fall kann diese durch eine spezielle Knotenanzeigeeinrichtung 69 ersetzt werden und die Grenzen des Begrenzungsobjekts werden in eine separate Begrenzungsliste 70 gesetzt. Bei Kompilierung des neuen Ausdrucksbaums 67 ergibt sich dann die Codeabfolge 72. In dieser Codeabfolge wird das Begrenzungsobjekt entsprechend der Grenze von P, die in der Begrenzungsliste 70 als Element 1 gespeichert ist, als eine "Begrenzungs"anweisung in der Übertragungsliste (Begrenzung P,1) gesetzt, vor irgendeiner anderen Anweisung, die eine Begrenzung auf P enthält. Direkt vor irgend einer späteren Anweisung wird ein Element 1 der Begrenzungsliste, das der Grenze von P entspricht, auf den Begrenzungsstapel geschoben (Schiebe Begrenzung 1). Dann wird B durch die Überschneidung aller Grenzen im Begrenzungsstapel übertragen (over B), dann wird das Objekt an der Oberseite des Begrenzungsstapels als Information geholt und die Anweisungsabfolge wie in Fig. 23 fortgesetzt.
- Das folgende Schema einer Anwendung ist daher möglich:
- 1. Der Arbeitssatz von Zeigeeinrichtungen des Ausdrucksbaums wird für Bahnen gesucht, die auf die vorstehende Weise umgewandelt werden können. Wenn eine Bahn oder ein Objekt gefunden wird, wird es aus dem Satz von Arbeits-Baum- Zeigeeinrichtungen entfernt und in ein die Begrenzungsliste genanntes Feld gesetzt. Ein Index für dieses Feld (eine Begrenzungs-ID) ist im gegenwärtigen Knoten zusätzlich zu einer Aufzeichnung aufgezeichnet, ob die Optimierung ein Ergebnis eines "in"- oder "out"-Arbeitsgangs war.
- 2. Bei Rekursion den Ausdrucksbaum hinunter ist es notwendig, eine Spur der Begrenzungs-IDs irgendeines graphischen Elements zu behalten, das in ein Begrenzungsobjekt in der Begrenzungsliste umgewandelt wurde, so dass Blattknoten von nachfolgenden Teilen des Ausdrucksbaums, die eine Begrenzung durch die Begrenzungs-ID erfordern, angehängt werden können. Da irgendein anfänglich begrenzter Unterbaum weitere für eine Umwandlung in Begrenzungsumrisse geeignete Teile enthalten kann, ist es notwendig, einen Stapel von Begrenzungs-IDs beizubehalten. Wann auch immer ein graphisches Element gefunden wird, das in einen Begrenzungsumriss umzuwandeln ist, kann seine Begrenzungs-ID auf den Stapel geschoben werden, der begrenzte Unterbaum kann dann umgedreht werden und bei der Rückkehr kann die Begrenzungs-ID auf der Oberseite des Stapels als Information geholt werden. Wann auch immer der Blattknoten bei der Durchquerung aufgezählt wird, werden alle gegenwärtig zu diesem Zeitpunkt auf dem Stapel befindlichen Begrenzungs-Ids angehängt.
- 3. Wenn die Wiedergabeliste erzeugt ist, werden die für die Erzeugung jedes graphischen Elements erforderlichen. "Begrenzungs"anweisungen, die in eine Begrenzung umgewandelt und in der Begrenzungsliste gespeichert wurden, erzeugt, bevor das Element verwendet wird (wie beispielsweise am Beginn des Programms).
- 4. Der Wiedergabezeit-"Begrenzungsstapel" kann durch "Schiebe Begrenzung"- oder "Hole Begrenzung"-Anweisungen manipuliert werden, die die zahlreichen Zusammensetzungsanweisungen umgeben. Wenn ein graphisches Objekt zusammenzusetzen ist, wird es auf alle Begrenzungsobjekte im Begrenzungsstapel zu diesem Zeitpunkt begrenzt. Somit ist es bei einer Erzeugung der Wiedergabeliste von Anweisungen erforderlich, eine Spur des Zustands beizubehalten, den der Begrenzungsstapel haben wird, wenn ein graphisches Element zusammengesetzt wird. Wenn der Begrenzungsstapelzustand nicht in dem erforderlichen Zustand ist. Für monadische Operatoren, die unsichtbare Bildelemente in sichtbare Bildelemente umwandeln, ist eine zusätzliche Begrenzung bei deren Verwendung erforderlich. Das heißt, es ist notwendig, den Operator nur auf sichtbare Teile eines graphischen Elements anzuwenden und den Zustand von begrenzten Bereichen, die unsichtbar sind, zu lassen.
- Natürlich können zusätzlich zu dem vorstehenden Begrenzungsvorgang graphische Elemente aufgrund ihrer minimierten Begrenzungsboxen eine weitere Begrenzung erfordern.
- Der Anweisungssatz erzeugt eine Anweisung (cmap M) zur Veränderung der Farben von bestimmten graphischen Elementen entsprechend der durch M definierten Abbildung.
- Manchmal können Farbabbildungsarbeitsgänge, die in der Seitenbeschreibungssprache verfügbar sein können, auf der Ausdrucksbaumstufe eher als während einer Wiedergabe durchgeführt werden. Wenn es beispielsweise erforderlich ist, die Farbe des graphischen Elements durch Verwendung einer Farbkarte zu verändern, kann es möglich sein, die Farbe des Elements zu verändern, bevor der Wiedergabevorgang stattfindet und somit die Entfernung des Farbabbildungsarbeitsgangs aus dem Ausdrucksbaum zu erlauben. Jedoch kann manchmal die Farbe eines graphischen Elements mit seinen Undurchsichtigkeits- oder α- Kanalwerten in einem Farbabbildungsarbeitsgang wechselwirken. Der Farbabbildungsarbeitsgang muss sorgfältig analysiert werden, um zu bestimmen, ob er bei der Ausdrucksbaumstufe angewendet werden kann oder nicht.
- Zusätzlich kann irgendein graphisches Element vereinfacht werden, wenn seine Farbe berücksichtigt wird. Beispielsweise kann unter Bezugnahme auf Fig. 33 das allgemein als 108 bezeichnete graphische Objekt einen Bereich 109 mit einer komplexen Form von Farbmischung und einen zweiten Bereich 110 mit einer konstanten Farbmischung enthalten. Der Begrenzungsboxoptimierungsvorgang, wie vorstehend dargelegt, kann eine optimierte Begrenzungsbox 111 mit einer Grenze erzeugt haben, die nichts des Bereichs 109 umfasst. Somit kann die Farbe des Objekts 108 verändert werden, dass sie eine konstante Farbe äquivalent der des Bereichs 110 ist, wenn der entsprechende Ausdrucksbaum ausgewertet wird.
- Unterschiedliche Formen von Optimierungen sind auf dem Ausdrucksbaum möglich. Zuerst können, wie vorstehend erwähnt, diese Teile des Ausdrucksbaums, deren Begrenzungsboxen auf Null minimiert wurden, auf dem Ausdrucksbaum beseitigt werden.
- Die algebraischen Eigenschaften von Zusammensetzungsoperatoren können verwendet werden, um den Ausdrucksbaum neu anzuordnen, so dass teurere Arbeitsgänge durch wirkungsvollere Arbeitsgänge ersetzt werden, wo auch immer möglich. Diese algebraischen Eigenschaften sind Identitäten, die die Assoziativität, Kommutativität und Umkehr der zahlreichen Operatoren enthalten. Der Optimierungsvorgang enthält eine Umkehr des Baums auf eine Vor-Reihenfolge-Weise und an jedem Knoten prüft die Optimierungseinrichtung, ob jede eines von algebraischen Eigenschaften abgeleiteten Satzes von Regeln mit dem gegenwärtigen Knoten zusammenpasst. Bei Bestimmung, welche Regeln angewendet werden können, erfolgt eine Schätzung einer wahrscheinlichen Verbesserung auf Kosten einer Wiedergabe des Ausdrucksbaums durch seine Modifikation entsprechend der algebraischen Eigenschaft. Die Kosten eines gegebenen Knotens können als eine lineare Kombination der Höhe (h) und des Bereichs (hxw) der Begrenzungsbox des linken Unterbaums geschätzt werden. Wie im folgenden klarer werden wird, können die Assoziativitätseigenschaften verwendet werden, um den Ausdrucksbaum nach rechts zu wenden, um die während des Wiedergabevorgangs erforderliche Stapeltiefe bedeutend zu verringern. Ein Überlauf eines Unterbaums eines Knotens durch Anwendung eines kommutativen oder umgekehrten Operators sollte dann nur angewendet werden, wenn die Kosten ausgedrückt durch den Bereich, der zusammengesetzt werden muss, verringert werden können. Dies kann eine vergrößerte Stapeltiefe, aber entsprechende Verringerung der Ausführungszeit ergeben.
- Jeder Knoten des Ausdruckssyntaxbaums speichert die Anzahl von Abtastzeilen h und den Bereich hw der Begrenzungsbox in Bildelementen. Daher müssen zur Bestimmung der Kosten eines gemeinsamen Arbeitsgangs, wie beispielsweise "A over B", die folgenden Faktoren geschätzt werden:
- - C1over sind die Kosten pro Abtastzeile, um ein "over" auf ein einfaches graphisches Element durchzuführen.
- - C2over sind die Kosten pro Bildelement, um ein "over" auf ein einfaches graphisches Element durchzuführen.
- - C3over sind die Kosten pro Abtastzeile, um ein "over" auf ein komplexes graphisches Element durchzuführen, das aus der Kombination von vielen einfachen graphischen Elementen hergestellt ist.
- - C4over sind die Kosten pro Abtastzeile, um ein "over" auf ein komplexes graphisches Element durchzuführen.
- - h ist die Anzahl von Abtastzeilen innerhalb der Grenze von A.
- - hw ist die Anzahl von Bildelementen innerhalb der Grenze von A.
- Die Gesamtkosten sind daher wie folgt:
- Wenn das graphische Element einfach ist, dann Kosten = C1overh + C2overhw
- sonst ist das graphische Element komplex Kosten = C3overh + C4overhw
- Gleichung 2
- Die Assoziativitätseigenschaft kann verwendet werden, um den Ausdrucksbaum zu versetzen. Ein versetzter Ausdrucksbaum wird meistens in einem entsprechenden Satz von Wiedergabeanweisungen resultieren, die weniger Zeit und Speicher zur Ausführung beanspruchen. Unter Bezugnahme auf Fig. 25 ist dort ein Beispiel eines rechten Versetzens eines Teils 75 eines Ausdrucksbaums gezeigt, um einen entsprechenden rechts versetzten Teil 76 zu erzeugen. Eine Formel zur Berechnung, ob der in Fig. 25 gezeigte Arbeitsgang ausgeführt werden sollte, ist wie folgt:
- fover (A) + fover (Y) > fover (A) + fover (B) fover (Y) > fover (B)
- Gleichung 3
- wobei fover(Z) die Kosten zur Durchführung einer "over"- Zusammensetzung des graphischen Elements Z sind.
- Da die Begrenzungsbox von B immer gleich oder kleiner als Y in Teil 75 sein wird, und am häufigsten eine Zusammensetzung eines komplexen graphischen Elements schwieriger sein wird als eine Zusammensetzung eines einfachen graphischen Elements, wird dieser Assoziativitätsarbeitsgang fast immer schneller oder gleich schnell einen Ausdrucksbaum zur Wiedergabe ausbilden. Der Baum kann einfach verändert werden, indem die Zeigeeinrichtungen von 75 auf 76 verändert werden.
- In Relation zu diesen Operatoren, die kommutativ sind, kann es vorteilhaft sein, einige der Operanden eines kommutativen Operators auszutauschen. Beispielsweise werden in Fig. 26 die Operanden des "xor"-Operators bildlich ausgetauscht. Die Entscheidung zum Austausch werden von den Kosten des linken Baums und den Kosten des rechten Baums abhängen. Wenn daher
- fxor (A) > fxor (B)
- Gleichung 4
- werden die Operanden überlaufen. Dies wird am häufigsten von der zur Wiedergabe zweier Bereiche A und B erforderlichen Speichergröße abhängen und kann einfach angewendet werden, indem wieder die Zeigeeinrichtungen geändert werden, wie in Fig. 26 gezeigt.
- Manchmal kann es nützlich sein, einige Operatoren in ihre Inversen überlaufen zu lassen. Beispielsweise veranschaulicht Fig. 27 den Vorgang einer Invertierung des "in"-Operators in seine Inverse "rin" mit dem entsprechenden Überlauf von Zeigeeinrichtungen. Wieder wird eine Berechnung der vorgeschlagenen Kosten der zwei Verfahren bestimmen, ob ein Überlauf ausgeführt werden sollte. Eine Anzahl von anderen Optimierungen ist entsprechend der folgenden Reihe von Transformationen möglich:
- (a over b) over c → a over (b over c) → a over (c rover b) → c rover (a over b) → c rover (b rover a)
- (a over b) rover c → c over (a over b) → c over (b rover a) → b rover (c over a) → b rover (a rover c)
- (a rover b) over c → b over (a over c) → b over (c rover a) → c rover (b over a) → c rover (a rover b)
- (a rover b) rover c → c over (b over a) → c over (a rover b) → a rover (c over b) → a rover (b rover c)
- (a in b) in c → a in (b in c) → a in (c rin b) → c rin (a in b) → c rin (b rin a)
- (a in b) rin c → c in (a in b) → c in (b rin a) → b rin (c in a) → b rin (a rin c)
- (a rin b) in c → b in (a in c) → b in (c rin a) → c rin (b in a) → c rin (a rin b)
- (a rin b) rin c → c cin (b in a) → c in (a rin b) → a rin (c in b) → a rin (b rin c)
- (a plusC b) plusC c → a plusC (b plusC c) → a plusC (c plusC b) → b plusC (a plusC c) → b plusC (c plusC a) → c plusC (a plusC b) → c plusC (b plusC a)
- (a plusW b) plusW c → a plusW (b plusW c) → a plusW (c plusW b) → b plusW (a plusW c) → b plusW (c plusW a) → c plusW (a plusW b) → c plusW (b plusW a)
- a xor b → b xor a a plusC b → b plusC a a plusW b → b plusW a a over b → b rover a a rover b → b over a a in b → b rin a a rin b → b in a a out b → b rout a a rout b → b out a a atop b → b ratop a a ratop → b atop a
- Zusätzlich gibt es viele andere Transformationen, die angewendet werden können, insbesondere, wenn der enthaltene Unterbaum der rechte Operand eines "in"- oder "out"-Operators (oder äquivalent der linke Operand eines "rin"- oder "rout"- Operators) ist.
- Alle vorstehend erwähnten Optimierungen und Änderungen des Ausdrucksbaums können auf den Arbeitssatz von Zeigeeinrichtungen ausgeführt werden, so dass der Bedienersatz von Zeigeeinrichtungen unverändert bleibt, und daher werden die Änderungen nicht erfasst, sollte es notwendig sein, den Ausdrucksbaum zu ändern.
- Wenn einmal der Ausdrucksbaum optimiert wurde, kann er verwendet werden, um Wiedergabelistenanweisungen zu erzeugen, wie vorstehend dargelegt (Schritt 7).
- Gemäß den Figuren 28, 29 wird nun ein komplexeres Beispiel für eine Manipulation des Ausdrucksbaums offenbart. Ein Anfangsteil des Ausdrucksbaums 80 ist in eine Reihe von Zwischencodeanweisungen umzuwandeln. Ein erstes Verfahren zur Umwandlung besteht darin, nur den Teil des Ausdrucksbaums 80 in Fig. 28 zu optimieren, um einen entsprechenden optimierten Teil des Ausdrucksbaums 81 zu erzeugen. Die auf den Baum durchgeführten Optimierungen enthalten die Veränderung des Operanden 83 von "in" zu "rin" 84. Die Veränderung dieses Operators besitzt eine demfolgende Permutation seiner Operanden und tritt als ein Ergebnis des Operanden P auf, der wesentlich kleiner als der Unterbaumoperand ist, dessen Wurzel der "over"-Operator 86 ist. Der optimierte Ausdruckssyntaxbaum 81 wird dann in Zwischencodeanweisungen 87 umgewandelt. Das Grundprinzip hinter dieser Optimierung besteht darin, dass der Baum 80 zwei Schieben und Holen erfordern würde, wohingegen der Baum 81 nur eine erfordert. Der einfachere Satz von Anweisungen, der sich aus dem Baum 81 ergibt, ist somit wahrscheinlich schneller auszuführen und erfordert weniger Speicher.
- Fig. 29 zeigt alternative Formen für den Teil des Ausdrucksbaums 80, wenn ein Begrenzen verwendet wird. Es wird angenommen, dass das graphische Element P 85 ein undurchsichtiges Element ist und als ein Ergebnis das durch den "over"-Operator 86 erzeugte graphische Element unter Verwendung eines gin"- Operators 83 mit dem undurchsichtigen graphischen Element 85 kombiniert werden wird. Wie unter Bezugnahme auf die Fig. 19-22 dargelegt, kann ein Begrenzen gegen das undurchsichtige Objekt P 85 anstelle des "in"-Operators verwendet werden. Daher wird der Umriss von P in einer Begrenzungsliste gespeichert 89, zusammen mit dem in Verbindung mit dem Operanden 85 verwendeten Operator 83.
- Da der Begrenzungsarbeitsgang verteilend über alle anderen binären Zusammensetzungsoperatoren (siehe Gleichung 1) ist, kann eine Begrenzung auf P 85 über Operatoren 86, 91 verteilt werden, was darin resultiert, dass jeder der Blattknoten 92-94 zur Begrenzung gegenüber dem in der Begrenzungsliste gespeicherten Umriss 89 markiert wird.
- Der sich ergebende Ausdrucksbaum 96 kann dann optimiert werden, um einen optimierten Ausdrucksbaum 97 zu erzeugen. Der optimierte Ausdrucksbaum 97 wird aus dem Ausdrucksbaum 96 durch wiederholte Anwendung des assoziativen Regel für den "over"-Operator (wie in Tabelle 4 dargelegt) erzeugt, der die Form (A over B) over C = A over (B over C) besitzt.
- Der optimierte Ausdrucksbaum wird dann verwendet, um dann Zwischenanweisungen 98 zu erzeugen. Durch Vergleich der Anweisungsliste 87 (Fig. 28) mit der Anweisungsliste 98 (Fig. 29) kann gesehen werden, dass die Liste 87 eine Schiebeanweisung zum Schieben der gegenwärtigen Inhalte der Anhäufungseinrichtung auf den Stapel zusätzlich zum Laden oder Zusammensetzen des Gesamten von B&sub1;, B&sub2; und B&sub3; enthält, bevor sie der "rin"- Anweisung mit P als Operand unterworfen wird. Das Ergebnis dieses Arbeitsgangs wird dann mit der Oberseite des Stapel zusammengesetzt (durch die Anweisung "rover holen"). In der zweiten Reihe von Anweisungen 98 wird die Begrenzungsliste anfänglich mit dem Umriss von P geladen, A wird dann auf den gegenwärtigen Anhäufungseinrichtungsinhalten zusammengesetzt, gefolgt durch das Schieben des Umrisses von P auf den Begrenzungsstapel und eine nachfolgende Zusammensetzung von B&sub1;, B&sub2; und B&sub3; durch den Umriss von P, der auf der Oberseite des Begrenzungsstapels sein wird. Die Oberseite des Begrenzungsstapels wird dann (als Information) geholt (Anweisung "Hole Begrenzung", bevor C dann über die verbleibenden Inhalte der Anhäufungseinrichtung zusammengesetzt wird. Die Reihe von Anweisungen 98 ist wahrscheinlich wesentlich wirkungsvoller als die Reihe von Anweisungen 87, wobei Beschleunigungen durch die Verwendung der Begrenzung anstelle der Zusammensetzung und der Verwendung von assoziativen Operatoren erreicht werden.
- Wie vorstehend erwähnt, kann die aus dem Ausdrucksyntaxbaum erzeugte Anweisungsabfolge für eine Ausführung auf einer software-basierten Maschine oder eine hardware-basierten Maschine angepasst werden. Ein Beispiel für eine hardware-basierte Näherung wird nun unter Bezugnahme auf Fig. 34 offenbart. Unter Bezugnahme auf Fig. 34 ist ein Beispiel für eine Hardware- Architektur 120 gezeigt, das angepasst ist, Abfolgen von Anweisungen laufen zu lassen, wie beispielsweise in Tabelle 3 dargelegt. Die Hardware-Architektur 120 kann durch die Anpassung von Standard-Computerarchitektur-Techniken angewendet werden, wie in Standard-Textbüchern dargelegt, wie beispielsweise in den Kapiteln 3 bis 8 vom Text "Computer Architecture - A Quantitative Approach" von John Hennessy and David Patterson, 1990, veröffentlicht von Morgan Kaufmann Publishers Inc.
- Die Hardware-Architektur 120 ist erworfen, unter der Steuerung eines externen Standard-Computersystems 125 zu funktionieren, die mittels einer Eingabe/Ausgabe-Schnittstelle 123, die vom Standard-Typ sein kann, wie beispielsweise PCI oder dergleichen, eine Schnittstelle zur Hardware-Architektur 120 bildet.
- Wie vorstehend erwähnt, werden die Anweisungsabfolgen normalerweise durch eine Abtastzeilenreihenfolge und eine durch das externe Computersystem 125 für eine gegenwärtige Abtastzeile beibehaltene aktive Liste sortiert. In der Hardware- Architektur 120 werden Anweisungsabfolgen für eine bestimmte gegenwärtig aktive Abtastzeile vom externen Computersystem 125 über eine Eingabe/Ausgabe-Schnittstelle 123 in einen Anweisungsspeicher 121 geladen und die durch die Anweisungsabfolge erforderlichen graphischen Elemente werden zusätzlich zur Begrenzungsliste in einen Speichereinrichtungsspeicher 122 geladen. Der Steuerteil 126 wird dann aktiviert und beginnt ein Lesen von Anweisungen aus dem Anweisungsspeicher 121 und deren Ausführung mittels einer innerhalb des Steuerteils 126 gespeicherten mikroprogrammierten Speichereinrichtung, wobei wieder Standardtechniken verwendet werden.
- Eine Anhäufungseinrichtung 128 besitzt ausreichend Speicherraum zur Speicherung der Farbinformationen und Undurchsichtigkeitsinformationen für eine gesamte Abtastzeile. Ein Stapelspeicherraum 130 besitzt ausreichend Raum zur Speicherung einer vorbestimmten Maximalanzahl von Abtastzeilen, die die Maximaltiefe darstellen, in die der Stapel in irgendeiner Zeile wachsen wird.
- Jedesmal, wenn eine "Schiebe Begrenzung"-Anweisung in der Anweisungsabfolge durch den Steuerteil 126 aufgezählt wird, wird das innerhalb der Begrenzungsliste in dem Speichereinrichtungsspeicher 122 gespeicherte relevante Begrenzungsobjekt mit den gegenwärtigen Inhalten der Oberseite eines Begrenzungsstapels 132 geschnitten und das Ergebnis als ein neues oberstes Element des Begrenzungsstapels 132 gespeichert. Wenn eine "Hole Begrenzung"-Anweisung aufgezählt wird, wird das gegenwärtige Oberste des Begrenzungsstapels 132 als Information geholt.
- Für jede Zusammensetzungsanweisung steuert der Steuerteil 126 den Arbeitsgang einer Zusammensetzungseinrichtung 127, die die Zusammensetzungsarbeitsgänge gemäß Tabelle 1 auf zwei Bildelementfarb- und Undurchsichtigkeitsströme anwendet, wobei der erste Strom von einer Anhäufungseinrichtung 128 und der zweite Strom von einem Stapelspeicherraum 130 (wenn erforderlich) kommt. Der Steuerteil 126 bestimmt die Grenzen einer Zusammensetzung des Bildelementstroms aus dem gegenwärtigen obersten Element des Begrenzungsstapels 132. Die sich ergebende Farb- und Undurchsichtigkeitsausgabe der Zusammensetzungseinrichtung 127 wird zur Anhäufungseinrichtung 128 zurückgeführt 131.
- Wenn einmal die Anweisungsabfolge beendet wurde, informiert der Steuerteil 126 das Computersystem 125, das die Ergebnisse für die gegenwärtige Abtastzeile aus der Anhäufungseinrichtung 128 liest und das Ergebnis entweder ausgibt oder speichert, wie gewünscht.
- Das bevorzugte Ausführungsbeispiel, wie vorstehend beschrieben, wurde in einer Form dargestellt, um die Klarheit und das Verständnis für einen Fachmann der Computergraphik, Algorithmen, Datenstrukturen, Computer-Architektur und Kompiliererschreibens zu maximieren. Natürlich können viele weitere Optimierungen möglich sein. Beispielsweise kann die Verwendung einer Rekursion bei der Baumumkehr unter Verwendung bestimmter bekannter Verfahren beseitigt werden, wie beispielsweise eine Endrekursion oder ein Beibehalten von Rückwärtszeigeeinrichtungen.
- Zusätzlich ist normalerweise ein breites Spektrum von Möglichkeiten in Standardprogrammiersprachen, einschließlich Seitenbeschreibungssprachen verfügbar. Diese Möglichkeiten verändern sich normalerweise von Sprache zu Sprache und so müssen die gegenwärtigen Einzelheiten irgendeiner bestimmten Sprache nicht berücksichtigt werden. Natürlich kann ein Fachmann auf den vorstehenden Gebieten einfach die vorstehend beschriebenen Ausführungsbeispiele in einer Seitenbeschreibungssprache anwenden.
- Unter Bezugnahme auf Fig. 35 wird nun der Gesamtvorgang einer Kompilierung und Ausführung einer Reihe von Programmiersprachanweisungen erklärt werden. Zuerst werden in einem Schritt 200 die gewünschte Programmiersprachanweisungen erzeugt. Diese Anweisungen können mit Hand entsprechend einer gültigen Syntaxbeschreibung für die Programmiersprache erzeugt werden, jedoch werden sie bevorzugt unter Verwendung einer Seitenentwurfsanwendung auf normale Weise erzeugt.
- Wenn einmal eine gültige Liste von Programmiersprachanweisungen erhalten ist, kann jede Anweisung durch das Computersystem 125 interpretiert werden, wie in einem Schritt 201 angezeigt (Fig. 34), um einen entsprechenden Ausdrucksbaum zu bauen, wie vorstehend beispielsweise unter Bezugnahme auf Fig. 16 beschrieben. Die Knoten des Ausdrucksbaums können die relevanten Begrenzungsboxinformationen irgendeines an diesem Knoten zu verwendenden graphischen Elements enthalten. Der erzeugte Ausdrucksbaum wird von den syntaktischen Konstrukten der Sprache und der bestimmte Reihe von auszuführenden Anweisungen abhängig sein.
- Der Ausdruckssyntaxbaum kann dann in einem Schritt 202 durch das Computersystem 125 entsprechend den zahlreichen vorstehend unter Bezugnahme auf eine Durchführung von Durchgängen durch den Ausdruckssyntaxbaum erwähnte Optimierungen optimiert werden. Diese Optimierungen können die unter Bezugnahme auf die Fig. 17 und 18 beschriebenen Begrenzungsboxoptimierungen, die unter Bezugnahme auf die Fig. 22 bis 24 beschriebenen Begrenzungsoptimierungen und die als Beispiel unter Bezugnahme auf die Fig. 25 bis 27 beschriebenen Baumoptimierungen enthalten.
- Als nächstes kann eine Reihe von Zusammengehörigkeitssprachanweisungen in einem Schritt 203 durch das Computersystem 125 aus dem optimierten Ausdruckssyntaxbaum aus Schritt 202 erzeugt werden. Diese Anweisungen umfassen die Wiedergabeanweisungssatzliste für eine Ausführung durch die Hardware- Architektur 120.
- Wenn einmal die Wiedergabeanweisungssatzliste erzeugt wurde, kann sie in einem Schritt 204 an den Anweisungsspeicher 121 übertragen werden und irgendwelche gewünschten graphischen Elemente können zum Speichereinrichtungsspeicher 122 übertragen werden. Die Anweisungen können dann durch die Hardware- Architektur 120 ausgeführt werden, um ein wiedergegebenes Bild zu erzeugen. Nach der Bildwiedergabe kann es durch das Computersystem 125 aus dem Speichereinrichtungsspeicher 122 ausgelesen und wie in einem Schritt 205 angezeigt gespeichert, anzeigt oder gedruckt werden, wie gewünscht.
- Das Vorstehende beschreibt nur ein bevorzugtes Ausführungsbeispiel der vorliegenden Erfindung mit vielen verschiedenen Veränderungen, wohingegen weitere Veränderungen, die für den Fachmann offensichtlich sind, ohne Abweichung von der vorliegenden Erfindung, wie durch die angehängten Ansprüche definiert, erfolgen können.
Claims (15)
1. Verfahren zum Erzeugen eines aus einer Reihe von
Anweisungen und einer Vielzahl von graphischen Elementen gebildeten
Bilds, mit den Schritten:
Bestimmen (201) eines Ausdrucksbaums aus der Reihe von
Anweisungen und den graphischen Elementen für das Bilden des
Bilds durch automatische Syntaxanalyse und Ausführen der
Reihe von Anweisungen, von denen eine oder mehrere
Arbeitsgänge enthalten, die verwendet werden, den Ausdrucksbaum zu
erzeugen,
gekennzeichnet durch die weiteren Schritte
Bilden (20 bis 22, 24 bis 32, 34 bis 37, 39 bis 44, 45, 47,
48, 50, 52, 53) einer Begrenzungsbox für jedes der
graphischen Elemente in dem Baum und
Verringern (100, 101, 102, 103, 105) einer Größe der
Begrenzungsbox eines ersten graphischen Elements um den Teil,
der durch ein zweites graphisches Element verborgen wird.
2. Verfahren nach Anspruch 1, wobei
der Ausdrucksbaum interne Knoten mit verbundenen Operatoren
und die graphischen Elemente darstellende Tochterknoten
besitzt und die ersten und zweiten graphischen Elemente
Nachkommen sind.
3. Verfahren nach Anspruch 1, wobei
der Bildeschritt (20 bis 22, 24 bis 32, 34 bis 37, 39 bis
44, 45, 47, 48, 50, 52, 53) weiterhin die Schritte umfaßt:
Bilden (22, 25, 28, 29, 30, 31, 32) einer Begrenzungsbox um
Blattknoten des Ausdrucksbaums und
Erzeugen (27, 34, 35, 40, 41, 44) einer Begrenzungsbox
jedes der internen Knoten des Ausdrucksbaums aus
Tochterknoten des internen Knotens, wobei eine Größe der
Begrenzungsbox des internen Knotens von einem mit dem internen Knoten
gespeicherten Operator und der Begrenzungsbox der
Tochterknoten des internen Knotens abhängt.
4. Verfahren nach Anspruch 3, wobei
der Erzeugeschritt (27, 34, 35, 40, 42, 44) die
Begrenzungsbox von zumindest einem internen Knoten mit den
Begrenzungsboxen von zumindest einem seiner entsprechenden
Nachkommen-Knoten schneidet.
5. Verfahren nach Anspruch 4, wobei
der Erzeugeschritt (27, 34, 35, 40, 42, 44) die
Begrenzungsbox von zumindest einem internen Knoten mit den
Begrenzungsboxen von allen seinen entsprechenden Nachkommen-
Knoten schneidet.
6. Verfahren nach Anspruch 5, wobei
der Bildeschritt (20 bis 22, 24 bis 32, 34 bis 37, 39 bis
44, 45, 47, 48, 50, 52, 53) weiterhin die Schritte umfaßt:
Erzeugen (32, 40, 42, 44, 48, 51, 54) einer sich ergebenden
Begrenzungsbox aus dem Schnitt der Begrenzungsbox des
gegenwärtigen Knotens mit allen Begrenzungsboxen der Ahnen-
Knoten des gegenwärtigen Knotens für jeden der internen
Knoten des Ausdrucksbaums.
7. Verfahren nach einem der vorhergehenden Ansprüche 1 bis 6,
wobei nur der Teil jedes der graphischen Elemente, der im
endgültigen Bild erscheint, beim Bilden des Bilds verwendet
wird.
8. Vorrichtung zur Erzeugung eines aus einer Reihe von
Anweisungen und einer Vielzahl von graphischen Elementen
gebildeten Bilds, mit:
einer Bestimmungseinrichtung (125) zur Bestimmung eines
Ausdrucksbaums aus der Reihe von Anweisungen und den
graphischen Elementen für die Bildung des Bilds durch automatische
Syntaxanalyse und Ausführung der Reihe von
Anweisungen, von denen eine oder mehrere Arbeitsgänge enthalten,
die verwendet werden, den Ausdrucksbaum zu erzeugen,
gekennzeichnet durch
eine erste Bildungseinrichtung (125) zur Bildung einer
Begrenzungsbox für jedes der graphischen Elemente in dem Baum
und
einer Verringerungseinrichtung (100, 101, 102, 103, 105)
zur Verringerung einer Größe der Begrenzungsbox eines
ersten graphischen Elements um den Teil, der durch ein zweites
graphisches Element verborgen wird.
9. Vorrichtung nach Anspruch 8, wobei
der Ausdrucksbaum interne Knoten mit verbundenen Operatoren
und die graphischen Elemente darstellende Tochterknoten
besitzt und die ersten und zweiten graphischen Element
Nachkommen sind.
10. Vorrichtung nach Anspruch 8, wobei
die erste Bildungseinrichtung (125) weiterhin
eine zweite Bildungseinrichtung (125) zur Bildung einer
Begrenzungsbox um Blattknoten des Ausdrucksbaums und
eine erste Erzeugungseinrichtung (125) zur Erzeugung einer
Begrenzungsbox jedes der internen Knoten des Ausdrucksbaums
aus Tochterknoten des internen Knotens, wobei eine Größe
der Begrenzungsbox des internen Knotens von einem mit dem
internen Knoten gespeicherten Operator und der
Begrenzungsbox der Tochterknoten des internen Knotens abhängt,
umfaßt.
11. Vorrichtung nach Anspruch 10, wobei
die erste Erzeugungseinrichtung (125) eine Einrichtung zum
Schneiden der Begrenzungsbox von zumindest einem internen
Knoten mit den Begrenzungsboxen von zumindest einem seiner
entsprechenden Nachkommen-Knoten umfaßt.
12. Vorrichtung nach Anspruch 11, wobei
die erste Erzeugungseinrichtung (125) weiterhin eine
Einrichtung zum Schneiden der Begrenzungsbox von zumindest
einem internen Knoten mit den Begrenzungsboxen von allen
seinen entsprechenden Nachkommen-Knoten umfaßt.
13. Vorrichtung nach Anspruch 12, wobei
der erste Bildungseinrichtung (125) weiterhin
eine zweite Erzeugungseinrichtung (125) zur Erzeugung einer
sich ergebenden Begrenzungsbox aus dem Schnitt der
Begrenzungsbox des gegenwärtigen Knotens mit allen
Begrenzungsboxen der Ahnen-Knoten des gegenwärtigen Knotens für jeden
der internen Knoten des Ausdrucksbaums
umfaßt.
14. Vorrichtung nach einem der vorhergehenden Ansprüche 8 bis
13, mit einer Einrichtung zum Bilden des Bilds nur unter
Verwendung des Teils jedes der graphischen Elemente, der im
endgültigen Bild erscheint.
15. Computerprogramm mit einer Kodiereinrichtung zur
Durchführung aller Verfahrensschritte nach einem der Ansprüche 1
bis 7, wenn das Programm auf einem Datenverarbeitungssystem
läuft.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
AUPM7043A AUPM704394A0 (en) | 1994-07-25 | 1994-07-25 | Optimization method for the efficient production of images |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69526289D1 DE69526289D1 (de) | 2002-05-16 |
DE69526289T2 true DE69526289T2 (de) | 2002-10-02 |
Family
ID=3781566
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69526289T Expired - Lifetime DE69526289T2 (de) | 1994-07-25 | 1995-07-24 | Optimierungsverfahren für effiziente Bilderzeugung |
Country Status (4)
Country | Link |
---|---|
US (1) | US5724494A (de) |
EP (1) | EP0694880B1 (de) |
AU (1) | AUPM704394A0 (de) |
DE (1) | DE69526289T2 (de) |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AUPO002196A0 (en) * | 1996-05-22 | 1996-06-13 | Canon Information Systems Research Australia Pty Ltd | A method of optimising an expression tree for the production of images |
WO1998043208A2 (en) * | 1997-03-21 | 1998-10-01 | Newfire, Inc. | Method and apparatus for graphics processing |
US6289364B1 (en) * | 1997-12-22 | 2001-09-11 | Adobe Systems, Inc. | Transparency processing in a page description language |
AUPP366598A0 (en) | 1998-05-22 | 1998-06-18 | Canon Kabushiki Kaisha | Deriving polygonal boundaries from quadtree representation |
US6466224B1 (en) * | 1999-01-19 | 2002-10-15 | Matsushita Electric Industrial Co., Ltd. | Image data composition and display apparatus |
AUPP923799A0 (en) | 1999-03-16 | 1999-04-15 | Canon Kabushiki Kaisha | Method for optimising compilation of compositing expressions |
US6952215B1 (en) | 1999-03-31 | 2005-10-04 | International Business Machines Corporation | Method and system for graphics rendering using captured graphics hardware instructions |
AUPQ251999A0 (en) * | 1999-08-27 | 1999-09-23 | Canon Kabushiki Kaisha | Run-based compositing |
US6895127B1 (en) * | 1999-09-10 | 2005-05-17 | Arcsoft, Inc. | Photomontage using multiple layer placement and color variation |
US9894251B2 (en) * | 1999-09-22 | 2018-02-13 | Production Resource Group, L.L.C | Multilayer control of gobo shape |
US6931633B1 (en) * | 2000-08-01 | 2005-08-16 | National Instruments Corporation | System and method of evaluating the performance of an image processing algorithm |
US7126578B1 (en) * | 2001-05-17 | 2006-10-24 | Adobe Systems Incorporated | Combining raster and vector data in the presence of transparency |
AUPR963101A0 (en) * | 2001-12-19 | 2002-01-24 | Canon Kabushiki Kaisha | Overlapping triangle meshes |
US8244895B2 (en) * | 2002-07-15 | 2012-08-14 | Hewlett-Packard Development Company, L.P. | Method and apparatus for applying receiving attributes using constraints |
AU2002951651A0 (en) * | 2002-09-25 | 2002-10-10 | Canon Kabushiki Kaisha | Apparatus for printing using non-overlapping graphic objects |
AU2003248032B2 (en) * | 2002-09-25 | 2007-07-19 | Canon Kabushiki Kaisha | Apparatus for Printing Using Non-overlapping Graphic Objects |
US20070133019A1 (en) * | 2005-12-13 | 2007-06-14 | Microsoft Corporation | Transparency printing |
US20070216696A1 (en) * | 2006-03-16 | 2007-09-20 | Toshiba (Australia) Pty. Limited | System and method for document rendering employing bit-band instructions |
US8656381B2 (en) * | 2006-12-07 | 2014-02-18 | International Business Machines Corporation | Presenting machine instructions in a machine-independent tree form suitable for post-link optimizations |
US8370115B2 (en) * | 2007-05-15 | 2013-02-05 | Broadcom Corporation | Systems and methods of improved boolean forms |
US7928992B2 (en) * | 2007-05-30 | 2011-04-19 | Kabushiki Kaisha Toshiba | System and method for transparent object rendering |
US20090091564A1 (en) * | 2007-10-03 | 2009-04-09 | Raju Thevan | System and method for rendering electronic documents having overlapping primitives |
US8719701B2 (en) | 2009-01-02 | 2014-05-06 | Apple Inc. | Identification of guides and gutters of a document |
US9218680B2 (en) * | 2010-09-01 | 2015-12-22 | K-Nfb Reading Technology, Inc. | Systems and methods for rendering graphical content and glyphs |
US8442998B2 (en) | 2011-01-18 | 2013-05-14 | Apple Inc. | Storage of a document using multiple representations |
US9111327B2 (en) | 2011-01-18 | 2015-08-18 | Apple Inc. | Transforming graphic objects |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0528631B1 (de) * | 1991-08-13 | 1998-05-20 | Xerox Corporation | Elektronische Bilderzeugung |
US5500933A (en) * | 1993-04-28 | 1996-03-19 | Canon Information Systems, Inc. | Display system which displays motion video objects combined with other visual objects |
US5485568A (en) * | 1993-10-08 | 1996-01-16 | Xerox Corporation | Structured image (Sl) format for describing complex color raster images |
-
1994
- 1994-07-25 AU AUPM7043A patent/AUPM704394A0/en not_active Abandoned
-
1995
- 1995-07-21 US US08/505,752 patent/US5724494A/en not_active Expired - Lifetime
- 1995-07-24 EP EP95305142A patent/EP0694880B1/de not_active Expired - Lifetime
- 1995-07-24 DE DE69526289T patent/DE69526289T2/de not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
EP0694880A2 (de) | 1996-01-31 |
DE69526289D1 (de) | 2002-05-16 |
EP0694880B1 (de) | 2002-04-10 |
EP0694880A3 (de) | 1996-07-17 |
AUPM704394A0 (en) | 1994-08-18 |
US5724494A (en) | 1998-03-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69526289T2 (de) | Optimierungsverfahren für effiziente Bilderzeugung | |
DE69534558T2 (de) | Effizientes Verfahren, Gerät und Rechnerprogramm zur Auswertung graphischer Programmiersprache | |
DE69530149T2 (de) | Effizientes Verfahren zum Interpretieren graphischer Programmiersprache | |
DE69404469T2 (de) | Objektorientiertes zeichnungserzeugungsgerät | |
DE69434370T2 (de) | Strukturiertes Bildformat zur Beschreibung eines Komplexfarbrasterbilds | |
DE69428647T2 (de) | Verfahren und Gerät zur Erzeugung eines zweiten gemischten Bildsignals im räumlichen Kontext eines ersten Bildsignals | |
DE69525696T2 (de) | Wiedergeben von Knotenverbindungsstruktur mit einer Zone von grösseren Abständen und peripheren Zweigen | |
DE69830767T2 (de) | Verfahren und Vorrichtung zum Zusammensetzen geschichteter synthetischer graphischer Filter | |
DE69406462T2 (de) | Objekt-orientiertes graphisches system und dazu gehöriges verfahren | |
DE69225544T2 (de) | Elektronische Bilderzeugung | |
DE69606057T2 (de) | Verfahren und vorrichtung zur einführung von software-objekten | |
DE68929038T2 (de) | Verfahren zur Verarbeitung von digitalen Textdaten | |
DE69428494T2 (de) | Verfahren, System und Produkt zur Analyse ein Bild definierender Daten | |
DE69428265T2 (de) | Verfahren und system zur erzeugung, spezifizierung und generierung von parametrischen schriftarten | |
DE69312505T2 (de) | Polygonaufrasterung | |
DE69224499T2 (de) | Dreidimensionale graphische Verarbeitung | |
DE69524330T2 (de) | Anordnung von Knotenverbindungstruktur in einem Raum mit negativer Krümmung | |
DE69400230T2 (de) | Objektorientiertes konstruktivflaechensystem | |
DE69122557T2 (de) | Bilderzeugung | |
DE69831385T2 (de) | Verfahren und Anordnung zum Mischen von graphischen Objekten mit Planarkarten | |
DE68919024T2 (de) | Verfahren und Prozessor zur Abtastumsetzung. | |
DE69902262T2 (de) | Animationssystem und verfahren zum definieren und anwenden von regelbasierten gruppen von objekten | |
DE69427008T2 (de) | Verfahren zur automatischen Wiederherstellung der Konsistenz einer hierarchischen Objektstruktur in einem Computer nach Bedienereingriff und Computer mit einem derartigen System | |
DE69631718T2 (de) | Verfahren und Gerät zur leistungsfähigen Graphikdarstellung dreidimensionaler Szenen | |
DE69416152T2 (de) | Virtueller graphikprozessor und verfahren für eingebettete echtzeitanzeigesysteme |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition |