Schnelle Attraktion

QuickDraw ist die 2. Grafikbibliothek und hat Application Programming Interface (API) vereinigt, die ein Kernteil des klassischen Apple Macintosh Betriebssystem ist. Es wurde von Bill Atkinson und Andy Hertzfeld am Anfang geschrieben. QuickDraw besteht noch als ein Teil der Bibliotheken von Mac OS X, aber ist durch das modernere Quarzgrafiksystem größtenteils ersetzt worden. In Mac OS X v10.4 ist QuickDraw offiziell missbilligt worden. In Mac OS X v10.5 das Anwendungsverwenden kann QuickDraw nicht von der zusätzlichen 64-Bit-Unterstützung Gebrauch machen.

Grundsätze von QuickDraw

QuickDraw wurde im Apple Lisa's LisaGraph des Anfangs der 1980er Jahre niedergelegt und wurde entworfen, um gut mit den auf das Pascal gegründeten Schnittstellen und Entwicklungsumgebungen der frühen Apfelsysteme zu passen. Außerdem ist QuickDraw ein Rastergrafiksystem, das das Pixel als seine grundlegende Einheit der grafischen Information definiert. Das ist im Gegensatz zu Vektor-Grafiksystemen, wo Grafikprimitive in mathematischen Begriffen und rasterized, wie erforderlich, zur Anzeigeentschlossenheit definiert werden. Ein Rastersystem verlangt viel weniger in einer Prozession gehende Macht jedoch, und war das vorherrschende Paradigma zurzeit, dass QuickDraw entwickelt wurde.

QuickDraw definiert eine Schlüsseldatenstruktur, den Grafikanschluss oder GrafPort. Das ist ein logisches Zeichnungsgebiet, wo Grafik gezogen werden kann. Der offensichtlichste Bildschirm"Gegenstand" entsprechend GrafPort ist ein Fenster, aber die komplette Tischansicht kann GrafPort sein, und Häfen außer Schirm können auch bestehen.

GrafPort definiert ein Koordinatensystem. In QuickDraw hat das eine Entschlossenheit von 16 Bit, 65,536 einzigartige vertikale und horizontale Positionen gebend. Diese werden von-32.767 auf den äußersten Linken (oder Spitze), zu +32.768 auf dem äußersten Recht (oder Boden) numeriert. Ein Fenster wird gewöhnlich aufgestellt, so dass die oberste, linke Ecke seines zufriedenen Gebiets an 0,0 in verbundenem GrafPort gelegen wird. Ein zufriedenes Gebiet eines Fensters schließt den Rahmen des Fensters nicht ein, lässt Schatten oder Titelbar (wenn irgendwelcher) fallen.

Koordinaten von QuickDraw beziehen sich auf die ungeheuer dünnen Linien zwischen Pixel-Positionen. Ein wirkliches Pixel wird im Raum zum unmittelbaren Recht und unter der Koordinate gezogen. Das macht es leichter für Programmierer, grafische durch off-one Fehler verursachte Störschübe zu vermeiden.

Auf dem Macintosh sind Pixel quadratisch, und GrafPort hat eine Verzug-Entschlossenheit von 72 Pixeln pro Zoll, gewählt, um Vereinbarung zu vergleichen, die durch die Druckindustrie gegründet ist, 72 Punkte zum Zoll zu haben.

QuickDraw enthält auch mehrere Schuppen und Funktionen kartografisch darzustellen.

QuickDraw erhält mehrere globale Variablen pro Prozess, Chef unter diesen aufrecht, der aktuelle Hafen seiend. Das hat ursprünglich die API vereinfacht, da alle Operationen "dem aktuellen Hafen" gehören, aber weil sich der OS entwickelt hat, hat dieser Gebrauch des globalen Staates auch QuickDraw viel härter gemacht, mit modernen Designannäherungen wie Nebenläufigkeit, präemptive Multitasking und so weiter zu integrieren. Um diese Probleme zu richten, fügt die Kohlenstoff-API (eine Brücke zwischen Mac OS 9 und OS X) zusätzliche Rahmen zu einigen der Routinen hinzu, die (undurchsichtige) Lagerung der Faden-Information und einer neuen (nichtbefragten) Ereignis-Struktur berücksichtigend.

Grafikprimitive

Alles Gesehenes auf einem klassischen Schirm Mac OS wird von QuickDraw gezogen, aber die Bibliothek selbst ist ziemlich niedrige Stufe. Die primitiven Gegenstände, die es ziehen kann, sind:

