DE69707021T2 - Verlustfreie leitungskodierung - Google Patents

Verlustfreie leitungskodierung

Info

Publication number
DE69707021T2
DE69707021T2 DE69707021T DE69707021T DE69707021T2 DE 69707021 T2 DE69707021 T2 DE 69707021T2 DE 69707021 T DE69707021 T DE 69707021T DE 69707021 T DE69707021 T DE 69707021T DE 69707021 T2 DE69707021 T2 DE 69707021T2
Authority
DE
Germany
Prior art keywords
line
data
subpath
graphical
compressed
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69707021T
Other languages
English (en)
Other versions
DE69707021D1 (de
Inventor
A. Bloomfield
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.)
Citrix Systems Inc
Original Assignee
Citrix Systems Inc
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 Citrix Systems Inc filed Critical Citrix Systems Inc
Publication of DE69707021D1 publication Critical patent/DE69707021D1/de
Application granted granted Critical
Publication of DE69707021T2 publication Critical patent/DE69707021T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/001Model-based coding, e.g. wire frame
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/20Contour coding, e.g. using detection of edges

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Image Generation (AREA)
  • Controls And Circuits For Display Device (AREA)

Description

  • Die Erfindung betrifft allgemein das Gebiet der Datenkompression in einem verteilten Computersystem. Insbesondere betrifft die Erfindung ein Verfahren zur verlustfreien Kompression einer graphischen Linie einschließlich deren Attribute innerhalb eines Anwendungsservers vor dem Senden der komprimierten Liniendaten zu der graphischen Benutzerschnittstelle einer Arbeitsstation über einen Kommunikations-Übertragungsmechanismus mit geringer Bandbreite.
  • Verteilte Computersysteme verwenden die Technik des Verteilens einer Anwendungsausführung. Ein Anwendungsserver bietet Netzwerkbenutzern insbesondere Anwendungsausführungsdienste, statt die Anwendung auf der Arbeitsstation des Benutzers laufen zu lassen. Wenn eine Anwendung läuft, fängt der Anwendungsserver die Daten der Benutzerschnittstelle (beispielsweise der Anzeigebildschirm, die Tastatur und die Maus) ab und sendet diese Daten zu einem auf der Arbeitsstation des Benutzers laufenden Programm bzw. empfängt diese Daten von diesem. Wenn eine Anwendung beispielsweise graphische Linien betrifft, fängt der Anwendungsserver die graphische Benutzerschnittstelle ab und wirkt mit dem Benutzerprogramm zusammen, um Linien auf einer Anzeige an der Arbeitsstation des Benutzers anzuzeigen.
  • Graphische Linien sind bei den meisten Verarbeitungsvorgängen häufig erforderlich und treten in verschiedenen Formen auf, darunter gerade Linien, Bögen, Ellipsen und Bezier-Kurven. Bei vielen verteilten Computersystemen ist es wünschenswert, daß der Anwendungsserver graphische Liniendaten über einen Fommunikations-Übertragungsmechanismus mit geringer Bandbreite, wie serielle Leitungen, Telefonleitungen, lokale Netze und weiträumige Netze, zu Arbeitsstationen überträgt.
  • Bei einer bekannten Implementierung werden gekrümmte graphische Linien durch den Anwendungsserver als Pixelkoordinaten übertragen, wobei jede Pixeldefinition eine Länge von 7 Byte aufweist. Es wird jedoch jedes aktive Pixel übertragen, weil an der empfangenden Arbeitsstation kein Interpolationsverfahren verwendet wird. Falls beispielsweise ein kleiner Kreis aus 1000 aktiven Pixeln besteht, werden 7000 Datenbyte vom Anwendungsserver übertragen. Nicht gekrümmte Linien werden als Pixelkoordinaten übertragen, wobei jedes Pixel einen Endpunkt einer geraden Linie darstellt. Die empfangende Arbeitsstation ist für das Interpolieren zwischen jeweils zwei Endpunkten verantwortlich. Jeder Endpunkt wird durch 4 Byte dargestellt, und jeder Satz von Endpunkten weist einen zusätzlichen Kopf mit einer Länge von 27 Byte auf. Eine einfache gerade Linie mit zwei Punkten benötigt beispielsweise 35 Byte (27 + 4· (2)). Unter Verwendung dieser bekannten Implementierung wäre eine Übertragung unkomprimierter Daten über einen Übertragungsmechanismus mit geringer Bandbreite für eine angemessene Verwendbarkeit zu langsam.
  • In der Druckschrift EP 0 684 583 A ist ein Verfahren zum Einrichten skalierbarer Fonts bzw. Zeichensätze typographischer Zeichen offenbart, bei dem die Zeichen aus Segmenten bestehen, wobei die Segmente durch Segment- Endpunkte und Segment-Beschreiber definiert sind.
  • Eine Hauptaufgabe dieser Erfindung besteht darin, ein Verfahren zur verlustfreien Kompression von Linien in einem verteilten Computersystem bereitzustellen, das die Verwendung eines Kommunikations-Übertragungsmechanismus mit geringer Bandbreite, wie serielle Leitungen, Telefonleitungen, lokale Netze und weiträumige Netze, ermöglicht.
  • Demgemäß sieht die vorliegende Erfindung ein Verfahren zum Komprimieren graphischer Liniendaten vor, die mindestens einen Unterpfad bzw. Unterzweig einer graphischen Linie darstellen und die von einem Anwendungsserver über einen Kommunikations-Übertragungsmechanismus mit geringer Bandbreite zu einer graphischen Benutzerschnittstelle einer Arbeitsstation übertragen werden, um sie auf einem Anzeigebildschirm der Arbeitsstation anzuzeigen, wobei das Verfahren auf dem Anwendungsserver die folgenden Schritte aufweist:
  • (a) Bestimmen von Koordinatenorten für die Endpunkte von jedem des mindestens einen Unterpfades der graphischen Linie anhand der graphischen Liniendaten,
  • (b) Bestimmen von Attributen von jedem des mindestens einen Unterpfades anhand der graphischen Liniendaten,
  • (c) Darstellen der Koordinatenorte als komprimierte Koordinatenortsdaten und der Attribute als komprimierte Attributdaten,
  • (d) Bestimmen eines Anzeigers anhand der graphischen Liniendaten, der Informationen enthält, die auf den zumindest einen Unterpfad der graphischen Linie anwendbar sind, wobei der Anzeiger einen Zustand von mindestens einem Attribut kennzeichnet, wobei das mindestens eine Attribut als Teil der komprimierten Attributdaten gemäß dem Anzeiger selektiv codiert wird, und
  • (e) Bereitstellen eines Pakets mit komprimierten Liniendaten mit einer Vielzahl von Feldern, wobei mindestens eines der Vielzahl von Feldern eine veränderliche Länge aufweist, und wobei das Paket mit komprimierten Liniendaten die komprimierten Koordinatenortsdaten, die komprimierten Attributdaten und den Anzeiger für jeden des zumindest einen Unterpfades aufweist.
  • Bei einer Ausführungsform definiert das vom Anwendungsserver erzeugte Paket mit komprimierten Liniendaten vollständig die Eigenschaften bzw. Kenndaten der graphischen Linie. Das Paket mit komprimierten Liniendaten wird über einen Kommunikations-Übertragungsmechanismus mit geringer Bandbreite zu der Arbeitsstation übertragen. Ein Dekomprimierprogramm in der Arbeitsstation bestimmt die graphischen Liniendaten (also die Koordinatenorte für die Endpunkte jedes Unterpfades der graphischen Linie und Attribute jedes Unterpfades) durch Dekomprimieren des Pakets mit komprimierten Liniendaten veränderlicher Länge. Die graphische Benutzerschnittstelle verwendet die dekomprimierten graphischen Liniendaten, um die graphische Linie auf dem Anzeigebildschirm der Arbeitsstation anzuzeigen.
  • Gemäß einem weiteren Aspekt sieht die vorliegende Erfindung ein Verfahren zum Dekomprimieren über einen Kommunikations- Übertragungsmechanismus mit geringer Bandbreite empfangener komprimierter graphischer Liniendaten durch eine graphische Benutzerschnittstelle einer Arbeitsstation vor, wobei die komprimierten graphischen Liniendaten mindestens einen Unterpfad einer graphischen Linie darstellen, um auf einem Anzeigebildschirm der Arbeitsstation angezeigt zu werden, wobei das Verfahren die folgenden Schritte aufweist:
  • (a) Empfangen eines Pakets mit komprimierten graphischen Liniendaten mit einer Vielzahl von Feldern, wobei mindestens eines der mehreren Felder eine veränderliche Länge aufweist, und wobei das Paket mit graphischen Liniendaten komprimierte Koordinatenortsdaten, komprimierte Attributdaten und einen Anzeiger aufweist,
  • (b) Bestimmen von Koordinatenorten anhand der komprimierten Koordinatenortsdaten für die Endpunkte von jedem des mindestens einen Unterpfades der graphischen Linie ohne einen Verlust an Daten der Koordinatenorte, und
  • (c) Bestimmen von Attributen von jedem des mindestens einen Unterpfades der graphischen Linie anhand der komprimierten Attributdaten und des Anzeigers ohne einen Verlust an Daten der Attribute, wobei der Anzeiger Informationen enthält, die an mindestens einem Unterpfad der graphischen Linie anwendbar sind und einen Zustand von mindestens einem Attribut kennzeichnen, wobei das mindestens eine Attribut gemäß dem Anzeiger decodiert wird.
  • Zumindest gemäß ihren bevorzugten Ausführungsformen bietet die Erfindung die folgenden bemerkenswerten Merkmale. Erstens komprimiert die Erfindung graphische Linien und deren Attribute mit einem hohen durchschnittlichen Kompressionsverhältnis. Zweitens erreicht die Erfindung eine verlustfreie Datenkompression (diese ist also zu 100% umkehrbar). Drittens benötigt die Erfindung keine zusätzlichen Daten für die Dekompressionsprozesse.
  • Bevorzugte Ausführungsformen der Erfindung werden nun lediglich beispielhaft mit Bezug auf die anliegende Zeichnung beschrieben.
  • Fig. 1 zeigt ein Blockdiagramm eines verteilten Computersystems.
  • Fig. 2 zeigt ein Flußdiagramm, das das grundlegende Verfahren zur Kompression graphischer Linien gemäß der vorliegenden Erfindung darstellt.
  • Fig. 3 zeigt ein Flußdiagramm, das das grundlegende Liniendekompressionsverfahren darstellt, das in Verbindung mit dem erfindungsgemäßen Linienkompressionsverfahren verwendet wird.
  • Fig. 4 zeigt ein detailliertes Flußdiagramm, das den Teil des erfindungsgemäßen Verfahrens zur Kompression graphischer Linien darstellt, der zu gekrümmten und komplexen nicht gekrümmten Linien gehört.
  • Fig. 5 zeigt ein Flußdiagramm, das den Teil des erfindungsgemäßen Verfahrens zur Kompression graphischer Linien darstellt, der zu Kompressionsendpunkten gehört.
  • Fig. 6 zeigt ein detailliertes Flußdiagramm, das den Teil des erfindungsgemäßen Verfahrens zur Kompression graphischer Linien darstellt, der zu einfachen nicht gekrümmten Linien gehört.
  • Fig. 1 ist ein schematisches Diagramm eines verteilten Computersystems, das die Erfindung umfaßt. Das System weist einen mit einem Übertragungssystem 12 geringer Bandbreite (beispielsweise eine serielle Leitung, eine Telefonleitung, ein lokales Netz oder ein weiträumiges Netz) gekoppelten Hauptrechner 10 auf. Der Anwendungsserver 14 stellt für Netzwerk-Benutzerarbeitsstationen 16 Anwendungsausführungsdienste bereit. Wenn eine Benutzerarbeitsstation eine Anwendung laufen lassen möchte, fängt der Anwendungsserver die Daten der Benutzerschnittstelle (beispielsweise der Anzeigebildschirm, die Tastatur und die Maus) ab und sendet diese Daten zu einem auf der Arbeitsstation des Benutzers laufenden Benutzerprogramm bzw. empfängt diese Daten von diesem.
  • Bei Anwendungen, die graphische Linien betreffen, fängt der Anwendungsserver die graphische Benutzerschnittstelle ab und wirkt mit dem Benutzerprogramm zusammen, um Linien auf einer Anzeige an der Arbeitsstation des Benutzers anzuzeigen. Diese Linien können verschiedene Formen aufzuweisen, darunter gerade Linien, Bogenlinien, Ellipsen oder Bezier-Kurven. Gemäß der vorliegenden Erfindung nimmt der Anwendungsserver jede graphische Linie und ihre Attribute (beispielsweise Farbe, Position, Orientierung und Länge) und komprimiert diese Informationen in ein viel kleineres Format. Dieses Kompressionsverfahren ist bei einem verteilten Computersystem wesentlich, bei dem graphische Liniendaten über Kommunikations-Übertragungseinrichtungen geringer Bandbreite übertragen werden.
  • Das Kompressionsverfahren gemäß der vorliegenden Erfindung funktioniert für beliebige Linien und beliebige Linienattribute. Wenn graphische Linien erfindungsgemäß komprimiert werden, können sie durch ein Dekomprimierprogramm in jeder Benutzerarbeitsstation leicht zu ihrem ursprünglichen Format dekomprimiert werden, ohne daß Informationen verlorengehen. Weiterhin ist für das Dekomprimierprogramm keinerlei zusätzliches Wissen erforderlich.
  • Fig. 2 zeigt ein Flußdiagramm, das das grundlegende erfindungsgemäße Verfahren zur Kompression graphischer Linien darstellt. Wenn eine Benutzerarbeitsstation eine Anwendung einleitet, die eine graphische Linie benötigt, fängt ein Anwendungsserver die graphischen Liniendaten von dem Hauptrechner ab (Schritt 20). Der Anwendungsserver bestimmt anhand der graphischen Liniendaten Koordinatenorte für die Endpunkte jedes Unterpfades des Gesamtpfades (also der graphischen Linie) (Schritt 22). Die Anwendung bestimmt auch die Attribute jedes Unterpfades anhand der graphischen Liniendaten (Schritt 24). Der Anwendungsserver stellt die Koordinatenorte und die Attribute als komprimierte Daten veränderlicher Länge dar (Schritt 26). Der Anwendungsserver erzeugt dann ein Paket mit komprimierten Liniendaten veränderlicher Länge, das die komprimierten Koordinatenortsdaten und die komprimierten Attributdaten für jeden Unterpfad aufweist (Schritt 28). Das vom Anwendungsserver erzeugte Datenpaket definiert die Eigenschaften der graphischen Linie vollständig. Die Länge des Datenpakets ändert sich in Abhängigkeit von der Anzahl der Unterpfade und der Anzahl und der Komplexität der Attribute für jeden Unterpfad.
  • Wie in Fig. 3 dargestellt ist, wird das Datenpaket über einen Kommunikations-Übertragungsmechanismus geringer Bandbreite übertragen und von einem Dekomprimierprogramm innerhalb der Arbeitsstation empfangen (Schritt 30). Das Programm bestimmt die graphischen Liniendaten (d.h. die Koordinatenorte für die Endpunkte jedes Unterpfads der graphischen Linie und Attribute jedes Unterpfades) durch Dekomprimieren des Pakets mit komprimierten Liniendaten veränderlicher Länge (Schritt 32). Die graphische Benutzerschnittstelle verwendet die dekomprimierten graphischen Liniendaten, um die graphische Linie auf dem Anzeigebildschirm der Arbeitsstation anzuzeigen (Schritt 34).
  • Fig. 4 zeigt ein detailliertes Flußdiagramm, das den Abschnitt des erfindungsgemäßen Kompressionsverfahrens für graphische Linien darstellt, der zu gekrümmten und komplexen nicht gekrümmten Linien gehört. Der Begriff "Pfad" (oder "Linie") schließt die Attribute und Endpunktdaten ein, die für einen vollständigen Linienkompressionsvorgang erforderlich sind. Jeder Pfad weist einen oder mehrere Unterpfade auf, und ein Unterpfad ist ein Satz von Punkten, die einen logischen Unterabschnitt einer Linie bilden.
  • Dieses Flußdiagramm wird für alle Linienkompressionsvorgänge mit Ausnahme derjenigen, die die Strichpfadgerade-Regeln (STROKEPATHSTRAIGHT) erfüllen, implementiert (Schritt 40). Nur einfache, nicht gekrümmte Linien erfüllen diese Regeln, die detailliert im Abschnitt Anhang dargelegt sind. Sobald bestimmt wurde, daß die Linie nicht einfach und nicht gekrümmt ist, wird das erste Byte auf 80 (Hex) gelegt, um das Protokoll als Strichpfad (STROKEPATH) zu identifizieren (Schritt 42).
  • Als nächstes wird das Anzeiger-Byte codiert (Schritt 44). Das Anzeiger-Byte ist auf alle Unterpfade in der Linie anwendbar und weist Attribut- bzw. Zeigerinformationen (beispielsweise Ausschnitt, Stil, Abstand und Farbe) für die Linie auf. Falls die Farbe der Linie die gleiche wie beim vorhergehenden Linienkompressionsvorgang ist, wird das fGleicherStift-Bit (fSAMEPen bit) (b6) auf eins gesetzt (Schritt 46). Falls die Farbe verschieden ist, wird das Pen-Byte codiert (Schritt 48). Falls die Linie einen maskendefinierten Stil aufweist, werden die Stil-Bits (b2- b4) auf Maske gesetzt (Schritt 50) und das Stilmasken-Byte wird codiert (Schritt 52). Falls die Linie durchgezogen ist, werden die Stil-Bits auf durchgezogen gelegt (Schritt 54), und die Schritte 56 und 58 werden übersprungen. Falls die Linie nicht durchgezogen ist und die Linie in nicht trivialer Art ausgeschnitten ist, werden die Ausschnitt- Bits (b0-b1) auf komplex gesetzt (Schritt 56). Falls die Linie jedoch nicht durchgezogen und nicht in einer nicht trivialen Art ausgeschnitten ist, wird das Stilzustands- Byte codiert (Schritt 58).
  • Falls die Linie einen Feld-definierten Stil hat, werden die Stil-Bits auf Feld gesetzt (Schritt 60) und das Stilfeld- Zählwert-Byte und n Stilfeld-Wörter werden codiert (Schritt 62). Der Stilfeld-Zählwert ist die Anzahl der im Stilfeld zugewiesenen Elemente. Das Stilfeld besteht aus n Wörtern, wobei n der Wert des Stilfeld-Zählwerts ist. Falls die Linie zu einem einzigen Rechteck ausgeschnitten ist, werden die Ausschnitt-Bit auf Rechteck gesetzt (Schritt 66), und die Grenze der oberen Hälfte (3 Byte) und die Grenze der unteren Hälfte (3 Byte) des Rechtecks werden codiert (Schritte 68, 70).
  • Als nächstes wird das Unterpfad-Anzeiger-Byte codiert (Schritt 72). Dieses Byte ist nur auf den fortlaufenden Unterpfad und nur vor dem Festlegen der Unterpfad-Endpunkte anwendbar. Falls die Stil-Bit im Anzeiger-Byte auf durchgezogen gesetzt sind (Schritt 74), werden die Schritte 76 und 78 übersprungen. Falls die Linie nicht durchgezogen ist und die Ausschnitt-Bit im Anzeiger-Byte auf komplex gelegt sind (Schritt 76), wird das komplexe Stilzustand-Byte codiert (Schritt 76).
  • Die Unterpfad-Endpunkte werden dann codiert (Schritt 80) und nachfolgend detailliert erklärt. Falls die Ausschnitt- Bit im Anzeiger-Byte auf komplex gesetzt sind (Schritt 82), wird ein Lauf-Feld mit n D-Wörtern codiert (Schritt 84), und der Kompressionsvorgang wird abgeschlossen (Schritt 86).
  • Fig. 5 zeigt ein Flußdiagramm, das den der Abschnitt des erfindungsgemäßen Kompressionsverfahrens für graphische Linien darstellt, der zur Kompression von Endpunkten gehört. Falls es keine Endpunktdaten für die Linie mehr gibt, werden die fTyp-Bit (b5-b7) des Unterpfad-Anzeiger- Bytes auf Datenende gelegt (Schritt 90) und der Endpunkt- Codierprozeß ist abgeschlossen (Schritt 92). Falls der fortlaufende Satz von Unterpfad-Endpunkten eine diagonale Linie definiert, werden die fTyp-Bit auf diagonal gesetzt (Schritt 94), und es wird eine 3-Byte-(x,y)-Koordinate codiert (Schritt 96). Falls der fortlaufende Satz von Unterpfad-Endpunkten eine vertikale Linie definiert, werden die fTyp-Bit auf vertikal gesetzt (Schritt 98), und es wird eine Ein-Wort-Koordinate codiert (Schritt 100). Falls der fortlaufende Satz von Unterpfad-Endpunkten eine horizontale Linie definiert, werden die fTyp-Bit auf horizontal gesetzt (Schritt 102), und es wird eine Ein-Wort-Koordinate codiert (Schritt 104). Falls der fortlaufende Satz von Unterpfad- Endpunkten eine Ellipse definiert, werden die fTyp-Bit auf Ellipse gesetzt (Schritt 106) und die 3 (x,y)-Koordinaten (jeweils mit 3, 6 oder 9 Byte) werden codiert (Schritte 108 -112). Falls die Unterpfad-Endpunkte eine normale Linie definieren, werden die fTyp-Bit auf normal gesetzt, und es wird eine (x,y)-Koordinate (3, 6 oder 9 Byte) codiert (Schritt 114). Dieser Prozeß wird wiederholt, bis alle Endpunkte codiert wurden.
  • Fig. 6 zeigt ein detailliertes Flußdiagramm, das den Abschnitt des erfindungsgemäßen Kompressionsverfahrens für graphische Linien darstellt, der zu einfachen, nicht gekrümmten Linien gehört. Dieses Flußdiagramm wird nur für Linienkompressionsvorgänge implementiert, die die Strichpfad-gerade-Regeln erfüllen (Schritt 120). Nur einfache, nicht gekrümmte Linien erfüllen diese Regeln. Sobald bestimmt wurde, daß die Linie einfach und nicht gekrümmt ist, wird das erste Byte auf 81 (Hex) gesetzt, um das Protokoll als Strichpfad-gerade zu identifizieren (Schritt 122).
  • Es gibt in der zu codierenden Linie immer zwei Endpunkte. Falls der erste Punkt dem letzten Punkt der vorhergehenden Linie gleicht, wird fSelberPunkt auf eins gesetzt (Schritt 124) und es wird nur der zweite Punkt codiert (siehe Schritte 140-154). Falls dies nicht der Fall ist, wird fSelberPunkt auf Null gelegt, und es wird der erste Punkt codiert (Schritt 124). Falls der erste Punkt Teil einer diagonalen Linie ist, werden die fTyp-Bit auf diagonal gesetzt (Schritt 128), und es wird eine 3-Byte-(x,y)- Koordinate codiert (Schritt 130). Falls der erste Punkt Teil einer vertikalen Linie ist, werden die fTyp-Bit auf vertikal gesetzt (Schritt 132), und es wird eine 3-Byte- (x,y)-Koordinate codiert (Schritt 134). Falls der erste Punkt Teil einer horizontalen Linie ist, werden die fTyp- Bit auf horizontal gesetzt (Schritt 136), und es wird die 3-Byte-(x,y)-Koordinate codiert (Schritt 138).
  • Als nächstes wird der zweite Endpunkt codiert (Schritt 140). Falls der zweite Punkt Teil einer diagonalen Linie ist, werden die fTyp-Bit auf diagonal gesetzt (Schritt 142), und es wird eine 3-Byte-(x,y)-Koordinate codiert (Schritt 144). Falls der zweite Punkt Teil einer vertikalen Linie ist, werden die fTyp-Bit auf vertikal gesetzt (Schritt 146), und es wird eine 2-Byte-(y)-Koordinate codiert (Schritt 148). Falls der zweite Punkt Teil einer horizontalen Linie ist, werden die fTyp-Bit auf horizontal gesetzt (Schritt 150), und es wird eine 2-Byte-(x)- Koordinate codiert (Schritt 152), und der Prozeß ist abgeschlossen (Schritt 154).
  • Eine detaillierte Beschreibung des Strichpfad- und des Strichpfad-gerade-Protokolls, das aus "Citrix ICA 3.0 Thin Wire Addendum - Revision 0.3" entnommen wurde, wird hier im beigefügten Anhang gegeben.
  • Wenngleich die Erfindung insbesondere mit Bezug auf spezielle bevorzugte Ausführungsformen dargestellt und beschrieben wurde, sei bemerkt, daß Fachleute verschiedene Änderungen an der Form und den Einzelheiten vornehmen können, ohne von dem in den anliegenden Ansprüchen definierten Schutzumfang der Erfindung abzuweichen.
  • ANHANG: Strichpfad- und Strichpfad-gerade-Protokoll (STROKEPATH- und STROKEPATHSTRAIGHT-Protokoll) I. Strichpfad (STROKEPATH)
  • In der folgenden Beschreibung der Unterstützung zum Zeichnen von Linien wird der Begriff Pfad so verwendet, daß er alle Eigenschaften und Punkte eines vollständigen Strichpfad- oder Strichpfad-gerade-Linienzeichnungsvorgangs bezeichnet. Jeder Pfad weist einen oder mehrere Unterpfade auf. Ein Unterpfad ist ein Satz von Punkten, die einen logischen Unterabschnitt des vollständigen Linienzeichnungsvorgangs bilden.
  • Die zum Klienten gesendeten Koordinaten sind ein komprimiertes Format des 28,4-Festpunktformats von Microsoft. Der Klient verwendet diese Punkte zum Zeichnen von Linien unter Verwendung des Laufschnittalgorithmus von Microsoft, wie im Microsoft-Windows-NT-DDK-VGA-Treiber-Beispiel dargestellt ist.
  • Dieses Paket wird für alle Linienzeichnungsvorgänge mit Ausnahme derjenigen, die das Strichpfad-gerade-Paketkriterium erfüllen, verwendet. Das heißt, für alle Linienzeichnungsvorgänge, die nicht alle der folgenden Kriterien erfüllen:
  • - der Pfad besteht aus einem und nur einem Unterpfad,
  • - der Unterpfad besteht aus nur zwei Punkten,
  • - der Pfad verwendet den gleichen Stift (Farbe und ROP2) wie der letzte Zeichnungsvorgang,
  • - die Linie ist durchgezogen,
  • - kein Ausschneiden (nicht einmal ein einfaches Rechteck-Ausschneiden),
  • - der erste Punkt ist entweder eine ganze Zahl (Integer) oder gleicht dem letzten Punkt des letzten Zeichnungsvorgangs,
  • - der zweite Punkt ist eine ganze Zahl.
  • Protokoll
  • Alle Mehrbyte-Dateneinheiten, die in Strichpfad verwendet werden, werden in der Reihenfolge vom niedrigstwertigen Byte zum höchstwertigen Byte zugewiesen.
  • Das Folgende bildet den Datenstrom für das Strichpfad- Befehlspaket: - Ausschneiden (2 Bit)
  • Bemerkungen:
  • Rechteck - für diese Art des Ausschneidens wird ein Begrenzungsrechteck als Teil des Datenstroms zugewiesen (siehe nachfolgend Begrenzungsrechteck).
  • Komplex - für diese Art des Ausschneidens wird ein Lauffeld als Teil des Datenstroms zugewiesen (siehe nachfolgend Lauffeld). - Stil (3 Bit)
  • Bemerkungen:
  • Gestrichelt - Für diesen Linienstil ist die 8-Bit- Stilmaske 11001100 zu verwenden. Es sei für eine Beschreibung von Stilmasken nachfolgend auf Stilmaske verwiesen.
  • Punktiert - Für diesen Linienstil ist die 8-Bit- Stilmaske 10101010 zu verwenden.
  • Strichpunktiert - Für diesen Linienstil ist die 8-Bit- Stilmaske 11100100 zu verwenden.
  • Strichpunktiertpunktiert - Für diesen Linienstil ist die 8-Bit- Stilmaske 11101010 zu verwenden.
  • Maske - Für diesen Linienstil wird eine 8-Bit- Stilmaske als Teil des Datenstroms (siehe nachfolgend Stilmaske) zugewiesen.
  • Feld - Für diesen Linienstil wird ein Stilfeld als Teil des Datenstroms (siehe nachfolgend Stilfeld) zugewiesen. - fZwischenraumAnfang (1 Bit)
  • Stilmaske - Falls fZwischenraumAnfang wahr ist, stellen die Einsen in der Stilmaske Zwischenräume dar, und anderenfalls stellen die Nullen Zwischenräume dar. Für eine Beschreibung von Stilmasken sei weiter unten auf Stilmaske verwiesen.
  • Stilfeld - Falls fZwischenraumAnfang wahr ist, gibt der erste Eintrag im Stilfeld die Länge des ersten Zwischenraums an, und ansonsten gibt der zweite Eintrag im Stilfeld die Länge des ersten Zwischenraums an. Für eine Beschreibung von Stilfeldern sei nachfolgend auf Stilfeld verwiesen. - fGleicherStift (1 Bit)
  • Bemerkungen: Falls fGleicherStift falsch ist, wird ein Stift als Teil des Datenstroms zugewiesen (es sei nachfolgend auf Stift verwiesen). - Reserviert (1 Bit) - Rastervorgang [ROP2] (4 Bit) - Farbe (4 Bit)
  • Bemerkungen: Der Stift ist dann und nur dann im Datenstrom enthalten, wenn fGleicher- Stiftwert des Anzeiger-Bytes falsch ist. Falls fGleicherStift wahr ist, sind die gleiche Farbe und der gleiche Rastervorgang zu verwenden, die durch den Stift spezifiziert sind, der im letzten Linienzeichnungsvorgang zugewiesen wurde.
  • Bemerkungen: Die Stilmaske ist dann und nur dann im Datenstrom enthalten, wenn der Stilwert des Anzeiger-Bytes Maske ist. Falls Stil ein anderer Wert als Maske ist, wird dieses Byte nicht gesendet.
  • Die Stilmaske ist 8 Bit lang (b7-b0), wobei jedes Bit eine Vorrichtungseinheitslänge einer Linie oder eines Zwischenraums darstellt. Typischerweise stellt eine Biteinstellung von 0 einen Zwischenraum dar, falls aber der fZwischenraumAnfang-Wert des Anzeiger- Bytes jedoch wahr ist, stellt eine 1 einen Zwischenraum dar.
  • Bemerkungen: Der Stilzustand ist dann und nur dann im Datenstrom enthalten, wenn der Stilwert des Anzeiger-Bytes nicht durchgezogen ist und der Ausschnittwert des Anzeiger- Bytes nicht komplex ist. Falls eine dieser beiden Bedingungen nicht erfüllt ist, werden diese Daten nicht gesendet.
  • Der Stilzustand ist ein Maß dafür, wo im Stilfeld der erste Unterpfad beginnen soll.
  • Bemerkungen: Der Stilfeld-Zählwert ist dann und nur dann im Datenstrom enthalten, wenn der Stilwert des Anzeiger-Bytes Feld ist. Wenn der Stil ein anderer Wert als Feld ist, wird dieses Byte nicht gesendet.
  • Der Stilfeld-Zählwert ist die Anzahl der im fortlaufenden Stilfeld zugewiesenen Elemente (für eine Beschreibung von Stilfeldern sei nachfolgend auf Stilfeld verwiesen).
  • n-Wörter-Stilfeld (auf alle Unterpfade anwendbar) nur dann zugewiesen, wenn Anzeiger.Stil Feld ist, wobei n der Stilfeld-Zählwert ist.
  • Bemerkungen: Das Stilfeld ist dann und nur dann im Datenstrom enthalten, wenn der Stilwert des Anzeiger-Bytes Feld ist. Falls Stil ein anderer Wert als Feld ist, wird dieses Byte nicht gesendet.
  • Das Stilfeld besteht aus n Wörtern, wobei n der Wert des Stilfeld-Zählwerts ist. Das erste Wort in dem Feld spezifiziert die Länge des ersten Strichs, das zweite spezifiziert die Länge des ersten Zwischenraums usw.
  • 4,6-Bytes-Begrenzungsrechteck (auf alle Unterpfade anwendbar) nur dann zugewiesen, wenn Anzeiger.Ausschnitt Rechteck ist.
  • Das Begrenzungsrechteck wird als ein oberer linksseitiger bzw. linker Punkt mit drei Byte zugewiesen, dem ein 1-3- Byte-X- und Y-Delta folgt: - Oberer linker Punkt (3 Byte - 24 Bit) - fTyp (3 Bit)
  • Bemerkungen: Der Wert von fTyp gibt an, wie viele Byte folgen, die Deltas der unteren rechten X- und Y-Koordinate bilden.
  • - X-Koordinate (11 Bit)
  • b13-b3
  • χ - ganzzahliger Wert der X-Koordinate
  • - Y-Koordinate (10 Bit)
  • b23-14
  • y - ganzzahliger Wert der Y-Koordinate - Delta der unteren rechten X- und Y-Koordinate
  • 3dx5dy: (1 Byte)
  • - X-Koordinaten-Delta (3 Bit) b2-b0
  • - Y-Koordinaten-Delta (5 Bit) b7-b3
  • 4dx4dy: (1 Byte)
  • - X-Koordinaten-Delta (4 Bit) b3-b0
  • - Y-Koordinaten-Delta (4 Bit) b7-b4
  • 5dx3dy: (1 Byte)
  • - X-Koordinaten-Delta (5 Bit) b4-b0
  • - Y-Koordinaten-Delta (3 Bit) b7-b5
  • 6dx10dy: (2 Byte)
  • X-Koordinaten-Delta (6 Bit) b5-b0
  • - Y-Koordinaten-Delta (10 Bit) b15-b6
  • 8dx8dy: (2 Byte)
  • - X-Koordinaten-Delta (8 Bit) b7-b0
  • - Y-Koordinaten-Delta (8 Bit) b15-b8
  • 10dx6dy: (2 Byte)
  • - X-Koordinaten-Delta (10 Bit) b9-b0
  • - Y-Koordinaten-Delta (6 Bit) b15-b10
  • 11dx5dy: (2 Byte)
  • - X-Koordinaten-Delta (11 Bit) b10-b0
  • - Y-Koordinaten-Delta (5 Bit) b15-b11
  • 11dx10dy: (3 Byte)
  • - X-Koordinaten-Delta (11Bit) b10-b0
  • - Y-Koordinaten-Delta (10 Bit) b20-b11
  • - Reserviert (3Bit) b23-b21
  • Bemerkungen:
  • Das Begrenzungsrechteck ist dann und nur dann in dem Datenstrom enthalten, wenn der Ausschnittwert des Anzeiger- Bytes Rechteck ist. Falls Ausschnitt einen anderen Wert als Rechteck hat, werden diese Daten nicht gesendet.
  • Die untere rechte Koordinate wird als eine 0-basierte 1 gesendet. Falls (x1, y1) die UHL-Koordinate ist und (x2, y2) die LRH-Koordinate ist und (dx, dy) die LRH-Deltas sind, gilt x2 = x1 + dx + 1 und y2 = y1 + dy + 1.
  • Das Begrenzungsrechteck wird zum Ausschneiden des Pfads verwendet. Alle Abschnitte der Linie, die außerhalb dieser Begrenzung liegen, sollten nicht gezeichnet werden.
  • Das Unterpfad-Anzeiger-Byte wird vor dem Festlegen der Unterpfad-Punkte zugewiesen. - fZuletzt (1 Bit)
  • Wahr: 1 - Der fortlaufende Unterpfad ist der letzte in dem Pfad.
  • Bemerkungen:
  • Wahr - Falls fZuletzt wahr ist, werden nach dem fortlaufenden Satz von Unterpfad- Punkten keine weiteren Daten gesendet.
  • Falsch - Falls fZuletzt falsch ist, werden nach dem fortlaufenden Satz von Unterpfad- Punkten ein weiteres Unterpfad-Anzeiger-Byte und ein weiterer Satz von Unterpfad-Punkten gesendet. - fSelberPunkt (1 Bit)
  • Bemerkungen:
  • Wahr: Falls fSelberPunkt wahr ist, ist der erste Punkt des Unterpfades nicht im fortlaufenden Satz von Unterpfad- Punkten enthalten. Statt dessen wird der letzte im letzten Satz von Unterpfad-Punkten zugewiesene Punkt als der erste Punkt des fortlaufenden Unterpfades verwendet. Der letzte Punkt kann von demselben oder einem anderen Pfad sein.
  • Falsch: Falls fSelberPunkt falsch ist, enthält der fortlaufende Satz von Unterpfad- Punkten den ersten Punkt im Unterpfad. - fBezier (1 Bit)
  • Bemerkungen:
  • fBezier ist immer falsch, wenn der Client die GCAPS_komplexe_Kurven-Fähigkeit nicht unterstützt.
  • Wahr: Falls fEezier wahr ist, definiert der fortlaufende Satz von Unterpfad-Punkten entweder, eine Bezier-Kurve oder eine Ellipsenart. Für Informationen zum Bestimmen des Bezier-Typs sei nachfolgend auf fTyp verwiesen. Für eine Beschreibung des Bezier-Formats sei nachfolgend auf Bezier-Format verwiesen.
  • Falsch: Falls fBezier falsch ist, besteht der fortlaufende Satz von Unterpfad-Punkten aus einem Satz zur Bildung einer Linie zu verbindender Punkte. - fGeschlossen (1 Bit)
  • Bemerkungen:
  • Wahr: Falls fGeschlossen wahr ist, sollte der erste Punkt im Unterpfad, bei dem das fNeuerAnfang-Bit gesetzt war, als der letzte Punkt verwendet werden, um eine geschlossene Figur zu zeichnen.
  • Falsch: Falls fGeschlossen falsch ist, ist der letzte Punkt des Unterpfades im fortlaufenden Satz von Unterpfad-Punkten enthalten. - fNeuerAnfang (1 Bit)
  • Bemerkungen:
  • Wahr: Falls fNeuerAnfang wahr ist, sollte der erste Punkt im fortlaufenden Unterpfad als der Anfang einer neuen Figur angesehen werden und als der letzte Punkt verwendet werden, falls das fGeschlossen-Bit gesetzt ist.
  • Falsch: Falls fNeuerAnfang falsch ist, ist der fortlaufende Satz von Unterpfad-Punkten eine Fortsetzung des fortlaufenden Unterpfades und bildet nicht den Anfang einer neuen geschlossenen Figur. - fTyp (3 Bits)
  • Bemerkungen:
  • Normal - Falls fTyp normal ist, werden alle Punkte im fortlaufenden Satz von Unterpfad-Punkten gesendet. Für eine Beschreibung der Punktformate sei nachfolgend auf Unterpfad-Punkte verwiesen.
  • Horizontal - Falls fTyp horizontal ist, wird der erste Punkt im fortlaufenden Satz von Unterpfad- Punkten gesendet. Nur die X-Koordinate des zweiten Punkts wird als nächstes gesendet, und diese liegt in dem Ein-Koordinatenformat vor. Für weitere Informationen sei auf die nachfolgend gemachten Bemerkungen zum Ein- Koordinatenformat verwiesen. Es sei bemerkt, daß der erste Punkt nicht gesendet wird, wenn der fSelberPunkt-Wert des Unterpunkte- Anzeiger-Bytes wahr ist.
  • Vertikal - Falls fTyp vertikal ist, wird der erste Punkt im fortlaufenden Satz von Unterpfad- Punkten gesendet. Nur die Y-Koordinate des zweiten Punkts wird als nächstes gesendet, und diese liegt in dem Ein-Koordinatenformat vor. Für weitere Informationen sei auf die nachfolgend gemachten Bemerkungen zum Ein- Koordinatenformat verwiesen. Es sei bemerkt, daß der erste Punkt nicht gesendet wird, wenn der fSelberPunkt-Wert des Unterpunkte- Anzeiger-Bytes wahr ist.
  • Diagonal - Falls fTyp diagonal ist, definiert der fortlaufende Satz von Unterpfad-Punkten eine nur aus zwei Punkten bestehende diagonale Linie. Für eine Beschreibung von Punktformaten sei nachfolgend auf Unterpfad- Punkte verwiesen.
  • Ellipse - Falls fTyp Ellipse ist, definiert der fortlaufende Satz von Unterpfad-Punkten eine Ellipse. Für weitere Informationen zu diesem Format sei nachfolgend auf das Ellipsenformat verwiesen.
  • Enddaten - Falls fTyp Enddaten ist, wird kein weiterer Satz von Unterpfad-Punkten gesendet. Der letzte Unterpfad-Satz wird als der letzte Unterpfad in dem Pfad angesehen.
  • Bemerkungen:
  • Der komplexe Stilzustand ist dann und nur dann im Datenstrom enthalten, wenn der Stilwert des Anzeiger-Bytes nicht durchgezogen ist und wenn der Ausschnitt-Wert des Anzeiger-Bytes komplex ist. Falls eine dieser Bedingungen nicht erfüllt ist, werden diese Daten nicht gesendet.
  • Der komplexe Stilzustand ist ein Maß dafür, wo in dem Stilfeld der Unterpfad beginnen soll.
  • Dieses Byte wird für jeden. Unterpfad mit komplexem Ausschnitt nach den Unterpfad-Anzeigern und vor dem Satz von Unterpfad-Punkten gesendet.
  • 2, 3, 4 oder 9 Byte (je Punkt) Unterpfadpunkte (abhängig von dem Punktformat - siehe nachfolgend) immer zugewiesen
  • Die Unterpfad-Punktdaten bestehen aus einem oder mehreren Punkten in einem der Standardformate, nämlich dem Bezier- Format, dem Ellipsenformat oder dem Ein-Koordinatenformat. Der letzte Punkt in dem Satz ist durch das fZuletzt-Bit bestimmt (nachfolgend unten).
  • - Standardformate (24, 32 oder 72 Bit)
  • Die Punkt- oder (x,y)-Koordinate wird abhängig davon, ob die X- und/oder die Y-Koordinate eine Bruchkomponente aufweist und/oder ein negativer Wert ist, als 3, 4 oder 4 Byte zugewiesen. Die niedrigstwertigen drei Bit jedes Punkts sind Anzeiger, die allen vorzeichenbehafteten und vorzeichenfreien Ganzzahl- und Rationalzahlformaten gemeinsam sind. fVorzeichenbehaftet (1 Bit)
  • Bemerkungen:
  • Wahr: Falls fVorzeichenbehaftet wahr ist, liegt dieser Punkt entweder im vorzeichenbehafteten 4-Byte-Ganzzahlformat oder im vorzeichenbehafteten 9-Byte- Rationalzahlformat vor.
  • Falsch: Falls fVorzeichenbehaftet falsch ist, liegt dieser Punkt entweder im vorzeichenfreien 3-Byte-Ganzzahlformat oder im vorzeichenfreien 4-Byte- Rationalzahlformat vor. - fGanzzahl (1 Bit)
  • Bemerkungen:
  • Wahr: Falls fCanzzahl wahr ist, liegt dieser Punkt entweder im vorzeichenfreien 3- Byte-Ganzzahlformat oder im vorzeichenbehafteten 4-Byte-Ganzzahlformat vor.
  • Falsch: Falls fGanzzahl falsch ist, liegt dieser Punkt entweder im vorzeichenfreien 4-Byte-Rationalzahlformat oder im vorzeichenbehafteten 9-Byte- Rationalzahlformat vor. - fZuletzt (1 Bit)
  • Bemerkungen:
  • Wahr - Falls fZuletzt wahr ist, ist dieser Punkt der letzte in diesem Unterpfad.
  • Falsch - Falls fZuletzt falsch ist, wird nach diesem Punkt ein weiterer Punkt gesendet.
  • - Vorzeichenfreies Ganzzahlformat - X-Koordinate (11 Bit)
  • b13-b3
  • x - vorzeichenfreier ganzzahliger Wert der X-Koordinate.
  • - Y-Koordinate (10 Bit)
  • b23-b14
  • y - vorzeichenfreier ganzzahliger Wert der Y-Koordinate.
  • Bemerkungen:
  • Das vorzeichenfreie Ganzzahlformat wird zugewiesen, falls fVorzeichenbehaftet falsch ist und fGanzzahl wahr ist. Die Punkte in diesem Format umfassen insgesamt 3 Byte.
  • - Vorzeichenfreies Ganzzahlformat - X-Koordinate (15 Bit)
  • b17-b3
  • x - vorzeichenfreier FIX-Wert der X- Koordinate.
  • - Y-Koordinate (14 Bit)
  • b31-b18
  • y - vorzeichenfreier FIX-Wert der Y- Koordinate.
  • Bemerkungen:
  • Das vorzeichenfreie Rationalzahlformat wird zugewiesen, wenn fVorzeichenbehaftet falsch ist und fGanzzahl falsch ist. Die Punkte in diesem Format umfassen insgesamt 4 Byte.
  • - Vorzeichenbehaftetes Ganzzahlformat - X-Koordinate (15 Bit)
  • b17-b3
  • x - vorzeichenbehafteter ganzzahliger Wert der X-Koordinate.
  • - Y-Koordinate (14 Bit)
  • b31-b18
  • y - vorzeichenbehaftetet ganzzahliger Wert der Y-Koordinate.
  • Bemerkungen:
  • Das vorzeichenbehaftete Ganzzahlformat wird zugewiesen, wenn fVorzeichenbehaftet wahr ist und fGanzzahl wahr ist. Die Punkte in diesem Format umfassen insgesamt 4 Byte.
  • - Vorzeichenbehaftetes Rationalzahlformat - reserviert (5 Bit)
  • b7-b3
  • res - für künftige Verwendung reserviert.
  • - X-Koordinate (32 Bit)
  • b39-b8
  • x - vorzeichenbehafteter FIX-Wert der X- Koordinate.
  • - Y-Koordinate (32 Bit)
  • b71-b40
  • y - vorzeichenbehafteter FIX-Wert der Y- Koordinate.
  • Bemerkungen:
  • Das vorzeichenbehaftete Rationalzahlformat wird zugewiesen, wenn fVorzeichenbehaftet wahr ist und fGanzzahl falsch ist. Die Punkte in diesem Format umfassen insgesamt 9 Byte.
  • Bemerkungen:
  • FIX - Beim FIX-Format für Koordinaten im Rationalzahlformat bezeichnen die niedrigstwertigen 4 Bit der Koordinate die Bruchkomponente, während die restlichen Bit die ganzzahlige Komponente bezeichnen. Die 4-Bit-Bruchkomponente stellt die Anzahl der Sechzehntel einer Einheit dar. Die Bruchkomponente kann Null sein.
  • - Bezier-Format
  • Das Bezier-Format von Unterpfad-Punkten wird verwendet, wenn der fBezier-Wert des Unterpfad-Anzeiger-Bytes wahr ist und der fTyp-Wert des Unterpfad-Anzeiger-Bytes normal ist. Falls der fTyp-Wert Ellipse ist, wird statt dessen das Ellipsenformat gesendet.
  • Für das Bezier-Format werden alle Punkte im Standardformat gesendet, wobei jeder Punkt im vorzeichenbehafteten oder vorzeichenfreien Ganzzahl- oder Rationalzahlformat vorliegt. Für einen Bezier-Unterpfad gilt noch der fSelberPunkt-Wert des Unterpfad-Anzeiger-Bytes.
  • Die Daten in diesem Format bestehen aus den Endpunkten und Steuerpunkten des (der) Splines. Die Anzahl der Punkte in dem Unterpfad ist um eins größer als das Dreifache der Anzahl der zu zeichnenden Splines (weil jedes Bezier-Spline zwei Steuerpunkte und einen Endpunkt benötigt und das anfängliche Spline einen Anfangspunkt benötigt).
  • Bemerkungen:
  • Das kubische Bezier-Spline wird unter Verwendung der Endpunkte und Steuerpunkte gezeichnet, die durch den Satz der Unterpfad-Punkte spezifiziert sind. Das erste Spline wird unter Verwendung des zweiten und des dritten Punkts als Steuerpunkte vom ersten Punkt zum vierten Punkt gezeichnet. Jedes folgende Spline in der Abfolge braucht genau drei weitere Punkte, wobei der Endpunkt des vorhergehenden Splines als der Anfangspunkt verwendet wird, die nächsten beiden Punkte in der Folge Steuerpunkte sind und der dritte Punkt der Endpunkt ist.
  • - Ellipsenformat
  • Das Ellipsenformat ist eine spezielle verdichtete Art von vier Bezier-Kurven, das zum Zeichnen eines Kreises oder einer Ellipse verwendet wird. Das Format besteht aus drei Punkten:
  • Der erste Punkt (3, 4 oder 9 Byte) liegt im vorzeichenbehafteten oder vorzeichenfreien Ganzzahl- oder Rationalzahl-Standardformat vor. Dieser Punkt wird nicht gesendet, wenn fSelberPunkt des Unterpfad-Anzeigers wahr ist.
  • Der zweite Punkt (3, 4 oder 9 Byte) liegt im vorzeichenbehafteten oder vorzeichenfreien Ganzzahl- oder Rationalzahl-Standardformat vor.
  • Der dritte Punkt (3, 4 oder 9 Byte) liegt im vorzeichenbehafteten oder vorzeichenfreien Ganzzahl- oder Rationalzahl-Standardformat vor.
  • Bemerkungen:
  • Das Ellipsenformat wird nie verwendet, wenn die GCAPS_komplexe_Kurven-Fähigkeit von dem Klienten nicht unterstützt wird.
  • Das Ellipsenformat kann unter Verwendung des folgenden Algorithmus leicht zum 13-Punkt-Bezier-Format erweitert werden:
  • FIX ptBez [13]
  • FIX xLinks, xRechts, yOben, yUnten
  • FIX xBez2, yBez1
  • FIX Ax, By, Cx, Dy
  • xLinks = X-Koordinate eines ersten Punkts
  • yOben = Y-Koordinate eines ersten Punkts
  • xRechts = X-Koordinate eines zweiten Punkts
  • yUnten = Y-Koordinate eines zweiten Punkts
  • xBez2 = X-Koordinate eines dritten Punkts
  • yBezl = Y-Koordinate eines dritten Punkts
  • Ax = (xRechts - xLinks)/2
  • By = (yOben - yunten)/2
  • Cx = xRechts - xBez2
  • Dy = yOben - yBez1
  • ptBez[0].x = xRechts
  • ptBez[0].y = yUnten + By
  • ptBez[1].x = xRechts
  • ptBez[1].y = yBez1
  • ptBez[2].x = xBez2
  • ptBez[2].y = yOben
  • ptBez[3].x = xRechts - Ax
  • ptBez[3].y = yOben
  • ptBez[4].x = xLinks + Cx
  • ptBez[4].y = yOben
  • ptBez[5].x = xLinks
  • ptBez[5].y = yOben - Dy
  • ptBez[6].x = xLinks
  • ptBez[6].y = yOben - By
  • ptBez[7].x = xLinks
  • ptBez[7].y = yUnten + Dy
  • ptBez[8].x = xLinks + Cx
  • ptBez[8].y = yUnten
  • ptBez[9].x = xLinks + Ax
  • ptBez[9].y = yUnten
  • ptBez[10].x = xRechts - Cx
  • ptBez[10].y = yUnten
  • ptBez[11].x = xRechts
  • ptBez[11].y = yUnten + Dy
  • ptBez[12].x = xRechts
  • ptBez[12].y = yUnten + By
  • - Ein-Koordinatenformat (1 Wort)
  • b15-b0
  • f - Wert der X- oder Y-Koordinate im FIX- Format.
  • Bemerkungen:
  • Das Ein-Koordinatenformat wird verwendet, wenn der fTyp- Wert des Unterpfad-Anzeiger-Bytes horizontal oder vertikal ist. Falls fTyp horizontal ist, ist der gesendete Wert die X-Koordinate des zweiten Punkts der Linie. Die Y-Koordinate wird nicht gesendet, weil diese der Y-Koordinate des ersten Punkts gleicht.
  • Falls fTyp vertikal ist, ist der gesendete Wert die Y- Koordinate des zweiten Punkts der Linie. Die X-Koordinate wird nicht gesendet, weil sie der X-Koordinate des ersten Punkts gleicht.
  • Weil horizontale und vertikale Linien stets nur aus zwei Punkten bestehen, ist der Ein-Koordinatenwert stets die letzte im Unterpfad zugewiesene Dateneinheit.
  • Es sei bemerkt, daß der Ein-Koordinatenwert die einzige Dateneinheit im Unterpfad ist, wenn fSelberPunkt des Unterpfad-Anzeiger-Bytes wahr ist.
  • n-D-Wörter-Lauffeld, wobei n die Anzhahl der Abläufe ist Nur dann zugewiesen, wenn Anzeiger. Ausschnitt komplex ist.
  • Die Lauffelddaten bestehen aus einem oder mehreren D-Wort- Läufen, von denen jeder einige Anzeiger, eine Anfangsposition und eine Stopposition aufweist. Der letzte Lauf in dem Feld ist durch das fZuletzt-Bit (siehe nachfolgend) bestimmt. - fZuletzt (1 Bit)
  • Bemerkungen:
  • Wahr - Falls fZuletzt wahr ist, ist dieser Lauf der letzte in diesem Unterpfad.
  • Falsch - Falls fZuletzt falsch ist, wird nach diesem Lauf ein weiterer Lauf gesendet.
  • - reserviert (1 Bit)
  • b1
  • 0 - reserviert
  • 1 - reserviert
  • - Anfangsposition (15 Bit)
  • b16-b2
  • Anfang - Anfangspunkt für das zu zeichnende Pixelfeld
  • - Stopposition (15 Bit)
  • b31-b17
  • Stoppen - Stoppunkt für das zu zeichnende Pixelfeld
  • Bemerkungen:
  • Das Lauffeld ist dann und nur dann in dem Datenstrom enthalten, wenn der Ausschnittwert des Anzeiger-Bytes komplex ist. Falls Ausschnitt ein anderer Wert als komplex ist, werden diese Daten nicht gesendet.
  • Das erste Pixel der nicht abgeschnittenen Linie ist das Pixel Null.
  • Falls Anzeiger.Ausschnitt komplex ist, ist der Satz der Unterpfad-Punkte stets auf zwei Punkte begrenzt, die unter Verwendung der durch das Lauffeld definierten Anfangs- und Stopposition verbunden werden sollten.
  • II. Strichpfad-gerade
  • Dieses Paket wird für Vorgänge zum Zeichnen gerader Linien verwendet, die nicht vom Strichpfad-Paket behandelt werden. Dies schließt alle Linienzeichnungsvorgänge ein, die alle folgenden Kriterien erfüllen:
  • - der Pfad besteht aus einem und nur einem Unterpfad,
  • - der Unterpfad besteht aus nur zwei Punkten,
  • - der Pfad verwendet den gleichen Stift (Farbe und ROP2) wie beim letzten Zeichnungsvorgang,
  • - die Linie ist durchgezogen,
  • - kein Ausschneiden (nicht einmal ein einfaches Rechteck-Ausschneiden),
  • - der erste Punkt ist entweder eine vorzeichenfreie ganze Zahl oder gleicht dem letzten Punkt des letzten Zeichnungsvorgangs,
  • - der zweite Punkt ist eine vorzeichenfreie ganze Zahl.
  • Protokoll
  • Bemerkung: Alle Mehrbyte-Dateneinheiten, die in Strichpfadgerade verwendet werden, werden in dieser Reihenfolge vom niedrigstwertigen Byte zum höchstwertigen Byte zugewiesen.
  • Byte 0 · 81 (Strichpfad-gerade) immer zugewiesen
  • 2-6 Bytes Punkte immer zugewiesen
  • Es gibt immer zwei Punkte in der zu zeichnenden Linie. Falls das niedrigstwertige Bit des ersten gesendeten Bytes, fSelberPunkt, wahr ist, ist dieses Byte Teil des zweiten (und letzten) Punkts. Falls fSelberPunkt falsch ist, ist dieses Byte Teil des ersten Punkts, und der zweite Punkt folgt dem ersten Punkt unmittelbar.
  • Der erste Punkt weist, wenn er gesendet wird, drei Byte auf. Der zweite Punkt, der immer gesendet wird, weist entweder zwei oder drei Byte auf, was davon abhängt, ob nur eine Koordinate einer horizontalen oder vertikalen Linie gesendet wird.
  • Alle gesendeten Punkte, selbst die Ein-Koordinaten-Arten, verwenden ein Format, bei dem die drei niedrigstwertigen Bit als Anzeiger verwendet werden: - fSelberPunkt (1 Bit)
  • Bemerkungen:
  • Wahr - Falls fSelberPunkt wahr ist, ist dies der zweite und letzte Punkt der Linie. Der im letzten Satz von Unterpfad- Punkten zugewiesene letzte Punkt wird als der erste Punkt dieser Linie verwendet.
  • Falsch - Falls fSelberPunkt falsch ist, ist dies der erste Punkt der Zweipunktlinie. Der letzte Punkt wird als nächstes zugewiesen, und er weist abhängig vom nachfolgend angegebenen Wert von fTyp zwei oder drei Byte auf.
  • - fTyp (2 Bit)
  • b2 b1
  • Bemerkungen:
  • Diagonal - Falls fTyp diagonal ist, weist der zweite Punkt der Zweipunktlinie drei Byte auf und besteht aus beiden, nämlich den X- und Y-Koordinaten, im vorzeichenfreien Ganzzahlformat.
  • Horizontal - Falls fTyp horizontal ist, weist der zweite Punkt der Zweipunktlinie zwei Byte auf und besteht nur aus der X- Koordinate im vorzeichenfreien Ganzzahlformat. Die Y-Koordinate des zweiten Punkts gleicht der Y-Koordinate des ersten Punkts.
  • Vertikal - Falls fTyp vertikal ist, weist der zweite Punkt der Zweipunktlinie zwei. Byte auf und besteht nur aus der Y- Koordinate im vorzeichenfreien Ganzzahlformat. Die X-Koordinate des zweiten Punkts gleicht der X-Koordinate des ersten Punkts.
  • Der erste Punkt und der zweite Punkt der diagonalen Linie verwenden das vorzeichenfreie 3-Byte-Ganzzahlformat, wobei die restlichen Bit folgendermaßen definiert sind:
  • - X-Koordinate (11 Bit)
  • b13-b3
  • x - vorzeichenfreier Ganzzahlwert der X- Koordinate.
  • - Y-Koordinate (10 Bits)
  • b23-b14
  • y - vorzeichenfreier Ganzzahlwert der Y- Koordinate.
  • Der zweite Punkt der horizontalen oder vertikalen Linien verwendet das 2-Byte-Format, wobei die restlichen Bit folgendermaßen definiert sind:
  • - X- oder Y-Koordinate (13 Bit)
  • b15-b3
  • u - Wert der X- oder Y-Koordinate im vorzeichenfreien Ganzzahlformat.
  • Bemerkungen:
  • Falls fTyp horizontal ist, ist der gesendete Wert die X- Koordinate des zweiten Punkts der Linie. Die Y-Koordinate wird nicht gesendet, weil diese der Y-Koordinate des ersten Punkts gleicht.
  • Falls fTyp vertikal ist, ist der gesendete Wert die Y- Koordinate des zweiten Punkts der Linie. Die X-Koordinate wird nicht gesendet, weil diese der X-Koordinate des ersten Punkts gleicht.

