{
  "name": "Typewriter",
  "dimension": "text",
  "slot": "action_bar",
  "width": 256,
  "height": 128,
  "textBaseline": 128,
  "placement": {
    "x": 0,
    "y": 0
  },
  "shapes": [],
  "texts": [],
  "heads": [],
  "images": [],
  "bars": [],
  "triggers": [],
  "effect": {
    "glsl": "vec4 effect(Fx f) {\n    // The head sweeps the screen left to right (640 texels covers a title on\n    // a wide screen), typing every letter it passes.\n    float speed = 55.0;\n    float head = mod(f.t * speed, 640.0);\n    float age = (head - f.o.x) / speed;\n    if (age < 0.0) return vec4(0.0);\n    float pop = exp(-age * 7.0);\n    vec2 c = vec2(f.w * 0.5, 7.0);\n    float sc = 1.0 + 0.7 * pop;\n    vec2 src = c + (f.p - c) / sc;\n    vec3 col = mix(vec3(0.93, 0.93, 0.88), vec3(1.0, 1.0, 0.55), pop);\n    vec4 o = inkShadow(col, G(src), G(c + (f.p - 1.0 - c) / sc));\n    // The caret sits after the newest letter.\n    if (age < 6.0 / speed && fract(f.t * 2.5) < 0.6\n        && f.q.y > 7.0 && f.q.y < 8.0 && f.q.x > f.w + 1.0 && f.q.x < f.w + 6.0) {\n        o = over(vec4(1.0, 1.0, 0.7, 1.0), o);\n    }\n    return o;\n}\n",
    "pad": [
      1,
      2,
      7,
      2
    ],
    "prompt": "",
    "preset": "typewriter",
    "sample": "Typing..."
  }
}