Eine Farbe, die in eine andere übergeht

Deklarieren Sie einen Verlauf, entlang einer Linie oder zwischen Kreisen, und füllen Sie dann eine Form damit, indem Sie ihn nennen.

In einem echten PDF ansehen

Verläufe in einer Linie, in einem Kreis und aus einer Funktion gelesen

Fünf Felder: ein Kopfbereich, der ausblendet, dieselbe Ausblendung diagonal, ein Leuchten über seinen eigenen Kreis hinaus fortgesetzt, sodass sich die Ecken füllen, eine Mischung, die über eine dritte Farbe geht, und ein Schachbrett, dessen Farbe daraus berechnet wird, wo jeder Punkt steht, nach rechts röter und nach oben grüner.

Das PDF öffnen Das vollständige Beispiel ansehen

Auch zu sehen in: Mit einem Verlauf gefüllter Text und Formen · Vier Arten von Gittern, jede Ecke in eigener Farbe · Eine Regel statt hundert Farben

Zusammenfassung

Ein Abendhimmel geht von Orange in Blau über, ohne dass man sagen könnte, wo das eine aufhört. Das ist ein Verlauf. Eine Art gleitet von einem Punkt zu einem anderen, wie dieser Himmel; eine andere strahlt von einem Kreis zu einem anderen, wie ein Lichthof um eine Lampe. Eine dritte berechnet die Farbe jedes Punkts daraus, wo dieser Punkt steht, wie weit quer und wie weit nach oben, sodass sie sich in beide Richtungen zugleich ändert. Die vierte ist in Dreiecke geteilt, jede Ecke mit ihrer eigenen Farbe, und sie geht dorthin, wo eine Linie und ein Kreispaar nicht hinkommen: ein von zwei Seiten beleuchtetes Gesicht, eine Karte, deren Grund sich in jede Richtung ändert. Jede davon füllt jede beliebige Form: ein Titelband, einen Kartenhintergrund, eine Scheibe.

Technisch

Auf der obersten Ebene einer Anfrage geschrieben, unter "shadings"

shadings deklariert die Verläufe, die das Dokument für sich selbst definiert, jeden unter dem Namen, unter dem eine Füllung ihn auswählt. Ein Verlauf wird als Shading-Muster geschrieben — /ShadingType 1, aus einer Funktion zweier Koordinaten gelesen, 2 entlang einer Linie, 3 zwischen zwei Kreisen, 4 über ein Dreiecksgitter —, erreicht über /PatternType 2, sodass die Farbe durch das hindurchscheint, was die Form durchlässt, statt über einen Beschneidungspfad gemalt zu werden. Die beiden, die von einem Ende zum anderen laufen, geben ihre Farben auf zwei Arten an, jeweils eine: zwei Farben von Ende zu Ende oder ein Farbraum und eine Funktion. Zwei Farben von Ende zu Ende werden in dem Farbraum geschrieben, den die Anzahl ihrer Zahlen benennt: Drei Zahlen schreiben /DeviceRGB, vier schreiben /DeviceCMYK, sodass ein Verlauf auf den vier Druckplatten ebenso läuft wie auf einem Bildschirm. Ein Gitter gibt stattdessen an jeder Ecke eine Farbe an, und was innerhalb eines Dreiecks liegt, wird aus seinen drei Ecken berechnet. Eine aus einer Funktion gelesene Farbe wird über ein eigenes Rechteck gelesen, das sechs Zahlen auf der Seite platzieren, und dies ist der einzige Verlauf, dessen Farbe sich in beide Richtungen zugleich ändert.