Claims (18)

1. Verfahren zum Komprimieren von graphischen Liniendaten, die zumindest einen Unterpfad bzw. Unterzweig einer graphischen Linie repräsentieren, die von einem Anwendungsserver (14) über einen Kommunikations-Übertragungsmechanismus (12) mit geringer Bandbreite zu einer graphischen Benutzerschnittstelle einer Arbeitsstation (16) zum Anzeigen auf einem Anzeigebildschirm der Arbeitsstation übertragen werden, mit folgenden am Anwendungsserver auszuführenden Schritten:
(a) Bestimmen von Koordinatenorten für die Endpunkte jedes zumindest einen Unterpfades der graphischen Linie von den graphischen Liniendaten,
(b) Bestimmen von Attributen von jedem des zumindest einen Unterpfades von den graphischen Liniendaten,
(c) Wiedergeben der Koordinatenorte als komprimierte Koordinatenortsdaten und der Attribute als komprimierte Attributdaten,
(d) Bestimmen eines Anzeigers von den graphischen Liniendaten, der Informationen enthält, die auf den zumindest einen Unterpfad der graphischen Linie anwendbar sind, wobei der Anzeiger einen Zustand von mindestens einem Attribut identifiziert, bei dem das mindestens eine Attribut selektiv kodiert als Teil der komprimierten Attributdaten gemäß dem Anzeiger ist, und
(e) Bereitstellen eines Pakets mit komprimierten Liniendaten mit einer Mehrzahl von Feldern mit mindestens einem von der Mehrzahl von Feldern mit variabler Länge, wobei das Paket mit komprimierten Liniendaten die komprimierten Koordinatenortsdaten, die komprimierten Attributdaten und den Anzeiger für jeden zumindest einen Unterpfad aufweist.
2. Verfahren nach Anspruch 1, das weiterhin die folgenden an der Arbeitsstation (16) auszuführenden Schritte aufweist:
(f) Empfangen des Pakets mit komprimierten Liniendaten bei einem Dekomprimierprogramm,
(g) Bestimmen der graphischen Liniendaten von dem Paket mit komprimierten Liniendaten, mit Koordinatenorten für die Endpunkte jedes des zumindest einen Unterpfades der graphischen Linie und mit Attributen von jedem des zumindest einen Unterpfades,
(h) Bereitstellen der graphischen Liniendaten für die graphische Benutzerschnittstelle, und
(i) Anzeigen bzw. Darstellen der graphischen Linie des mindestens einen Unterpfades auf dem Anzeigebildschirm der Arbeitsstation.
3. Verfahren nach einem der vorstehenden Ansprüche, das weiterhin vor dem Schritt (a) den Schritt des Segmentierens einer graphischen Linie in zumindest einen Unterpfad umfaßt.
4. Verfahren nach Anspruch 3, bei dem Schritt (b) den Schritt des Bestimmens von Koordinatenorten für die Endpunkte des mindestens einen Unterpfades von den graphischen Liniendaten umfaßt.
5. Verfahren nach Anspruch 3, bei dem Schritt (d) den Schritt des Bestimmens von Attributen des zumindest einen Unterpfades von den Liniendaten umfaßt, mit Ausschnitt, Stil, Abständen, Farbe und Art.
6. Verfahren zum Dekomprimieren komprimierter graphischer Liniendaten, die über einen Kommunikationsübertragungsmechanismus mit geringer Bandbreite von einer graphischen Benutzerschnittstelle einer Arbeitsstation empfangen werden, wobei die komprimierten graphischen Liniendaten repräsentativ für mindestens einen Unterpfad einer graphischen Linie sind, zum Anzeigen bzw. Darstellen auf einem Anzeigebildschirm einer Arbeitsstation, und wobei das Verfahren folgende Schritte umfaßt:
(a) Empfangen eines Pakets mit komprimierten graphischen Liniendaten mit einer Mehrzahl von Feldern mit mindestens einem von der Mehrzahl von Feldern mit einer variablen Länge, wobei das Paket mit graphischen Liniendaten komprimierte Koordinatenortsdaten, komprimierte Attributdaten und einen Anzeiger aufweist,
(b) Bestimmen von Koordinatenorten von den komprimierten Koordinatenortsdaten für die Endpunkte des mindestens einen Unterpfades der graphischen Linie ohne einen Verlust an Daten der Koordinatenorte, und
(c) Bestimmen von Attributen des mindestens einen Unterpfades der graphischen Linie von den komprimierten Attributdaten und dem Anzeiger, ohne einen Verlust an Daten der Attribute, wobei der Anzeiger Informationen enthält, die an mindestens einem Unterpfad der graphischen Linie anwendbar sind und einen Zustand von mindestens einem Attribut identifizieren, bei dem das mindestens eine Attribut gemäß dem Anzeiger dekodiert ist.
7. Verfahren nach einem der vorstehenden Ansprüche, bei dem das Paket mit komprimierten Liniendaten vollständig die Eigenschaften der graphischen Linie bestimmt.
8. Verfahren nach einem der vorstehenden Ansprüche, bei dem die Attribute Ausschnitt, Stil, Abstände, Farbe und Typ enthalten.
9. Verfahren nach Anspruch 8, bei dem der Stil jedes des zumindest einen Unterpfades durchgezogen, alternierend, gestrichelt, punktiert, strichpunktiert, strichpunktiertpunktiert, gemischt, oder regelmäßig ist.
10. Verfahren nach Anspruch 8, bei dem der Typ jedes des zumindest einen Unterpfades normal, horizontal, vertikal, diagonal oder elliptisch ist.
11. Verfahren nach einem der vorstehenden Ansprüche, bei dem der Anzeiger einen Zustand des mindestens einen Koordinatenortes bestimmt.
12. Verfahren nach Anspruch 6, bei dem der Anzeiger eine Änderung in der Farbe der graphischen Linie identifiziert.
13. Verfahren nach Anspruch 12, bei dem der Anzeiger ein Ein-Bit-Feld umfaßt, wenn die Farbe der graphischen Linie dieselbe ist wie die einer zwischenzeitlich vorhergehenden graphischen Linie.
14. Verfahren nach Anspruch 12, bei dem der Anzeiger ein Ein-Byte-Feld umfaßt, wenn die Farbe der graphischen Linie anders als die Farbe einer zwischenzeitlich vorhergehenden graphischen Linie ist, wobei das Ein-Byte-Feld die Farbe der gegenwärtigen graphischen Linie repräsentiert.
15. Verfahren nach Anspruch 6, bei dem der Anzeiger den Stil der graphischen Linie identifiziert.
16. Verfahren nach Anspruch 6, bei dem der Anzeiger Ausschnittsinformationen der graphischen Linie aufweist.
17. Computerprogrammprodukt, das bewirkt, daß das Verfahren zum Komprimieren graphischer Liniendaten gemäß Anspruch 1 ausgeführt wird, wenn es auf einem Datenverarbeitungsmittel ausgeführt wird.
18. Computerprogrammprodukt, das bewirkt, daß das Verfahren zum Dekomprimieren graphischer Liniendaten gemäß Anspruch 6 ausgeführt wird, wenn es auf einem Datenverarbeitungsmittel ausgeführt wird.
DE69707021T 1996-06-12 1997-05-28 Verlustfreie leitungskodierung Expired - Lifetime DE69707021T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/662,590 US6057857A (en) 1996-06-12 1996-06-12 Method for the lossless compression of lines in a distributed computer system
PCT/US1997/008998 WO1997048077A1 (en) 1996-06-12 1997-05-28 Lossless line compression

