DE69129339T2 - Graphisches ausgangssystem mit begrenzter aktualisierung. - Google Patents

Graphisches ausgangssystem mit begrenzter aktualisierung.

Info

Publication number
DE69129339T2
DE69129339T2 DE69129339T DE69129339T DE69129339T2 DE 69129339 T2 DE69129339 T2 DE 69129339T2 DE 69129339 T DE69129339 T DE 69129339T DE 69129339 T DE69129339 T DE 69129339T DE 69129339 T2 DE69129339 T2 DE 69129339T2
Authority
DE
Germany
Prior art keywords
segment
segments
image
image representation
width
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 - Fee Related
Application number
DE69129339T
Other languages
English (en)
Other versions
DE69129339D1 (de
Inventor
Peter Hemingway
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Co
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Co filed Critical Hewlett Packard Co
Application granted granted Critical
Publication of DE69129339D1 publication Critical patent/DE69129339D1/de
Publication of DE69129339T2 publication Critical patent/DE69129339T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Image Generation (AREA)
  • Processing Or Creating Images (AREA)

Description

    Technisches Gebiet
  • Die vorliegende Erfindung bezieht sich auf Graphikausgabesysteme, bei denen ein begrenztes Aktualisieren des Ausgabebilds bewirkt werden kann, d. h. es kann der Bereich des Bilds, der dem Aktualisieren unterworfen ist, beschränkt werden.
  • Hintergrundtechnik
  • Es ist gut bekannt, eine innere Darstellung eines zweidimensionalen Bilds, das angezeigt werden soll, mit diskreten Graphiksegmenten aufzubauen, die sich potentiell in dem Bild überlappen. Dort wo diese Graphiksegmente als durchgehende Körper angezeigt werden sollen, ist es dann notwendig, zu bestimmen, welches Segment für den Fall eines Überlappens zwischen zwei Segmenten Priorität hat. Dieses Tiefenprioritätsproblem wird allgemein durch Zuweisen von unterschiedlichen Prioritäten zu den verschiedenen Segmenten (entweder explizit oder implizit durch eine hierarchische Organisation der Segmente) und dann durch Auflösen jeglicher Überlappungskonflikte gemäß den zugewiesenen Prioritäten der betreffenden Segmente gehandhabt. Der tatsächliche Auflösungsprozeß wird als Teil des Gesamtprozesses des Umwandelns der Graphiksegmente in ein Ausgabebild bewirkt.
  • Eine allgemeine Erörterung des Bildaufbaus aus mehreren Segmenten und des Prioritätsauflösungsproblems kann in den meisten Standardlehrbüchern über Graphiksysteme, wie z. B. "Principles of Interactive Computer Graphics" William M. Newman und Robert F Sproull, zweite Ausgabe, McGraw-Hill, gefunden werden.
  • Wenn es erwünscht ist, das Ausgabebild zu aktualisieren, wird die vorher existierende Sammlung von Graphiksegmenten beispielsweise durch Löschung oder Hinzufügung von einem oder mehreren Segmenten oder durch die Änderung der definierenden Parameter von einem oder mehreren Segmenten modifiziert. Der Prozeß des Umwandelns dieser Segmente in ein neues Ausgabebild kann dann erneut für die modifizierte Segmentsammlung ausgeführt werden.
  • Das Neuaufbauen des gesamten Ausgabebilds ist allgemeinen dort ineffizient, wo lediglich ein kleiner Teil des Bilds durch die Modifikation der Segmentsammlung betroffen ist. Dementsprechend ist es bekannt, eine Bilddarstellung zu speichern, und dann das Aktualisieren lediglich auf einen Abschnitt dieser Darstellung zu beschränken, wobei dieser Abschnitt ausreichend ist, um den betreffenden Bereich des Bilds zu umfassen. Bei einem bekannten System wird das Ausgabebild fiktiv in einen Array von rechteckigen Kacheln aufgeteilt, die Aktualisierungszonen abgrenzen; jedesmal wenn die unterlagernde Segmentsammlung modifiziert wird, wird dann ein Aktualisieren der Bilddarstellung auf eine Neuumwandlung der Aktualisierungszonen beschränkt, die von der Modifikation betroffen sind. Bei einem weiteren bekannten System, ist das Aktualisieren der Bilddarstellung auf einen rechteckigen Begrenzungskasten beschränkt, der den betroffenen Bildbereich umschließt. Beide der vorhergehenden Lösungsansätze basieren folglich auf künstlichen Grenzen, um die Aktualisierungszonen abzugrenzen.
  • IEEE Computer Graphics & Applications, Band 7, Nr. 3, Seiten 24-32, März 1987, New York, NY, USA; A. GORIS u. a. : "A Configurable Pixel Cache for Fast Image Generation" offenbart eine Anordnung, bei der ein Rechteckarray-Pixelcache zwischen einem Abtastumwandler und einem Rahmenpuffer positioniert wird. Der Pixelcache kann eine Kachel des Ausgabebilds halten, und ist daher zum Bewirken eines Aktualisierens auf der Basis von Kacheln geeignet.
  • Es ist ein Ziel der vorliegenden Erfindung ein Graphikausgabesystem zu schaffen, bei dem das Aktualisieren auf eine natürlichere Art und Weise begrenzt wird.
  • Zusammenfassung der Erfindung
  • Gemäß einem Aspekt der vorliegenden Erfindung ist ein Graphikausgabesystem mit folgenden Merkmalen geschaffen:
  • - einer Segmentspeicherungseinrichtung zum Speichern einer Sammlung von Graphiksegmenten, die zur Anzeige potentiell in einer überlappenden Beziehung in einem zweidimensionalen Ausgabebild vorgesehen sind, wobei die Graphiksegmente durch Daten spezifiziert werden, die Grenzdaten, die die Grenze jedes Segments bestimmen, und Wechselbeziehungsdaten umfassen, die jede wechselseitige Abhängigkeit von Segmenten in einer Eltern-Kind-Befestigungsbeziehung, die relativen Tiefenprioritäten der Segmente in dem Ausgabebild und jegliches Abschneiden eines Kindsegments an die Grenzen der direkten Eltern oder eines anderen Ahnensegments desselben bestimmen, wobei derartige Abschneidesegmente ein direktes oder indirektes "Hintergrund"-Segment für das betreffende Kindsegment bilden,
  • - einer Einrichtung zum Modifizieren der Sammlung von Graphiksegmenten durch Hinzufügung oder Löschung eines ausgewählten Graphiksegments und jeglicher Segmente, die von demselben abhängen, und
  • - einer wandlereinrichtung zum Aufbereiten der gespeicherten Graphiksegmente als eine Bilddarstellung, die das zweidimensionale Bild mit allen Wechselwirkungen zwischen den berücksichtigten Segmenten darstellt, wobei die Wandlereinrichtung wirksam ist, um die Bilddarstellung zu speichern, und wobei die Wandlereinrichtung auf die Modifikation der Sammlung von Graphiksegmenten reagiert, um die Buddarstellung derselben innerhalb einer Region zu aktualisieren, die durch die Grenze des ausgewählten Segments, die durch jedes Segment, das von demselben abhängt, erweitert werden kann, abgegrenzt ist.
  • Die Aktualisierungsregion ist folglich durch die natürlichen Grenzen abgegrenzt, die durch die Graphiksegmente vorgesehen werden
  • Die vorher erwähnte Bilddarstellung kann die Form einer Rahmenpufferabbildung jedes Bildpixels annehmen; die Buddarstellung ist jedoch vorzugsweise eine komprimierte Bilddarstellung, die durch eine Weitentabellenliste für jede einer Mehrzahl von Bildzeilen gebildet ist, wobei die Folge der Weiten diese Zeile bilden.
  • Bei einem Ausführungsbeispiel ist die Wandlereinrichtung als Reaktion auf die Modifikation der Sammlung von Graphikelementen durch die Hinzufügung eines neuen Segments zu derselben wirksam, um die Bilddarstellung zu aktualisieren, in dem die folgenden Segmente aus der modifizierten Sammlung aufbereitet werden:
  • - Segmente von höherer Tiefenpriorität als das neue Segment,
  • - ein Hintergrundsegment des neuen Segments, und
  • - das neue Segment selbst,
  • und in dem die aufbereiteten Segmente dann zu der Bilddarstellung geschrieben werden, jedoch lediglich innerhalb der Grenze des neuen Segments.
  • Ähnlich kann die Wandlereinrichtung als Reaktion auf die Modifikation der Sammlung von Graphiksegmenten durch die Löschung eines existierenden Segments aus derselben angeordnet werden, um die Bilddarstellung durch Aufbereiten aller Segmente aus der modifizierten Sammlung zu aktualisieren, wobei dieselben lediglich zu der Bilddarstellung innerhalb der Grenze des gelschten Segments geschrieben werden.
  • Bei beiden vorhergehenden Fällen begrenzt die Wandlereinrichtung vorteilhaft das Überschreiben der Bilddarstellung auf innerhalb der Grenzen des neuen/gelöschten Segments durch anfängliches Markieren der Region der Bilddarstellung, die dem neuen/gelöschten Segment als eine Wurzelregion entspricht, die durch alle Segmente überschreibbar ist, und danach Schreiben der Segmente, die aus der modifizierten Sammlung aufbereitet wurden, in die Bilddarstellung, wobei jedes Segment lediglich die Wurzelregion oder ein Segment mit niedriger Priorität überschreibt.
  • vorzugsweise verwendet die Wandlereinrichtung ein vorhergehendes Kenntnis der Zusammensetzung des aktuellen Bilds, um das begrenzte Aktualisieren zu vereinfachen. Bis dahin hält die Wandlereinrichtung Zuordnungsdaten aufrecht, die das Segment anzeigen, das bei jeder Position innerhalb des Bilds (beispielsweise können dort, wo die Bilddarstellung eine Weitentabelle ist, die Zuordnungsdaten durch Anfügen der Identität des zugeordneten Segments zu jeder Weitentabelle vorgesehen werden) erscheint.
  • Mit derartigen, zur verfügüng stehenden Zuordnungsdaten, kann die Wandlereinrichtung als Reaktion auf die Modifikation der Sammlung von Graphiksegmenten durch die Hinzufügung eines neuen Segments zu derselben nun wirken, um die Bilddarstellung durch Bestimmen aus den Zuordnungsdaten, ob das neue Segment lediglich mit einem Hintergrundsegment desselben wechselwirkt, zu aktualisieren, und wenn dies der Fall ist, fährt die Wandlereinrichtung fort, um das neue Segment aufzubereiten und die existierende Bilddarstellung mit dem neu aufbereiteten Segment zu überschreiben. Wenn die Wechselwirkung des neuen Segments nicht allein mit dem Hintergrundsegment desselben besteht, dann kann die Wandlereinrichtung angeordnet werden, um die Bilddarstellung durch Aufbereiten des neuen Segments und Überschreiben der existierenden Bilddarstellung mit dem neu aufbereiteten Segment bei Positionen zu aktualisieren, bei denen entweder das existierende Segment das Hintergrundsegment zu dem neuen Segment ist, oder das existierende Segment eine niedrigere Tiefenpriorität aufweist als das neue Segment, und entweder das gleiche Hintergrundsegment wie das neue Segment aufweist oder direkt oder indirekt auf ein Segment geschrieben wird, das das gleiche Hintergrundsegment (die Wechselbeziehungen zwischen den Segmenten können durch Bezugnahme auf die vorher erwähnten Wechselbeziehungsdaten ermittelt werden) aufweist.
  • Ähnlich kann die Wandlereinrichtung, dort wo Zuordnungsdaten verfügbar sind, als Reaktion auf die Modifikation der Sammlung von Graphiksegmenten durch die Löschung eines existierenden Segments aus derselben nun wirken, um die Bilddarstellung durch Bestimmen zu aktualisieren, ob das gelöschte Segment lediglich mit einem Hintergrundsegment desselben in dem Bild wechselwirkt, und, wenn dies der Fall ist, daß dieselbe lediglich das Hintergrundsegment neu aufbereitet, und die existierende Bilddarstellung mit dem neu aufbereiteten Hintergrundsegment dort überschreibt, wo gemäß den Zuordnungsdaten das gelöschte Segment in der Bilddarstellung erschienen ist. Vorzugsweise wird jedes Segment, um die vorher erwähnte Bestimmung zu erleichtern, mit einer Flag versehen, um anzuzeigen, ob dasselbe allein mit dem Hintergrundsegment desselben wechselwirkt, wobei die Segmentflags durch die Wandlereinrichtung jedesmal aktualisiert werden, wenn dieselbe das Bild aktualisiert. Wenn die Wechselwirkung des gelöschten Segments nicht allein mit dem Hintergrund desselben besteht, kann dann die Wandlereinrichtung angeordnet werden, um die Bilddarstellung durch Neuaufbereiten des Hintergrundsegments und jeglicher Segmente, die eine niedrigere Tiefenpriorität als das gelöschte Segment aufweisen, zu aktualisieren, wobei die neu aufbereiteten Segmente in die existierende Bilddarstellung lediglich dort geschrieben werden, wo gemäß den Zuordnungsdaten das gelöschte Segment in der Bilddarstellung erschienen ist.
  • Bei einem weiteren Ausführungsbeispiel des Graphikausgabesystems ist die Wandlereinrichtung wirksam, um die Zuordnungsdaten aufrechtzuerhalten, die sowohl das Segment der obersten Ebene, das an jeder Position innerhalb des Bilds erscheint, und jedes Segment einer nächsten Ebene anzeigen, das dem Segment der obersten Ebene bei jeder Position unterlagert ist. Bei diesem Fall ist die Wandlereinrichtung als Reaktion auf die Modifikation der Sammlung von Graphiksegmenten durch die Löschung eines existierenden Segments aus derselben für jedes Auftreten des gelöschten Segments in der Bilddarstellung als ein Segment der obersten Ebene wirksam, um dieses Auftreten durch Aktualisieren des entsprechenden Segments der nächsten Ebene auf das Segment der obersten Ebene zu ersetzen.
  • Dört wo ein Segment zusammen mit abhängigen Segmenten oder Kindsegmenten hinzugefügt oder gelöscht wird, können diese letzteren Segmente jeweils getrennt ihrerseits als neu hinzugefügte oder gelöschte Segmente verarbeitet werden. Vorzugsweise werden jedoch die Kindsegmente durch die Wandlereinrichtung zusammen mit den Eltern derselben verarbeitet, wobei die Aktualisierungsgrenze erweitert wird, um die Kinder zu umfassen.
  • Dort wo die Modifikation der Sammlung von Segmenten das Modifizieren eines existierenden Segments auf eine Art und Weise betrifft, die das Ausmaß des Erscheinens eines anderen Segments in dem Bild betrifft, wird dann diese Modifikation vorteilhaft durch die Wandlereinrichtung als die Löschung des existierenden Segments in der nicht modifizierten Form desselben und als Hinzufügung eines neuen Segments behandelt, das dem existierenden Segment in der Form desselben nach der Modifikation entspricht.
  • Kurze Beschreibung der Zeichnungen
  • Es wird nun ein Graphikausgabesystem, das die vorliegende Erfindung darstellt, durch ein nicht begrenzendes Beispiel unter Bezugnahme auf die beigefügten schematischen Zeichnungen beschrieben, in denen:
  • Fig. 1 ein funktionales Blockdiagramm des Graphikausgabesystems ist, das einen Aufbereiter zeigt, der sowohl zum Einteilen von Graphiksegmenten, die als zweidimensionales Bild dargestellt werden sollen, als auch zum Umwandeln dieser Segmente in eine Serie von Weiten dient, die in einer Weitentabelle zur Ausgabe zu einem Graphikausgabegerät gehalten werden;
  • Fig. 2 ein Diagramm ist, das die Datenfelder, die einem Graphiksegment zugeordnet sind, und die möglichen Wechselbeziehungen dieses Segments mit anderen Segmenten darstellt;
  • Fig. 3 ein Diagramm ist, das die Natur der verschiedenen Segmentwechselbeziehungen darstellt, die in Fig. 2 hinsichtlich des resultierenden, zweidimensionalen Bilds dargestellt werden, das aus den betreffenden Segmenten gebildet wird;
  • Fig. 4 ein Beispiel eines Segmentbaums zeigt, der durch den Aufbereiter von Fig. 1 gebildet wird;
  • Fig. 5 das zweidimensionale Bild zeigt, das dem Beispielsegmentbaum von Fig. 4 entspricht;
  • Fig. 6 ein Flußdiagramm ist, das den allgemeinen Verlauf des Umwandlungsprozesses zeigt, der durch den in Fig. 1 gezeigten Aufbereiter beim Bilden der Weitentabelle aus dem Segmentbaum bewirkt wird;
  • Fig. 7 ein Diagramm ist, das einen Schritt des Umwandlungsprozesses von Fig. 6 zeigt, bei dem eine Kantentabelle gebildet wird, die Kantendatensätze für alle Graphiksegmente enthält;
  • Fig. 8 ein Diagramm ist, das die Natur einer Aktivkantenliste darstellt, die während des Verlaufs des Umwandlungsprozesses von Fig. 6 gebildet wird;
  • Fig. 9 ein Diagramm ist, das die Natur der Weitentabelle darstellt, die durch den Umwandlungsprozeß von Fig. 6 erzeugt wird;
  • Fig. 10 ein Diagramm ist, das die drei verketteten Weitendatenstrukturen darstellt;
  • Fig. 11 ein Diagramm ist, das das Aufbauen einer Weitenliste der Weitentabelle für den Beispielsegmentbaum und das Bild von Fig. 4 und 5 darstellt;
  • Fig. 12 ein Diagramm ist, das darstellt, wie die Bildaktualisierungssteuerung in dem System von Fig. 1 bewirkt wird; und
  • Fig. 13 ein Flußdiagramm eines Teils eines begrenzten Aktualisierungsprozesses ist, der durch den Wandler von Fig. 1 ausgeführt wird.
  • Beste Weise zum Ausführen der Erfindung
  • Das Graphikausgabesystem, das in der Funktionsblockdiagrammform in Fig. 1 gezeigt ist, weist im wesentlichen einen Aufbereiter 11 auf, der wirksam ist, um schnittstellenmäßig eine graphische Anwendung 10 mit einem Graphikausgabegerät 12 zu verbinden, wie z. B. einer Videoanzeigeeinheit oder einem Drucker.
  • Die graphische Anwendung 10 befiehlt dem Aufbereiter 11 ein Ausgabebild aufzubauen, wobei dieser Befehl in der Form von Anweisungen ist, Graphiksegmente 21 zu erzeugen, zu modifizieren oder zu entfernen. Diese Graphiksegmente, die die einzigsten Graphiksegmente sind, die verwendet werden, um das Ausgabebild aufzubauen, werden in einem Segmenteinteiler 13 des Aufbereiters 11 erzeugt und gespeichert. Der Eintei-1er 13 teilt die Segmente 21 in einen Segmentbaum 20 ein, der, wie es im folgenden vollständiger beschrieben werden wird, die Wechselbeziehung der Segmente in dem Endbild bestimmt. Die Graphiksegmente 21 sind derart, daß sich dieselben potentiell gegenseitig in dem Endbild überlappen, derart, daß die Tiefenprioritätsauf lösung notwendig ist.
  • Jedes Graphiksegment 21 ist hinsichtlich von Grenze, Füllung und Transformation definiert. Diese Parameter werden vollständiger im folgenden beschrieben, und es ist vorläufig ausreichend, zu bemerken, daß die Parameter Grenze, Füllung und Transformation allgemein durch den Einteiler 13 in Datenstrukturen 22, 23 bzw. 24 gespeichert werden, auf die durch die Segmente 21, wie erforderlich, Bezug genommen wird.
  • Sobald die graphische Anwendung 10 das Befehlen des Aufbereiters 11 abgeschlossen hat, das gewünschte Ausgabebild hinsichtlich des Segmentbaums 20 aufzubauen, wird dieser Segmentbaum durch einen Wandler 14 des Aufbereiters 11 in eine Form umgewandelt, die zur Ausgabe zu dem Graphikausgabegerät 12 geeignet ist. Insbesondere wird der Segmentbaum in eine Weitentabelle 60 umgewandelt, in der das Bild als eine Folge von Zeilen dargestellt wird, die aus einer oder mehreren Weiten gebildet sind. Wie es im folgenden beschrieben werden wird, bildet der Wandler 14 beim Aufbauen der Weitentabelle 60 zuerst eine Kantentabellendatenstruktur 61, und dann baut derselbe jede Zeile des Ausgabebilds unter Verwendung einer Aktivkantenlistendatenstruktur 62 auf. Der Umwandlungsprozeß löst jegliche Überlappungskonflikte zwi schen den Segmenten hinsichtlich den Wechselbeziehungen und den Tiefenprioritäten derselben auf.
  • Die Bildinformationen, die in der Weitentabelle 60 enthalten sind, werden dann an das Graphikausgabegerät 12 durch einen Weitenausgabeprozeß 15 ausgegeben. Dieser Prozeß kann entweder Weiteninformationen zeilenweise ausgeben, sowie jede Zeile fertig ist, oder derselbe kann solange warten, bis die Weitentabelle abgeschlossen ist, und dann kann derselbe die Weiteninformationen an das Gerät 12 weiterleiten. Das tatsächliche Weiterleiten von Weiteninformationen wird durch ein einzelnes Primitiv "Zeichne-Weite" bewirkt, das einfach dem Ausgabegerät 12 befiehlt, eine Weite einer spezifizierten Länge zu zeichnen.
  • Das Graphikausgabegerät 12 wird allgemein Informationen puffern, die von dem Aufbereiter 11 in einem Puffer 17 empfangen werden, bevor das Endausgabebild angezeigt/gedruckt wird. Bei vielen Fällen wird der Puffer 17 ein Rahmenpuffer sein, der eine vollständige Bilddarstellung hält.
  • Der Gesamtbetrieb des Aufbereiters 11 wird durch eine Steuerungseinheit 16 gesteuert, deren Hauptfunktion darin besteht, den Betrieb der verschiedenen Elemente zu sequentialisieren. Insbesondere stellt die Steuerungseinheit 16 sicher, daß der Wandler 14 seinen Umwandlungsprozeß solange nicht startet, bis die graphische Anwendung 10 das Befehlen des Segmenteinteilers 13 bezüglich des Aufbaus des Segmentbaums 20 abgeschlossen hat. Außerdem stellt die Steuerungseinheit 16 sicher, daß der Weitenausgabeprozeß 15 mit dem Aufbauen der Weitentabelle 60 koordiniert wird. Es ist offensichtlich, daß, obwohl die Steuerungseinheit als ein getrenntes Funktionsobjekt gezeigt wurde, in der Praxis die Funktionalität desselben gut innerhalb der anderen Funktionselemente untergebracht werden kann; folglich kann der Segmenteinteiler 13 beispielsweise eine Verriegelungsanordnung implementieren, um sicherzustellen, daß die graphische Anwendung 10 und der Wandler 14 nicht gleichzeitig auf dem Segmentbaum 20 zugreifen können.
  • Aus dem vorhergehenden Überblick des Aufbereiters 11 ist ersichtlich, daß derselbe eine konzeptionell einfache Schnittstelle zwischen der graphischen Anwendung 10 und dem Graphikausgabegerät 12 vorsieht, da auf der einen Seite die Schnittstelle desselben mit der graphischen Anwendung hinsichtlich eines einzelnen Graphikelements (nämlich dem Graphiksegment 21) definiert ist, während auf der anderen Seite die Schnittstelle desselben mit dem Graphikausgabegerät 12 hinsichtlich eines einzelnen betriebsmäßigen Primitivs (Zeichne-Weite) definiert ist. Dieses letztere Merkmal stellt sicher, daß der Aufbereiter 11 zwischen den unterschiedlichen Ausgabegeräten ohne Schwierigkeit portiert werden kann.
  • Segmente und Segmenteinteiler
  • Die Merkmale und die möglichen Wechselbeziehungen eines Graphiksegments 21 werden nun unter Bezugnahme auf das Segment 21A in Fig. 2 (es sei bemerkt, daß bei der vorliegenden Beschreibung der Ausdruck "Graphiksegment" auf alle Darstellungen eines Segments angewendet wird; im Fall von Fig. 2 wird das Segment 21A hinsichtlich einer Datenstruktur dargestellt, die die Felder 28 bis 38 umfaßt, die die Parameter oder Merkmale des Segments definieren) beschrieben.
  • Das erste Feld, das dem Segment 21A zugeordnet ist, ist ein Segmentidentitätsfeld 28, das einzigartig das Segment identifiziert. Die verbleibenden definierenden Felder werden in zwei Gruppen geteilt, nämlich eine erste Gruppe von Feldern 29, 30, 31, 33, die direkt das Erscheinen des Segments in dem Endbild betreffen, und eine zweite Gruppe von Feldern 34 bis 38, die die Wechselbeziehung des Segments 21A mit anderen Segmenten in dem Segmentbaum 20 (diese Wechselbeziehungen betreffen natürlich auch, wie das Segment in dem Endbild angezeigt wird, dieser Effekt ist jedoch weniger persönlich als derselbe der Felder 29, 30, 31, 33) definieren.
  • Das Feld 29 definiert die Grenze des Segments hinsichtlich eines oder mehrerer Umrisse, die durch ihre definierenden Punkte (d. h. Scheitelpunkte) spezifiziert sind, wobei ein Punkt ein X-Y-Koordinatenpaar in einem X-, Y-Koordinatenraum ist, in dem die Abstandsbasiseinheit in jeder Koordinatenrichtung eine "Punkteinheit" ist (dies ist eine konzeptionelle Einheit, die zwischen der graphischen Anwendung 10 und dem Aufbereiter 11 verwendet wird, und die in reale Bildabmessungen auf eine Art und Weise übersetzt wird, die im folgenden beschrieben werden soll). Tatsächlich wird die Segmentdatenstruktur allgemein nicht die volle Spezifikation der Grenze enthalten, sondern wird lediglich in dem Feld 29 einen Zeiger zu einer Grenzdatenstruktur 22 halten, die den Satz oder die Sätze von definierenden Punkten enthält; diese Anordnung ermöglicht es, daß Segmente eine gemeinsame Grenzdef inition teilen. Es wird angenommen, daß die Segmentgrenze eine Breite von Null aufweist. Die Grenze eines Segments kann von einer beliebigen Form, regelmäßig oder unregelmäßig, sein.
  • Innerhalb der Grenzen desselben, enthält ein Segment eine "Füllung", die eine von drei Formen, nämlich eine durchgehende Farbe, einen Halbton oder eine Bitabbildung, sein kann. Bei dem Fall einer durchgehenden Farbfüllung wird die relevante Farbspezifikation direkt in einem Füllungsfeld 30 gehalten; für andere Füllungstypen, wird das Feld 30 einen Zeiger zu einer Füllungsdatenstruktur 23 halten, die die Natur der gewünschten Füllung spezifiziert.
  • Die Grenze und die Füllungsfelder 29, 30 definieren die Basisform und den Inhalt des Segments 21A. Die Position desselben relativ zu einem Elternsegment wird dann durch eine relative Transformationsmatrix (RTM) in einem Feld 31 spezifiziert; wiederum wird diese Spezifikation allgemein hinsichtlich eines Zeiger sein, der in dem Feld 31 gehalten wird, und der zu einer Transformationsdatenstruktur 24 zeigt.
  • Die relative Transformationsmatrix (RTM) ist eine drei mal drei Matrix der Form:
  • Sx Ry 0
  • Rx Sy 0
  • Tx Ty 1
  • Die RTM wird verwendet, um einen Punkt (und Grenzen, da dieselben vollständig aus Punkten zusammengesetzt sind) in einen Koordinatenraurn zu dem entsprechenden Punkt zu transformieren, der durch die Matrix definiert ist; Sx und Sy wenden eine Skalierung der X- und Y-Komponenten an. Tx und Ty sehen eine Verschiebung der Komponenten X und Y eines Punktes vor. Rx und Ry sind X- und Y-Scherungswerte, die in Kombination mit Sx und Sy verwendet werden, um eine Drehung vorzusehen. Die letzte Spalte der Matrix ist vorgesehen, um eine Verkettung von mehreren drei mal drei Matrizen in eine einzige Matrix durch eine einfache Matrixmultiplikation zu ermöglichen.
  • Das Feld 33 ist ein Sichtbarkeitsfeld, das verwendet wird, um ein Segment mit einer Flag zu versehen, als ein Segment, das nicht in dem aktuellen Bild angezeigt werden soll; dieses Merkmal ist von einer primären Nützlichkeit bei interaktiven Anwendungen, bei denen ein Segment lediglich vorübergehend in dem Bild verdeckt sein darf, und rasch wieder hergestellt werden muß.
  • Die zweite Gruppe von Feldern 34 bis 38 des Segments 21A definieren die Beziehung des Segments 21A mit anderen Segmenten mittels Zeigern zu diesen anderen Segmenten. Folglich enthält das Feld 34 einen Zeiger zu einem Segment 21P, das ein Elternsegment für das Segment 21A bildet. Das Feld 35 enthält einen Zeiger zu einem Geschwistersegment 215(1) des Segments 21A (d. h. ein Segment, daß die gleichen Eltern (21P) wie das Segment 21A aufweist). Die Geschwisterbezie hung der Segmente 21A und 215(1) ist in Fig. 2 durch den Pfeil 39 gezeigt. Das Geschwistersegment 215(1) kann ebenso einen Geschwisterzeiger zu einem weiteren Geschwister 215(2) enthalten. Ähnlich kann auf das Segment 21A selbst durch ein anderes Geschwister gezeigt werden (nicht gezeigt). Auf diese Art und Weise wird eine Geschwisterkette für Geschwister mit dem gleichen Elternsegment 21P eingerichtet. Tatsächlich existieren, wie es im folgenden klarer werden wird, getrennte Geschwisterketten für Geschwister, die, obwohl dieselben die gleichen Eltern aufweisen, unterschiedliche Beziehungen mit diesen Eltern aufweisen. Die Reihenfolge der Geschwister in einer Geschwisterkette bestimmt die relativen Tiefenprioritäten der Geschwister.
  • Das Segment 21A enthält ferner drei Zeiger in Feldern 36, 37 und 38 auf Kindsegmente 21C, wobei jeder Zeiger zu einem anderen Typ eines Kindsegments zeigt. Folglich zeigt das Feld 36 zu Kindsegmenten 21C, die sich in einer "Oberhalbbefestigungs"-Beziehung mit dem Segment 21A befinden, diese Beziehung ist durch einen Pfeil 40 in Fig. 2 gezeigt. Tatsächlich zeigt der Zeiger, der in dem Feld 36 enthalten ist, zu dem ersten Kind in einer Geschwisterkette 25 von allen Segmenten 21C, die dem Segment 21A durch eine Überbefestigungsbeziehung zugeordnet sind. Ähnlich zeigt der Zeiger, der in dem Feld 37 gehalten wird, zu dem ersten Kindsegment 21C in einer Geschwisterkette 26, die alle Kindsegmente enthält, die dem Segment 21A durch eine "Einschließungs"-Beziehung 41 zugeordnet sind. Wiederum zeigt der Zeiger, der in dem Feld 38 gehalten wird, zu dem ersten Kindsegment 21C einer Unterhalbgeschwisterkette 27 von Kindsegmenten, die dem Segment 21A durch eine "Unterhalbbefestigungs"-Beziehung 42 zugeordnet sind. Die Natur der Oberhalb-, der Einschließungs- und der Unterhalb-Befestigungs-Beziehung wird im folgenden beschrieben. Aus dem vorhergehenden ist sichtbar, daß das Segment 21A ein Elternsegment, keine, eines oder mehrere Geschwistersegmente und keines, eines oder mehrere Kindersegmente aufweist, die in drei Ketten 25, 26 und 27 angeordnet sind.
  • Es ist offensichtlich, daß in Fig. 2 lediglich für das Segment 21A der vollständige Satz von äußeren Beziehungen desselben beschrieben wurde, wobei bei den anderen Segmenten, die in Fig. 2 dargestellt sind, lediglich einige ihrer Wechselbeziehungen gezeigt sind.
  • Durch eine geeignete Einstellung der Eltern-, Geschwisterund Kind-Zeiger, die in den Feldern 34 bis 38 gehalten werden, ist es möglich, eine. Gruppe von Segmenten in eine azyklische Baurneinteilung wechselzubeziehen, die den Segmentbaum 20 bildet. Die Beziehungen zwischen den Segmenten in dem Baum dienen dazu, um vollständig zu spezifizieren, wie die verschiedenen Segmente einander in dem Endbild beeinflussen.
  • Die Natur der "Geschwister"-, "Einschließungs"-, "Oberhalbbefestigungs"- und "Unterhalbbefestigungs"-Bez iehungen wird nun unter Bezugnahme auf die Fig. 3 beschrieben. In dieser Figur sind ein sechseckförmiges Segment 43 und ein dreieckförmiges Segment 44 in einer Wechselbeziehung durch jede der vorhergehenden Beziehungen gezeigt. Insbesondere ist die Geschwisterbeziehung 39 in der Zeile (i) dargestellt, die Oberhalbbefestigungsbeziehung 40 ist in Zeile (ii) gezeigt, die Einschließungsbeziehung 41 ist in Zeile (iii) und die Unterhalbbefestigungsbeziehung (42) ist in Zeile (iv) gezeigt. Auf der linken Seite jeder Zeile ist die Segmentbaumdarstellung der Beziehung dargestellt. In der Mitte jeder Zeile ist die Erscheinung der Segmente in dem Ausgabebild (für eine gegebene Transformation des Segments 44 relativ zu dem Segment 43) gezeigt. Auf der rechten Seite jeder Zeile ist die Erscheinung des Segments in dem Endbild gezeigt, nachdem das sechseckförmige Segment einer Gegenuhrzeigersinndrehung um 90º unterworfen wurde.
  • Es kann aus der Zeile (i) gesehen werden, daß wenn sich ein Segment 44 in einer Geschwisterbeziehung zu einem anderen Segment 43 befindet, daß das Segment, daß sich weiter die Geschwisterkette hinunter befindet, eine niedrigere Tiefenpriorität aufweist und somit hinter dem Geschwister ange zeigt wird, daß sich weiter oben in der Geschwisterkette (mit anderen Worten das Dreiecksegment 44 wird dort hinter dem Sechsecksegment 43 angezeigt, wo diese zwei Segmente überlappen) befindet. Die Zeile (i) zeigt ferner die relative Unabhängigkeit der Segmente 43, 44 dahingehend, daß das Segment 43 räumlichen Transformationen unterworfen werden kann, ohne das Segment 44 (die Umkehrung ist ebenso wahr, obwohl dies nicht in Fig. 3 dargestellt ist) zu beeinflussen.
  • Die Zeile (ii) zeigt, daß dort, wo das Dreiecksegrnent 44 mit dem Elternsegment durch eine Oberhalbbefestigungsbeziehung verwandt ist, das Segment 44 eine höhere Tiefenpriorität als das Segment 43 aufweist und somit dort oberhalb des letzteren erscheint, wo die zwei Segmente überlappen. Außerdem ist das Segment 44 nicht auf die Grenze des Elternsegments 43 desselben beschränkt. Das Segment 44 ist jedoch ein wirkliches Kindsegment der Eltern 43 dahingehend, daß dasselbe räumlichen Transformationen unterworfen ist, die die Eltern 43 desselben erfahren; folglich wird, wenn das sechseckige Segment um 90º gedreht wird, das Kindsegment 44 ebenso gedreht und behält sein Position relativ zu dem Elternsegment 43 bei.
  • Die Einschließungsbeziehung, die in der Zeile (iii) dargestellt ist, weist Ähnlichkeiten zu der Oberhalbbefestigungsbeziehung dahingehend auf, das das Kindsegment 44 seine Eltern 43 dort überschreibt, wo die zwei Segmente überlappen. Zu diesem Zeitpunkt wird jedoch das Kindsegment 44 an die Grenze seiner Eltern 43 abgeschnitten (d. h. dasselbe erstreckt sich nicht über die Grenze der Eltern desselben). Wie bei allen Kindern ist das eingeschlossene Kindsegment 44 räumlichen Transformationen unterworfen, die die Eltern 43 desselben erfahren, derart, daß eine Drehung der letzteren um 90º ferner bewirkt, daß das Segment 44 gedreht werden muß, um die Position desselben relativ zu seinem Elternsegment 43 beizubehalten.
  • Die Zeile (iv) zeigt, daß dort, wo ein Kindsegment 44 sich in einer Unterhalbbefestigungsbeziehung zu seinen Eltern 43 befindet, die Eltern eine höhere Tiefenpriorität dort aufweisen, wo die zwei Segmente überlappen, diese werden daher oberhalb des letzteren in dem Endausgabebild angezeigt. Wie bei der oberhalbbefestigungsbeziehung ist für die Unterhalbbefestigungsbeziehung das Kindsegment 44 nicht durch die Grenzen seiner Eltern 43 beschränkt, und dasselbe kann sich über die Grenzen der letzteren erstrecken. Dies steht im Kontrast zu der Einschließungsbeziehung, bei der das Kind natürlich an die Grenze seiner Eltern abgeschnitten wird. Die Unterhalbbefestigungsbeziehung führt wie die anderen Eltern-Kind-Beziehungen dazu, daß das Kindsegment 44 räumlichen Transformationen unterworfen ist, die durch die Eltern desselben erfahren werden, derart, daß beispielsweise eine Drehung des Elternsegments 43 um 90º dazu führt, daß das Kindsegment ebenso gedreht wird und seine Position relativ zu seinen Eltern beibehält.
  • Ein Kindsegment erbt, genauso wie dasselbe die im vorhergehenden beschriebene direkte Beziehung mit den Eltern hat, folgendes von seinen Eltern:
  • (a) die räumliche Transformation, die durch die Eltern der Eltern desselben vererbt werden, wodurch die Endbild- Position, -Ausrichtung und -Größe eines Segments durch die Kombination aller räumlicher Transformationen der Ahnen desselben zusammen mit der räumlichen Transformation des Segments relativ zu den Eltern desselben bestimmt wird, (hinsichtlich der RTMS der Segmente ist die Gesamttransformation eines Segments eine Verkettung der relativen Transformationsmatrizen von allen Ahnen desselben zusammen mit der eigenen RTM, so daß sich eine kumulative Transformationsmatrix ergibt, auf die hierin als Verkettungstransformtionsmatrix oder CTM (= Concatenation Transformation Matrix) Bezug genommen wird); (b) die Tiefenprioritäts- und Abschneide-Einschränkungen, denen die Eltern desselben unterworfen sind, wobei dies von einer besonderen Relevanz für jedes Kind ist, das mit seinen Eltern durch eine Oberhalb- oder Unterhalb- Befestigungsbeziehung verwandt ist, da dieselben das Abschneiden und Überschreiben des Kinds über die Grenzen der Eltern desselben bestimmen.
  • Das letztere Erbe gibt den Anlaß für das Konzept, das jedes Kindsegment ein "Hintergrund"-Segment aufweist, das das Kind überschreiben kann, das jedoch ferner das Kindsegment derart abschneidet, so daß dasselbe innerhalb der Grenze des Hintergrundsegments liegt. Dort wo ein Kindsegment seinen Eltern durch eine Einschließungsbeziehung zugeordnet ist, bilden dann die Eltern ferner das Hintergrundsegment für das Kind. Dort wo jedoch das Kind seinen Eltern durch eine Oberhalb- oder Unterhalb-Befestigungsbeziehung zugeordnet ist, ist jedoch dann das Hintergrundsegment für das Kind nicht die Eltern desselben jedoch das erste Ahnensegment, das durch eine Einschließungsbeziehung erreicht wird, wenn man den Segmentbaum von dem betreffenden Kindsegment aufsteigt; tatsächlich ist diese letztere Identifikation eines Hintergrundsegments eines Kinds im allgemeinen wahr, da dort, wo das Kind mit seinen Eltern durch eine Einschließungsbeziehung verwandt ist, dann das erste Ahnensegment, das durch das Kind quer zu einer Einschließungsbeziehung erreicht wird, natürlich die Eltern des Kinds sein werden.
  • Fig. 4 und 5 zeigen ein Beispiel eines Segmentbaums und des entsprechenden Ausgabebilds. In dem Segmentbaum von Fig. 4 wurden die Segmente durch die Umrisse derselben dargestellt, und dieselben wurden mit Identifikationsbuchstaben "a" bis "m" bezeichnet, wobei diese identifizierenden Buchstaben innerhalb der Segmentgrenzen unterstrichen gezeigt sind. Ferner befindet sich innerhalb jeder Segmentgrenze ein (Zahl, Buchstabe)-Paar, das in Klammern gezeigt ist; der Buchstabe dieses Paars identifiziert das Hintergrundsegment des betreffenden Segments, während die Zahl in dem (Zahl, Buchstabe)-Paar eine Verarbeitungsreihenfolgezahl ist, deren Zweck im folgenden beschrieben wird.
  • Das Segment "a" des Segmentbaums von Fig. 4 ist das Wurzelsegment des Baums und ist daher von einer besonderen Wichtigkeit. Die Skalierungsfaktoren, die in der relativen Transformationsmatrix des Wurzelsegments enthalten sind, definieren effektiv die Skalierung zwischen den inneren Punkteinheitsabmessungen, die durch den Aufbereiter 11 verwendet werden, und den Abmessungen des Ausgabebilds, das durch das Graphikausgabegerät 12 angezeigt wird. (häufig durch Pixel dargestellt). Zusätzlich wird die Größe des Wurzelsegments, wie durch die Grenze desselben definiert, allgemein eingestellt, um vollständig den potentiellen Ausgabebildbereich einzunehmen, der durch das Ausgabegerät 12 (nach einer geeigneten Skalierung, wie es in der RTM der Wurzel definiert ist) zur Verfügung gestellt wird. Allgemein werden alle anderen Segmente des Segmentbaums direkt oder indirekt dem Wurzelsegment durch eine Einschließungsbeziehung 41 zugeordnet, derart, daß dieselben abgeschnitten werden, so daß dieselben innerhalb der Grenze des Wurzelsegments liegen. Die einzigsten Segmente, die normalerweise an dem Wurzelsegment durch eine Oberhalbbefestigungsbeziehung befestigt werden, sind Segmente, die einer raschen Bewegung quer zu dem Ausgabebild (beispielsweise Cursor (= Schreibmarken) bei interaktiven Anwendungen) unterworfen sind. Da das Wurzelsegment im allgemeinen vollständig das Ausgabebild einnimmt, wird die Unterhalbbefestigungsbeziehung nicht direkt von dem Wurzelsegment verwendet.
  • Fig. 5 zeigt das Wurzelsegment "a" als ein Rechteck, das die Grenzen des Ausgabebilds eingrenzt, wobei alle anderen Segmente innerhalb des Wurzelsegments enthalten sind.
  • Das Segment "c" ist tatsächlich das einzigste Segment in einer direkten Einschließungsbeziehung mit dem Wurzelsegment. Wie es sichtbar ist, weist das Segment "c" drei Grup
  • pen von Kindern nämlich eine Oberhalbgruppe, die oberhalb des Segments "c" erscheinen kann (Segmente b, e, f, j), eine eingeschlossene Gruppe von Segmenten, die an der Grenze desselben abgeschnitten werden, jedoch das Segment "c" (Segmente g, h, 1, m, k) überschreiben können, und eine Gruppe von Unterhalbsegmenten auf, die unterhalb des Segments "c" (Segmente d und i) erscheinen. Die Bewegung des Segments "c" innerhalb des Wurzelsegments "a" (durch Modifikation der RTM des Segments "c") führt dazu, daß alle Kindsegmente ebenso bewegt werden.
  • Der Aufbau des Ausgabebilds von Fig. 5. aus dem Segmentbaum von Fig. 4 sollte mit Bezug auf die vorhergehende Beschreibung, die die Natur der möglichen Beziehungen zwischen den Segmenten betrifft, offensichtlich werden. Dementsprechend wird eine detaillierte Beschreibung der Fig. 4 und 5 hierin nicht angegeben. Eine Anzahl von wesentlichen Merkmalen sind jedoch im folgenden bemerkt.
  • Die relativen Tiefenpriortäten von Geschwistern sind in den Fig. 4 und 5 durch die Segmente "e" und "f" dargestellt. Wie sichtbar ist, ist das Segment "f" ein Geschwister des Segments "e", dasselbe weist jedoch eine niedrigere Tiefenpriorität auf, da dasselbe weiter unter in der Geschwisterkette für eingeschlossene Kettensegmente des Elternsegments "b" erscheint. Dementsprechend wird dort, wo die Segmente "e" und "f" überlappen, das Segment "e" in dem Ausgabebild angezeigt. Das Segment "e" überlappt ferner das eingeschlossene Kind des Segments "f", wobei dieses Kind das Segment "j" (Segment "e" würde ferner alle oberhalb oder unterhalb liegenden Kinder von Segment "f" überlappen) ist.
  • Das Segment "1" zeigt ein Segment, das mit seinen Eltern durch eine Oberhalbbefestigungsbeziehung verwandt ist, und dasselbe stellt die Tatsache dar, daß ein derartiges Segment, obwohl dasselbe eine Priorität gegenüber seinen Eltern aufweist, wenn sie überlappen sollten, tatsächlich nicht seine Eltern überlappen muß; ob eine Überlappung auftritt oder nicht, hängt von der relativen Transformationsmatrix des Kindsegments "1" ab.
  • Das Segment "m" ist ein Segment, das sich in einer Oberhalbbefestigungsbeziehung zu dem Segment "1" befindet, das, wie schon bemerkt, sich ebenso in einer Oberhalbbefestigungsbeziehung zu dem Segment "h" befindet. Beide dieser Segmente werden auf dem Segment "c" geschrieben, das das Hintergrundsegment für das Segment "1" und "m" bildet. Wie es mit Bezug auf das Segment "m" sichtbar ist, wird ein Segment durch das Hintergrundsegment desselben abgeschnitten, sogar wenn das Letztere sich nicht in einer direkten Einschließungsbeziehung befindet.
  • Zurückkehrend nun zu der Betrachtung von Fig. 1, wird der Segmenteinteiler 13 allgemein die Form eines geeigneten Programmcodes annehmen, der auf einem Allgemeinzweckprozessor läuft, und der verantwortlich ist, um Befehle zu erzeugen, zu modifizieren und von der graphischen Anwendung zu entfernen, um einen Segmentbaum 20 aufzubauen. Insbesondere kann der Segmenteinteiler 13 in einem objektorientierten Ideom implementiert werden, mit Klassenobjekten, die vorgesehen sind, um Segment-, Grenz-, Füllungs- und Transformations-Fallobjekte, wie erforderlich, zu erzeugen. Bei diesem Fall, bei dem z. B. die graphische Anwendung 10 ein neues Segment erzeugen möchte, und dasselbe zu einer existierenden Baumstruktur hinzufügen möchte, führt dieselbe dies zuerst durch Benachrichtigen der Klassenobjekte für eine Transformation, eine Füllung und eine Grenze durch, um geeignete Fälle der Transformation, Füllung und Grenze (unter der Annahme, daß geeignete Fälle nicht schon existieren) zu erzeugen. Durch Benachrichtigen der Klassenobjekte, um die geeigneten Transformations-, Füllungs- und Grenz-Fälle zu erzeugen, wird die Anwendung 10 die notwendigen Daten liefern. Als nächstes benachrichtigt die Anwendung 10 das Segmentklassenobjekt, indem es dasselbe auffordert, einen neuen Segmentfall unter Verwendung der neu erzeugten Grenz-, Füllungs- und Transformations-Fälle und mit Zuordnungen mit anderen Segmenten, wie durch die Anwendung 10 definiert, zu erzeugen. Beim Erzeugen eines neuen Segments kann es beispielsweise notwendig sein, das Segment derart zu spezifizieren, daß dasselbe eine höhere Geschwisterpriorität als existierende Geschwister aufweist. Dies wird natürlich Zeigereinstellungen in den existierenden Eltern- und Geschwister-Segmenten erfordern. Eine derartige Einstellung kann durch die Segmentaugenblicksobjekte selbst durch geeignetes Benachrichtigen zwischen den Objekten gehandhabt werden. Implementationsdetails einer derartigen obj ektorientierten Version des Segmenteinteilers 13 werden Fachleuten offensichtlich sein, und werden daher im folgenden hierin nicht weiter beschrieben.
  • Es sei bemerkt, daß zu dem Zeitpunkt, zu dem der Segmentbaum 20 durch den Einteiler 13 als Reaktion auf Anweisungen auf der graphischen Anwendung 10 aufgebaut wird, gewisse Datenelemente berechnet werden können, um einen folgenden Betrieb des Wandlers 14 zu erleichtern. Insbesondere können die Verkettungstransformationsmatrix und das Hintergrundsegment jedes Segments bestimmt und zur Verwendung durch den Wandler 14 in einem Cache gespeichert werden. Bei dem vorliegenden Ausführungsbeispiel werden diese Elemente jedoch durch den Wandler 14 selbst bestimmt.
  • Umwandlung in die Weitentabelle
  • Der Wandler 14 bewirkt einen Umwandlungsprozeß, durch den die Segmente des Segmentbaums 20 in einen Satz von Bildzeilen umgewandelt werden, wobei jede derselben durch eine Weitenliste dargestellt wird, die eine oder mehrere Weiten enthält, wobei die Weitenliste in der Weitentabelle 60 gespeichert wird. Bei diesem Umwandlungsprozeß werden Segmente korrekt in dem Endbild positioniert, wobei jegliche Überlappungskonflikte aufgelöst werden, und die Segmente von inneren Punkteinheitskoordinaten zu Gerätskoordinaten skaliert werden. Die Gerätskoordinaten sind allgemein hinsich tlich von Pixeln in einem X-, Y-Koordinatenbezugsrahmen spezifiziert. Die Bildzeilen, die durch die Weitenlisten dargestellt werden, erstrecken sich in der Y-Koordinatenrichtung des Gerätsbezugsrahmens (dies liegt daran, daß der Puffer 17 allgemein derart eingeteilt sein, daß Pixel auf der gleichen Bildzeile in dem Puffer benachbart sind, wodurch die Zugriffseffizienz erhöht wird); es ist offensichtlich, daß unter geeigneten Umständen die Weitenlisten derart angeordnet werden könnten, so daß sich dieselben in der X-Koordinatenrichtung erstrecken.
  • Das allgemeine Fortfahren des Umwandlungsprozesses ist in Fig. 6 dargestellt. Der erste Schritt des Umwandlungsprozesses dient dazu, daß die Segmente in der Reihenfolge numeriert werden, in der dieselben verarbeitet werden (Schritt 50). Danach werden die CTM und das Hintergrundsegment bestimmt (tatsächlich kann diese Bestimmung zweckmäßigerweise während des Segmentnumerierens durchgeführt werden, und daher ist dieselbe als Teil des Schritts 50 gezeigt). Als nächstes wird eine Kantentabelle gebildet, die Kantendatensätze aller definierenden Kanten aller Segmente (Schritte 51 und 52) enthält. Schließlich wird die Weitentabelle eine Zeile nach der anderen durch Untersuchen der Kantendatensätze der Kanten aufgebaut, die die aktuelle, interessierende Bildzeile (Schritte 53-55) schneiden.
  • Betrachtet man die erste Segmentverarbeitungsreihenfolgezahl (Schritt 50) besteht der allgemeine Zweck hier darin, sicherzustellen, daß die Segmente in ihrer Tiefenprioritätsreihenfolge verarbeitet werden, derart, daß Überlappungskonflikte ohne weiteres aufgelöst werden, dadurch, daß es nicht ermöglicht wird, daß anschließend verarbeitete Segmente vorher verarbeitete Segmente überschreiben. Es ist jedoch, da eingeschlossene Kinder und ihre Nachkommen an die Grenze der eingeschlossenen Ahnen abgeschnitten sind, für ein Hintergrundsegment notwendig, das dasselbe vor den eingeschlossenen Kindern desselben (und ihren Nachkommen) verarbeitet wird, selbst wenn die letzteren die ersteren überschreiben, da sonst die Abschneidegrenze in Bildkoordina tenausdrücken zu dem Zeitpunkt nicht bekannt wäre, zu dem die eingeschlossenen Kinder verarbeitet wurden. Diese Erfordernis führt zu der Grundschreibregel, daß später verarbeitete Segmente nicht früher verarbeitete Segmente überschreiben können, die unter der Bedingung modifiziert wurden, daß ein Segment sein Hintergrundsegment überschreiben kann.
  • Beim Numerieren der Segmente wird der Baum von dem Wurzelsegment durchlaufen. Für jedes Segment wird die folgende Regel dann unter Berücksichtigung des Vorrangs der Numerierung von zugeordneten Segmenten angewendet:
  • - oberhalb liegende Kinder des betrachteten Segments (und alle ihre Nachkommen) werden zuerst numeriert;
  • - danach wird das betrachtete Segment numeriert;
  • - als nächstes werden die eingeschlossenen Segmente des betrachteten Segments (und deren Nachkommen) numeriert;
  • - schließlich werden die unterhalb liegenden Segmente des betrachteten Segments (und deren Nachkommen) numeriert.
  • Unter Berücksichtigung der Geschwister werden dieselben startend an dem Kopf der Liste derart gehandhabt, daß das Geschwistersegment an dem Kopf der Liste und alle Nachkommen desselben numeriert werden, bevor das zweite Geschwister (und alle Nachkommen desselben) numeriert wird, usw. für andere Geschwister in der gleichen Geschwisterliste. Der Durchlaufnumerierungsalgorithmus kann formaler durch den folgenden Pseudocode dargestellt werden:
  • PROCNUM Rekursive Routine zum Zuordnen einer Verarbeitungsreihenfolgezahl.
  • "This Seg" Aktuelles Elternsegment - lokal
  • "S" - Interessierendes Kind - lokal
  • "Number" - Verarbeitungsreihenfolgezahl - global
  • 1. Startend mit 5, das auf das erste oberhalb liegende Kind von This_Seg eingestellt wird, Wiederholen des folgenden bis keine oberhalb liegenden Kinder von This_Seg vorhanden sind, wobei 5 auf das nächste oberhalb liegende Kind vor jeder Wiederholung eingestellt wird:
  • - Ausführen der Routine PROCNUM für das Segment 5 als das aktuelle Elternsegment.
  • 2. Inkrementieren der Zahl.
  • 3. Zuordnen der Zahl als Verarbeitungsreihenfolgezahl von This_Seg.
  • 4. Startend mit 5, das auf das erste eingeschlossene Kind von This_Seg eingestellt ist, Wiederholen des folgenden, bis keine eingeschlossenen Kinder von This_Seg mehr vorhanden sind, wobei 5 auf das nächste eingeschlossene Kind vor jeder Wiederholung eingestellt wird:
  • - Ausführen der Routine PROCNUM für das Segment 5 als das aktuelle Elternsegment.
  • 5. Startend mit 5, das auf das erste unterhalb liegende Kind von This_Seg eingestellt ist, Wiederholen des folgenden bis keine unterhalb liegenden Kinder von This_Seg mehr vorhanden sind, wobei 5 auf das nächste unterhalb liegende Kind vor jeder Wiederholung eingestellt wird:
  • - Ausführen der Routine PROCNUM für das Segment 5 als das aktuelle Elternsegment.
  • Unter Verwendung der zugeordneten Verarbeitungsreihenfolge zahl kann das Ausgabebild von dem Segmentbaum aus gemäß der oben beschriebenen Schreibregel, daß ein später verarbeitetes Segment kein früher verarbeitetes Segment überschreiben kann, ausgenommen dort, wo das frühere Segment das Hintergrundsegment des später verarbeiteten Segments ist, entworfen werden.
  • Die vorhergehende Schreibregel zum Umwandeln eines Segmentbaums zu einem Bild ist ungeachtet der Prozeßdetails, die mit dieser Umwandlung einhergehen, anwendbar. Mit anderen Worten ist dieselbe nicht nur für das Verarbeiten anwendbar, das durch den Wandler 14 bewirkt wird., sondern ferner für das physische Entwerfen eines Bilds per Hand aus einem Segmentbaum. Dies wird ohne weiteres offensichtlich sein, wenn der Leser die Fig. 5 arbeitend von dem Segmentbaum von Fig. 4 aus unter Verwendung der Verarbeitungsreihenfolgennumerierung reproduziert, mit denen die Segmente (diese Numerierung wurde gemäß dem obigen Numerierungsalgorithmus bestimmt) schon beschriftet wurden.
  • Nachdem die Segmente numeriert wurden (oder, wie schon gezeigt, übereinstimmend mit dieser Numerierung), werden die CTM und der Hintergrund jedes Segments bestimmt. Jede Bestimmung kann ohne weiteres unter Verwendung eines Stapels (eine Zuletzt-Hinein-Zuerst-Heraus oder LIFO-Datenstruktur) erreicht werden.
  • Folglich wird unter Berücksichtigung der CTM-Bestimmung die RTM des Wurzelsegments (was ferner die CTM desselben ist) zuerst in einen CTM-Stapel gestellt, und der Segmentbaum wird dann durchlaufen. Jedesmal, wenn ein Segment zuerst durch Erreichen mittels Abwärtsgehen in einer Eltern-Kind- Beziehung oder quer zu einer Geschwisterbeziehung angetroffen wird, wird die CTM desselben durch Kombinieren der RTM desselben mit der CTM an dem oberen Ende des CTM-Stapels bestimmt. Die neu bestimmte CTM wird dann mit Segmentdaten in einem Cachespeicher gespeichert, und zusätzlich auf dem oberen Ende des Stapels plaziert. Jedesmal wenn ein Segment durch Aufwärtsgehen einer Eltern-Kind-Beziehung oder durch Kreuzen einer Geschwisterbeziehung verlassen wird, dann wird die CTM desselben von dem oberen Ende des CTM-Stapels entfernt.
  • Eine Hintergrundsegmentbestimmung wird auf eine gleiche Art und Weise mit einem Hintergrundstapel bewirkt, der initiahsiert wird, um sich zu leeren, bevor der Durchlauf des Segmentbaums begonnen wird. Jedesmal wenn eine Eltern-Kind-Einschließungsbeziehung abwärtsgegangen wird, wird die Identität der Eltern in den Hintergrundstapel eingegeben, während jedesmal, wenn eine Einschließungsbeziehung aufwärtsgegangen wird, der oberste Stapeleintrag entfernt wird. Der oberste Eintrag in dem Hintergrundstapel identifiziert das Hintergrundsegment für das Segment, das aktuell während des Durchlaufs des Baums erreicht wird; die Identität eines Hintergrunds eines Segments wird mit den Segmentdaten in einem Cachespeicher gespeichert.
  • Nachdem die Segmente numeriert wurden, und die CTMS und die Hintergründe derselben bestimmt wurden, wird die Kantentabelle 61 erzeugt und gefüllt (Schritte 51 und 52). Die Kantentabelle ist eine Datenstruktur, die einen Eintrag für jede Y-Koordinatenzeile des Ausgabebilds enthält. Der Eintrag für jede Zeile ist eine Liste von allen Segmentkanten, die in Gerätskoordinatenausdrücken ihre Start-Y-Koordinate auf dieser Zeile aufweisen, wobei diese Liste durch eine verbundene Liste von Kantendatensätzen 63 gebildet wird, wobei auf den ersten Kantendatensatz in der Liste durch einen Zeiger gezeigt wird, der in der Kantentabellendatenstruktur 61 gehalten wird. Wenn es keine Kanten mit einer Start-Y-Koordinate gibt, die einer speziellen Y-Koordinatenzeile entspricht, wird der entsprechende Eintrag in der Kantentabelle auf Null eingestellt.
  • Jeder Kantendatensatz 63 enthält Daten, die die entsprechende Segmentkante in Gerätskoordinatenausdrücken zusammen mit der Identität des Segments enthalten, von dem die Kante stammt, vorzugsweise die Verarbeitungsreihenfolgenummer und der Hintergrund dieses Segments (obwohl diese letzteren Elemente immer durch Bezugnahme auf das Segment selbst erhalten werden können, wenn dies erforderlich ist).
  • Die Kantentabelle wird durch Verarbeiten jedes Segments der Reihe nach gemäß der Verarbeitungsreihenfolge bevölkert. Tatsächlich spielt dort, wo das gesamte Ausgabebild aufbereitet werden soll, die Reihenfolge, mit der die Segmente verarbeitet werden, um die Kantentabelle zu bilden, keine Rolle. Um ein Segment zu verarbeiten, wird jede Kante oder jeder Umriß, der die Segmentgrenze bildet, in die Ausgabebildform durch Anwenden der CTM des Segments transformiert, und Daten, die die resultierende Kante kennzeichnen, werden in einem entsprechenden Kantendatensatz 63 gespeichert. Dieser Datensatz wird dann in die Kantentabelle 61, wo es geeignet ist, eingefügt.
  • Fig. 7 stellt das Verarbeiten eines Segments dar, um die Kanten desselben in die Kantentabelle 61 einzugeben. Wie sichtbar ist, ist die Grenze 70 des Segments aus sechs Kanten 71-76 zusammengesetzt. Die Kanten 71 und 72 weisen die gleiche Start-Y-Koordinate auf, und werden dementsprechend als Kantendatensätze 63 in die gleiche Kantenliste der Kantentabelle 61 eingegeben. Ähnlich weisen die Kanten 73 und 74 die gleiche Start-Y-Koordinate auf, was bewirkt, daß die Kantendatensätze derselben in die gleiche Kantenliste eingegeben werden. Wiederum weisen die Kanten 75 und 76 ferner die gleiche Start-Y-Koordinate auf, und die Kantendatensätze 63 derselben werden in die gleiche Kantenliste der Kantentabelle 61 eingegeben.
  • Nachdem alle Kanten in die Kantentabelle 61 eingegeben wurden, bewegt sich der Umwandlungsprozeß zu der nächsten Phase, bei der für jede Abtastzeile (y-Koordinatenzeile des Ausgabebilds) eine Aktivkantenliste 62 gebildet wird, die alle Kanten auflistet, die die Abtastzeile (Schritt 53) abschneiden, wobei die Aktivkantenliste dann verwendet wird, um eine entsprechende Weitenliste in der Weitentabelle 60 (Schritt 54) zu bilden. Die Aktivkantenliste 62 wird für die erste Abtastzeile durch Eingeben von allen Kantendatensätzen 63 in die Aktivkantenliste gebildet, wobei bei der ersten Zeile gestartet wird. Für folgende Abtastzeilen wird die Aktivkantenliste 62 durch Aktualisieren der Aktivkantenliste für die vorhergehende Abtastzeile gebildet. Dieser Aktuahsierungsprozeß betrifft sowohl das Hinzufügen von Kanten in die Kantendatensätze, die an der aktuellen Abtastzeile starten, als auch das Aktualisieren der Kantendatensätze, die schon in der Aktivkantenliste umfaßt sind. Dieses Aktualisieren betrifft das Aktualisieren der aktuellen X- und Y-Koordinatenwerte für die Kante durch Ändern der X-Koordinate gemäß dem Gradienten der Kante und Inkrementieren des Y-Werts. Für den Fall, daß dieses Aktualisieren zeigt, daß die Kante nicht länger die Abtastzeile abschneidet, dann wird der Kantendatensatz 63 aus der Aktivkantenliste 62 entfernt.
  • Fig. 8 zeigt die Kantendatensätze 63, die die Aktivkantenliste 62 für die Abtastzeile 69 bilden, die in Fig. 7 gestrichelt gezeigt ist. Das Abschneiden der aktuellen Abtastzeilen durch die Kanten, die durch die Kantendatensätze dargestellt werden, ist in Fig. 8 gezeigt.
  • Nachdem die Aktivkantenliste für eine Abtastzeile gebildet wurde, werden die bildenden Kantendatensätze gemäß ihrer zugeordneten Segmentverarbeitungsreihenfolgenummer und auf dem aktuellen X-Abschneidepunkt der Abtastzeile und der Kante sortiert.
  • Unter Verwendung der sortierten Aktivkantenliste 62 wird der Weitentabelleneintrag, der der aktuellen Abtastzeile entspricht, erzeugt. Dieser Weitentabelleneintrag weist eine Weitenliste auf, die eine oder mehrere Weiten 65 als eine verbundene Liste aufweist. Eine Weite definiert einen ununterbrochenen Abschnitt einer Ausgabebildabtastzeile, die einem speziellen Segment zugeordnet ist. Fig. 10 stellt einen Abschnitt einer Abtastliste dar, die drei Weiten 65 aufweist, die als Weiten N, (N+1) und (N+2) identifiziert sind. Jede Weite weist vier Felder auf, von denen eines das relevante Segment identifiziert, während zwei derselben die Weite hinsichtlich der linken und der rechten x-Koordinate (XL bzw. XR) lokalisieren; das Y-Koordinatenfeld ist nicht wesentlich, da die Weitentabellendatenstruktur die Y-Koordinate für die Weiten jeder bildenden Weitenliste durch die Position einer Weitenliste in der Weitentabelle impliziert. Das verbleibende Feld der Weitendatenstruktur ist ein Zeiger, nämlich ein Zeiger 66 (P-Nächste-Weite), der zu der nächsten Weite (wenn es eine gibt) in der aktuellen Weitenliste zeigt.
  • Um die Weitenliste zu bilden, wird die Aktivkantenliste durch Nehmen von folgenden Paaren von Kantendatensätzen in der Liste und unter Verwendung jedes Paars verarbeitet, um eine entsprechende Weite zu bilden, wobei die zwei abgrenzenden X-Koordinatenwerte desselben auf die aktuellen X- Werte der betroffenen Kantendatensätze eingestellt sind, die Y-Koordinatenwerte auf dieselben der aktuellen Abtastzeile eingestellt sind, und die Segmentidentität auf dieselbe der zwei betroffenen Kantendatensätze eingestellt ist (diese Datensätze werden die gleiche Segmentidentität aufweisen, da die Aktivenkantenliste gemäß der Verarbeitungsreihenfolgenummer sortiert wurde, und es gibt immer eine gerade Anzahl von Kanten für ein Segment, wenn dasselbe bei einem beliebigen Y-Koordinatenwert betrachtet wird).
  • Sobald eine Weite gebildet wurde, wird dann versucht, dieselbe in die Weitenliste für die aktuelle Abtastzeile einzufügen. Diese Einfügung ist jedoch der oben erwähnten Regel zum Schreiben von Segmenten in dem Endbild unterworfen, wenn dieselben gemäß ihrer Verarbeitungsreihenfolgenummer verarbeitet werden - nämlich, daß ein Segment (oder bei diesem Fall eine Weite eines Segments) lediglich geschrieben werden kann, wenn dasselbe kein anderes Segment (oder eine Segmentweite) überschreibt, ausgenommen dort, wo das Segment, das überschrieben werden soll, das Hintergrundsegment für das aktuelle Segment ist. Die Identität des Segments, das den Hintergrund bildet, der durch die aktuelle Weite überschrieben werden kann, ist entweder aus den Kantendatensätzen, die die Weite abgrenzen, oder durch Bezugnahme auf das Segment, aus dem die Weite abgeleitet wird, erhältlich.
  • Mit dem Einfügungsprozeß geht ein Einstellen der abgrenzenden X-Koordinatenwerte der Weite, die eingemischt wird, und von beliebigen teilweise überschriebenen Weiten wie geeignet (einschließlich dem Spalten von betreffenden Weiten in zwei oder mehrere Weiten, wo es erforderlich ist), und das dementsprechende Einstellen des Zeigers P-Nächste-Weite auf eine betreffende Weite einher.
  • Fig. 11 ist ein Beispiel, das in 10 Stufen den Aufbau einer Weitenliste 81 für die Abtastzeile zeigt, die auf der Zeile 80-80 in Fig. 5 vorgenommen ist. Für jede Stufe (i) bis (x), die in Fig. 11 dargestellt sind, sind sowohl die aktuellen Inhalte der Weitenliste 81 als auch die Weite 82, die in die Weitenliste eingemischt werden soll, gezeigt, wobei die Weite 82 unterhalb der existierenden Weitenliste 81 gezeigt ist.
  • Innerhalb jeder Weite 82, die in die Weitenliste eingemischt werden soll, wurde nicht nur die Identität des entsprechenden Segments sondern ferner (Verarbeitungsnummer, Hintergrundsegment) das Paar gezeigt, um ein Verständnis sowohl der Reihenfolge, in der die Segmentweiten verarbeitet werden, als auch ob das Überschreiben der Weite in die existierende Weitenliste erfolgreich sein wird, zu erleichtern.
  • In der Stufe (i) ist die Weitenliste als schon eine Weite haltend gezeigt, die dem Wurzelsegment "a" entspricht. Die Weite 82, die eingemischt werden soll, ist eine Weite des Segments "b", wobei dies das nächste Segment gemäß der Verarbeitungsreihenfolgenummer der Segmente ist, die die Abtastzeile 80-80 schneiden. Das Hintergrundsegment für das Segment "b" ist das Wurzelsegment "a"; als ein Resultat kann die Weite 82 für das Segment "b" vollständig in die Weitenliste eingemischt werden. Die resultierende Weitenliste 81 ist in der Stufe (ii) von Fig. 10 gezeigt, und, wie sichtbar ist, weist die Weitenliste nun drei Weiten auf, die miteinander verbunden sind, da die Weite, die ursprünglich dem Wurzelsegment "a" entsprochen hat, in zwei Weiten durch die Weite des Segments "b" aufgespalten wurde.
  • In der Stufe (ii) wird eine Weite 82, die dem Segment "e" entspricht, in die Weitenliste 81 eingemischt. Da der Hintergrund für das Segment "e" das Segment "b" ist, und da die Weite 82 vollständig innerhalb der Grenzen der Weite des Segments "e" in der Weitenliste 81 liegt, wird die gesamte Weite des Segments "e" 82 erfolgreich in die Weitenliste eingemischt, um eine neue Weitenliste 81 zu erzeugen, die in Stufe (iii) gezeigt ist.
  • In der Stufe (iii) soll eine Weite 82 von dem Segment "f" in die Weitenliste 81 eingemischt werden, wobei das Hintergrundsegment für das Segment "f" das Segment "b" ist. Da die Weite des Segments "f" Weiten überlappt, die den Segmenten "e" und "b" in der Weitenliste 81 entsprechen, wird lediglich ein Teil der Weite 82 in die Weitenliste 82 eingemischt, wobei dieser Teil der Teil ist, der das Hintergrundsegment "b" des Segments "f" überlappt. Die resultierende Teilmischung der Weite des Segments "f" 82 in die Weitenliste ist durch die neue Weitenliste 81 in Stufe (iv) gezeigt.
  • Das Mischen der Weiten 82 in die Weitenliste 81, das in den Stufen (iv) bis (x) bewirkt wird, fährt im wesentlichen auf die gleiche Art und Weise fort, wie für die Stufen (i) bis (iii), und wird daher nicht detailliert beschrieben.
  • Am Ende des Umwandlungsprozesses wurde der Segmentbaum 20 in eine Weitentabellendarstellung des Bilds umgewandelt, in der alle Segmente in das Endausgabebild in ihre korrekte Position, Ausrichtung und Größe abgebildet wurden, und es wurden alle Überlappungskonflikte aufgelöst. Die Weitentabelle 60 liefert eine kqmprimierte Darstellung des Endausgabebilds in Gerätskoordinatenausdrücken.
  • Wie bei dem Segmenteinteiler 13 ist der Wandler 15 vorzugsweise in einem Code implementiert, der auf einem Allgemeinzweckprozessor läuft, wobei diese Implementation beispielsweise in einem objektorientierten Ideom vorhanden ist, mit Objekten, die der Kantentabelle, der Kantenliste, den Kantendatensätzen, der Aktivkantenliste, der Weitentabelle, den Weitenlisten und den Weiten entsprechen.
  • Ausgabeprozeß
  • Wie schon gezeigt, weist die Weitenausgabefunktion 15 von Fig. 1 ein einzelnes wirksames Primitiv Zeichne-Weite auf, das dem Ausgabegerät 12 befiehlt, eine Zeile einer gegebenen Farbe bei einer gegebenen Y-Koordinatenposition und zwischen zwei X-Koordinatenpositionen zu zeichnen. Der Ausgabeprozeß betrifft das Aufrufen von Zeichne-Weite für jede der Weiten in der Endweitentabelle 60. Da die Weiten der Weitentabelle nicht überlappen und jeweils vollständig selbst definiert sind, ist die Reihenfolge nicht kritisch, mit der die Weiten an das Gerät 12 unter Verwendung von Zeichne-Weite ausgegeben werden. Für eine maximale Übertragungseffizienz können Weiten gleicher Farbe zusammen derart ausgegeben werden, daß es lediglich notwendig wird, die Farbe zu spezifizieren, wenn diese Farbe geändert werden soll (es ist natürlich offensichtlich, daß dies lediglich mit gewissen Typen von Ausgabegeräten 12 durchgeführt werden kann, mit denen ein zufälliges Schreiben des Bilds möglich ist).
  • Die Farbe, die jeder Weite in der Weitentabelle zugeordnet ist, wird durch Bezugnahme auf die Füllung des entsprechenden Segments erhalten. Dort wo diese Füllung eine polychromatische Bitabbildung ist, muß dann Zeichne-Weite für jede Monochromkomponententeilspanne aufgerufen werden.
  • Bei der Initialisierung des Systems kann der Ausgabeprozeß eine Farbnachschlagtabelle in Zusammenarbeit mit dem Ausgabegerät initialisieren. Zur gleichen Zeit können Parameter, wie z. B. eine Extrabild-Hintergrundfarbe und -Bildgröße spezifiziert werden. Wie schon gezeigt wurde, wird die Bildgröße in der Größe des Wurzelsegments und den Skalierungsfaktoren in der RTM des Wurzelsegments wiedergespiegelt.
  • Das Ausgabegerät 12 wird allgemein eine oder mehrere Abtastzeilen in dem Puffer 17 aufbauen, bevor die Abtastzeilen zu der realen Welt entweder in der Form einer Anzeige auf einer visuellen Anzeigeeinheit oder einem Druckkopieausdruck ausgegeben werden. Dort wo der Puffer 17 keine vollständige Bildbitabbildung hält, wird dann die Reihenfolge wichtig, in der die Weiten unter Verwendung von Zeichne-Weite ausgegeben werden, da es das Ausgabegerät erforderlich macht, daß gewisse Abtastzeilen vor anderen Abtastzeilen ausgegeben werden.
  • Benutzereingabe
  • Unter Bezug auf die Benutzereingabe, wie es z. B. bei interaktiven computergraphikanwendungen erforderlich ist, wo das angezeigte Bild als Reaktion auf eine Benutzereingabe verändert wird, kann das oben beschriebene Graphikausgabesystem mit jeder beliebigen, geeigneten Einrichtung zum Zurückzuführen der Benutzereingabe zu der Anwendung 10 verwendet werden, wobei es allgemein die Aufgabe der Anwendung 10 ist, zu bestimmen, welche Handlungen erforderlich sind (die dazu führen können, daß der Segmentbaum modifiziert wird, was eine Veränderung des Bilds bewirkt). Eine Ausnahme zu dem besteht dort, wo ein Zeigegerät, wie z. B. eine Maus, als ein Eingabegerät verwendet wird, und wirksam ist, um einen Bildcursor zu steuern; wie es vollständiger im folgenden beschrieben werden wird, wird bei diesem Fall die Eingabe, die von dem Zeigegerät empfangen wird, direkt verwendet, um die Bewegung eines Cursorsegments zu steuern, und die Last dieser Operation wird nicht auf der Anwendung 10 plaziert.
  • Aktualisieren des Ausgabebilds
  • In dem vorhergehenden wurde das Ausführungsbeispiel der Fig. 1 hinsichtlich eines vollständigen Segmentbaums beschrieben, der durch die Anwendung 10 aufgebaut und dann durch den Aufbereiter 11 zu dem Ausgabegerät 12 ausgegeben wird. Es ist offensichtlich, daß der Segmentbaum durch die Befehle Erzeugen, Modifizieren und Löschen durch die Anwendung 10, wie erforderlich, modifiziert werden kann, und nicht jedesmal neu erzeugt werden muß, wenn eine Änderung des Bilds auftritt, die dargestellt werden muß. Sobald eine Modifikation des Segmentbaums abgeschlossen ist, kann derselbe in eine neue Weitentabelle und folglich in ein neues Ausgabebild durch den Aufbereiter 11 umgewandelt werden.
  • Mit einem Blick auf das Minimieren der veränderungen des Segmentbaums 20 umfaßt jedes Segmentdatenstruktur 21 ein Sichtbarkeitsfeld 33, das verwendet wird, um ein Segment mit einer Flag zu versehen, als ein Segment, das nicht in dem aktuellen Bild angezeigt werden soll. Dort, wo ein Segment derartig mit einer Flag versehen wird, wird nicht nur dieses segment sondern auch keine der Nachkommen desselben angezeigt. Für den Prozeß des Numerierens der Segmente, der in dem Schritt 50 des Umwandlungsprozesses (siehe Fig. 6) ausgeführt wird, wird dies durch Anordnen, um jedes Segment zu ignorieren, bei dem das Sichtbarkeitsflag eingestellt wurde, und um entweder zu einem beliebigen Geschwistersegment oder zurück zu dem betroffenen Elternsegment überzugehen, erreicht. Die primäre Verwendung des Sichtbarkeitsmerkmals besteht in Anwendungen, bei denen ein Segment lediglich vorübergehend in dem Bild verdeckt wird und möglichwerweise rasch wiederhergestellt werden muß, wobei ein derartiges Wiederherstellen einfach das Neuemstellen des Sichtbarkeitsflags erfordert.
  • Der tatsächliche Prozeß des Umwandelns eines neuen oder modifizierten Segmentbaums in ein Ausgabebild kann jedesmal von Anfang an ausgeführt werden. Es ist jedoch dort, wo lediglich ein Teil des Segmentbaums sich geändert hat, im allgemeinen effizienter, lediglich die betroffenen Teile des Segmentbaums neu umzuwandeln. Es kann eine Anzahl von Maßnahmen durchgeführt werden, um ein teilweises Aktualisieren effizient zu bewirken, wobei jede Maßnahme für einen speziellen Satz von Umständen geeignet ist. Diese Maßnahmen beziehen sich auf:
  • (a) - die Cursorbewegung;
  • (b) - Nur-Füllungs-Änderungen eines Segments;
  • (c) - Hinzufügung/Löschung eines Segments durch Begrenzen der Aktualisierung der Umrisse des Segments und der oberhalb und unterhalb liegender Kinder desselben;
  • (d) - Veränderungen an einem Segment, die lediglich mit dem Hintergrundsegment in dem Ausgabebild (ein Nur-Hintergrund-Wechselwirkungssegment) in Wechselwirkung stehen.
  • Jede der obigen Maßnahmen wird einzeln im folgenden beschrieben werden, nachdem eine Beschreibung vorgenommen wurde, wie diese Maßnahmen zusammenhängend, miteinander integriert werden können.
  • (a) Cursorbewegung -
  • Wie schon oben bemerkt wurde, kznnen Anzeigecursor und andere schnell sich bewegende Sprites (die allgemein hierin durch den Ausdruck "Cursor" abgedeckt werden) zweckmäßigerweise die Form von Segmenten in einer Oberhalbbefestigungsbeziehung an dem Wurzelsegment des Segmentbaums 20 einnehmen. Ein derartiger Cursor (oder derartige Cursor) und alle Nachkommen werden vorzugsweise als ein Teilbaum getrennt von dem Hauptteilbaum behandelt, der dem Wurzelsegment durch eine Einschließungsbeziehung zugeordnet ist. Der Cursorteilbaum wird dann getrennt numeriert und durch den Wandler 14 aufbereitet, um eine getrennte Cursorweitentabelle 60C (siehe Fig. 1) zusätzlich zu der Hauptausgabebildweitentabelle 60 zu erzeugen. Diese zwei Weitentabellen werden schließlich durch die Weitenausgabefunktion 15 kombiniert, wobei die Cursorweitentabelle 60C einen Vorrang gegenüber der Hauptbildweitentabelle 60 einnimmt. Diese Anordnung weist den Vorteil auf, daß die Hauptweitentabelle nicht jedesmal neu erzeugt werden muß, wenn ein Cursor (und die Nachkommen desselben) bewegt wird, sondern dieselbe wirkt einfach als ein Hintergrund für den Cursor; die Neuerzeugung der Cursorweitentabelle ist eine relativ einfache Angelegenheit, da diese Tabelle auf die Grenze des Cursors selbst (zusammen mit jeglichen Nachkommensegmenten) begrenzt ist.
  • Die Bewegung eines Cursors durch Modifzieren der RTM desselben, kann durch die Anwendung als eine Konsequenz einer bestimmten Anwendungsverarbeitungsentscheidung oder als Reaktion auf eine Benutzereingabe über ein Zeigegerät bewirkt werden. Da jedoch die Cursorbewegung als Reaktion auf eine Benutzereingabe über ein Zeigegerät bei weitem die häufigste Form der Cursormanipulation ist, werden spezielle Maßnahmen vorzugsweise vorgenommen, um die Effizienz einer derartigen cursorbewegung zu maximieren. Insbesondere weist die Cursorweitentabelle X- und Y-Versätze auf, die in Bildkoordinatenausdrücken X- und Y-Versätze spezifizieren, durch die die Weiten in der Cursorweitentabelle durch den Weitenausgabeprozeß verschoben werden müssen, bevor dieselben mit der Hauptweitentabelle kombiniert werden. Es wird dann eine relativ einfache Angelegenheit, die Position des Cursors als Reaktion auf eine Benutzereingabe durch ein Zeigegerät zu aktualisieren, da alles was nun erforderlich ist, darin besteht, daß die neuen absoluten X- und Y-Bildkoordinatenwerte, auf die durch das Gerät gezeigt wird, als die vorher erwähnten X- und Y-Versätze gespeichert und verwendet wer den. Für eine Konsistenz der Cursorbewegung, wie sie durch die Anwendung und direkt durch das Zeigegerät bewirkt wird, werden für eine beliebige Cursorverlagerung, die die Anwendung bewirken möchte, die Tx- und Ty-Verschiebungen in der CTM des Cursorsegments ferner durch den Wandler 14 in die Xund Y-Versatzwerte für die Cursorweitentabelle umgewandelt und werden nicht verwendet, um die Cursorweiten innerhalb der Cursorweitentabelle selbst zu positionieren.
  • Dort wo mehrere Cursor gleichzeitig als Geschwister in einer Oberhalbgeschwisterkette existieren, die dem Wurzelsegment zugeordnet ist, könnte jeder Cursor (mit seinen Nachkommen) als ein getrennter Teilbaum mit seiner eigenen zugeordneten Weitentabelle behandelt werden, wobei für diesen Fall die Weitenausgabefunktion wirksam sein würde, um jede derartige Weitentabelle in einer Prioritätsreihenfolge mit der Hauptweitentabelle 60 zu kombinieren.
  • (b) Nur-Füllung-segmentänderungen -
  • Bei Fällen, bei denen die Anwendung ein Segment 21 lediglich durch Ändern der Füllung desselben modifiziert, ist es natürlich nicht notwendig, daß die Weitentabelle neu erzeugt wird, da die Weiten unverändert verbleiben. Alles was lediglich erforderlich ist, ist daß die Weiten, die dem modifizierten Segment zugeordnet sind, neu an das Ausgabegerät 12 unter Verwendung des Primitivs Zeichne-Weite ausgegeben werden; wie schon während dieses Prozesses beschrieben, wird auf die Füllung des modifizierten Segments geeignet durch den Ausgabeprozeß Bezug genommen, und jede Weite des modifizierten Segments wird dementsprechend zu dem Ausgabegerät mit der neuen Füllung weitergegeben.
  • (c) Durch Segmentumrisse begrenzte Aktualisierung -
  • Die meisten Aktualisierungen betreffen die Hinzufügung oder Löschung eines Segments 21 aus dem Segmentbaum 20. In dieser Hinsicht kann eine räumliche Transformation eines Segments durch Verschiebung, Drehung oder Neuabmessung als ein Löschen des Segments in seiner nicht modifizierten Form und Hinzufügen eines Segments, das der modifizierten Form des alten Segments entspricht, betrachtet werden. Auf eine ähnliche Art und Weise kann das Verändern der Grenzform eines Segments als ein Löschen des nicht modifizierten Segments und ein Hinzufügen eines neuen Segments, das der neuen Grenzform entspricht, betrachtet werden. Allgemein kann daher das Problem des Neuaufbereitens der Weitentabelle 60 folgend der Modifikation des Segmentsbaums 20 dahingehend aufgespalten werden, wie eine Löschung oder eine Hinzufügung eines Segments 21 handzuhaben ist.
  • Betrachtet man zunächst, wie ein neues Segment 21 zu der Weitentabelle 60 ohne ein Bekanntsein der existierenden Bildstruktur hinzugefügt wird, ist es notwendig anzunehmen, daß das neue Segment durch jegliches Segment einer höheren Priorität überschrieben werden kann, oder durch das Hintergrundsegment desselben abgeschnitten werden kann, wenn dasselbe in dem Endbild (bei diesem Fall bezieht sich "höhere Priorität" ausschließlich auf die Tiefenpriorität) erscheint. Als ein Resultat ist es notwendig, alle Segmente höherer Priorität und den Hintergrund des neuen Segments zur gleichen Zeit neu auf zubereiten, wie das neue Segment aufbereitet wird. Sofern es nicht begrenzt ist, könnte dieses Aktualisieren praktisch die gesamte Weitentabelle 60 und das entsprechende Ausgabebild betreffen. Dementsprechend ist das Aktualisieren der Weitentabelle auf eine Region beschränkt, die dem neuen Segment entspricht. Dies wird auf die folgende Art und Weise erreicht. Wenn ein neues Segment zu dem Segmentbaum 20 hinzugefügt wird, werden die Kanten, die die äußere Grenze des neu hinzugefügten Segments definieren, zu einer Aktualisierungsumrißliste hinzugefügt; diese Kanten dienen dazu, um die Aktualisierungsbereichsgrenze zu definieren, die den Aktualisierungsbereich abgrenzt. Als nächstes werden die Segmente mit höherer Priorität in dem Baum, das neue Segment selbst und das Hintergrundsegment desselben alle als Segmente markiert, die ein Neuaufbereiten erfordern. Danach wird eine neue Kantentabelle 61 gebildet, die die Inhalte der Aktualisierungsumrißliste und alle Kan ten von den markierten Segmenten des Segmentbaums umfaßt; den Kanten, die von der Aktualisierungsumrißliste umfaßt sind, d. h. dieselben, die die Aktualisierungsbereichsgrenze definieren, wird eine Verarbeitungsreihenfolgenummer gegeben, die niedriger ist als für jedes andere Segment, derart, daß dieselben zuerst verarbeitet werden. Folglich werden in der Aktivkantenliste 62, die für jede Zeile der Reihe nach aus der neuen Kantentabelle 61 gebildet wird, Weiten, die dem Aktualisierungsbereich entsprechen, zuerst erscheinen; Weiten, die dem neuen Segment entsprechen, erscheinen auch in der Aktivkantenliste in der normalen Verarbeitungsreihenfolge für das neue Segment (es sei bemerkt, daß der Segmentbaum nach der Modifikation vor jeglichem Neuaufbereiten der Segmente desselben neu numeriert wird).
  • Die Weiten, die den Aktualisierungsbereich abgrenzen, werden folglich in jede Zeile der Weitentabelle eingegeben, in der dieselben vor jeglichen anderen Weite auftreten. Diese Aktualisierungsbereichsweiten werden derart markiert, daß dieselben durch Weiten von jedem anderen Segment überschrieben werden können, und folglich wirken dieselben effektiv als eine Leitwegregion. Die Aktualisierungsbereichsweiten werden in die Weitentabelle in dem Sinne gezwungen, daß dieselben in die Weitentabelle in geeignete Positionen oder ohne eine Betrachtung bezüglich der Identität der existierenden Weiten, die dadurch überschrieben werden, geschrieben werden. Die anderen Weiten, die in jeder Aktivkantenliste 62 gehalten werden, sind jedoch den normalen Regeln des Mischens von Weiten in die Weitentabelle unterworfen. Aufgrund der Tatsache, daß außerhalb des Aktualisierungsbereichs das Bild unverändert ist, werden keine Weiten von der Aktivkantenliste in die Weitentabelle außerhalb des Aktualisierungsbereichs (eine Weite, die einem Segment zugeordnet ist, kann sich nicht selber überschreiben) eingemischt. Zu gegebener Zeit wird ein Abschnitt der Weitentabelle innerhalb des Aktualisierungsbereichs in seine Endform durch Mischen von Weiten von den verschiedenen, betreffenden Segmenten aufgebaut. Sowie jede Weitenzeile vollständig ist, werden die Weiten innerhalb des Aktualisierungsbereichs unter Verwendung des Primitivs Zeichne-Weite (zu diesem Zweck werden die Grenzen des Aktualisierungsbereichs in der aktuellen Weitenzeile beispielsweise vorübergehend gespeichert) ausgegeben.
  • Auf die vorhergehende Art und Weise wird die Weitentabelle 60 auf eine Art aktualisiert, die Änderungen an der Tabelle zu dem Aktualisierungsbereich begrenzt, der durch die Grenzen des neuen Segments abgegrenzt ist.
  • Eine Löschung eines Segments ohne Kenntnis der existierenden Segmentzusammensetzung kann auf eine ähnliche Art und Weise gehandhabt werden, wobei die Aktualisierung der Weitentabelle auf innerhalb einer Aktualisierungsbereichsgrenze beschränkt ist, die der Grenze des gelöschten Segments entspricht. Folglich werden, wie bei der Hinzufügung eines Segments, die begrenzenden Kanten des gelöschten Segments anfänglich in einer Aktualisierungsumrißliste plaziert, wonach dieselben zu einer neuen Kantentabelle 61 übertragen werden, und denselben die niedrigste Verarbeitungsreihenfolgezahl gegeben wird; entsprechende Weiten werden bei gegebener Zeit in die Weitentabelle 60 gezwungen und derart markiert, daß dieselben durch jedes andere Segment überschrieben werden. Bei diesem Fall ist es für alle verbleibenden Segmente 21 des Segmentbaums 20 jedoch notwendig, neu aufbereitet zu werden (durch Umfassen der Kanten derselben in der Kantentabelle), da nun nicht nur Segmente höherer Priorität sondern ferner Segmente einer niedrigeren Priorität in dem modifizierten Bild erscheinen könnten. Trotzdem dient der Effekt des Zwingens der Weiten, die dem Aktualierungsbereich entsprechen, in die Weitentabelle dazu, das Aktualisieren des Aktualisierungsbereichs zu beschränken. Als eine Konsequenz wird das Ausgabeverarbeiten ferner beschränkt (ausgenommen in Fällen, bei denen es notwendig ist, das Bild als Ganzes, wie z. B. bei Druckkopiegeräten, auszugeben).
  • Allgemein wird natürlich ein Segment, das hinzugefügt oder gelöscht wird, zugeordnete Kinder aufweisen. Bei diesem Fall muß der Aktualisierungsbereich erweitert werden, um die Kinder oberhalb und unterhalb des hinzugefügten/gelöschten Segments abzudecken, derart, daß die Kanten, die in die oben erwähnte Aktualisierungsumrißliste eingegeben werden, nicht nur dieselben von dem betreffenden Segment sondern ferner von den oberhalb und unterhalb liegenden Kindern desselben sind (eingeschlossene Kinder werden natürlich nicht den Bereich, der zu aktualisieren ist, betreffen). Zusätzlich werden die Kanten aller Kinder (oberhalb, unterhalb und eingeschlossen) zu der Kantentabelle hinzugefügt, die mit den anderen Segmenten, die in dem Aktualisierungsprozeß betroffen sind, neu aufbereitet werden.
  • Dort wo Segmente zur gleichen Zeit hinzugefügt und gelöscht werden (beispielsweise, wenn ein Segment bewegt wird), kann dann der Aktualisierungsbereich erweitert werden, um alle Segmente zu umfassen, die zusammen mit allen ihren oberhalb und unterhalb liegenden Kindern hinzugefügt oder gelöscht werden.
  • Als nächstes wird eine Betrachtung des Bewirkens eines begrenzten Aktualisierens mit der Hilfe der Kenntnis der existierenden Zusammensetzung des Ausgabebilds, wie durch die Weitentabelle vorgesehen, vorgenommen wird; wie oben beschrieben, enthält die Weitentabelle 60 die Identität des Segments 21, das jeder Weite 65 zugeordnet ist.
  • (d) Segmente mit Nur-Hintergrund-Weahselwirkung
  • (BOI; BOI = Background Only Interaction) - Bei dem vorliegenden Graphikausgabesystem werden alle Bildelemente einschließlich Zeichen innerlich als Graphikelemente dargestellt, und auf die gleiche Art und Weise verarbeitet. Eine Konsequenz davon besteht darin, daß bei vielen Fällen ein Graphiksegment, das gelöscht oder hinzugefügt wird, lediglich auf dem Hintergrundsegment desselben entfernt oder hinzugefügt wird -folglich kann beispielsweise das Hintergrundsegment ein Papierblatt darstellen, und das Segment, daß bewegt oder hinzugefügt wird, kann ein Buchstabe sein. Diese Fälle sind durch die Tatsache gekennzeichnet, daß das betreffende Segment lediglich mit dem Hintergrundsegment desselben wechselwirkt, und derartige Segmente werden daher Nur-Hintergrund- Wechselwirkungs-Segmente (BOI-Segmente) genannt. Aufgrund der Häufigkeit des Auftretens der Hinzufügung/Löschung von BOI-Segmenten, ist es zweckmäßig, den Betrieb des Graphikausgabesystems dementsprechend zu optimieren. Zu diesem Zweck wird, wenn ein neues Segment zu dem Segmentbaum hinzugefügt wird, getestet, um zu ermitteln, ob es sich um ein BOI-Segment handelt. Dieses Testen wird durch Umwandeln des Segments in die entsprechenden Weiten desselben und durch Bezugnahme auf die Weitentabelle bewirkt, um zu identifizieren, welche existierenden Segmente in dem Ausgabebild mit dem neu hinzugefügten Segment (durch Überschreiben, durch Überschrieben-werden oder durch Abschneiden) wechselwirken. Wenn sich herausstellt, daß das neue Segment ein BOI-Segment ist, dann wird eine entsprechende Flag 200 (siehe Fig. 2) der Segmentdatenstruktur eingestellt, und das Segment wird durch einfaches Überschreiben der Weiten 65 desselben in die Weitentabelle 60 aufbereitet. Wenn jedoch das neue Segment nicht ein BOI-Segment ist, dann wird dasselbe gemäß dem begrenzten Aktualisierungsverfahren, das schon in (c) oben beschrieben wurde, aufbereitet. Dort wo ein Segment aus dem Segmentbaum gelöscht wird, und dieses Segment ein Segment ist, bei dem das BOI-Flag eingestellt ist, kann dann die Weitentabelle ohne weiteres durch Neuaufbereiten des Hintergrundsegments des gelöschten Segments in die Weiten der Weitentabelle, die den gelöschten Segmenten entspricht, aktualisiert werden. Wenn ein gelöschtes Segment kein BOI-Segment ist, dann ist ein Aktualisieren gemäß dem begrenzten Aktualisierungsprozeß, der in (c) oben beschrieben wurde, effektiv.
  • Es ist offensichtlich, daß jedesmal wenn die Weitentabelle modifiziert wird, der Wandler 14 das Aktualisieren der BOI- Flag jedes Segments übernehmen muß, das durch die Aktualisierung betroffen ist. Dies kann auf einer zeilenweisen Basis durchgeführt werden. Folglich muß dort, wo die BOI-Flag eines Segments eingestellt ist, und es nicht möglich ist, alles einer Komponentenweite in eine Weitentabelle zu mischen, oder wenn diese Weite anschließend das Mischen mindestens eines Teils einer anderen Weite in die gleiche Weitenzeile blockiert, dann die BOI-Flag des Segments neu eingestellt werden.
  • Fig. 12 ist ein Diagramm, das darstellt, wie der Wandler 14 der Fig. 1 auswählt, welche der Aktualisierungsprozesse, die demselben zur Verfügung stehen, verwendet werden, um eine spezielle Aktualisierung zu bewirken. Die vier Hauptaktualisierungsprozesse, die dem Wandler 14 zur Verfügung stehen, sind ein "Neuaufbereitungshaupt"-Prozeß 202, der wirksam ist, um die gesamte Weitentabelle 60 aus dem Segmentbaum 20 auf zubereiten, ein "Neuaufbereitungscursor"-Prozeß 203, der wirksam ist, um die Cursorweitentabelle 60C aus den geeigneten Segmenten des Segmentbaums 20 auf zubereiten, ein "Füllungen-Ersetzen"-Prozeß 204, der zum Handhaben von Segmenten dort verwendet wird, wo die einzigste Modifikation, die durchgeführt wird, an den Füllungen derselben durchgeführt wird, und ein "Hinzufügen/Löschen-Segmentey"prozeß 205, bei dem ein begrenztes Aktualisieren der Weitentabelle 60 bewirkt wird, wobei dieses Aktualisieren, dort wo es möglich ist, so ist, wie es oben in (d) für BOI-Segmente beschrieben ist, und sonst so ist, wie es oben in (c) beschrieben ist.
  • Die Wahl des verwendeten Aktualisierungsprozesses wird durch einen Aktualisierungssteuerungsfunktionsblock 201 durchgeführt, der den Steuerungsalgorithmus implementiert, der innerhalb dieses Kastens in Fig. 12 dargestellt ist, in Abhängigkeit von dem Zustand von fünf Flags 210-214.
  • Die erste dieser Flags ist eine Alles-Aufbereiten-Flag 210, die (beispielsweise durch die Anwendung 10) eingestellt wird, wenn es erwünscht ist, daß das gesamte Bild neu aufbereitet wird, (d. h. sowohl die Hauptweitentabelle 60 als auch die Cursorweitentabelle 60C ab initio erzeugt werden).
  • Die zweite Flag ist eine Cursorflag 211, die jedesmal eingestellt wird, wenn der Cursor bewegt wird, oder wenn eine Veränderung lediglich der Segmente vorliegt, die in der Cursorweitentabelle aufbereitet werden. Die Cursorflag 211 wird beispielsweise durch einen geeigneten Eingabeereignishandhaber (nicht gezeigt) eingestellt, der schnittstellenmäßig ein Zeigegerät mit dem Graphikausgabesystem und ferner mit der Anwendung 10 verbindet.
  • Die dritte Flag ist eine Füllungsflag 212, die durch den Segmenteinteiler 13 jedesmal eingestellt wird, wenn ein Segment durch Modifizieren lediglich der Füllung desselben modifiziert wird.
  • Die vierte Flag ist eine A/D-Flag 213 (A/D = Add/Delete = Hinzufügen/Löschen), die durch den Segmenteinteiler eingestellt wird, jedesmal wenn ein Segment hinzugefügt oder gelöscht wurde (oder beides, wenn z. B. die Transformationsdaten verändert werden).
  • Wenn der Segmenteinteiler 13 entweder die Füllungsflag 212 oder die A/D-Flag 213 einstellt, gibt derselbe ferner Details des relevanten Segments in eine Segmentaktualisierungliste 206 zusammen mit einer Anzeige davon ein, ob das Segment hinzugefügt/gelöscht wurde, oder ob die Füllung modifiziert wurde. Natürlich werden dann, dort, wo ein Segment aus dem Segmentbaum gelöscht oder anders als durch Modifizieren der Füllung desselben modifiziert wurde, die relevanten Details des alten Segments vorübergehend zur Verwendung während des Aktualisierungsprozesses gespeichert. Die Segmentaktualisierungsliste 206 ist absichtlich von einer begrenzten Größe, und wenn diese Liste überläuft, wird eine fünfte Flag, die Überlaufflag 214, eingestellt, um dieses Ereignis anzuzeigen. Der Überlauf der Liste 206 wird derart eingestellt, so daß derselbe auftritt, wenn die Anzahl der Segmente, die aktualisiert werden sollen, derart ist, daß es wahrscheinlich effizienter ist, die gesamte Hauptweitentabelle 60 neu zu erzeugen, als eine Serie von begrenzten Aktualisierungen zu bewirken.
  • Bezugnehmend nun auf den Steuerungsalgorithmus, ist dies innerhalb eines Block 201 gezeigt. Jedesmal wenn dem Wandler 14 die Steuerung übergeben wird, nachdem der Segmentbaum durch die Anwendung 10 aktualisiert wurde, testet derselbe zuerst, um zu sehen, ob die Alles-Aufbereiten-Flag eingestellt ist, oder ob sowohl die Cursorflag 211 als auch die Überlaufflag 214 eingestellt sind; in jedem Fall versteht der Wandler, daß derselbe das gesamte Bild durch Bewirken sowohl des Neuaufbereitungshauptprozesses 202, um die Hauptweitentabelle 60 neu auf zubereiten, als auch des Neuaufbereitungscursorprozesses 203, um die Cursorweitentabelle 60C neu zu erzeugen, neu aufbereiten muß. Wenn das Neuaufbereiten des gesamten Bilds nicht erforderlich ist, prüft der Steuerungsalgorithmus als nächstes, um zu ermitteln, ob lediglich die Hauptweitentabelle ein Neuerzeugen durch Prüfen, ob die Überlaufflag 214 (jedoch nicht die Cursorflag 211) eingestellt ist, benötigt; wenn dies der Fall ist, dann wird der Neuaufbereitungshauptprozeß 202 implementiert. Wenn die Überlaufflag nicht eingestellt ist, jedoch die Cursorflag eingestellt ist, dann wird der Neuaufbereitungscursorprozeß 203 implementiert.
  • Als nächstes wird, wenn die umfassende Neuaufbereitung der Weitentabelle 60 nicht erforderlich war, die A/D 213 geprüft, um zu sehen, ob jegliche Segmente hinzugefügt/gelöscht/modifiziert wurden, und wenn dies der Fall ist, dann wird der Hinzufügen/Löschen-Segmente-Prozeß 205 aufgerufen.
  • Der erste Schritt, der durch den Hinzufügen/Löschen-Segmente-Prozeß 205 ausgeführt wird, besteht darin, das Neunumerieren des Segmentbaums zu initialisieren (wenn dies noch nicht durch den Segmenteinteiler vor dem Weiterleiten der Steuerung zu dem Wandler 14 durchgeführt wurde). Danach untersucht der Prozeß 205 jeden Eintrag in der Segmentaktualisierungsliste 206 und verarbeitet dieselbe, wie es in dem Flußdiagramm von Fig. 13 gezeigt ist. Insbesondere wird jeder Eintrag in der Liste 206 untersucht, um zu ermitteln, ob sich derselbe auf die Hinzufügung oder Löschung eines Segments (Schritt 220) bezieht. Es sei bemerkt, daß wenn sich der Eintrag auf eine Nur-Füllung-Segmentaktualisierung bezieht, daß dann die Verarbeitung zu einer Untersuchung des nächsten Eintrags weiterleitet Wenn ein Segment hinzugefügt wird, wird dasselbe in die entsprechenden Weiten (Schritt 221) umgewandelt, und es wird ein Test durchgeführt, um zu ermitteln, ob das Segment ein BOI-Segment (Schritt 222) ist. Wenn das Segment, das hinzugefügt wird, ein BOI-Segment ist, dann werden die Weiten desselben direkt in die Weitentabelle 60 geschrieben, und die BOI-Flag des entsprechenden Segments wird eingestellt (Schritt 223). Wenn jedoch das Segment, das hinzugefügt wird, kein BOI-Segment ist, wird der Grenzumriß desselben, und derselbe der oberhalb und unterhalb liegenden Kinder desselben zu der Aktualisierungsumrißliste 207 hinzugefügt; zum gleichen Zeitpunkt werden alle Segmente höherer Priorität, das Segment selbst und alle Kinder desselben und das Hintergrundsegment desselben, alle in dem Segmentbaum als neu auf zubereitende Segmente markiert (Schritt 224).
  • Dort wo ein Segmentaktualisierungslisteneintrag anzeigt, daß ein Segment gelöscht werden soll (Schritt 220), wird eine Prüfung der BOI-Flag des Segments (Schritt 225) durchgeführt. Wenn diese Flag eingestellt ist, dann wird das Hintergrundsegment zu dem Segment, das gelöscht wird, neu in die Weiten des gelöschten Segments aufbereitet. Wenn jedoch die BOI-Flag des Segments nicht eingestellt ist, dann wird der Umriß desselben und derselbe der oberhalb und unterhalb liegenden Kinder desselben zu der Aktualisierungsumrißliste 207 hinzugefügt, und es werden alle Segmente in dem Segmentbaum als eine Neuaufbereitung erfordernd markiert.
  • Nachdem jeder Hinzufügen/Löschen-Segmenteintrag in der Liste 206 gemäß Fig. 13 verarbeitet wurde, wird die Aktualisierungsumrißliste 207 geprüft. Wenn diese Liste leer ist, dann ist der Prozeß 206 abgeschlossen. Wenn jedoch die Liste Umrisse enthält, die einen Aktualisierungsbereich definieren, dann fährt der Aktualisierungsprozeß auf die oben beschriebene Art und Weise durch Zwingen des Aktualisierungsbereichs in die Weitentabelle und Neuaufbereiten der markierten Segmente in diesen Bereich fort.
  • Schließlich fährt der Steuerungsalgorithmus durch Prüfen, um zu sehen, ob die Füllungsflag 212 eingestellt wurde, fort, um zu prüfen, ob bei jeglichen Segmenten lediglich die Füllung modifiziert wurde. Wenn dies der Fall ist, dann wird der Ersetze-Füllungen-Prozeß 204 aufgerufen. Dieser Prozeß modifiziert nicht die Weitentabellen, sondern derselbe überprüft die Aktualisierungsliste nach Segmenten, bei denen lediglich die Füllungen modifiziert wurden, und dann fährt derselbe fort, um zu bewirken, daß der Weitenausgabeprozeß 15 die Weiten der geeigneten Segmente zu dem Ausgabegeräts 12 neu ausgibt. Tatsächlich wird, bevor die Füllung eines Segments neu ausgegeben wird, eine Prüfung dahingehend durchgeführt, ob das Segment schon durch den Hinzufügen/Löschen-Prozeß 205 verarbeitet wurde, da, wenn dies der Fall ist, dann kein Bedarf besteht, die Füllung desselben neu auszugeben; diese Prüfung kann unter Bezugnahme auf die Listen 206 und 207 oder durch Bezugnahme auf die Segmente selbst durchgeführt werden, wenn dieselben geeignet markiert wurden.
  • Es sei bemerkt, daß, da das Ausgabebild in den Weitentabellen 60, 60C gespeichert ist, der Aufbereiter 11 derart angeordnet werden kann, um eine Bildauffrischung zu dem Graphikausgabegerät zu liefern. Bei diesem Fall bereitet der Weitenausgabeprozeß 15 die gesamte Weitentabelle 60 und die Cursorweitentabelle 60C zu dem Ausgabegerät 12 unter Verwendung des Primitivs Zeichne-Weite neu auf. Diese Operation geht nicht mit einer Neuerzeugung der Weitentabelle als Ganzes oder zum Teil einher.
  • Varianten
  • Es ist offensichtlich, daß das oben beschriebene Graphikausgabesystem vielen Variationen unterworfen werden kann.
  • Folglich ist es möglich, ein begrenztes Aktualisieren für nicht-BOI-Segmente zu bewirken, das eine Kenntnis der existierenden Bildzusammensetzung verwendet. Beispielsweise kann dort, wo ein neues Segment hinzugefügt wird, wo jedoch dieses Segment mit mehr als lediglich seinem Hintergrund wechselwirkt, dann die Weitentabelle durch Aufbereiten des neuen Segments jedoch lediglich Zulassen, daß die Weiten desselben Weiten in der Weitentabelle überschreiben, die entweder dem Hintergrund des neuen Segments oder Segmenten mit niedrigerer Priorität zugeordnet sind, die an den gleichen Hintergrund abgeschnitten sind (die Beziehungen zwischen den neuen und existierenden Segmenten können natürlich durch Bezugnahme auf den Segmentbaum 20 ermittelt werden) aktualisiert werden. Dort wo ein Segment gelöscht wird, können das Hintergrundsegment desselben und alle Segmente niedrigerer Priorität neu aufbereitet werden und in die Weiten des gelöschten Segments geschrieben werden, die in der Weitentabelle existieren.
  • Wenn tatsächlich ein vollständiger Datensatz von der Wechselwirkung der Weiten auf allen Ebenen (d. h. nicht nur auf der obersten Ebene, die das Ausgabebild definiert, sondern ferner auf niedrigeren Ebenen, auf denen eine Weite nicht erfolgreich war, die Weite zu werden, die in dem Bild erscheint) gehalten wird, dann kann die Löschung eines Segments ohne weiteres implementiert werden. Dies ist der Fall, da eine Löschung dieser Segmentweite aus der Weitentabelle derart eingerichtet werden kann, um automatisch die Weiten der nächsten Ebene zu fördern, derart, daß dort, wo die Weiten für das gelöschte Segment die Weiten der obersten Ebene sind, die Weiten unterhalb dieser obersten Ebene nun die Weiten der obersten Ebene werden.
  • Es ist natürlich offensichtlich, daß sich die allgemeine Einteilung der Sammlung von Segmenten 21 von der beschriebenen Einteilung unterscheiden kann; beispielsweise müssen die Oberhalb- und Unterhalb-Befestigungsbeziehungen oder die Einschließungsbeziehung nicht implementiert werden.

Claims (17)

1. Ein Graphikausgabesystem mit folgenden Merkmalen:
- einer Begmentspeicherungseinrichtung (13) zum Speichern einer Sammlung von Graphiksegmenten (21), die potentiell in einer überlappenden Beziehung in einem zweidimensionalen Ausgabebild angezeigt werden sollen, wobei die Graphiksegmente durch Daten spezifiziert sind, die Grenzdaten (22; 29), die die Grenze jedes Segments bestimmen, und Wechselbeziehungsdaten (34-38) umfassen, die eine Wechselabhängigkeit der Segmente in einer Eltern-Kind-Befestigungsbeziehung (40, 41, 42), die relativen Tiefenprioritäten der Segmente in dem Ausgabebild und ein Abschneiden eines Kindsegments auf die Grenze seines direkten Eltern- oder anderen Ahnensegments bestimmen, wobei ein derartiges Abschneidesegment ein direktes oder indirektes "Hintergrund"-Segment für das betreffende Kindsegment bildet,
- einer Einrichtung (10, 16) zum Modifizieren der Sammlung von Graphiksegmenten durch Hinzufügung oder Löschung eines ausgewählten Graphiksegments und jedes Segments, das von demselben abhängt, und - einer Wandlereinrichtung (14) zum Aufbereiten der gespeicherten Graphiksegmente als eine Bilddarstellung, die das zweidimensionale Bild darstellt, wobei alle Wechselwirkungen zwischen Segmenten berücksichtigt sind, wobei die Wandlereinrichtung wirksam ist, um die Bilddarstellung zu speichern (60), und wobei die Wandlereinrichtung auf eine Modifikation der Sammlung von Graphiksegmenten reagiert, um die Bilddarstellung derselben innerhalb einer Region zu aktualisieren, die durch die Grenze des ausgewählten Segments, die durch ein Segment, das von demselben abhängt, erweitert werden kann, abgegrenzt ist.
2. Ein Graphikausgabesystem gemäß Anspruch 1, bei dem die Wandlereinrichtung als Reaktion auf die Modifikation der Sammlung von Graphiksegmenten durch die Hinzufügung eines neuen Segments zu derselben wirksam ist, um die Bilddarstellung zu aktualisieren, in dem die folgenden Segmente aus der modifizierten Sammlung aufbereitet werden:
- Segmente mit einer höheren Tiefenpriorität als das neue Segment,
- ein Hintergrundsegment des neuen Segments, und
- das neue Segment selbst,
und in dem dieselben zu der Bilddarstellung geschrieben werden, wobei ein Überschreiben der Bilddarstellung auf innerhalb der Grenze des neuen Segments, die durch ein Segment, das von demselben abhängt, erweitert werden kann, begrenzt ist.
3. Ein Graphikausgabesystem gemäß Anspruch 1, bei dem die Wandlereinrichtung wirksam ist, um Zuordnungsdaten aufrechtzuerhalten, die anzeigen, daß das Segment bei jeder Position innerhalb des Bilds erscheint, wobei die Wandlereinrichtung als Reaktion auf die Modifikation der Sammlung von Graphiksegmenten durch die Hinzufügung eines neuen Segments zu derselben wirksam ist, um die Bilddarstellung durch Bestimmen aus den Zuordnungsdaten, ob das neue Segment lediglich mit einem Hintergrundsegment desselben in Wechselwirkung steht, zu aktualisieren, und wenn dies der Fall ist, um das neue Segment auf zubereiten, und die existierende Bilddarstellung mit dem neu aufbereiteten Segment zu überschreiben.
4. Ein Graphikausgabesystem gemäß Anspruch 3, bei dem jedes Segment einen zugeordneten Hintergrundwechselwirkungsanzeiger (BOI-Flag 200) zum Anzeigen aufweist, ob die Wechselwirkung desselben in dem Bild lediglich mit einem Hintergrundsegment desselben besteht, wobei die Wandlereinrichtung diesen Anzeiger in Abhängigkeit von der Bestimmung steuert, die dieselbe während der Hinzufügung eines Segments zu der Bilddarstellung durchführt.
5. Ein Graphikausgabesystem gemäß Anspruch 1, bei dem die Wandlereinrichtung wirksam ist, um Zuordnungsdaten aufrechtzuerhalten, die das Segment anzeigen, das an jeder Position innerhalb des Bilds erscheint, wobei die Wandlereinrichtung als Reaktion auf die Modifikation der Sammlung von Graphiksegmenten durch die Hinzufügung eines neuen Segments zu derselben wirksam ist, um die Bilddarstellung durch Aufbereiten des neuen Segments und Überschreiben der existierenden Bilddarstellung mit dem neu aufbereiteten Segment an Positionen zu aktualisieren, bei denen entweder das existierende Segment das Hintergrundsegment zu dem neuen Segment ist, oder bei denen das existierende Segment eine niedrigere Tiefenpriorität als das neue Segment aufweist und entweder das gleiche Hintergrundsegment wie das neue Segment aufweist, oder direkt oder indirekt auf ein Segment geschrieben wird, das das gleiche Hintergrundsegment aufweist.
6. Ein Graphikausgabesystem gemäß Anspruch 5, bei dem die Wandlereinrichtung wirksam ist, um Bezug auf die Wechselbeziehungsdaten zu nehmen, um zu bestimmen, ob ein existierendes Segment ein Segment ist, das durch das neu aufbereitete Segment überschrieben werden kann.
7. Ein Graphikausgabesystem gemäß Anspruch 1, bei dem die Wandlereinrichtung als Reaktion auf die Modifikation der Sammlung von Graphiksegmenten durch die Löschung eines existierenden Segments von derselben wirksam ist, um die Bilddarstellung durch Aufbereiten aller Segmente aus der modifizierten Sammlung und durch Schreiben derselben zu der Bilddarstellung zu aktualisieren, wobei das Überschreiben der Bilddarstellung auf innerhalb der Grenze des gelöschten Segments, die durch ein Segment, das von demselben abhängt, erweitert werden kann, begrenzt ist.
8. Ein Graphikausgabesystem gemäß Anspruch 1, bei dem die Wandlereinrichtung wirksam ist, um Zuordnungsdaten aufrechtzuerhalten, die das Segment anzeigen, das an jeder Position innerhalb des Bilds erscheint, wobei die Wandlereinrichtung als Reaktion auf die Modifikation der Sammlung von Graphiksegmenten durch die Löschung eines existierenden Segments von derselben wirksam ist, um die Bilddarstellung durch Bestimmen, ob das gelöschte Segment lediglich mit einem Hintergrundsegment desselben in dem Bild in Wechselwirkung steht, zu aktualisieren, und wenn dies der Fall ist, um lediglich das Hintergrundsegment neu auf zubereiten und die existierende Bilddarstellung mit dem neu aufbereiteten Hintergrundsegment dort, wo gemäß den Zuordnungsdaten das gelöschte Segment in der Bilddarstellung erschienen ist, zu überschreiben.
9. Ein Graphikausgabesystem gemäß den Ansprüchen 4 und 8 in Kombination, bei dem der Hintergrundwechselwirkungsanzeiger des gelöschten Segments verwendet wird, um die Bestimmung durch die Wandlereinrichtung zu erleichtern, ob das gel:schte Segment lediglich mit dem Hintergrund desselben in Wechselwirkung steht.
10. Ein Graphikausgabesystem gemäß Anspruch 1, bei dem die Wandlereinrichtung wirksam ist, um Zuordnungsdaten aufrechtzuerhalten, die das Segment anzeigen, das an jeder Position innerhalb des Bilds erscheint, wobei die Wandlereinrichtung als Reaktion auf die Modifikation der Sammlung von Graphiksegmenten durch die Löschung eines existierenden Segments aus derselben wirksam ist, um die Bilddarstellung durch Neuaufbereiten des Hintergrundsegments und jeglicher Segmente zu aktualisieren, die eine niedrigere Tiefenpriorität aufweisen als das gelöschte Segment, wobei die neu aufbereiteten Segmente lediglich dort in die existierende Bilddarstellung geschrieben werden, wo gemäß den Zuordnungsdaten das gelöschte Segment in der Bilddarstellung erschienen ist.
11. Ein Graphikausgabesystem gemäß Anspruch 10, bei dem die Wandlereinrichtung wirksam ist, um auf die Wechselbeziehungsdaten Bezug zu nehmen, um zu bestimmen, ob ein existierendes Segment ein Segment ist, das neu aufbereitet werden soll.
12. Ein Graphikausgabesystem gemäß Anspruch 1, bei dem die Wandlereinrichtung wirksam ist, um die Zuordnungsdaten aufrechtzuerhalten, die für jede Position sowohl das Segment der obersten Ebene, das an jeder Position innerhalb des Bilds erscheint, als auch ein Segment einer nächsten Ebene anzeigen, das dem Segment der obersten Ebene unterlagert ist, wobei die Wandlereinrichtung als Reaktion auf die Modifikation der Sammlung von Graphiksegmenten durch die Löschung eines existierenden Segments aus derselben für jedes Auftreten des gelöschten Segments in der Bilddarstellung als ein Segment der obersten Ebene wirksam ist, um dieses Auftreten durch Aktualisieren des entsprechenden Segments der nächsten Ebene auf ein Segment der obersten Ebene zu ersetzen.
13. Ein Graphikausgabesystem gemäß Anspruch 2 oder Anspruch 7, bei dem die Wandlereinrichtung das Überschreiben der Bilddarstellung auf innerhalb der Grenze des neuen/gelöschten Segments durch anfängliches Markieren der Region der Bilddarstellung, die dem neuen/gelöschten Segment entspricht, als eine Wurzelregion, die durch alle Segmente überschreibbar ist, und danach durch Schreiben der Segmente, die aus der modifizierten Sammlung aufbereitet wurden, in die Bilddarstellung beschränkt, wobei jedes Segment lediglich die Wurzelregion oder ein Segment niedrigerer Priorität überschreibt.
14. Ein Graphikausgabesystem gemäß Anspruch 1, bei dem die Einrichtung zum Modifizieren der Sammlung von Graphiksegmenten wirksam ist, um eine Modifikation eines existierenden Segments auf eine Art und Weise zu ermöglichen, die das Ausmaß des Erscheinens von anderen Segmenten in dem Bild betrifft, wobei die Wandlereinrichtung eine derartige Modifikation als eine Löschung des existierenden Segments in der nicht modifizierten Form desselben und als eine Hinzufügung eines neuen Segments, das dem existierenden Segment in der Form desselben nach der Modifikation entspricht, behandelt.
15. Ein Graphikausgabesystem gemäß Anspruch 14, bei dem die Löschung des existierenden Segments in der nicht modifizierten Form desselben gemäß einem beliebigen der Ansprüche 2 bis 6 bewirkt wird, und bei dem das Hinzufügen des existierenden Segments in der modifizierten Form desselben gemäß einem beliebigen der Ansprüche 7 bis 12 bewirkt wird.
16. Ein Graphikausgabesystem gemäß einem beliebigen der vorhergehenden Ansprüche, bei dem die Bilddarstellung, die durch die Wandlereinrichtung erzeugt wird, die Form eines Satzes von Weiten für jede einer Mehrzahl von Zeilen annimmt, die verwendet werden, um das Bild aufzubauen, wobei jede Weite mindestens einen Abschnitt eines jeweiligen Segments darstellt, das in dem Bild angezeigt werden soll, und abgrenzende Koordinatenwerte zusammen mit der entsprechenden Bildzeile aufweist.
17. Ein Graphikausgabesystem gemäß Anspruch 16, wenn derselbe von einem beliebigen der Ansprüche 3 bis 6 oder 8 bis 11 abhängig ist, bei dem jede Weite ferner Daten aufweist, die das betreffende Segment anzeigen, wodurch die Zuordnungsdaten durch die Weiten geliefert werden.
DE69129339T 1991-10-10 1991-10-10 Graphisches ausgangssystem mit begrenzter aktualisierung. Expired - Fee Related DE69129339T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/GB1991/001767 WO1993007583A1 (en) 1991-10-10 1991-10-10 Graphics output system with bounded updating

Publications (2)

Publication Number Publication Date
DE69129339D1 DE69129339D1 (de) 1998-06-04
DE69129339T2 true DE69129339T2 (de) 1998-08-20

Family

ID=10689098

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69129339T Expired - Fee Related DE69129339T2 (de) 1991-10-10 1991-10-10 Graphisches ausgangssystem mit begrenzter aktualisierung.

Country Status (5)

Country Link
US (1) US5986661A (de)
EP (1) EP0607136B1 (de)
JP (1) JP3359634B2 (de)
DE (1) DE69129339T2 (de)
WO (1) WO1993007583A1 (de)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0607131B1 (de) * 1991-10-10 1999-03-03 Hewlett-Packard Company graphisches ausgangs-system und -verfahren.
GB9303009D0 (en) * 1993-02-15 1993-03-31 Canon Res Ct Europe Ltd Processing image data
US5977982A (en) * 1996-06-28 1999-11-02 Avid Technology Inc. System and method for modification of the visual characteristics of digital 3D objects
US6169546B1 (en) 1998-04-01 2001-01-02 Microsoft Corporation Global viewer scrolling system
US6191790B1 (en) * 1998-04-01 2001-02-20 Microsoft Corporation Inheritable property shading system for three-dimensional rendering of user interface controls
US6249284B1 (en) 1998-04-01 2001-06-19 Microsoft Corporation Directional navigation system in layout managers
US6900802B2 (en) * 2000-08-04 2005-05-31 Pts Corporation Method of determining relative Z-ordering in an image and method of using same
AUPS134202A0 (en) * 2002-03-25 2002-05-09 Canon Kabushiki Kaisha System and method for optimizing halftoning printer performance
US7046250B1 (en) 2002-07-11 2006-05-16 Sun Microsystems, Inc. Caching fonts for improved bandwidth of transmitted text
US20040008214A1 (en) 2002-07-11 2004-01-15 Sun Microsystems, Inc., A Delaware Corporation Tagging repeating images for improved compression
US20040008205A1 (en) * 2002-07-11 2004-01-15 Sun Microsystems, Inc., A Delaware Corporation Tagging single-color images for improved compression
US20040008213A1 (en) * 2002-07-11 2004-01-15 Sun Microsystems, Inc., A Delaware Corporation Tagging multicolor images for improved compression
US20070216685A1 (en) * 2006-03-15 2007-09-20 Microsoft Corporation Scene write-once vector and triangle rasterization
US8095865B2 (en) * 2007-11-21 2012-01-10 Microsoft Corporation Layout manager
EP2610721B1 (de) * 2010-08-27 2018-08-08 FUJIFILM Corporation Verfahren und vorrichtung zum bearbeiten des layouts von objekten
RU2484529C1 (ru) * 2012-03-21 2013-06-10 Общество с ограниченной ответственностью "Синезис" Способ ранжирования видеоданных

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4811245A (en) * 1985-12-19 1989-03-07 General Electric Company Method of edge smoothing for a computer image generation system
US4862392A (en) * 1986-03-07 1989-08-29 Star Technologies, Inc. Geometry processor for graphics display system
US4967375A (en) * 1986-03-17 1990-10-30 Star Technologies, Inc. Fast architecture for graphics processor
US4928250A (en) * 1986-07-02 1990-05-22 Hewlett-Packard Company System for deriving radiation images
US5185599A (en) * 1987-10-26 1993-02-09 Tektronix, Inc. Local display bus architecture and communications method for Raster display
JP2690110B2 (ja) * 1988-08-15 1997-12-10 沖電気工業株式会社 走査変換方法
US5058042A (en) * 1989-04-03 1991-10-15 Hewlett-Packard Company Method for employing a hierarchical display list in global rendering

Also Published As

Publication number Publication date
JPH06511576A (ja) 1994-12-22
WO1993007583A1 (en) 1993-04-15
EP0607136A1 (de) 1994-07-27
JP3359634B2 (ja) 2002-12-24
US5986661A (en) 1999-11-16
EP0607136B1 (de) 1998-04-29
DE69129339D1 (de) 1998-06-04

Similar Documents

Publication Publication Date Title
DE69129339T2 (de) Graphisches ausgangssystem mit begrenzter aktualisierung.
DE69534558T2 (de) Effizientes Verfahren, Gerät und Rechnerprogramm zur Auswertung graphischer Programmiersprache
DE68919024T2 (de) Verfahren und Prozessor zur Abtastumsetzung.
DE69122557T2 (de) Bilderzeugung
DE69635403T2 (de) Grafikbibliothek auf geteilten Ebenen
DE69406462T2 (de) Objekt-orientiertes graphisches system und dazu gehöriges verfahren
DE69127554T2 (de) Interpretation der bildposition in einem graphischen system.
DE69117112T2 (de) Verfahren und Vorrichtung zur Bildwiedergabe
DE68923227T2 (de) Vektor-zu-Raster-Umwandlungsverfahren.
DE3855234T2 (de) Hochleistungsfähiges graphisches endgerät sowie betriebsverfahren dafür
DE69032932T2 (de) System und Verfahren zum unverfälschten Polygonenzeichnen
DE69831385T2 (de) Verfahren und Anordnung zum Mischen von graphischen Objekten mit Planarkarten
DE69428647T2 (de) Verfahren und Gerät zur Erzeugung eines zweiten gemischten Bildsignals im räumlichen Kontext eines ersten Bildsignals
DE69830767T2 (de) Verfahren und Vorrichtung zum Zusammensetzen geschichteter synthetischer graphischer Filter
DE3855011T2 (de) Graphisches Anzeigeverfahren
DE69526289T2 (de) Optimierungsverfahren für effiziente Bilderzeugung
DE69434370T2 (de) Strukturiertes Bildformat zur Beschreibung eines Komplexfarbrasterbilds
DE3335162C2 (de) Vorrichtung und Verfahren für graphische Darstellungen mittels Computer
DE3851774T2 (de) Verfahren und Vorrichtung zur Bildmanipulation.
DE69100140T2 (de) Verfahren zur Anzeige eines Bildteiles einer physikalischen Struktur.
DE69133362T2 (de) Dokumentenverarbeitungs-verfahren und -gerät, entsprechende Program und Speichereinheit
DE69404469T2 (de) Objektorientiertes zeichnungserzeugungsgerät
DE60106301T2 (de) Verfahren und system für die ausfuhr von datenverbänden zu zweidimensionalen oder dreidimensionalen geometrischen entitäten
DE69631718T2 (de) Verfahren und Gerät zur leistungsfähigen Graphikdarstellung dreidimensionaler Szenen
DE19713654B4 (de) Progressiv darstellbare Umrissschrift und Verfahren zum Erzeugen, Übertragen und Darstellen derselben

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: HEWLETT-PACKARD CO. (N.D.GES.D.STAATES DELAWARE),

8327 Change in the person/name/address of the patent owner

Owner name: HEWLETT-PACKARD DEVELOPMENT CO., L.P., HOUSTON, TE

8339 Ceased/non-payment of the annual fee