Anfrageschema

  • shadings — Array, optional, standardmäßig leer.
  • shadings[].name — Zeichenkette, erforderlich. Der Name, unter dem eine Füllung diesen Verlauf auswählt.
  • shadings[].bounding_box — vier Zahlen, optional, linker, unterer, rechter und oberer Rand des Kastens, auf den der Verlauf beschränkt ist: Außerhalb davon wird nichts gemalt. shadings[].matrix — sechs Zahlen, optional, der Operator cm, der den eigenen Raum des Verlaufs auf der Seite platziert. Ein Gitter nimmt keines von beiden an.
  • shadings[].shading — Objekt, erforderlich. Sieben Arten:
    • axial — from zwei Zahlen erforderlich, to zwei Zahlen erforderlich, in Seitenkoordinaten.
    • radial — from und to mit je drei Zahlen, erforderlich: Mittelpunkt x, Mittelpunkt y, Radius.
    • function_based — domain, matrix, space und function alle erforderlich. domain gibt zwei Zahlenpaare an, das Intervall, das x durchläuft, dann das Intervall, das y durchläuft; matrix die sechs Zahlen des Operators cm der PDF-Sprache, der dieses Rechteck auf der Seite platziert, wobei [200, 0, 0, 100, 50, 60] den Definitionsbereich [[0, 1], [0, 1]] über das Rechteck von 200 mal 100 streckt, dessen linke untere Ecke bei 50, 60 liegt; space einer der Werte gray, rgb und cmyk oder eine Druckfarbe, über separation benannt und vollständig angegeben, oder mehrere solcher Druckfarben zugleich über device_n, wobei ein deklarierter Farbraum jeder anderen Art abgelehnt wird; function die Funktion, aus der die Farbe an jedem Punkt gelesen wird, mit den zwei Koordinaten des Punkts als Eingabe und den Komponenten einer Farbe als Ausgabe, sodass nur calculation und sampled sie angeben und eine Funktion mit einer anderen Anzahl von Zahlen abgelehnt wird. Außerhalb des platzierten Rechtecks wird nichts gemalt. Geschrieben als /ShadingType 1.
    • mesh — triangles erforderlich, ein Array von Gruppen aus drei Ecken. Eine Ecke gibt at an, zwei Zahlen in Seitenkoordinaten, dann color oder tints, wenn das Gitter einen space angibt. Ein Gitter ohne Dreieck wird abgelehnt.
    • lattice_mesh — rows erforderlich, ein Array von Eckenreihen, angegeben wie bei mesh, jede Reihe so lang wie die erste, mindestens zwei Reihen mit zwei Ecken. Jedes Quadrat aus vier benachbarten Ecken bildet zwei Dreiecke, sodass eine Ecke, an der mehrere Dreiecke zusammentreffen, nur einmal angegeben wird. Geschrieben als /ShadingType 5.
    • coons_patch_mesh — patches erforderlich, ein Array von Patches. Ein Patch gibt points an, zwölf Kontrollpunkte aus je zwei Zahlen in Seitenkoordinaten, und colors, die Farbe jeder seiner vier Ecken, oder tints, wenn das Gitter einen space angibt. Die zwölf laufen von der ersten Ecke einmal um den Patch herum, jede Seite eine Ecke und dann die zwei Punkte, die die von ihr ausgehende Seite krümmen, sodass die Ecken der erste, vierte, siebte und zehnte Punkt sind. Geschrieben als /ShadingType 6.
    • tensor_patch_mesh — dieselben patches, mit sechzehn points pro Patch: die zwölf des Randes, dann die vier im Inneren, der der ersten Ecke nächstgelegene zuerst, dann die der vierten, siebten und zehnten nächstgelegenen. Geschrieben als /ShadingType 7. Jede andere Anzahl von Punkten wird abgelehnt, und wo sich zwei Patches überlappen, wird der spätere über den früheren gemalt.
  • Die beiden, die von Ende zu Ende laufen, teilen: start und end, optionale Farben, zusammen genannt; space und function, optional, zusammen genannt; extend, zwei optionale boolesche Werte, standardmäßig [false, false]. space ist einer der Werte gray, rgb und cmyk oder eine über separation benannte und vollständig angegebene Druckfarbe oder mehrere solcher Druckfarben zugleich über device_n oder der Name eines unter color_spaces deklarierten Farbraums jeder Art. Ein Gitter nimmt weder start noch end noch extend an: Seine Farben sind seine Ecken. Eine aus einer Funktion gelesene Farbe gibt ihren eigenen space und ihre eigene function an, beide dort erforderlich, und weder start noch end noch extend.
  • Die beiden, die von Ende zu Ende laufen, nehmen außerdem stops an, optional, zusammen mit space anstelle von function genannt: ein Array aus mindestens zwei Objekten, jedes at, eine Zahl von 0 bis 1, weiter als die vorherige, und tints, eine Zahl pro Komponente von space. Ein Stopp mit einer anderen Anzahl oder eine Zahl außerhalb des Bereichs des Farbraums wird abgelehnt; stops neben start, end oder function wird ebenfalls abgelehnt.
  • Jede der sieben Arten nimmt zusätzlich zu ihren eigenen Feldern anti_alias an: ein optionaler boolescher Wert, der die Anzeigesoftware bittet, die Farbübergänge des Verlaufs gegen Aliasing zu filtern — das falsche Muster, das dort entsteht, wo sich die Farbe schnell ändert im Vergleich zur Abtastrate des Ausgabegeräts —, oder es nicht zu tun. Fehlt er, wird kein /AntiAlias-Eintrag geschrieben, und die Anzeigesoftware nimmt dann false an, den Standardwert, den ISO 32000-2 dem Eintrag gibt.
  • Ein Gitter gibt seine Farben auf eine von zwei Arten an, jeweils eine: color an jeder Ecke und kein space, oder space und tints an jeder Ecke. Sein space liest, was der space eines Verlaufs liest, und tints gibt eine Zahl pro Komponente davon an — eine pro Druckfarbe, wo der Farbraum aus benannten Druckfarben besteht; so gelangt ein Gitter auf die Platten einer Druckmaschine. Ein space neben einer Eckfarbe color, tints ohne space und eine Ecke, die keines von beiden angibt, werden jeweils abgelehnt.
  • Genau eine der beiden Arten, die Farbe anzugeben: start und end zusammen oder space und function zusammen. Beide zusammen werden abgelehnt, keine davon ebenfalls.
  • start und end werden beide als Lichtfarbe oder beide als Druckfarbe angegeben: je drei Zahlen oder je vier, die den Verlauf auf die vier Druckplatten schreiben. Ein Grau ist Lichtfarbe. Ein Ende als Lichtfarbe und das andere als Druckfarbe wird abgelehnt, und die Meldung nennt die Zahlen beider Enden.
  • function hat vier Formen: exponential, stitching, sampled und calculation. exponential, mit low und high erforderlich, domain zwei Zahlen optional (0 bis 1), exponent optional (1) und range optional. stitching, mit functions, bounds und encode erforderlich, domain und range optional.
  • sampled schreibt die Ergebnisse als Tabelle über ein Raster aus; so lässt sich eine Kurve angeben, die keine Formel beschreibt — ein Spektrum, eine Charakterisierung einer Druckmaschine, eine gemessene Antwort: domain, range, size und samples erforderlich, bits, decode, encode und between optional, wobei between angibt, wie das Ergebnis von einem Abtastwert zum nächsten verläuft, standardmäßig linear, oder cubic, was das Format nur für eine Funktion mit einer Zahl erlaubt. calculation gibt das Ergebnis als kleines Programm an, für eine berechnete statt nachgeschlagene Farbe: program, die auf einem Stack ausgeführten Schritte, mit domain und range, alle drei erforderlich.
  • Ein Gitter gibt jede Ecke entweder als Lichtfarbe oder als Druckfarbe an, wie die zwei Enden der anderen Arten: je drei Zahlen oder je vier, die das Gitter auf die vier Druckplatten schreiben. Eine Ecke als Lichtfarbe und eine andere als Druckfarbe wird abgelehnt.
  • Eine Füllung nennt einen Verlauf über die Form {"shading": "the name"}.

