{
  "color_spaces": [
    {
      "name": "ink",
      "space": {
        "separation": {
          "colorant": "Corporate Blue",
          "transform": {
            "alternate": "cmyk",
            "function": {
              "calculation": {
                "domain": [
                  [
                    0.0,
                    1.0
                  ]
                ],
                "range": [
                  [
                    0.0,
                    1.0
                  ],
                  [
                    0.0,
                    1.0
                  ],
                  [
                    0.0,
                    1.0
                  ],
                  [
                    0.0,
                    1.0
                  ]
                ],
                "program": [
                  "dup",
                  0.9,
                  "mul",
                  "exch",
                  "dup",
                  0.6,
                  "mul",
                  "exch",
                  3,
                  "exp",
                  0.4,
                  "mul",
                  0,
                  "exch"
                ]
              }
            }
          }
        }
      }
    }
  ],
  "shadings": [
    {
      "name": "spectrum",
      "shading": {
        "axial": {
          "from": [
            70.0,
            632.0
          ],
          "to": [
            525.0,
            632.0
          ],
          "space": "rgb",
          "function": {
            "sampled": {
              "domain": [
                [
                  0.0,
                  1.0
                ]
              ],
              "range": [
                [
                  0.0,
                  1.0
                ],
                [
                  0.0,
                  1.0
                ],
                [
                  0.0,
                  1.0
                ]
              ],
              "size": [
                7
              ],
              "bits": 16,
              "samples": [
                0.85,
                0.12,
                0.12,
                0.95,
                0.55,
                0.1,
                0.95,
                0.85,
                0.15,
                0.15,
                0.65,
                0.25,
                0.1,
                0.6,
                0.75,
                0.15,
                0.2,
                0.75,
                0.45,
                0.15,
                0.6
              ]
            }
          }
        }
      }
    },
    {
      "name": "stepped",
      "shading": {
        "axial": {
          "from": [
            70.0,
            476.0
          ],
          "to": [
            525.0,
            476.0
          ],
          "space": "rgb",
          "function": {
            "calculation": {
              "domain": [
                [
                  0.0,
                  1.0
                ]
              ],
              "range": [
                [
                  0.0,
                  1.0
                ],
                [
                  0.0,
                  1.0
                ],
                [
                  0.0,
                  1.0
                ]
              ],
              "program": [
                7,
                "mul",
                "cvi",
                "dup",
                6,
                "gt",
                [
                  "pop",
                  6
                ],
                "if",
                6,
                "div",
                "dup",
                1,
                "exch",
                "sub",
                0.25
              ]
            }
          }
        }
      }
    },
    {
      "name": "joined",
      "shading": {
        "axial": {
          "from": [
            70.0,
            150.0
          ],
          "to": [
            525.0,
            150.0
          ],
          "space": "rgb",
          "function": {
            "stitching": {
              "domain": [
                0.0,
                1.0
              ],
              "functions": [
                {
                  "sampled": {
                    "domain": [
                      [
                        0.0,
                        1.0
                      ]
                    ],
                    "range": [
                      [
                        0.0,
                        1.0
                      ],
                      [
                        0.0,
                        1.0
                      ],
                      [
                        0.0,
                        1.0
                      ]
                    ],
                    "size": [
                      7
                    ],
                    "bits": 16,
                    "samples": [
                      0.85,
                      0.12,
                      0.12,
                      0.95,
                      0.55,
                      0.1,
                      0.95,
                      0.85,
                      0.15,
                      0.15,
                      0.65,
                      0.25,
                      0.1,
                      0.6,
                      0.75,
                      0.15,
                      0.2,
                      0.75,
                      0.45,
                      0.15,
                      0.6
                    ]
                  }
                },
                {
                  "exponential": {
                    "domain": [
                      0.0,
                      1.0
                    ],
                    "low": [
                      0.45,
                      0.15,
                      0.6
                    ],
                    "high": [
                      0.06,
                      0.05,
                      0.12
                    ]
                  }
                }
              ],
              "bounds": [
                0.5
              ],
              "encode": [
                [
                  0.0,
                  1.0
                ],
                [
                  0.0,
                  1.0
                ]
              ]
            }
          }
        }
      }
    }
  ],
  "items": [
    {
      "type": "flow",
      "rect": {
        "llx": 70.0,
        "lly": 770.0,
        "urx": 595.276,
        "ury": 786.0
      },
      "content": "What a function says a colour does",
      "font": "DejaVuSans",
      "font_size": 16.0,
      "first_baseline": {
        "points": 0.0
      }
    },
    {
      "type": "flow",
      "rect": {
        "llx": 70.0,
        "lly": 757.0,
        "urx": 595.276,
        "ury": 767.0
      },
      "content": "A gradient, an ink, a curve: one number goes in and a colour comes out, and the file says how.",
      "font": "DejaVuSans",
      "font_size": 10.0,
      "first_baseline": {
        "points": 0.0
      },
      "color": [
        0.35,
        0.35,
        0.35
      ]
    },
    {
      "type": "flow",
      "rect": {
        "llx": 70.0,
        "lly": 743.0,
        "urx": 595.276,
        "ury": 753.0
      },
      "content": "It can say it by naming two ends, by tabulating the answer, or by writing out the working.",
      "font": "DejaVuSans",
      "font_size": 10.0,
      "first_baseline": {
        "points": 0.0
      },
      "color": [
        0.35,
        0.35,
        0.35
      ]
    },
    {
      "type": "rect",
      "rect": {
        "llx": 70.0,
        "lly": 632.0,
        "urx": 525.0,
        "ury": 706.0
      },
      "fill": {
        "shading": "spectrum"
      }
    },
    {
      "type": "flow",
      "rect": {
        "llx": 70.0,
        "lly": 705.0,
        "urx": 595.276,
        "ury": 716.0
      },
      "content": "Read off a table: seven colours, sixteen bits apiece",
      "font": "DejaVuSans",
      "font_size": 11.0,
      "first_baseline": {
        "points": 0.0
      },
      "color": [
        0.2,
        0.2,
        0.2
      ]
    },
    {
      "type": "flow",
      "rect": {
        "llx": 70.0,
        "lly": 597.5,
        "urx": 595.276,
        "ury": 606.0
      },
      "content": "The table holds what the colour is at seven points; between them the reader draws the line.",
      "font": "DejaVuSans",
      "font_size": 8.5,
      "first_baseline": {
        "points": 0.0
      },
      "color": [
        0.4,
        0.4,
        0.4
      ]
    },
    {
      "type": "rect",
      "rect": {
        "llx": 70.0,
        "lly": 476.0,
        "urx": 525.0,
        "ury": 550.0
      },
      "fill": {
        "shading": "stepped"
      }
    },
    {
      "type": "flow",
      "rect": {
        "llx": 70.0,
        "lly": 549.0,
        "urx": 595.276,
        "ury": 560.0
      },
      "content": "Worked out: a program that cuts the input into bands",
      "font": "DejaVuSans",
      "font_size": 11.0,
      "first_baseline": {
        "points": 0.0
      },
      "color": [
        0.2,
        0.2,
        0.2
      ]
    },
    {
      "type": "flow",
      "rect": {
        "llx": 70.0,
        "lly": 441.5,
        "urx": 595.276,
        "ury": 450.0
      },
      "content": "{ 7 mul cvi dup 6 gt { pop 6 } if 6 div dup 1 exch sub 0.25 }\u00a0 — the reader runs this.",
      "font": "DejaVuSans",
      "font_size": 8.5,
      "first_baseline": {
        "points": 0.0
      },
      "color": [
        0.4,
        0.4,
        0.4
      ]
    },
    {
      "type": "rect",
      "rect": {
        "llx": 70.0,
        "lly": 310.0,
        "urx": 129.0,
        "ury": 384.0
      },
      "fill": {
        "space": "ink",
        "components": [
          0.1
        ]
      }
    },
    {
      "type": "flow",
      "rect": {
        "llx": 70.0,
        "lly": 291.5,
        "urx": 595.276,
        "ury": 299.0
      },
      "content": "10%",
      "font": "DejaVuSans",
      "font_size": 7.5,
      "first_baseline": {
        "points": 0.0
      },
      "color": [
        0.35,
        0.35,
        0.35
      ]
    },
    {
      "type": "rect",
      "rect": {
        "llx": 135.0,
        "lly": 310.0,
        "urx": 194.0,
        "ury": 384.0
      },
      "fill": {
        "space": "ink",
        "components": [
          0.25
        ]
      }
    },
    {
      "type": "flow",
      "rect": {
        "llx": 135.0,
        "lly": 291.5,
        "urx": 595.276,
        "ury": 299.0
      },
      "content": "25%",
      "font": "DejaVuSans",
      "font_size": 7.5,
      "first_baseline": {
        "points": 0.0
      },
      "color": [
        0.35,
        0.35,
        0.35
      ]
    },
    {
      "type": "rect",
      "rect": {
        "llx": 200.0,
        "lly": 310.0,
        "urx": 259.0,
        "ury": 384.0
      },
      "fill": {
        "space": "ink",
        "components": [
          0.4
        ]
      }
    },
    {
      "type": "flow",
      "rect": {
        "llx": 200.0,
        "lly": 291.5,
        "urx": 595.276,
        "ury": 299.0
      },
      "content": "40%",
      "font": "DejaVuSans",
      "font_size": 7.5,
      "first_baseline": {
        "points": 0.0
      },
      "color": [
        0.35,
        0.35,
        0.35
      ]
    },
    {
      "type": "rect",
      "rect": {
        "llx": 265.0,
        "lly": 310.0,
        "urx": 324.0,
        "ury": 384.0
      },
      "fill": {
        "space": "ink",
        "components": [
          0.55
        ]
      }
    },
    {
      "type": "flow",
      "rect": {
        "llx": 265.0,
        "lly": 291.5,
        "urx": 595.276,
        "ury": 299.0
      },
      "content": "55%",
      "font": "DejaVuSans",
      "font_size": 7.5,
      "first_baseline": {
        "points": 0.0
      },
      "color": [
        0.35,
        0.35,
        0.35
      ]
    },
    {
      "type": "rect",
      "rect": {
        "llx": 330.0,
        "lly": 310.0,
        "urx": 389.0,
        "ury": 384.0
      },
      "fill": {
        "space": "ink",
        "components": [
          0.7
        ]
      }
    },
    {
      "type": "flow",
      "rect": {
        "llx": 330.0,
        "lly": 291.5,
        "urx": 595.276,
        "ury": 299.0
      },
      "content": "70%",
      "font": "DejaVuSans",
      "font_size": 7.5,
      "first_baseline": {
        "points": 0.0
      },
      "color": [
        0.35,
        0.35,
        0.35
      ]
    },
    {
      "type": "rect",
      "rect": {
        "llx": 395.0,
        "lly": 310.0,
        "urx": 454.0,
        "ury": 384.0
      },
      "fill": {
        "space": "ink",
        "components": [
          0.85
        ]
      }
    },
    {
      "type": "flow",
      "rect": {
        "llx": 395.0,
        "lly": 291.5,
        "urx": 595.276,
        "ury": 299.0
      },
      "content": "85%",
      "font": "DejaVuSans",
      "font_size": 7.5,
      "first_baseline": {
        "points": 0.0
      },
      "color": [
        0.35,
        0.35,
        0.35
      ]
    },
    {
      "type": "rect",
      "rect": {
        "llx": 460.0,
        "lly": 310.0,
        "urx": 519.0,
        "ury": 384.0
      },
      "fill": {
        "space": "ink",
        "components": [
          1.0
        ]
      }
    },
    {
      "type": "flow",
      "rect": {
        "llx": 460.0,
        "lly": 291.5,
        "urx": 595.276,
        "ury": 299.0
      },
      "content": "100%",
      "font": "DejaVuSans",
      "font_size": 7.5,
      "first_baseline": {
        "points": 0.0
      },
      "color": [
        0.35,
        0.35,
        0.35
      ]
    },
    {
      "type": "flow",
      "rect": {
        "llx": 70.0,
        "lly": 383.0,
        "urx": 595.276,
        "ury": 394.0
      },
      "content": "One ink, shown through a program where the press is not to hand",
      "font": "DejaVuSans",
      "font_size": 11.0,
      "first_baseline": {
        "points": 0.0
      },
      "color": [
        0.2,
        0.2,
        0.2
      ]
    },
    {
      "type": "flow",
      "rect": {
        "llx": 70.0,
        "lly": 275.5,
        "urx": 595.276,
        "ury": 284.0
      },
      "content": "{ dup 0.9 mul exch dup 0.6 mul exch 3 exp 0.4 mul 0 exch }\u00a0 — the black lags, then catches up.",
      "font": "DejaVuSans",
      "font_size": 8.5,
      "first_baseline": {
        "points": 0.0
      },
      "color": [
        0.4,
        0.4,
        0.4
      ]
    },
    {
      "type": "rect",
      "rect": {
        "llx": 70.0,
        "lly": 150.0,
        "urx": 525.0,
        "ury": 224.0
      },
      "fill": {
        "shading": "joined"
      }
    },
    {
      "type": "flow",
      "rect": {
        "llx": 70.0,
        "lly": 223.0,
        "urx": 595.276,
        "ury": 234.0
      },
      "content": "Stitched: the table over the first half, two endpoints over the second",
      "font": "DejaVuSans",
      "font_size": 11.0,
      "first_baseline": {
        "points": 0.0
      },
      "color": [
        0.2,
        0.2,
        0.2
      ]
    },
    {
      "type": "flow",
      "rect": {
        "llx": 70.0,
        "lly": 115.5,
        "urx": 595.276,
        "ury": 124.0
      },
      "content": "A piece written as a stream stands as an object of its own, and the joint points at it.",
      "font": "DejaVuSans",
      "font_size": 8.5,
      "first_baseline": {
        "points": 0.0
      },
      "color": [
        0.4,
        0.4,
        0.4
      ]
    },
    {
      "type": "flow",
      "rect": {
        "llx": 70.0,
        "lly": 87.0,
        "urx": 595.276,
        "ury": 96.0
      },
      "content": "A table and a program are both written as streams, which is what lets them hold as much as they do.",
      "font": "DejaVuSans",
      "font_size": 9.0,
      "first_baseline": {
        "points": 0.0
      },
      "color": [
        0.45,
        0.45,
        0.45
      ]
    },
    {
      "type": "flow",
      "rect": {
        "llx": 70.0,
        "lly": 73.0,
        "urx": 595.276,
        "ury": 82.0
      },
      "content": "The program is built here as steps, not as text, so what reaches the file is what can be written.",
      "font": "DejaVuSans",
      "font_size": 9.0,
      "first_baseline": {
        "points": 0.0
      },
      "color": [
        0.45,
        0.45,
        0.45
      ]
    }
  ]
}
