-
Die
vorliegende Erfindung betrifft Druckinformationen innerhalb eines
Rechensystems und bezieht sich insbesondere auf einen Drucker und
einen Drucktreiber, die adaptive Objektbandbildung verwenden.
-
Obwohl
dieselbe von allgemeinem Nutzen auf dem Druck- und Anzeigegebiet
ist, ist die vorliegende Erfindung besonders nützlich auf dem Gebiet von computergetriebenen
Druckern, die insbesondere zum Erzeugen von technischen oder anderen
großen
Zeichnungen auf Papier, Velin, Film oder einem anderen Druckmedium
konzipiert sind, das von einer Rolle oder von einem manuellen oder
automatischen Blattzuführmedienweg
durch den Mechanismus gezogen wird. Normalerweise kann das Medium
eine Breite von 8 ½ Zoll
bis zu 3 oder 4 Fuß oder
mehr aufweisen.
-
Unter
Bezugnahme auf ein rechtwinkliges Koordinatensystem wird das Papier
oder das andere Druckmedium in der X-Richtung durch den Drucker gezogen,
und ein thermischer Tintenstrahldruckerwagen ist zur Querbewegung
bezüglich
des Papiers in einer Richtung, die als Y-Richtung bezeichnet werden
soll, befestigt. Ein Blatt Papier oder ein anderes Druckmedium wird
entweder manuell zugeführt,
oder Papier wird von einer Vorratsrolle desselben um eine Walzenrolle
gezogen, die motorisch betrieben sein kann oder nicht. Wenn die Druckervorrichtung
einen thermischen Tintenstrahldruckkopf oder -köpfe verwendet, ist eine genaue
Steuerung der Beabstandung zwischen den Druckköpfen und der Oberfläche des
Druckmediums, auf dem ein Drucken stattfinden soll, wesentlich,
ansonsten geht eine annehmbare Druckauflösung verloren.
-
Tintenstrahldrucker,
wie z. B. diejenigen, die von Hewlett Packard Company vertrieben
werden, die die Geschäftsadresse
3000 Hanover Street, Palo Alto, CA 94304 hat, liefern wesentliche
Verbesserungen bei der Geschwindigkeit gegenüber dem herkömmlichen
X-Y-Plotter. Tintenstrahldrucker umfassen normalerweise einen Stift,
der ein Array von Düsen
aufweist. Die Stifte sind an einem Wagen befestigt, der in aufeinander
folgenden Bahnen über
die Seite bewegt wird. Jeder Tintenstrahlstift weist Heizschaltungen
auf, die, wenn dieselben aktiviert werden, bewirken, dass Tinte
aus zugeordneten Düsen
ausgestoßen
wird. Wenn der Stift über einem
gegebenen Ort positioniert ist, wird ein Strahl von Tinte aus der
Düse ausgestoßen, um
ein Tintenpixel an einem gewünschten
Ort zu liefern. Das Pixelmosaik, das so erzeugt wird, liefert ein
gewünschtes
zusammengesetztes Bild.
-
Ein
Verwenden von Druckern für
große
Druckmedien bringt spezielle Probleme mit sich. Wenn z. B. größere Rasterbilder
gedruckt werden, kann es sein, dass eine erhebliche Menge an Druckerspeicher
benötigt wird.
Falls der Drucker nicht genug Speicher aufweist, um ein Bild zu
drucken, wird irgendeine Art von Fehler auftreten.
-
Insbesondere
werden Rasterbilder unter Verwendung von Rasterisierung gedruckt.
Rasterisierung ist ein Prozess, bei dem Graphikgrundelemente (wie
z. B. Linienzeichenbefehle) durch einen Drucker empfangen werden,
und aus diesen erzeugt der Drucker eine Bitmap, die der graphischen
Darstellung der Grundelemente entspricht.
-
High-End-Druckervorrichtungen
verwenden Spezialsoftware und -hardware, um eine Rasterisierung durchzuführen. Die
Spezialhardware umfasst normalerweise einen Prozessor und ein eingebettetes
Echtzeitbetriebssystem. Die Rasterisierung von Objekten innerhalb
des Druckers selbst (was als „Objektmodus"-Drucken bezeichnet
wird) liefert im Allgemeinen eine hervorragende Druckleistung. Komplexe
Zeichnungen umfassen jedoch oft große Rasterbilder. Bei großen Raster bildern
kann es sein, dass die Rasterisierung eine erhebliche Menge an Speicher
erfordert, was einem überlaufenden
Druckerspeicher führen
kann.
-
Um
einen „Kein-Speicher-mehr"-Fehler zu vermeiden,
verwenden einige Druckertreiber einen „glatten" Modus. Es sei z. B. auf die Drucker
des Modells DesignJet verwiesen, die von Hewlett-Packard Company erhältlich sind.
Im glatten Modus wird die Ausgabe durch das Rechensystem in einer
Reihe von Bändern
aufgestellt, bevor dieselbe an den Drucker gesendet wird. Somit
wird die Rasterisierung nicht durch den Drucker durchgeführt, sondern
durch ein Rechensystem, das mit dem Drucker verbunden ist. Dieses
Rechensystem führt
die gesamte Graphikverarbeitung durch, wobei normalerweise die ursprüngliche
Zeichnung in Bänder zerlegt
wird. Jedes Band wird rasterisiert, und die sich ergebende Bit-Map-Graphik
für jedes
Band wird an den Drucker zum Drucken gesendet. Während dies eine wirksame Lösung für Drucker
mit nicht ausreichendem Speicher ist, wird die Hardwareverarbeitungsleistung
des Druckers verschwendet. Außerdem
steht die Leistung des Druckens beim glatten Modus in enger Beziehung
zu der Verarbeitungsleistung und anderen Ressourcen des Rechensystems.
Das Endergebnis ist im Allgemeinen ein erheblicher Verlust bei der
Gesamtleistung, einschließlich
einer Zunahme der Gesamtdruckzeit und einer längeren Verzögerung beim Zurückbringen des
Benutzers zu der Anwendung, die den Drucktreiber aufruft.
-
Die
EP 578256 offenbart eine
Technik, die als Bandbildung bekannt ist, um die Speicheranforderungen eines
Druckers zu verringern.
-
Gemäß dem bevorzugten
Ausführungsbeispiel
der vorliegenden Erfindung wird eine Zeichnung für ein Drucken vorbereitet.
Eine Analyse der Druckkomplexität
der Zeichnung wird gemäß Anspruch
1 durchgeführt. Die
Zeichnung wird basierend auf der Analyse der Druckkomplexität der Zeichnung
in Druckbänder
partitioniert. Die Druckbänder
werden dann in sequen tieller Reihenfolge an eine Druckvorrichtung
weitergeleitet.
-
Die
Analyse der Druckkomplexität
der Zeichnung wird bei dem bevorzugten Ausführungsbeispiel z. B. durch
ein Schätzen
der Zeichnungskomplexität
innerhalb jeder Bahn der Zeichnung durchgeführt. Dies umfasst z. B. ein
Erzeugen eines Grenzkastens für
jedes Graphikgrundelement innerhalb der Zeichnung. Ein Bahnschnittbereich
wird dann für
jeden Grenzkasten berechnet. Der Bahnschnittbereich für jeden
Grenzkasten wird beim Berechnen der Druckkomplexität für jede Bahn
verwendet. Der Bahnschnittbereich wird verwendet, um anzuzeigen,
welche Graphikgrundelemente in eine Bahn fallen. Eine Schätzung einer
Menge an Druckerspeicher, die benötigt wird, um jedes Graphikgrundelement
zu verarbeiten, das in eine Bahn fällt, wird dann verwendet, um
die Komplexität
der Bahn zu berechnen. Bei dem bevorzugten Ausführungsbeispiel wird ein Bahnhistogramm
für die
Zeichnung erzeugt.
-
Bei
dem bevorzugten Ausführungsbeispiel
wird Zusatzspeicher, der zum Abschneiden benötigt wird, berücksichtigt,
wenn die Zeichnung in Druckbänder
partitioniert wird.
-
Die
vorliegende Erfindung liefert eine wirksame Möglichkeit, eine Druckerleistung
zu steigern, wenn komplexe Zeichnungen gedruckt werden. Diese Leistungszunahme
wird erreicht, während
Fehler vermieden werden, die durch ein Überlaufen des Speichers eines
Druckers verursacht werden. Da die tatsächlichen Graphikgrundelemente
für jedes
Band an den Drucker gesendet werden, führt die vorliegende Erfindung
zu einer erheblichen Verbesserung gegenüber der Verwendung eines „glatten
Modus", wobei die
gleichen Vorteile gegeben sind, jedoch die Druckerhardware voll
ausgenutzt wird. Die vorliegende Erfindung ist insbesondere bei Großmediendruckern
nützlich,
die verwendet werden, um komplexe Zeichnungen zu drucken.
-
Die
vorliegende Erfindung wird nur beispielhaft unter Bezugnahme auf
ein Ausführungsbeispiel
derselben, wie es in den beiliegenden Zeichnungen veranschaulicht
ist, näher
beschrieben. Es zeigen:
-
1 eine
perspektivische Ansicht eines Drucker/Plottermechanismus, die die
Abdeckung teilweise aufgebrochen zeigt, um eine Walzenrolle, Klemmrollen
und einen Druckkopfwagen zu zeigen, der an Gleitstäben befestigt
ist, die sich parallel zu der Achse der Walzenrolle erstrecken.
-
2 einen
rechtsseitigen Querschnittaufriss, der die Enden der Walzenrolle,
die Klemmrollen und einen Mechanismus zum Bewegen des Klemmrollenträgerbauglieds
in eine Betriebsposition für
den Drucker/Plotter, der in 1 gezeigt
ist, hinein und aus derselben hinaus zeigt.
-
3 eine
perspektivische Ansicht der Wagenanordnung, des Wagenpositioniermechanismus
und des Papierpositioniermechanismus eines Druckers/Plotters, der
demjenigen ähnlich
ist, der in 1 gezeigt ist.
-
4 eine
perspektivische Ansicht einer vereinfachten Darstellung eines Medienpositioniersystems, das
bei einem Drucker/Plotter verwendet wird, der demjenigen ähnlich ist,
der in 1 gezeigt ist.
-
5 ein
vereinfachtes Blockdiagramm der Organisation eines Rechensystems,
das Treiber für
einen Drucker und eine Anzeige umfasst, gemäß einem bevorzugten Ausführungsbeispiel
der vorliegenden Erfindung.
-
6 ein
Flussdiagramm, das eine Objektbandbildung veranschaulicht, wie dieselbe
durch einen Druckertreiber gemäß einem
bevorzugten Ausführungsbeispiel
der vorliegenden Erfindung durchgeführt wird.
-
7 eine
Musterdruckerausgabe und ein zugeordnetes Histogramm gemäß einem
bevorzugten Ausführungsbeispiel
der vorliegenden Erfindung.
-
8 ein
Flussdiagramm, das eine Heuristik veranschaulicht, die durch einen
Druckertreiber verwendet wird, um einen Speicherverbrauch eines
Graphikgrundelements zu schätzen,
gemäß einem
bevorzugten Ausführungsbeispiel
der vorliegenden Erfindung.
-
9 einen
Betrieb eines kundenspezifischen Algorithmus, der Zusatzspeicher
erfasst, der für
abgeschnittene Objekte benötigt
wird, gemäß einem
bevorzugten Ausführungsbeispiel
der vorliegenden Erfindung.
-
10 eine
Musterdruckerausgabe, die basierend auf einem zugeordneten Histogramm
in Bänder zerlegt
ist, gemäß einem
bevorzugten Ausführungsbeispiel
der vorliegenden Anmeldung.
-
1 ist
eine perspektivische Ansicht eines Drucker/Plottermechanismus, der
ein Chassis 2, das durch ein Paar von beabstandeten Beinen 4 getragen
wird, und ein Gehäuse
aufweist, das eine im Allgemeinen bogenförmige Abdeckung 6 zum
Aufnehmen einer Rolle 7 eines Druckmediums, wie z. B. Papier,
Velin oder Film, umfasst. Wie es in dem aufgebrochenen Abschnitt
oben in der 1 zu sehen ist, erstreckt sich eine
Walzenrolle 10 quer zu der Vorrichtung in der Y-Richtung, um einen
Träger
und einen Druckweg an ihrer oberen Oberfläche für das Medium zu liefern, auf
dem ein Drucken stattfinden soll. Ein Paar von Gleitstäben trägt einen
quer bewegbaren Druckkopfwagen 30, der sich in der y-Achsenrichtung bewegt,
an dem ein thermischer Tintenstrahldruckkopf oder eine Mehrzahl
von thermischen Tintenstrahldruckköpfen befestigt ist, die in
einem genauen Abstand über
der Walzenrolle 10 positioniert sind. Die oberen Abschnitte
von vier Klemmrollen 20, von denen jeweils zwei an den
oberen Enden von zwei unterschiedlichen Druckerrollenträgerbaugliedern
befestigt sind, wie es ein Betätigungshebel 40 ist
zum Bewegen der Druckrollenträgerbauglieder
in ihre Betriebsposition und aus derselben heraus.
-
In 2 ist
der Weg des Papiers oder des anderen Druckmediums durch die gestrichelte
Linie gezeigt. Auch weist das Klemmrollenträgerbauglied 25 zumindest
einen sich nach hinten erstreckenden oberen Stabilisierungsvorsprung 28 auf,
der eine bogenförmige
Oberfläche 29 darauf
aufweist, die eine Aufwärtsbewegung des
Klemmrollenträgerbauglieds 25 begrenzt,
wenn dieselbe weg von der Walzenrolle 10 zurückgezogen
wird, durch ein Anstoßen
der Oberfläche 29 mit
einem von zwei Druckerwagengleitstäben 12, die. an dem
Chassis des Druckers/Plotters befestigt sind. Ein im Allgemeinen
zylindrisches Trägerlager
ist an dem hinteren Ende des Trägerarms 27 bereitgestellt,
und es ist ersichtlich, dass dasselbe eine Bohrung 31 in
dem Ende desselben aufweist, die ein Ende einer Druckfeder 32 aufnimmt.
-
Ein
Trägerlager 35 ist
an dem Drucker-/Plotterchassis befestigt und weist eine kreisförmige/zylindrische
Innenoberfläche
auf, die den Trägerarm 27 aufnimmt
und trägt.
Der Innendurchmesser der Oberfläche des
Lagers 35 ist etwas größer hergestellt
als der Außendurchmesser
der Lageroberfläche
an dem Trägerarm 27,
um eine vertikale Bewegung des Arms 27 in dem Lager 35 innerhalb
einer ausgewählten
Winkeltoleranz zu gestatten. Die Entfernung von dem gefangenen Ende 28 des
Trägerarms 27 zu
der Mittellinie der Walzenrolle 10 beträgt bevorzugt etwa das Doppelte
der Entfernung von der Mittellinie der Klemmrollen zu der Mitte der
Krüm mung
der bogenförmigen
Medienführungsoberfläche 21,
die im Allgemeinen auch mit der Mittellinie der Walzenrolle 10 zusammenfällt. Die
Druckfeder 32 spannt somit das Klemmrollenträgerbauglied 25 und
die Klemmrollen 20 während
des Druckens zu der Walzenrolle hin vor. Falls somit das gefangene
Ende 28 des Trägerarms
vertikal in dem Lager 35 innerhalb der ausgewählten Winkeltoleranz
verschiebbar ist, verschiebt sich die Klemmrollenposition winkelmäßig um die
Walzenrolle 10 nur um etwa die Hälfte der ausgewählten Winkellagertoleranz,
da die Anordnung gezwungen ist, sich um die Mitte der Walzenrolle 10 zu
drehen.
-
Wenn
es erwünscht
ist, ein Blatt eines Druckmediums in den Drucker/Plotter oder ein
Druckmedium entweder manuell oder von der Rolle 7 desselben
zu laden, wird das Papier zugeführt,
bis eine Bewegung des vorderen Endes desselben durch ein Anstoßen in der
Noppe zwischen den unteren Klemmrollen 20 und der Walzenrolle 10 beendet
wird. Die Walzenrolle wird dann in einer Richtung gegen den Uhrzeigersinn
gedreht, um das Papier zwischen die Walzenrolle 10 und
die bogenförmige
Führungsoberfläche des
Rollenträgerbauglieds 25 und
nachfolgend an den oberen Klemmrollen 20 vorbei zu ziehen.
Papier kann entfernt werden, wenn es erwünscht ist, indem das Klemmrollenträgerbauglied 25 und
die Klemmrollen 20 weg von der Walzenrolle 10 zurückgezogen
werden. Zu diesen Zweck weist der Träger- und Betätigungsarm 27 einen
im Wesentlichen sich vertikal erstreckenden Vorsprung 33 darauf
auf, der durch einen Haltearm 34 in Eingriff genommen sein kann,
der fest an einer sich quer erstreckenden Welle 50 angebracht
ist, die in dem Drucker-/Plotterchassis befestigt ist. Eine Drehung
der Welle 50, um das Klemmrollenträgerbauglied 25 zu
seiner offenen nicht klemmenden Position zurückzuziehen, wird durch eine
Befestigung eines Winkelhebels 60 an der Welle 50 erreicht, so
dass die Welle durch eine Bewegung des Winkelhebels 60 gedreht
werden kann, der wiederum durch einen Verbindungsstab 64 an
einem zweiten Winkelhebel 62 angebracht ist. Der zweite
Winkelhebel 62 ist mit der Klemmarmfreigabehandhabungsvorrichtung 40 durch
einen weiteren Verbindungsstab 66 verbunden, wobei die
Winkelhebel und die Klemmarmfreigabehebel schwenkbar an dem Drucker-/Plotterchassis
oder dem drehbaren Stab 50 auf eine Weise befestigt sind,
die Fachleuten ersichtlich ist. Es ist ersichtlich, dass eine Anzahl von
getrennten Klemmrollenträgerbaugliedern 25 entlang
der Länge
der Walzenrolle 10 befestigt sein kann, und dass alle gemeinsam
zu ihrer Betriebsposition bewegt werden können oder von derselben zurückgezogen werden
können,
indem eine Anzahl von Haltearmen 34 an der drehbaren Welle 50 bereitgestellt
wird, die, wenn es erwünscht
ist, durch die Klemmarmfreigabehebelverbindung gedreht wird.
-
3 ist
eine perspektivische Ansicht einer Wagenanordnung 100,
eines Wagenpositioniermechanismus 110 und eines Codiererstreifens 120 für einen
Drucker, der demjenigen ähnlich
ist, der in 1 gezeigt ist. Der Wagenpositioniermechanismus 110 umfasst
einen Wagenpositionsmotor 112, der eine Welle 114 aufweist,
die sich von demselben erstreckt, durch die der Motor einen kleinen
Riemen 116 antreibt. Durch den kleinen Riemen 116 treibt
der Wagenpositionsmotor 112 eine Leerlaufrolle 122 über die
Welle 118 desselben. Die Leerlaufrolle 122 treibt
wiederum einen Riemen 124, der durch eine zweite Leerlaufrolle 126 befestigt
ist. Der Riemen 124 ist an dem Wagen 100 angebracht
und angepasst, um durch denselben zu gleiten.
-
Die
Position der Wagenanordnung in der y-Richtung entlang der Bewegungsachse
wird durch die Verwendung des Codestreifens 120 genau bestimmt.
Der Codestreifen 120 ist durch einen ersten Pfosten 128 an einem
Ende und einen zweiten Pfosten 129 an dem anderen Ende
befestigt. Eine optische Lesevorrichtung (nicht gezeigt) ist an
der Wagenanordnung angeordnet und liefert Wagenpositionssignale,
die durch die Erfindung verwendet werden, um eine optimale Bildausrichtung
zu erreichen.
-
Die
Medien- und Wagenpositionsinformationen werden an einen Prozessor
an einer Schaltungsplatine 170 geliefert, die an der Wagenanordnung 100 angeordnet
ist, zur Verwendung in Verbindung mit Stiftausrichtungstechniken
der vorliegenden Erfindung. (Die Begriffe Stift und Kassette werden
hier austauschbar verwendet, wie es in der Technik üblich ist.)
Der Drucker weist vier Tintenstrahlstifte 102, 104, 106 und 108 auf,
die Tinte unterschiedlicher Farben, z. B. schwarze, gelbe, magentafarbene
bzw. cyanfarbene Tinte, speichern. Wenn die Wagenanordnung 100 sich
relativ zu dem Medium entlang der x- und y-Achse verschiebt, werden ausgewählte Düsen bei
den thermischen Tintenstrahlkassettenstiften aktiviert, und Tinte
wird auf das Medium aufgebracht. Die Farben von den drei Farbtintenstrahlstiften
werden gemischt, um jede beliebige andere bestimmte Farbe zu erhalten.
-
4 ist
eine perspektivische Ansicht einer vereinfachten Darstellung eines
Medienpositioniersystems 150 zum Vorbewegen des Mediums
in der Richtung der x-Achse. Das Medienpositioniersystem 150 umfasst
einen Motor 152, der koaxial mit einer Medienrolle 154 ist.
Die Position der Medienrolle 154 wird durch einen Medienpositionscodierer 156 bestimmt.
Der Medienpositionscodierer umfasst eine Scheibe 158, die
eine Mehrzahl von Öffnungen 159 darin
aufweist. Eine optische Lesevorrichtung 160 liefert eine
Mehrzahl von Ausgangspulsen, die die Bestimmung der Rolle 154 und
deshalb auch der Position des Mediums 30 erleichtern.
-
5 zeigt
ein vereinfachtes Blockdiagramm der Organisation eines Rechensystems 207.
Das Rechensystem 207 führt
verschiedene Anwendungsprozesse aus, wie es in 5 durch
einen Anwendungsprozess 202 veranschaulicht ist. Wenn die
Anwendung 202 Informationen an einem Drucker 205 drucken
oder Informationen an einem Monitor 206 anzeigen möchte, macht
der Anwendungsprozess 202 Aufrufe an einen Druckertreiber 203.
Obwohl bei dem hier beschriebenen bevorzugten Ausführungsbeispiel
der Anwendungsprozess 202 Aufrufe direkt an den Druckertreiber 203 macht,
kann die vorliegende Erfindung auf verschiedene Weisen implementiert
sein. Zum Beispiel kann die vorliegende Erfindung mit einer Graphikvorrichtungsschnittstelle
(GDI) verwendet werden, die zu einem Microsoft-Windows-Betriebssystem
gehört.
Es sei z. B. auf das Vorrichtungstreiberanpassungshandbuch für das Microsoft-Windows-Betriebssystem,
Version 3.1, hingewiesen, das von Microsoft Corporation erhältlich ist.
-
Damit
Informationen an dem Monitor 206 angezeigt werden, sendet
der Anwendungsprozess 202 vorrichtungsunabhängige Graphikbefehle
an einen Anzeigentreiber 204. Der Anzeigetreiber 204 übersetzt
die unabhängigen
Graphikbefehle von dem Anwendungsprozess 202 in Befehle,
die eine Aktionsanzeige 206 verwenden kann, um die Informationen
anzuzeigen. Der Treiber 204 kann auch Informationen über Farbauflösung, Bildschirmgröße und Auflösung, Graphikfähigkeiten
und andere hochentwickelte Merkmale, die an der Anzeige 206 verfügbar sein
können,
an den Anwendungsprozess 202 übertragen.
-
Damit
Informationen an einem Drucker 205 gedruckt werden, sendet
der Anwendungsprozess 202 vorrichtungsunabhängige Graphikbefehle
an einen Druckertreiber 203. Der Druckertreiber 203 übersetzt
die unabhängigen
Graphikbefehle von dem Anwendungsprozess 202 in Befehle,
die ein Aktionsdrucker 205 verwenden kann, um die Informationen
zu drucken. Der Druckertreiber 203 kann auch Informationen über Farbauflösung, Auflösung, Graphikfähigkeiten
und andere hochentwickelte Merkmale, die an dem Drucker 205 verfügbar sein
können,
an die Anwendung 202 übertragen.
-
Bei
dem bevorzugten Ausführungsbeispiel
macht der Anwendungsprozess 202, der in 5 gezeigt ist,
Aufrufe an den Druckertreiber 203 zum Drucken. Diese Aufrufe
sind z. B. AUTOCAD-Treiberschnittstellen- (ADI-) Aufrufe, Raster-ADI-Aufrufe oder Vektor-ADI-Aufrufe.
Die folgende Tabelle 1 zeigt typische Aufrufe, die an den Druckertreiber 203 gemacht
werden.
-
-
Bei
dem bevorzugten Ausführungsbeispiel
der vorliegenden Erfindung kann der Druckertreiber 207 konfiguriert
sein, um eine Objektbandbildung zu verwenden. Die Konfiguration
umfasst zwei potentielle Eingaben, die durch einen Benutzer vorgenommen
werden. Die erste Eingabe ist eine Auswahl, ob eine Objektbandbildung
oder eine „optimierte
Speicherverwendung" verwendet
wird. Die zweite Eingabe von dem Benutzer besteht darin, die Menge
an Speicher zu bestimmen, die bei dem Drucker 205 installiert
ist. Bei alternativen Ausführungsbeispielen
der vorliegenden Erfindung erhält
der Druckertreiber 207 direkt von dem Drucker 205 Informationen,
die sich auf die Menge an Speicher beziehen, die bei dem Drucker 205 installiert
ist.
-
Bei
den bevorzugten Ausführungsbeispielen
der vorliegenden Erfindung wird eine adaptive Bandbildung durch
eine Vorverarbeitung der Graphikgrundelemente innerhalb des Druckertreibers 203 innerhalb
des Rechensystems 207 durchgeführt. Eine Rasterisierung wird
jedoch innerhalb des Druckers 205 durchgeführt.
-
Eine
Vorverarbeitung umfasst ein Partitionieren und Sortieren der ursprünglichen
Zeichnung. Der Druckertreiber 203 führt die Vorverarbeitung durch.
Die ursprünglichen
Graphikgrundelemente, die durch den Druckertreiber 203 von
dem Anwendungsprozess 202 empfangen werden, werden durch
den Druckertreiber 203 in horizontale Bänder zerlegt. Der Druckertreiber 203 sendet
dann die horizontalen Bänder
in sequentieller Reihenfolge an den Drucker 205. Wenn jedes
horizontale Band gesendet wird, sendet der Drucker 205 die
Graphikgrundelemente für
alle Objekte innerhalb des horizontalen Bandes.
-
Der
Drucker 205 druckt die horizontalen Bänder auf eine durchgehende
und übergangslose
Weise. Zum Beispiel verwendet der Drucker 205 einen Superflussmodus
oder eine andere ähnliche
Funktionalität,
um das durchgehende und übergangslose
Drucken zu erreichen. Es sei hingewiesen auf HP-GL/2 und HP RTL Nachschlagehandbuch,
Teilnr. 5959-9733, 1996, erhältlich
von Hewlett-Packard Co. mit der Geschäftsadresse 3000 Hanover Street,
Palo Alto, CA 94304. Die folgende Tabelle 2 stellt drei Druckmodi
gegenüber:
glatt, Objekt und adaptive Objektbandbildung. Der glatte Druckmodus
und der Objektdruckmodus sind in dem Hintergrundabschnitt genauer
beschrieben.
-
-
6 ist
ein Flussdiagramm, das veranschaulicht, wie der Druckertreiber 203 eine
Objektbandbildung durchführt.
Bei einem Schritt 231 führt
der Druckertreiber 203 eine Analyse der Druckkomplexität der Zeichnung
durch. Das kann auf eine Anzahl von Weisen geschehen. Bei dem bevorzugten
Ausführungsbeispiel
erfolgt dies unter Verwendung eines Bahnhistogramms der Zeichnung.
-
Eine
Bahn ist das minimale horizontale Bitmap-Stück, das der Drucker 205 auf
Papier werfen kann. Die Breite der Bahn ist äquivalent zu der Breite des
geladenen Papiers. Zum Beispiel beträgt bei einem Ausführungsbeispiel
der vorliegenden Erfindung die Breite des geladenen Papiers 36 Zoll.
Bei 300 Punkten pro Zoll (dpi) ist die Breite der Bahn somit äquivalent
zu 10.800 Pixeln (36 Zoll, 300 dpi). Bei 600 dpi ist die Breite der
Bahn somit äquivalent
zu 21.600 Pixeln (36 Zoll, 600 dpi). Die Höhe der Bahn ist im Allgemeinen
abhängig von
den bestimmten Stiften (oder Tintendüsen), die bei dem Drucker 205 verwendet
werden. Zum Beispiel beträgt
eine typische Bahnhöhe
bei einem 300-dpi-Drucker
96 Pixel, und eine typische Bahnhöhe bei einem 600-dpi-Drucker beträgt 192 Pixel.
-
Die
volle Zeichnung wird analysiert, bevor irgendwelche Informationen
an den Drucker 205 gesendet werden. Während der Erzeugung des Bahnhistogramms
werden die Graphikgrundelemente, die durch den Druckertreiber 203 empfangen
werden, intern durch den Druckertreiber 203 verarbeitet
und werden in einer kundenspezifischen Anzeigelistendatei in einer
Speichervorrichtung des Rechensystems 207 gespeichert.
-
Während der
Erzeugung des Bahnhistogramms wird jedes Graphikgrundelement verarbeitet,
wobei ein Speicherverbrauch emuliert wird, der durch den Drucker 205 benötigt wird.
Unterschiedliche Graphikgrundelemente haben einen unterschiedlichen
Speicherbedarf. Der Druckertreiber 203 verwendet einen
spezifischen Satz von Heuristik, der den Speicherbedarf für jedes
Graphikgrundelement schätzt.
-
Das
Bahnhistogramm, das durch den Druckertreiber 203 erstellt
wird, stellt die Dichte der Zeichnung für jede Bahn dar. Dies teilt
dem Druckertreiber 203 im Wesentlichen die Menge an Speicher
mit, die der Drucker 205 benötigt, um die Graphikgrundelemente
für jede
Bahn korrekt zu verarbeiten. Das Bahnhistogramm zeigt auch die Komplexität jeder
Bahn an. Eine komplexere Bahn hat einen höheren Wert bei dem Histogramm. Zum
Beispiel bestimmt der Druckertreiber 203, dass eine Bahn
mit vielen Vektoren dichter (komplexer) ist als eine Bahn mit nur
wenigen Vektoren.
-
Im
Allgemeinen sind Rasterbilder viel dichter als Abschnitte einer
Zeichnung, die unter Verwendung von Vektoren erzeugt werden. Dies
ist durch die Art bedingt, wie die Firmware innerhalb des Druckers 205 (und praktisch
aller Drucker) mit unterschiedlichen Graphikgrundelementen umgeht.
-
7 zeigt
eine Zeichnung 220. Die Zeichnung 220 umfasst
Text 221, ein Vektorschema 222, eine schematische
Tabelle 223 (die einen Textabschnitt und einen Vektorabschnitt
umfasst) und ein Rasterbild 224. Ein Bahnhistogramm 225 ist
aus Quadraten gebildet. Jede Reihe von Quadraten in der y-Richtung zeigt eine Bahnkomplexität für die Bahn
an. Eine größere Anzahl
von Quadraten in einer Reihe für
eine Bahn bedeutet, dass die Bahn eine höhere Komplexität aufweist.
Eine Reihe mit weniger Quadraten zeigt an, dass die Bahn eine geringere
Komplexität
aufweist.
-
Ein
Pfeil 226 zeigt eine Medienvorbewegungsrichtung entlang
der x-Achse an. Somit erstrecken sich in dem Fall der Zeichnung 220,
wie dieselbe in 7 dargestellt ist, die Bahnen
und Bänder
in der y-Achsenrichtung über
das Medium, so dass ihre Ausrichtung bezüglich des Druckers 205 horizontal
ist.
-
8 ist
ein Flussdiagramm, das eine Heuristik veranschaulicht, die durch
den Druckertreiber 203 verwendet wird, um einen Speicherverbrauch
eines Graphikgrundelements gemäß einem
bevorzugten Ausführungsbeispiel
der vorliegenden Erfindung zu schätzen.
-
Bei
dem bevorzugten Ausführungsbeispiel
ist die Heuristik, die durch den Druckertreiber 203 verwendet
wird, um einen Druckerspeicherverbrauch zu berechnen, eine Näherung an
den echten Speicherbedarf. Außerdem
ist die Heuristik konservativ, so dass dieselbe eine Speicherverwendung
nicht unterschätzt
und somit ein „Kein-Speicher-mehr" verhindert. Folglich
kann die Heuristik den Speicherbedarf für spezifische komplexe Zeichnungen überschätzen. Dies
hat jedoch nur eine geringfügige
Auswirkung auf die Leistung.
-
Wie
es in 8 gezeigt ist, berechnet der Druckertreiber 203 bei
einem ersten Schritt 241 einen Begrenzungskasten eines
Graphikgrundelements. Der Begrenzungskasten setzt Grenzen, innerhalb
derer das Graphikgrundelement ein Graphikobjekt zeichnet. Der Begrenzungskasten
für jedes
Graphikgrundelement wird entsprechend der bestimmten Beschaf fenheit
des Graphikgrundelements berechnet. Bei Vektorobjekten wird die
Breite des Vektors berücksichtigt,
wenn Begrenzungskastenausmaße
berechnet werden.
-
Bei
einem Schritt 242 berechnet der Druckertreiber 203 einen
Bahnschnittbereich. Der Bahnschnittbereich für ein Graphikgrundelement legt
dar, welche Bahnen zumindest einen Abschnitt des Begrenzungskastens
für das
Graphikobjekt enthalten, das durch das Graphikgrundelement gezeichnet
wird. Bei dem bevorzugten Ausführungsbeispiel
werden Ergebnisse von dem Bahnschnittbereich in einer Anzeigelistendatei
zusammen mit den Graphikgrundelementdaten zur Verwendung, wenn eine
Bandpartitionierung durchgeführt
wird, gespeichert. Eine Bandpartitionierung ist im Folgenden näher beschrieben.
Die Speicherung des Bahnschnittbereichs beschleunigt die Verarbeitung
der Anzeigeliste.
-
Bei
einem Schritt 243 berechnet der Druckertreiber für jedes
Graphikgrundelement eine geschätzte Speicherverwendung
unter Verwendung der Bahnschnittbereichsinformationen, die bei Schritt 242 berechnet wurden.
Diese Schätzung
wird in einem Bahnhistogramm zur späteren Verwendung bei der Bandpartitionierung
akkumuliert. Der Speicherbedarf für ein Graphikgrundelement hängt von
den bestimmten Charakteristika des Graphikgrundelements ab und wann
dasselbe abschnitten wird oder nicht. Zum Beispiel zeigt die folgende Tabelle
3 den Speicherbedarf in Bytes für
ein aktuelles Ausführungsbeispiel
der vorliegenden Erfindung.
-
-
In
der obigen Tabelle 3 stellt „Speicher
(X)" den Speicherverbrauch
des Druckers 205 für
ein Graphikelement des Typs X dar. „lSegmente" ist die geschätzte Anzahl von Liniensegmenten,
die eine gestaltete Linie aufweist. „hLinien" ist die Anzahl von Linien, die benötigt wird,
um ein Polygon mit einem Schraffierungs- (oder Kreuzschraffierungs-)
Netz zu füllen.
-
Eine
korrekte Erfassung von Zusatzspeicher, der für abgeschnittene Objekte benötigt wird,
wird mit einem kundenspezifischen Algorithmus basierend auf einer
Objektbahnkantenerfassung und einer Akkumulation durchgeführt. Dies
ist in der Erörterung
von 9 im Folgenden näher erörtert.
-
Bei
einem Schritt 244 akkumuliert der Druckertreiber 203 das
Ergebnis in einem Bahnhistogramm, wie es im Folgenden näher beschrieben
ist.
-
9 zeigt
eine Zeichnung 263 innerhalb einer Bahnzeile 251,
einer Bahnzeile 252, einer Bahnzeile 253, einer
Bahnzeile 254, einer Bahnzeile 255, einer Bahnzeile 256,
einer Bahnzeile 257, einer Bahnzeile 258, einer
Bahnzeile 259, einer Bahnzeile 260, einer Bahnzeile 261 und
einer Bahnzeile 262.
-
Der
Grundgedanke des Algorithmus besteht darin, Eins (+1) zu einem Akkumulationswert
für eine Bahnzeile
zu addieren, in der ein Objekt startet, und Eins (–1) von
einem Akkumulationswert für
eine Bahnzeile zu subtrahieren, in der das Objekt endet. Die Berechnung
des Akkumulationswert ist in einer Spalte 264 gezeigt.
Wenn eine Bandpartitionierung der Zeichnung erfolgt, wie es im Folgenden
beschrieben ist, werden die Akkumulationswerte für die Bahnen an dem Ende jeder
Bahn summiert. Dies ist durch eine Spalte 265 dargestellt.
Dieser Summenwert zeigt an, wie viele Objekte von jeder Bahn zu
einer folgenden Bahn hinübergehen.
-
Zum
Beispiel beginnt, wie es in 9 zu sehen
ist, Segment 271 in der Bahnzeile 251 und endet
in der Bahnzeile 256. Somit umfasst der Akkumulationswert
für die
Bahnzeile 251 in Spalte 264 eine „+1", und der Akkumulationswert
für die
Bahnzeile 256 umfasst eine „–1" für
das Segment 271.
-
Segment 272 beginnt
in der Bahnzeile 252 und endet in der Bahnzeile 258.
Somit umfasst der Akkumulationswert für die Bahnzeile 252 in
Spalte 264 eine „+1", und der Akkumulationswert
für die
Bahnzeile 258 umfasst eine „–1" für
das Segment 272.
-
Segment 273 beginnt
in der Bahnzeile 254 und endet in der Bahnzeile 254.
Somit umfasst der Akkumulationswert für die Bahnzeile 254 in
Spalte 264 eine „+1", und der Akkumulationswert
für die
Bahnzeile 254 umfasst eine „–1" für
das Segment 273.
-
Segment 274 beginnt
in der Bahnzeile 255 und endet in der Bahnzeile 257.
Somit umfasst der Akkumulationswert für die Bahnzeile 255 in
Spalte 264 eine „+1", und der Akkumulationswert
für die
Bahnzeile 257 umfasst eine „–1" für
das Segment 274.
-
Segment 275 beginnt
in der Bahnzeile 259 und endet in der Bahnzeile 259.
Somit umfasst der Akkumulationswert für die Bahnzeile 259 in
Spalte 264 eine „+1", und der Akkumulationswert
für die
Bahnzeile 259 umfasst eine „–1" für
das Segment 275.
-
Segment 276 beginnt
in der Bahnzeile 259 und endet in der Bahnzeile 259.
Somit umfasst der Akkumulationswert für die Bahnzeile 259 in
Spalte 264 eine „+1", und der Akkumulationswert
für die
Bahnzeile 259 umfasst eine „–1" für
das Segment 276.
-
Segment 277 beginnt
in der Bahnzeile 259 und endet in der Bahnzeile 260.
Somit umfasst der Akkumulationswert für die Bahnzeile 259 in
Spalte 264 eine „+1", und der Akkumulationswert
für die
Bahnzeile 260 umfasst eine „–1" für
das Segment 277.
-
Segment 278 beginnt
in der Bahnzeile 259 und endet in der Bahnzeile 260.
Somit umfasst der Akkumulationswert für die Bahnzeile 259 in
Spalte 264 eine „+1", und der Akkumulationswert
für die
Bahnzeile 260 umfasst eine „–1" für
das Segment 278.
-
Segment 279 beginnt
in der Bahnzeile 260 und endet in der Bahnzeile 260.
Somit umfasst der Akkumulationswert für die Bahnzeile 260 in
Spalte 264 eine „+1", und der Akkumulationswert
für die
Bahnzeile 260 umfasst eine „–1" für
das Segment 279.
-
Segment 280 beginnt
in der Bahnzeile 260 und endet in der Bahnzeile 262.
Somit umfasst der Akkumulationswert für die Bahnzeile 260 in
Spalte 264 eine „+1", und der Akkumulationswert
für die
Bahnzeile 262 umfasst eine „–1" für
das Segment 280.
-
Segment 281 beginnt
in der Bahnzeile 260 und endet in der Bahnzeile 262.
Somit umfasst der Akkumulationswert für die Bahnzeile 260 in
Spalte 264 eine „+1", und der Akkumulationswert
für die
Bahnzeile 262 umfasst eine „–1" für
das Segment 281.
-
In 9 sind
alle Objekte als Vektoren gezeigt, und somit ist die Komplexität der Objekte
kein Faktor, und der Akkumulationswert in Spalte 264 wird
entweder inkrementiert oder dekrementiert. Bei komplexeren Objekten
führt die
Komplexität
des Objekts jedoch dazu, dass eine größere Zahl zu dem Akkumulationswert
in Spalte 264 hinzuaddiert oder von demselben subtrahiert
wird. Auf diese Weise kann der Zusatzspeicher, der zum Abschneiden
der Objekte benötigt
wird, mit angemessener Genauigkeit geschätzt werden.
-
Insbesondere
ist der Akkumulationswert für
jedes komplexe Objekt gleich dem Zusatzspeicher, der benötigt wird,
wenn das komplexe Objekt abgeschnitten wird. Um den Zusatzspeicher
zu berücksichtigen,
der zum Abschneiden benötigt
wird, kann der Akkumulationswert für jede Bahnzeile zu jeder Bahnzeile
addiert werden (oder subtrahiert, je nachdem), wenn die Komplexität der Bahnzeile
berechnet wird. Dies funktioniert, weil, wenn die Akkumulationswerte
in dem Bahnhistogramm widergespiegelt werden, der Summenwert (in 9 als
der Summenwert in Spalte 265 dargestellt) somit widergespiegelt
wird, wenn eine Bandpartitionierung basierend auf dem Bahnhistogramm
durchgeführt
wird. Das heißt,
wenn eine Bahnzeile die letzte Bahnzeile in einem bestimmten Band
ist, stellt der Summenwert, der an dem Ende dieser Bahnzeile berechnet
wird (mittels der Akkumulationswerte aller vorangegangener Bahnzeilen
zu dem Bahnhistogramm akkumuliert), den Zusatzspeicher dar, der
für alle
Objekte benötigt
wird, die am Ende der Bahnzeile abgeschnitten werden.
-
Bei
einem Schritt 232, der in 6 gezeigt
ist, führt
der Druckertreiber 203 eine Bandpartitionierung der Zeichnung
basierend auf der Analyse der Druckkomplexität durch. Bei einem Schritt 233 leitet
der Druckertreiber 203 sequentiell die partitionierten
Bänder
an den Drucker 205 weiter. Während dieses Schrittes werden die
Graphikgrundelemente, die in der Anzeigelistendatei gespeichert
sind, an den Drucker 205 gesendet. Wenn dieselben an den
Drucker 205 gesendet werden, werden die Graphikgrundelemente
unter Verwendung des Bahnhistogramms, das vorher berechnet wurde,
partitioniert. Der Partitionierungsalgorithmus verwendet die Informationen,
die in dem Bahnhistogramm gespeichert sind, um die horizontalen
Bänder
zu definieren, in die die Zeichnung fragmentiert wird. Es wird darauf
geachtet, dass jedes einzelne Band korrekt in den erwarteten Vorrichtungsspeicher
passt.
-
Die
Technik zum Partitionieren folgt einem adaptiven Lösungsansatz.
Insbesondere werden kleinere Bänder
für sehr
dichte Bereiche erzeugt, während
größere Bänder für Bereiche
geringer Dichte oder leere Bereiche der Zeichnung erzeugt werden.
-
Das
Bahnhistogramm wird verwendet, um zu bestimmen, wie viele benachbarte
Bahnen in ein Band vereinigt werden können, ohne den Speicher des
Druckers 205 zum Überlaufen
zu bringen. Die Menge an Speicher, die zum Verarbeiten eines Bandes
verfügbar
ist, basiert bei dem bevorzugten Ausführungsbeispiel auf der Gesamtmenge
an Speicher, die in dem Drucker 205 installiert ist.
-
Das
sich ergebende Band wird dann verwendet, um die Graphikgrundelemente
zu bestimmen, die an den Drucker 205 gesendet werden müssen. Für ein Band
werden alle Graphikgrundelemente, die direkt oder indirekt in Bahnen
fallen, die das Band bilden, gesendet. Die verbleibender. Graphikgrundelemente
der Zeichnungen werden für
dieses Band nicht gesendet.
-
Die
Ergebnisse des Bahnschnittbereichtests, die in der Anzeigeliste
gespeichert sind, wie es im Vorhergehenden beschrieben ist, machen
es sehr einfach, zu bestimmen, welche Graphikgrundelemente gesendet
werden müssen.
Wenn Rasterbilder abgeschnitten werden, wird nur der Teil des Bildes,
der in das Band fällt,
gesendet. Der Rest des Rasterbildes wird nicht gesendet.
-
Bei
dem bevorzugten Ausführungsbeispiel
werden Vektorgraphikgrundelemente, die in mehrere Bänder fallen,
mehrere Male gesendet. Falls z. B. eine Linie über zwei Bänder geht, muss das Graphikgrundelement,
das die Linie definiert, mit beiden Bändern gesendet werden. Obwohl
dies eine gewisse Redundanz für Vektorgraphikgrundelemente
einführt,
ist die Leistungsverschlechterung für die meisten Zeichnungen vernachlässigbar.
Falls die Leistung ein Problem wird, ermöglicht ein Hinzufügen von
mehr Speicher zu dem Drucker 205, dass größere Bänder und
weniger Bänder
pro Zeichnung verwendet werden.
-
10 veranschaulicht
die Ergebnisse einer Bandpartitionierung. Basierend auf der Verfügbarkeit
von Speicher innerhalb des Druckers 205 verwendet der Druckertreiber
das Bahnhistogramm 225, um die Bandgrenzen zu berechnen.
Bei dem Beispiel, das in 10 gezeigt
ist, wird bestimmt, dass der Speicher innerhalb des Druckers 205 groß genug
ist, um innerhalb eines einzigen Bandes die Komplexität zu verarbeiten,
die durch 24 Quadrate des Bahnhistogramms 225 dargestellt
ist. Wenn somit die Zeichnung 220 partitioniert wird, zeichnet
der Komplexitätsindex
bei einer Bandbildung eine Grenze vor jeder Bahn, die, falls dieselbe
zu dem aktuellen Band hinzugefügt
würde,
bewirken würde,
dass das Band eine Komplexität
aufweist, die größer ist als
diejenige, die durch 24 Quadrate des Bahnhistogramms 225 dargestellt
ist. Wie es ersichtlich ist, wird unter Verwendung dieses Algorithmus
die Zeichnung 220 in ein Band 291, ein Band 292,
ein Band 293, ein Band 294, ein Band 295,
ein Band 296, ein Band 297, ein Band 298,
ein Band 299, ein Band 300 und ein Band 301 partitioniert.
-
Die
vorangegangene Erörterung
offenbart und beschreibt nur exemplarische Verfahren und Ausführungsbeispiele
der vorliegenden Erfindung.