Linien
  • Rechtecke
  • Rund gemacht (und oval) in die Enge getriebene Rechtecke
  • Ovale (einschließlich Kreise und Ellipsen)
  • Kreisbogen (und Keile), sowohl kreisförmiger als auch ovaler
  • Vielecke (willkürliche geschlossene Gestalten, die von einer Liste von Punkten gebaut sind, die durch Linien angeschlossen sind)
  • Gebiete (sehen willkürliche Sätze von Pixeln — unten)
  • Bitmaps und Pixmaps
  • Text

Jeder dieser Gegenstände (außer dem Text) kann mit einem "Kugelschreiber" gezogen werden, der irgendwelche rechteckigen Dimensionen, Muster oder Farbe haben kann. Bemerken Sie, dass, weil der Kugelschreiber rechteckig ist und Achse-ausgerichtete, diagonale Linien dicker enden werden als horizontale oder vertikale. Gestalten können gefüllt oder eingerahmt, mit jedem Muster oder Farbe gezogen werden. Ein gefüllter Kreisbogen bildet einen Keil. Text kann in jeder installierten Schriftart, in einer Vielfalt von stilistischen Schwankungen, und an jeder Größe und Farbe gezogen werden. Text wird in einer Vielfalt von Wegen je nachdem erklettert, wie er versorgt wird - werden Schriftarten von TrueType glatt zu jeder Größe klettern, wohingegen bitmap Schriftarten gut nicht gewöhnlich klettern.

Eine wichtige Eigenschaft von QuickDraw war Unterstützung für Übertragungsweisen, die regiert haben, wie ein Bestimmungsort-Pixel-Wert mit seinem vorherigen Wert und der Farbe des Gegenstands verbunden gewesen ist, der wird zieht.

Der Satz von Attributen des Kugelschreibers und der Textzeichnung wird mit GrafPort vereinigt.

Gebiete sind eine Schlüsseldatenstruktur in QuickDraw. Sie definieren einen willkürlichen Satz von Pixeln, eher wie ein bitmap, aber in einer komprimierten Form, die auf komplizierte Weisen sehr schnell manipuliert werden kann. Gebiete können (Vereinigung), abgezogen (Unterschied) und XORed verbunden werden, um andere Gebiete zu bilden. Sie können innerhalb von GrafPort für den Ausschnitt verwendet, oder gefüllt oder eingerahmt wie jede andere Gestalt gezogen werden. Eine Reihe von eingerahmten Gestalten und verbundenen Linien kann in ein Gebiet verbunden werden. Ein Gebiet braucht aus einem aneinander grenzenden Satz von Pixeln nicht zu bestehen - getrennte Gebiete sind möglich und üblich. Obwohl Gebiete starke grafische Manipulationen erlauben konnten, werden sie durch die aktuelle Durchführung beschränkt, die die maximale Gebiet-Datenlagerungsgröße auf einen Sechzehn-Bit-Wert einschränkt und so als ein Mehrzweckzeichnungszusammensetzungswerkzeug nicht praktisch ist und der praktische Gebrauch an der hohen Entschlossenheit auch eingeschränkt wird. Gebiete unterstützen den Rest von QuickDraw, erlaubend, zu willkürlichen Gestalten klammernd, die für die Durchführung von vielfachen überlappenden Fenstern notwendig sind. Erfunden von Bill Atkinson wurden Gebiete als eine getrennte Erfindung durch Apple.http://patft1.uspto.gov/netacgi/nph-Parser?Sect2=PTO1&Sect2=HITOFF&p=1&u=%2Fnetahtml%25%2FPTO%25%2Fsearch-bool.html&r=1&f=G&l=50&d=PALL&RefSrch=yes&Query=PN%2F4622545 patentiert

Ein Gebiet wird (nach der anfänglichen Entwicklung) durch eine Öffnung des Gebiets, Zeichnung verschiedener Gestalten von QuickDraw und das Schließen des Gebiets angegeben. Verborgene Routinen bauen das Gebiet, weil die Befehle von QuickDraw durchgeführt werden. Bitmaps kann auch zu Gebieten umgewandelt werden, und bitmaps kann von Gebieten durch "die Malerei" oder "die Füllung" des Gebiets in einen Grafikanschluss gemacht werden.