Publications (2)

Publication Number Publication Date
DE69707021D1 DE69707021D1 (de) 2001-10-31
DE69707021T2 true DE69707021T2 (de) 2002-06-20

Family

ID=24658344

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69707021T Expired - Lifetime DE69707021T2 (de) 1996-06-12 1997-05-28 Verlustfreie leitungskodierung

Country Status (9)

Country Link
US (2) US6057857A (de)
EP (1) EP0978100B1 (de)
JP (1) JP2001510643A (de)
KR (1) KR20000016611A (de)
AU (1) AU714722B2 (de)
CA (1) CA2258005A1 (de)
DE (1) DE69707021T2 (de)
IL (1) IL127513A0 (de)
WO (1) WO1997048077A1 (de)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6831637B1 (en) * 1999-12-30 2004-12-14 Intel Corporation Method and apparatus for compressing three dimensional surface data
US6633314B1 (en) 2000-02-02 2003-10-14 Raja Tuli Portable high speed internet device integrating cellular telephone and palm top computer
US7356570B1 (en) 2000-08-29 2008-04-08 Raja Tuli Portable high speed communication device
US20020030843A1 (en) * 2000-02-02 2002-03-14 Tuli Raja Singh Portable high speed internet access device
US7289244B2 (en) 2000-02-02 2007-10-30 Raja Singh Tuli Portable high speed internet access device
US7068381B1 (en) 2000-02-02 2006-06-27 Raja Tuli Portable high speed internet access device
US7023572B2 (en) * 2000-02-02 2006-04-04 Raja Singh Tuli Portable high speed internet access device
US20020115477A1 (en) * 2001-02-13 2002-08-22 Raja Singh Portable high speed internet access device with scrolling
US6941382B1 (en) 2000-02-07 2005-09-06 Raja Tuli Portable high speed internet or desktop device
US6874009B1 (en) 2000-02-16 2005-03-29 Raja Tuli Portable high speed internet device with user fees
US7490166B2 (en) * 2000-05-26 2009-02-10 Citrix Systems, Inc. Remote control of a client's off-screen surface
US7117239B1 (en) 2000-07-28 2006-10-03 Axeda Corporation Reporting the state of an apparatus to a remote computer
US7035912B2 (en) 2000-08-28 2006-04-25 Abaco.P.R., Inc. Method and apparatus allowing a limited client device to use the full resources of a networked server
US8108543B2 (en) 2000-09-22 2012-01-31 Axeda Corporation Retrieving data from a server
US7185014B1 (en) 2000-09-22 2007-02-27 Axeda Corporation Retrieving data from a server
US6842777B1 (en) 2000-10-03 2005-01-11 Raja Singh Tuli Methods and apparatuses for simultaneous access by multiple remote devices
US7191211B2 (en) * 2000-10-03 2007-03-13 Raja Tuli Portable high speed internet access device priority protocol
US6915327B1 (en) 2000-10-30 2005-07-05 Raja Singh Tuli Portable high speed communication device peripheral connectivity
US6928461B2 (en) 2001-01-24 2005-08-09 Raja Singh Tuli Portable high speed internet access device with encryption
US7171444B2 (en) * 2001-11-14 2007-01-30 Sharp Laboratories Of America, Inc. Remote desktop protocol compression system
KR100422252B1 (ko) * 2001-12-20 2004-03-11 삼성전자주식회사 씬 클라이언트 네트워크 시스템과 그 네트워크 시스템의데이터 전송 방법
US7254601B2 (en) 2001-12-20 2007-08-07 Questra Corporation Method and apparatus for managing intelligent assets in a distributed environment
AU2003208477A1 (en) 2002-03-01 2003-09-16 T5 Labs Ltd Centralised interactive graphical application server
US7376695B2 (en) * 2002-03-14 2008-05-20 Citrix Systems, Inc. Method and system for generating a graphical display for a remote terminal session
US8671213B2 (en) 2002-03-14 2014-03-11 Citrix Systems, Inc. Methods and apparatus for generating graphical and media displays at a client
US7178149B2 (en) 2002-04-17 2007-02-13 Axeda Corporation XML scripting of soap commands
US8176428B2 (en) * 2002-12-03 2012-05-08 Datawind Net Access Corporation Portable internet access device back page cache
US7966418B2 (en) 2003-02-21 2011-06-21 Axeda Corporation Establishing a virtual tunnel between two computer programs
EP1635269B1 (de) * 2004-09-14 2020-04-15 Microsoft Technology Licensing, LLC Auf willkürliche geometrische Pfade bezogene Funktionen
US7450128B2 (en) * 2004-11-15 2008-11-11 Hewlett-Packard Development Company, L.P. Systems and methods of providing image copy and modify commands to a receiver with an associated display
US8171169B2 (en) * 2005-03-14 2012-05-01 Citrix Systems, Inc. Method and apparatus for updating a graphical display in a distributed processing environment
US8423673B2 (en) * 2005-03-14 2013-04-16 Citrix Systems, Inc. Method and apparatus for updating a graphical display in a distributed processing environment using compression
US7817849B2 (en) * 2005-08-18 2010-10-19 Hewlett-Packard Development Company, L.P. Method and apparatus for graphical data compression
US8370479B2 (en) 2006-10-03 2013-02-05 Axeda Acquisition Corporation System and method for dynamically grouping devices based on present device conditions
US8065397B2 (en) 2006-12-26 2011-11-22 Axeda Acquisition Corporation Managing configurations of distributed devices
WO2010042578A1 (en) 2008-10-08 2010-04-15 Citrix Systems, Inc. Systems and methods for real-time endpoint application flow control with network structure component

