DE69707021T2 - Verlustfreie leitungskodierung - Google Patents
Verlustfreie leitungskodierungInfo
- 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
Links
- 238000000034 method Methods 0.000 claims description 45
- 238000004891 communication Methods 0.000 claims description 11
- 239000007787 solid Substances 0.000 claims description 11
- 230000007246 mechanism Effects 0.000 claims description 10
- 230000005540 biological transmission Effects 0.000 claims description 9
- 230000006837 decompression Effects 0.000 claims description 7
- 238000004590 computer program Methods 0.000 claims 2
- 238000007906 compression Methods 0.000 description 17
- 230000006835 compression Effects 0.000 description 15
- 238000013144 data compression Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000002441 reversible effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
- G06T9/001—Model-based coding, e.g. wire frame
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
- G06T9/20—Contour 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.
- 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.
- 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)
- 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)
- 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.
- b13-b3
- χ - ganzzahliger Wert der X-Koordinate
- b23-14
- y - ganzzahliger Wert der Y-Koordinate - Delta der unteren rechten X- und Y-Koordinate
- - X-Koordinaten-Delta (3 Bit) b2-b0
- - Y-Koordinaten-Delta (5 Bit) b7-b3
- - X-Koordinaten-Delta (4 Bit) b3-b0
- - Y-Koordinaten-Delta (4 Bit) b7-b4
- - X-Koordinaten-Delta (5 Bit) b4-b0
- - Y-Koordinaten-Delta (3 Bit) b7-b5
- X-Koordinaten-Delta (6 Bit) b5-b0
- - Y-Koordinaten-Delta (10 Bit) b15-b6
- - X-Koordinaten-Delta (8 Bit) b7-b0
- - Y-Koordinaten-Delta (8 Bit) b15-b8
- - X-Koordinaten-Delta (10 Bit) b9-b0
- - Y-Koordinaten-Delta (6 Bit) b15-b10
- - X-Koordinaten-Delta (11 Bit) b10-b0
- - Y-Koordinaten-Delta (5 Bit) b15-b11
- - X-Koordinaten-Delta (11Bit) b10-b0
- - Y-Koordinaten-Delta (10 Bit) b20-b11
- - Reserviert (3Bit) b23-b21
- 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.
- 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)
- 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)
- 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)
- 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)
- 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)
- 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.
- 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).
- 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)
- 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)
- 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.
- b13-b3
- x - vorzeichenfreier ganzzahliger Wert der X-Koordinate.
- b23-b14
- y - vorzeichenfreier ganzzahliger Wert der Y-Koordinate.
- Das vorzeichenfreie Ganzzahlformat wird zugewiesen, falls fVorzeichenbehaftet falsch ist und fGanzzahl wahr ist. Die Punkte in diesem Format umfassen insgesamt 3 Byte.
- b17-b3
- x - vorzeichenfreier FIX-Wert der X- Koordinate.
- b31-b18
- y - vorzeichenfreier FIX-Wert der Y- Koordinate.
- Das vorzeichenfreie Rationalzahlformat wird zugewiesen, wenn fVorzeichenbehaftet falsch ist und fGanzzahl falsch ist. Die Punkte in diesem Format umfassen insgesamt 4 Byte.
- b17-b3
- x - vorzeichenbehafteter ganzzahliger Wert der X-Koordinate.
- b31-b18
- y - vorzeichenbehaftetet ganzzahliger Wert der Y-Koordinate.
- Das vorzeichenbehaftete Ganzzahlformat wird zugewiesen, wenn fVorzeichenbehaftet wahr ist und fGanzzahl wahr ist. Die Punkte in diesem Format umfassen insgesamt 4 Byte.
- b7-b3
- res - für künftige Verwendung reserviert.
- b39-b8
- x - vorzeichenbehafteter FIX-Wert der X- Koordinate.
- b71-b40
- y - vorzeichenbehafteter FIX-Wert der Y- Koordinate.
- Das vorzeichenbehaftete Rationalzahlformat wird zugewiesen, wenn fVorzeichenbehaftet wahr ist und fGanzzahl falsch ist. Die Punkte in diesem Format umfassen insgesamt 9 Byte.
- 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.
- 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).
- 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.
- 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.
- 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
- b15-b0
- f - Wert der X- oder Y-Koordinate im FIX- Format.
- 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)
- 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.
- b1
- 0 - reserviert
- 1 - reserviert
- b16-b2
- Anfang - Anfangspunkt für das zu zeichnende Pixelfeld
- b31-b17
- Stoppen - Stoppunkt für das zu zeichnende Pixelfeld
- 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.
- 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.
- 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.
- b2 b1
- 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:
- b13-b3
- x - vorzeichenfreier Ganzzahlwert der X- Koordinate.
- 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:
- b15-b3
- u - Wert der X- oder Y-Koordinate im vorzeichenfreien Ganzzahlformat.
- 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.
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)
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)
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 |
-
1996
- 1996-06-12 US US08/662,590 patent/US6057857A/en not_active Expired - Lifetime
-
1997
- 1997-05-28 KR KR1019980710207A patent/KR20000016611A/ko active IP Right Grant
- 1997-05-28 EP EP97927780A patent/EP0978100B1/de not_active Expired - Lifetime
- 1997-05-28 JP JP50162398A patent/JP2001510643A/ja active Pending
- 1997-05-28 DE DE69707021T patent/DE69707021T2/de not_active Expired - Lifetime
- 1997-05-28 CA CA002258005A patent/CA2258005A1/en not_active Abandoned
- 1997-05-28 AU AU32154/97A patent/AU714722B2/en not_active Expired
- 1997-05-28 WO PCT/US1997/008998 patent/WO1997048077A1/en active IP Right Grant
- 1997-05-28 IL IL12751397A patent/IL127513A0/xx unknown
-
1999
- 1999-10-29 US US09/430,817 patent/US6172683B1/en not_active Expired - Lifetime
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 |