Die innere Struktur eines Gebiets, außer der Lagerungslänge und seinem begrenzenden Rechteck, ist undurchsichtig - es gibt keine Apfelveröffentlichten verfügbaren Dokumente, obwohl der Mechanismus im Patent entworfen wird. Gebiete werden mit sowohl der vertikalen als auch horizontalen Kompression durchgeführt. Ein Gebiet wird als eine Reihe von horizontalen Ansehen-Linien ("Raster") versorgt, von denen jeder eine vertikale von einer Liste von horizontalen Inversionskoordinaten gefolgte Koordinate enthält. Von jedem Inversionspunkt kann als toggling Einschließung ins Gebiet für alle Punkte danach gedacht werden: Der erste Punkt schaltet das Gebiet, die zweiten Umdrehungen es von und so weiter ein. Weitere Kompression wird durch die Speicherung jeder Linie unterschiedlich erreicht: Jede Linie enthält nur die Unterschiede zur vorherigen Linie aber nicht einem vollen Satz von Inversionspunkten. Schließlich werden identische angrenzende Ansehen-Linien durch das einfache Auslassen von ihnen effizient verschlüsselt. Auf diese Weise wird ein allgemein verwendetes Gebiet, das rund gemachte Eckrechteck, effizient verschlüsselt, und komplizierte Operationen wie Gebiet-Zusammensetzung und Bildausschnitt können getan werden, ohne entweder umfassende Verarbeiter-Zyklen oder große Beträge des Gedächtnisses zu verlangen. (Die ursprüngliche Systemdurchführung Code von QuickDraw verwendete Verarbeiter, die an 8-Megahertz-Uhr-Raten und Systemen funktionieren, hatte nur 128 Kilobytes des writable Gedächtnisses.)

Weil Gebiete zu einer spezifischen Orientierung gebunden werden, würde eine neunzig Grad-Folge eines Gebiets sowohl ausführlich berichtete Rücktechnik der Struktur als auch das umfassende Codieren verlangen. Eine allgemeine Folge ist wenn im Vergleich zum Drehen der ursprünglichen Quellgrenzbeschreibung und einfach Schaffen eines neuen Gebiets unpraktisch. Jedoch schließt die API Umwandlungsroutinen zu und von BitMaps ein. (Bitmaps kann auch mit weithin bekannten Methoden, aber mit verschiedenen Graden der Bilddegradierung abhängig von Winkel gewählt, die Lagerung und Verarbeiter-Zyklen rotieren gelassen werden, die für die Operation und die Kompliziertheit des Algorithmus verfügbar sind.)

Apfel hat kürzlich (in der Kohlenstoff-API) definierte Gebiete als eine undurchsichtige Struktur unter einigen Programm-Kompilationsoptionen.

Höhere Niveau-Operationen

Jede Reihe von Grafikanrufen zu QuickDraw kann in einer Struktur genannt ein Bild registriert werden. Das kann dann im Gedächtnis gespart und jederzeit "abgespielt" werden, die Grafikfolge wieder hervorbringend. In der Play-Back-Zeit kann das Bild an neuen Koordinaten gelegt oder erklettert werden. Ein Bild kann zur Platte gespart werden, in der Form es das Format des Apple PICT definiert.

Kompletter BitMap (oder PixMap, wenn man sich bezieht, um Images zu färben), kann von einem GrafPort bis einen anderen, mit dem Schuppen und Ausschnitt kopiert werden. Bekannt als blitting, oder CopyBits, nach dem Namen der Funktion, ist diese Operation die Basis für den grössten Teil des Zeichentrickfilms und einer Elfe ähnliche Effekten auf Mac.

QuickDraw stellt eine ähnliche Blitting-Funktion zur Verfügung, die entworfen wird, um das Scrollen innerhalb von GrafPort durchzuführen - kann das Image im Hafen zu einer neuen Position ausgewechselt werden, ohne (aber mit dem Ausschnitt, wenn gewünscht) zu klettern.

Jede primitive Grafikoperation wird durch StdProcs, eine Reihe von in GrafPort versorgten Funktionszeigestöcken geleitet. Das hat Polymorphism-Erlaubnis-Person-Operationen beschränkt, die zu überreiten oder durch kundenspezifische Funktionen zu ersetzen sind, Drucker-Fahrern erlaubend, Grafikbefehle abzufangen und sie zu passenden Drucker-Operationen zu übersetzen. Auf diese Weise kann QuickDraw mit PostScript, eine Tatsache gemacht werden, die dem Macintosh ermöglicht hat, das Tischveröffentlichen praktisch zu erfinden.