Family Cites Families (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3596257A (en) 1969-09-17 1971-07-27 Burroughs Corp Method and apparatus for allocating small memory spaces to a computer program
US4013828A (en) 1976-02-20 1977-03-22 Bell Telephone Laboratories, Incorporated Method and arrangement for reducing the bandwidth and/or time required to transmit a dithered image
US4410916A (en) 1979-08-24 1983-10-18 Compression Labs, Inc. Dual mode facsimile coding system and method
DE2939411C2 (de) 1979-09-28 1982-09-02 Siemens AG, 1000 Berlin und 8000 München Datenverarbeitungsanlage mit virtueller Speicheradressierung
US4322795A (en) 1980-01-24 1982-03-30 Honeywell Information Systems Inc. Cache memory utilizing selective clearing and least recently used updating
US4463424A (en) 1981-02-19 1984-07-31 International Business Machines Corporation Method for dynamically allocating LRU/MRU managed memory among concurrent sequential processes
US4562423A (en) 1981-10-15 1985-12-31 Codex Corporation Data compression
US4430712A (en) 1981-11-27 1984-02-07 Storage Technology Corporation Adaptive domain partitioning of cache memory space
US4503501A (en) 1981-11-27 1985-03-05 Storage Technology Corporation Adaptive domain partitioning of cache memory space
US4499499A (en) 1982-12-29 1985-02-12 International Business Machines Corporation Method for identification and compression of facsimile symbols in text processing systems
DE3483489D1 (de) 1983-04-13 1990-12-06 Nec Corp Speicherzugriffseinrichtung in einem datenverarbeitungssystem.
JP2785821B2 (ja) 1983-10-07 1998-08-13 ソニー株式会社 デイジタル信号発生回路
US4779189A (en) 1985-06-28 1988-10-18 International Business Machines Corporation Peripheral subsystem initialization method and apparatus
US4899149A (en) 1986-02-28 1990-02-06 Gary Kahan Method of and apparatus for decoding Huffman or variable-length coees
US4862392A (en) * 1986-03-07 1989-08-29 Star Technologies, Inc. Geometry processor for graphics display system
US4949281A (en) * 1987-04-23 1990-08-14 H. Berthold Ag Method and apparatus for generating and producing two-dimensional graphic object by polynominal parametric curves
US4992954A (en) 1987-08-05 1991-02-12 Hitachi, Ltd. Method of storing character patterns and character pattern utilization system
US4928247A (en) * 1987-08-13 1990-05-22 Digital Equipment Corporation Method and apparatus for the continuous and asynchronous traversal and processing of graphics data structures
JPH01246656A (ja) 1988-03-29 1989-10-02 Nec Corp プロセッサ間共有メモリ管理方式
US5103303A (en) 1988-04-19 1992-04-07 Konica Corporation Multicolor imaging forming apparatus
JP2790815B2 (ja) * 1988-08-10 1998-08-27 株式会社リコー 画像データ圧縮方法
US4905141A (en) 1988-10-25 1990-02-27 International Business Machines Corporation Partitioned cache memory with partition look-aside table (PLAT) for early partition assignment identification
EP0389151A3 (de) 1989-03-22 1992-06-03 International Business Machines Corporation System und Verfahren für die Verwaltung eines verteilten Cache-Speichers
US5394531A (en) 1989-04-03 1995-02-28 International Business Machines Corporation Dynamic storage allocation system for a prioritized cache
KR930003126B1 (ko) * 1989-04-20 1993-04-19 가부시기가이샤 도시바 곡선정합에 있어서 형상을 표시하는 직선쇼트벡터의 접속상태를 판정하는 방법 및 시스템
JP2858795B2 (ja) 1989-07-14 1999-02-17 株式会社日立製作所 実記憶割り当て方法
US5119319A (en) * 1989-12-14 1992-06-02 Options Unlimited Research Corp. Full-duplex video communication system
US5309555A (en) * 1990-05-15 1994-05-03 International Business Machines Corporation Realtime communication of hand drawn images in a multiprogramming window environment
US5269003A (en) 1990-05-24 1993-12-07 Apple Computer, Inc. Memory architecture for storing twisted pixels
EP0463874A2 (de) 1990-06-29 1992-01-02 Digital Equipment Corporation Cache-Anordnung für ein Dateisystem in einem digitalen Datenverarbeitungssystem
JPH0799508B2 (ja) 1990-10-15 1995-10-25 インターナショナル・ビジネス・マシーンズ・コーポレイション キャッシュ記憶機構を動的に区分する方法およびキャッシュ記憶機構システム
US5339411A (en) 1990-12-21 1994-08-16 Pitney Bowes Inc. Method for managing allocation of memory space
US5315698A (en) * 1991-08-21 1994-05-24 Digital Equipment Corporation Method and apparatus for varying command length in a computer graphics system
US5321806A (en) * 1991-08-21 1994-06-14 Digital Equipment Corporation Method and apparatus for transmitting graphics command in a computer graphics system
CA2083634C (en) 1991-12-30 1999-01-19 Hung Ping Wong Method and apparatus for mapping page table trees into virtual address space for address translation
US5351129A (en) 1992-03-24 1994-09-27 Rgb Technology D/B/A Rgb Spectrum Video multiplexor-encoder and decoder-converter
DE69327089T2 (de) 1992-07-24 2000-04-13 Microsoft Corp., Redmond Rechnerverfahren und system zur zuordnung und zur freigabe von speichern.
WO1994003853A1 (en) * 1992-07-29 1994-02-17 Communication Intelligence Corporation A method and apparatus for compression of electronic ink
JPH0659982A (ja) 1992-08-10 1994-03-04 Hitachi Ltd 仮想記憶制御方法および装置
US5434992A (en) 1992-09-04 1995-07-18 International Business Machines Corporation Method and means for dynamically partitioning cache into a global and data type subcache hierarchy from a real time reference trace
US5491808A (en) 1992-09-30 1996-02-13 Conner Peripherals, Inc. Method for tracking memory allocation in network file server
US5537551A (en) 1992-11-18 1996-07-16 Denenberg; Jeffrey N. Data compression method for use in a computerized informational and transactional network
US5455576A (en) 1992-12-23 1995-10-03 Hewlett Packard Corporation Apparatus and methods for Lempel Ziv data compression with improved management of multiple dictionaries in content addressable memory
CA2127053C (en) * 1993-07-02 2005-01-04 Makoto Furuhashi Method and apparatus for time-sharing cpu system bus in image generation system
US5473742A (en) * 1994-02-22 1995-12-05 Paragraph International Method and apparatus for representing image data using polynomial approximation method and iterative transformation-reparametrization technique
US5537635A (en) 1994-04-04 1996-07-16 International Business Machines Corporation Method and system for assignment of reclaim vectors in a partitioned cache with a virtual minimum partition size
US5734388A (en) * 1994-05-16 1998-03-31 Agfa Division, Bayer Corporation Method and apparatus for data compression of digital data to produce a scaleable font database
US5754187A (en) * 1994-05-16 1998-05-19 Agfa Division, Bayer Corporation Method for data compression of digital data to produce a scaleable font database
US5572206A (en) 1994-07-06 1996-11-05 Microsoft Corporation Data compression method and system
US5566288A (en) * 1994-09-02 1996-10-15 Caterpillar Inc. System and method for automatically fitting a B-spline curve to a set of data points
US5771034A (en) 1995-01-23 1998-06-23 Microsoft Corporation Font format
US5651136A (en) 1995-06-06 1997-07-22 International Business Machines Corporation System and method for increasing cache efficiency through optimized data allocation

Also Published As

Publication number Publication date
JP2001510643A (ja) 2001-07-31
DE69707021D1 (de) 2001-10-31
EP0978100A1 (de) 2000-02-09
US6172683B1 (en) 2001-01-09
WO1997048077A1 (en) 1997-12-18
US6057857A (en) 2000-05-02
KR20000016611A (ko) 2000-03-25
CA2258005A1 (en) 1997-12-18
AU714722B2 (en) 2000-01-06
EP0978100B1 (de) 2001-09-26
IL127513A0 (en) 1999-10-28
AU3215497A (en) 1998-01-07

Similar Documents

Publication Publication Date Title
DE69707021T2 (de) Verlustfreie leitungskodierung
DE60112107T2 (de) Verfahren und Vorrichtung zur effizientes Verringerung von graphischen Anzeigedaten für ihre Übertragung mittels eines Übertragungsprotokolls für niedrige Bandbreiten
DE69626394T2 (de) Verfahren und vorrichtung zur verminderung des speicherbedarfs für anzeigedaten
DE69410045T2 (de) Palettenverwaltung zur gemeinsamen Nutzung der Anwendungen auf zusammenarbeitende Systeme
DE69817029T2 (de) Mischung von komprimierten rasterbildern in einem drucksystem
DE69413347T2 (de) Auf die Bytegrenze ausgerichtete Datenkomprimierung
DE69216339T2 (de) Neue Video-Misch-Technik mit JPEG-komprimierten Daten
DE69131370T2 (de) Pipelinestrukturen für vollfarbfähigen Rechnergraphik
DE69601086T2 (de) Verfahren und system zur darstellung einer datengruppe mit einer datentransformationsfunktion und einer datenmaske
WO1992009173A1 (de) Verfahren zur adaptiven quantisierung zwecks datenreduktion bei der übertragung von digitalen bildern
DE19713654B4 (de) Progressiv darstellbare Umrissschrift und Verfahren zum Erzeugen, Übertragen und Darstellen derselben
DE112007002225T5 (de) Erstellen und Codieren von Glyphen
DE4341304A1 (de) Verfahren und Vorrichtung zur Verwendung eines Videopuffers
DE69329564T2 (de) Bildverarbeitungsgerät
DE69315482T2 (de) Auf Prioritäten basierte graphische Anzeige in einem offenen System mit Fenstern
DE69328811T2 (de) Opcode abhängige Komprimierung für ein Window-System.
DE19516979C2 (de) Bitmap-Datenkomprimierungsverfahren und Bitmap-Datenkomprimierungsvorrichtung zur Durchführung dieses Verfahrens
DE69632644T2 (de) Bilderzeugung für seitendrucker
EP1323313B1 (de) Verfahren und anordnung zum übertragen eines vektors
DE69506914T2 (de) Verfahren zum anzeigen der aktualisierungsverarbeitung für eine fernverarbeitete anzeige
DE2336180B2 (de) Videodatenkompression bei der abtastung von schriftstuecken
DE19944213C1 (de) Verfahren zum Komprimieren eines digitalen Bildes mit mehreren Bit-Ebenen
DE10131801B4 (de) Verfahren zur Datenkompression und Navigationssystem
DE69612348T2 (de) Bilddatenkompressionsverfahren und -vorrichtung
DE69818558T2 (de) Verfahren und Vorrichtung zur geometrischen Komprimierung von dreimensionalen Grafiken

Legal Events

Date Code Title Description
8332 No legal effect for de
8370 Indication related to discontinuation of the patent is to be deleted
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Representative=s name: KUDLEK & GRUNERT PATENTANWAELTE PARTNERSCHAFT, 803