Eine vollständige Anfrage, die ein PDF erzeugt

{
  "shadings": [
    {
      "name": "sunrise",
      "shading": {
        "axial": {
          "from": [60, 700],
          "to": [300, 700],
          "start": [0.95, 0.75, 0.2],
          "end": [0.2, 0.35, 0.75]
        }
      }
    },
    {
      "name": "spectrum",
      "shading": {
        "axial": {
          "from": [320, 700],
          "to": [535, 700],
          "space": "rgb",
          "function": {
            "sampled": {
              "domain": [[0, 1]],
              "range": [[0, 1], [0, 1], [0, 1]],
              "size": [4],
              "bits": 16,
              "between": "cubic",
              "samples": [
                0.85, 0.12, 0.1,
                0.92, 0.66, 0.11,
                0.16, 0.6, 0.31,
                0.11, 0.26, 0.72
              ]
            }
          }
        }
      }
    }
  ],
  "items": [
    {
      "type": "rect",
      "rect": { "llx": 60, "lly": 700, "urx": 300, "ury": 780 },
      "fill": { "shading": "sunrise" }
    },
    {
      "type": "rect",
      "rect": { "llx": 320, "lly": 700, "urx": 535, "ury": 780 },
      "fill": { "shading": "spectrum" }
    }
  ]
}

Die Zeile, die es sendet, in drei Sprachen

Farbe und wie sie gezeigt wird

Das Gerät, für das die Farben angegeben sind Welche Platte eines separierten Bogens eine Seite ist Das Gerät, für das die Farben einer Seite angegeben sind Farbe über Rot, Grün und Blau hinaus deklarieren Was die nackten Zahlen einer Seite bedeuten Deckkraft, Mischen und was eine Druckmaschine verlangt Eine Zelle, wiederholt, um eine Form zu füllen Der Farbraum, in dem eine Seite ihre Farben mischt

Wohin als Nächstes

Jeder JSON-Schlüssel einer Anfrage, auf einer Seite Die übrigen einundvierzig Einstellungen einer Anfrage

Die Preise ansehen Die Beispiele ansehen