Ähnlich einer Unterklasse hat die Fensterdatenstruktur mit verbundenem GrafPort begonnen, so grundsätzlich mit jedem GrafPort austauschbare Fenster machend. Während günstig, konnte das eine Quelle sein, Fehler zu programmieren.

Geschichte

QuickDraw hat Leben als LisaGraf als ein Teil der Entwicklung der Apple Lisa angefangen. Für den Macintosh wurde es am Anfang vereinfacht, aber dann später erweitert. Ursprünglich, QuickDraw GrafPorts hat nur wenig Tiefe 1 unterstützt, der ein Bit pro Pixel, oder schwarz und weiß ist. Das hat dem eingebauten Schirm des frühen Macintoshes, mit seiner festen Größe 512×342 Pixel angepasst. Beschränkte Farbe wurde mit einem groben planaren Modell unterstützt, QuickDraw erlaubend, einige Typen des Punktmatrixdruckers zu steuern, der Mehrfarbenzierbänder verwendet hat, aber sehr wenige Anwendungen haben diese Eigenschaft unterstützt.

1987 wurde der Macintosh II entwickelt und gestartet, der als ein herkömmlicheres Drei-Kästen-Design - Zentraleinheit, Monitor und Tastatur entworfen wurde, die alle trennen. Weil der Monitor getrennt, und größer war als ursprünglicher Mac, musste sich die Videoarchitektur notwendigerweise ändern. Außerdem hat der Mac II den Macintosh vom Schwarzweiß-bis volle Farbe genommen. Apfel hat sich auch in dieser Zeit dafür entschieden, ein nahtloses abmessendes Tischvielfache Monitore, eine Industrie zuerst zu unterstützen. So wurde Farbe QuickDraw, eine bedeutende Erweiterung ursprünglichen QuickDraw, geschaffen. Die ursprüngliche Architektur hat an viel Bestimmung für die Ausbaufähigkeit Mangel gehabt, aber das Verwenden einer Reihe von Kerben, die Apfelentwickler haben geschafft, die Hinzufügung der Farbe und der neuen Videoarchitektur eigentlich nahtlos sowohl Entwicklern als auch Endbenutzern zu machen.

Färben Sie sich QuickDraw hat neue Datenstrukturen einschließlich GDevices eingeführt, um jede beigefügte Videokarte/Monitor und neuen FarbengrafPort (CGrafPort) Struktur zu vertreten, um Farbe, sowie PixMaps statt BitMaps für vielfache Images der Bit pro Pixel zu behandeln. Eine der Kerben für die Vereinbarkeit verwendet hier war, dass die neue Struktur genau dieselbe Größe wie die alte, mit den meisten Datenmitgliedern in demselben Platz, aber mit zusätzlichen Griffen und Zeigestöcken war, um Strukturen im Platz der Felder von BitMap zu färben. Die oberen zwei Bit des rowBytes Feldes wurden in den Gebrauch als Fahnen gedrückt, um GrafPort von CGrafPort zu unterscheiden (sie waren immer Null auf alt-artigem GrafPorts, weil BitMap nie durchführbar so breit sein konnte, um jemals diese Bit zu setzen). Der Gebrauch dieser zwei hohen Bit würde zurückkommen, um in QuickDraw später umzugehen, weil es eine maximale Reihe-Breite gerade 4,096 auf 32-Bit-PixMaps gezwungen hat, der problematisch für die hochauflösende Grafikarbeit geworden ist. Spätere Entwicklung (Kohlenstoff) hat diese Beschränkung beseitigt, aber war nicht völlig rückwärts kompatibel. Ein Palette-Betriebsleiter wurde auch in der Farbe QuickDraw hinzugefügt, der die Schlichtung von Farben auf mit einem Inhaltsverzeichnis versehenen Videogeräten geführt hat. Die meisten Grafikprimitiver-Operationen sind irgendein unverändert geblieben (aber würde in der Farbe funktionieren), oder neue Farbenversionen des schwarzen und weißen APIs hinzugefügt wurden.

