{"version":3,"sources":["jsdelivr-header.js","/npm/@thi.ng/rasterize@1.0.195/checks.js","/npm/@thi.ng/rasterize@1.0.195/draw.js","/npm/@thi.ng/rasterize@1.0.195/circle.js","/npm/@thi.ng/rasterize@1.0.195/flood-fill.js","/npm/@thi.ng/rasterize@1.0.195/line.js","/npm/@thi.ng/rasterize@1.0.195/poly.js","/npm/@thi.ng/rasterize@1.0.195/polyline.js","/npm/@thi.ng/rasterize@1.0.195/rect.js","/npm/@thi.ng/rasterize@1.0.195/shader.js"],"names":[],"mappings":"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","file":"/npm/@thi.ng/rasterize@1.0.195/index.js/+esm","sourceRoot":"","sourcesContent":["/**\n * Bundled by jsDelivr using Rollup v2.79.2 and Terser v5.48.0.\n * Original file: /npm/@thi.ng/rasterize@1.0.195/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","import { isFunction } from \"@thi.ng/checks/is-function\";\nconst isInBounds2D = ({ size }, x, y) => x >= 0 && x < size[0] && y >= 0 && y < size[1];\nconst ensureShader2D = (val) => isFunction(val) ? val : () => val;\nexport {\n  ensureShader2D,\n  isInBounds2D\n};\n","import { isFunction } from \"@thi.ng/checks/is-function\";\nimport { isPrimitive } from \"@thi.ng/checks/is-primitive\";\nconst __draw2D = (pts, grid, val) => isFunction(val) ? __drawShader2D(pts, grid, val) : __drawSolid2D(pts, grid, val);\nconst __drawSolid2D = (pts, grid, val) => {\n  if (!pts) return grid;\n  if (isPrimitive(val)) {\n    const {\n      data,\n      offset,\n      stride: [sx, sy]\n    } = grid;\n    for (const p of pts) {\n      data[offset + p[0] * sx + p[1] * sy] = val;\n    }\n  } else {\n    for (const p of pts) {\n      grid.setAtUnsafe(p[0], p[1], val);\n    }\n  }\n  return grid;\n};\nconst __drawShader2D = (pts, grid, shader) => {\n  if (!pts) return grid;\n  if (isPrimitive(grid.getAtUnsafe(0, 0))) {\n    const {\n      data,\n      offset,\n      stride: [sx, sy]\n    } = grid;\n    for (const { 0: x, 1: y } of pts) {\n      data[offset + x * sx + y * sy] = shader(grid, x, y);\n    }\n  } else {\n    for (const { 0: x, 1: y } of pts) {\n      grid.setAtUnsafe(x, y, shader(grid, x, y));\n    }\n  }\n  return grid;\n};\nexport {\n  __draw2D,\n  __drawShader2D,\n  __drawSolid2D\n};\n","import { circleClipped } from \"@thi.ng/grid-iterators/circle\";\nimport { __draw2D } from \"./draw.js\";\nconst drawCircle = (grid, x, y, r, val, fill = false) => __draw2D(\n  circleClipped(x, y, r, 0, 0, grid.size[0], grid.size[1], fill),\n  grid,\n  val\n);\nexport {\n  drawCircle\n};\n","import { isIterable } from \"@thi.ng/checks/is-iterable\";\nimport { isPrimitive } from \"@thi.ng/checks/is-primitive\";\nimport { equiv } from \"@thi.ng/equiv\";\nimport { floodFill as $fill } from \"@thi.ng/grid-iterators/flood-fill\";\nimport { isInBounds2D } from \"./checks.js\";\nimport { __draw2D } from \"./draw.js\";\nconst floodFill = (grid, x, y, val) => isInBounds2D(grid, x, y) ? __draw2D(\n  $fill(__pred(grid, x, y), x, y, grid.size[0], grid.size[1]),\n  grid,\n  val\n) : grid;\nconst __pred = (img, x, y) => {\n  const {\n    data,\n    offset,\n    stride: [stride, rowStride]\n  } = img;\n  let srcVal = img.getAtUnsafe(x, y);\n  if (isPrimitive(srcVal)) {\n    return (x2, y2) => data[offset + x2 * stride + y2 * rowStride] === srcVal;\n  }\n  if (isIterable(srcVal)) {\n    srcVal = [...srcVal];\n  }\n  return (x2, y2) => equiv(img.getAtUnsafe(x2, y2), srcVal);\n};\nexport {\n  floodFill\n};\n","import { lineClipped } from \"@thi.ng/grid-iterators/line\";\nimport { __draw2D } from \"./draw.js\";\nconst drawLine = (grid, x1, y1, x2, y2, val) => __draw2D(\n  lineClipped(x1, y1, x2, y2, 0, 0, grid.size[0], grid.size[1]),\n  grid,\n  val\n);\nconst traceLine = (grid, x1, y1, x2, y2, fn) => {\n  const pts = lineClipped(x1, y1, x2, y2, 0, 0, grid.size[0], grid.size[1]);\n  if (pts) {\n    for (const p of pts) fn(p);\n  }\n  return grid;\n};\nexport {\n  drawLine,\n  traceLine\n};\n","import { ensureShader2D } from \"./checks.js\";\nconst fillPoly = (grid, pts, val) => {\n  const numP = pts.length;\n  const [width, height] = grid.size;\n  const shader = ensureShader2D(val);\n  let minX = Infinity;\n  let minY = Infinity;\n  let maxX = -Infinity;\n  let maxY = -Infinity;\n  for (let i2 = numP; i2-- > 0; ) {\n    const { 0: x, 1: y } = pts[i2];\n    minX = Math.min(minX, x);\n    maxX = Math.max(maxX, x);\n    minY = Math.min(minY, y);\n    maxY = Math.max(maxY, y);\n  }\n  minX = Math.max(minX | 0, 0);\n  maxX = Math.min(maxX | 0, width - 1);\n  minY = Math.max(minY | 0, 0);\n  maxY = Math.min(maxY | 0, height - 1);\n  if (minX >= width || maxX < 0 || minY >= height || maxY < 0) return;\n  let i = 0;\n  let k = 0;\n  let j;\n  const isec = [];\n  for (let y = Math.max(0, minY); y <= maxY; y++) {\n    i = k = 0;\n    j = numP - 1;\n    isec.length = 0;\n    for (; i < numP; j = i, i++) {\n      const { 0: pix, 1: piy } = pts[i];\n      const { 0: pjx, 1: pjy } = pts[j];\n      if (piy < y && pjy >= y || pjy < y && piy >= y) {\n        isec[k++] = pix + (y - piy) / (pjy - piy) * (pjx - pix) | 0;\n      }\n    }\n    isec.sort((a, b) => a - b);\n    for (i = 0; i < k; i += 2) {\n      let x1 = isec[i];\n      if (x1 > maxX) break;\n      let x2 = isec[i + 1];\n      if (x2 > minX) {\n        x1 < minX && (x1 = minX);\n        x2 > maxX && (x2 = maxX);\n        for (let x = x1; x <= x2; x++) {\n          grid.setAtUnsafe(x, y, shader(grid, x, y));\n        }\n      }\n    }\n  }\n};\nexport {\n  fillPoly\n};\n","import { ensureShader2D } from \"./checks.js\";\nimport { drawLine } from \"./line.js\";\nconst drawPolyLine = (grid, pts, val, closed = false) => {\n  val = ensureShader2D(val);\n  const n = pts.length;\n  let [i, j] = closed ? [0, n - 1] : [1, 0];\n  for (; i < n; j = i, i++) {\n    const a = pts[j];\n    const b = pts[i];\n    drawLine(grid, a[0], a[1], b[0], b[1], val);\n  }\n};\nexport {\n  drawPolyLine\n};\n","import { isPrimitive } from \"@thi.ng/checks\";\nimport { hlineClipped, vlineClipped } from \"@thi.ng/grid-iterators/hvline\";\nimport { rows2d } from \"@thi.ng/grid-iterators/rows\";\nimport { concat } from \"@thi.ng/transducers/concat\";\nimport { ensureShader2D } from \"./checks.js\";\nimport { __draw2D } from \"./draw.js\";\nconst drawRect = (grid, x, y, w, h, val, fill = false) => {\n  x |= 0;\n  y |= 0;\n  w |= 0;\n  h |= 0;\n  const {\n    data,\n    offset,\n    size: [width, height],\n    stride: [sx, sy]\n  } = grid;\n  if (fill) {\n    if (x < 0) {\n      w += x;\n      x = 0;\n    }\n    if (y < 0) {\n      h += y;\n      y = 0;\n    }\n    const pts = rows2d({\n      cols: Math.min(w, width - x),\n      rows: Math.min(h, height - y)\n    });\n    const shader = ensureShader2D(val);\n    if (isPrimitive(val)) {\n      for (let { 0: xx, 1: yy } of pts) {\n        xx += x;\n        yy += y;\n        data[offset + xx * sx + yy * sy] = shader(grid, xx, yy);\n      }\n    } else {\n      for (let { 0: xx, 1: yy } of pts) {\n        xx += x;\n        yy += y;\n        grid.setAtUnsafe(xx, yy, shader(grid, xx, yy));\n      }\n    }\n    return grid;\n  }\n  return __draw2D(\n    concat(\n      hlineClipped(x, y, w, 0, 0, width, height),\n      vlineClipped(x, y + 1, h - 2, 0, 0, width, height),\n      hlineClipped(x, y + h - 1, w, 0, 0, width, height),\n      vlineClipped(x + w - 1, y + 1, h - 2, 0, 0, width, height)\n    ),\n    grid,\n    val\n  );\n};\nexport {\n  drawRect\n};\n","import { isFunction } from \"@thi.ng/checks/is-function\";\nimport {\n  porterDuffP,\n  porterDuffPInt,\n  SRC_OVER_F,\n  SRC_OVER_I\n} from \"@thi.ng/porter-duff/porter-duff\";\nimport { SYSTEM } from \"@thi.ng/random/system\";\nconst defPattern = (pattern) => {\n  const [w, h] = pattern.size;\n  return (_, x, y) => pattern.getAtUnsafe(x % w, y % h);\n};\nconst defStripes = ({\n  dir,\n  size,\n  sizeA,\n  a,\n  b\n}) => dir === \"h\" ? (_, x) => x % size < sizeA ? a : b : dir === \"v\" ? (_, __, y) => y % size < sizeA ? a : b : (_, x, y) => (x + y) % size < sizeA ? a : b;\nconst defNoise = (opts) => {\n  const { probability = 0.5, rnd = SYSTEM, a, b } = opts;\n  return () => rnd.probability(probability) ? a : b;\n};\nconst defBlendF = (col, blend = SRC_OVER_F, isPremultiplied = false) => {\n  blend = isPremultiplied ? blend : porterDuffP(blend);\n  return isFunction(col) ? (buf, x, y) => {\n    const dest = buf.getAtUnsafe(x, y);\n    return blend(dest, col(buf, x, y), dest);\n  } : (buf, x, y) => {\n    const dest = buf.getAtUnsafe(x, y);\n    return blend(dest, col, dest);\n  };\n};\nconst defBlendI = (col, blend = SRC_OVER_I, isPremultiplied = false) => {\n  blend = isPremultiplied ? blend : porterDuffPInt(blend);\n  return isFunction(col) ? (buf, x, y) => blend(col(buf, x, y), buf.getAtUnsafe(x, y)) : (buf, x, y) => blend(col, buf.getAtUnsafe(x, y));\n};\nexport {\n  defBlendF,\n  defBlendI,\n  defNoise,\n  defPattern,\n  defStripes\n};\n"]}