Am Anfang, Farbe QuickDraw war nur zum Funktionieren mit 1, 2, 4 und 8 Bit-Videokarten fähig, die alles waren, was zurzeit verfügbar war. Bald danach jedoch sind 24-Bit-Videokarten (so genannte wahre Farbe) erschienen, und QuickDraw wurde wieder aktualisiert, um bis zu 32 Bit pro Pixel (in Wirklichkeit, 24 Bit, mit 8 unbenutzten) Farbendaten ("32-Bit-QuickDraw") zu unterstützen. Die Architektur hat immer das jedoch berücksichtigt, so waren keine neuen APIs notwendig. Die Farbendatenstrukturen selbst haben eine Farbentiefe 1, 2, 4, 8, 15 und 24 Bit erlaubt, 1, 4, 16, 256, 32,768 und 16,777,216 Farben beziehungsweise, oder 4, 16 und 256 Skalen des Graus tragend. QuickDraw hat darauf aufgepasst, die Wiederstichprobenerhebung von Farben zu den verfügbaren Farbentiefen der wirklichen Videohardware oder Übertragung zwischen offscreen Bildpuffern einschließlich fakultativ bibbernder Images unten zu einer niedrigeren Tiefe zu führen, um Bildqualität zu verbessern. Eine Reihe von Farbenstichprobenerhebungsdienstprogrammen wurde auch hinzugefügt, so dass Programmierer optimale Farbenpaletten für den Gebrauch mit mit einem Inhaltsverzeichnis versehenen Videogeräten erzeugen konnten.

Die Architektur von QuickDraw hatte immer die Entwicklung von GrafPorts und ihrem verbundenen BitMaps oder PixMaps "offscreen" erlaubt, wo Grafik im Gedächtnis ohne es zusammengesetzt werden konnte, sofort auf dem Schirm sichtbar seiend. Pixel konnten zwischen diesen offscreen Häfen und dem Schirm mit QuickDraw blitting Funktion CopyBits übertragen werden. Solcher offscreen compositing ist das Arbeitspferd für Spiele und grafikintensive Anwendungen. Jedoch, bis zum Advent von 32-Bit-QuickDraw, mussten solche offscreen Welten geschaffen und mit der Hand vom Programmierer innerhalb seiner Anwendung aufgestellt werden, und einschließend, weil es drei oder mehr getrennte und ziemlich komplizierte Datenstrukturen getan hat (CGrafPort, PixMap und GDevice, und für mit einem Inhaltsverzeichnis versehene Geräte, die Farbennachschlagetabelle und sein Gegenteil), konnte anfälliger Fehler sein. Mit 32-Bit-QuickDraw wurde OS Unterstützung, um das zu behandeln, mit der Offscreen "Grafikwelt" oder GWorld hinzugefügt. Der Videopuffer (PixMap) eines GWorld konnte im Hauptgedächtnis, oder wenn verfügbar, in unbenutzten Teilen des Videowidders versorgt werden, wo das Kopieren zum Schirm für die Geschwindigkeit durch das Vermeiden des Bedürfnisses optimiert werden konnte, einen großen Betrag von Pixel-Daten über den Hauptspeicherbus zu übertragen.

Mit dem Advent von QuickTime hat QuickDraw die Fähigkeit gewonnen, sich mit komprimierten Rasterdaten wie JPEG zu befassen. Der Bildkompressionsbetriebsleiter von QuickTime hat nah mit QuickDraw integriert: Insbesondere Bilddekompressionsanrufe waren flügger QuickDraw, der Anrufe zieht, und wenn ein Bild registriert würde, würden die komprimierten Daten als ein Teil des Bildes für die Anzeige gespart, als das Bild später gezogen wurde. Der Bildkompressionsbetriebsleiter hat auch Integration mit dem Farbenzusammenbringen von ColorSync hinzugefügt.

Danach abgesondert von Zurückende-Änderungen, um für neue Verarbeiter-Architekturen (PowerPC) zu optimieren, ist QuickDraw größtenteils unverändert während des Rests des Lebens des Klassikers Mac OS geblieben. QuickDraw haben GX und 3D QuickDraw den Namen von QuickDraw geteilt und sind im Stande gewesen, mit QuickDraw PixMap und Bilderdatenstrukturen zu zwischenbedienen, aber waren in der Funktionalität sonst völlig getrennt.

Mit Mac OS X ist QuickDraw ein Teil der Kohlenstoff-API geworden. Mit der Ausgabe von Mac OS X 10.4 wurde QuickDraw offiziell missbilligt.

Siehe auch

Außenverbindungen


Saint George (Begriffserklärung) / Golf von Moro
Impressum & Datenschutz