{"version":3,"file":"canvas.cjs","names":[],"sources":["../../../src/vision/core/canvas.ts"],"sourcesContent":["/** @generated Vendored from @mauriciobenjamin700/ort-vision-sdk-web. Do not hand-edit — regenerate with `npm run vendor:vision`. */\n/**\n * Canvas plumbing shared by `io/image.ts` and `preprocess/image.ts`.\n *\n * Browsers and workers expose two canvas types (`HTMLCanvasElement` and\n * `OffscreenCanvas`) with slightly different surfaces. These helpers pick the\n * right one for the current environment, return a unified 2D context, and\n * convert between RGBA `ImageData` and the SDK's canonical HWC RGB\n * `RGBImage`.\n */\n\nimport { ImageLoadError } from \"./exceptions\";\nimport { RGBImage } from \"../types\";\n\nexport type Canvas2D = HTMLCanvasElement | OffscreenCanvas;\nexport type Context2D = CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D;\n\n/** Allocate a `Canvas2D`, preferring `OffscreenCanvas` when available. */\nexport function createCanvas(width: number, height: number): Canvas2D {\n    if (typeof OffscreenCanvas !== \"undefined\") {\n        return new OffscreenCanvas(width, height);\n    }\n    if (typeof document !== \"undefined\") {\n        const c = document.createElement(\"canvas\");\n        c.width = width;\n        c.height = height;\n        return c;\n    }\n    throw new ImageLoadError(\"No canvas implementation available in this environment.\");\n}\n\n/**\n * Get a 2D context from a canvas, throwing a typed error if the browser refuses.\n *\n * @param canvas The canvas to obtain a context for.\n * @param options Context attributes, forwarded verbatim. `willReadFrequently`\n *   tells the browser the canvas is read back with `getImageData` repeatedly,\n *   which moves the backing store to software: faster readback, slower\n *   compositing. Whether it pays depends on the surface, so it is the caller's\n *   call rather than a default here.\n */\nexport function get2DContext(\n    canvas: Canvas2D,\n    options: CanvasRenderingContext2DSettings = {},\n): Context2D {\n    const ctx = canvas.getContext(\"2d\", options) as Context2D | null;\n    if (ctx === null) {\n        throw new ImageLoadError(\"Failed to obtain 2D rendering context.\");\n    }\n    return ctx;\n}\n\n/** Convert RGBA `ImageData` into the canonical HWC RGB `RGBImage`. */\nexport function imageDataToRGB(imageData: ImageData): RGBImage {\n    const { data, width, height } = imageData;\n    if (data.length !== width * height * 4) {\n        throw new ImageLoadError(\n            `Unexpected ImageData length ${data.length} for ${width}x${height} (expected ${\n                width * height * 4\n            }).`,\n        );\n    }\n    const rgb = new Uint8Array(width * height * 3);\n    for (let i = 0, j = 0; i < data.length; i += 4, j += 3) {\n        rgb[j] = data[i] as number;\n        rgb[j + 1] = data[i + 1] as number;\n        rgb[j + 2] = data[i + 2] as number;\n    }\n    return new RGBImage(rgb, width, height);\n}\n\n/** Convert an `RGBImage` into RGBA `ImageData` (alpha forced to 255). */\nexport function rgbToImageData(image: RGBImage): ImageData {\n    const data = new Uint8ClampedArray(image.width * image.height * 4);\n    for (let i = 0, j = 0; i < image.data.length; i += 3, j += 4) {\n        data[j] = image.data[i] as number;\n        data[j + 1] = image.data[i + 1] as number;\n        data[j + 2] = image.data[i + 2] as number;\n        data[j + 3] = 255;\n    }\n    return new ImageData(data, image.width, image.height);\n}\n"],"mappings":"8DAkBA,SAAgB,EAAa,EAAe,EAA0B,CAClE,GAAI,OAAO,gBAAoB,IAC3B,OAAO,IAAI,gBAAgB,EAAO,CAAM,EAE5C,GAAI,OAAO,SAAa,IAAa,CACjC,IAAM,EAAI,SAAS,cAAc,QAAQ,EAGzC,MAFA,GAAE,MAAQ,EACV,EAAE,OAAS,EACJ,CACX,CACA,MAAM,IAAI,EAAA,eAAe,yDAAyD,CACtF,CAYA,SAAgB,EACZ,EACA,EAA4C,CAAC,EACpC,CACT,IAAM,EAAM,EAAO,WAAW,KAAM,CAAO,EAC3C,GAAI,IAAQ,KACR,MAAM,IAAI,EAAA,eAAe,wCAAwC,EAErE,OAAO,CACX,CAGA,SAAgB,EAAe,EAAgC,CAC3D,GAAM,CAAE,OAAM,QAAO,UAAW,EAChC,GAAI,EAAK,SAAW,EAAQ,EAAS,EACjC,MAAM,IAAI,EAAA,eACN,+BAA+B,EAAK,OAAO,OAAO,EAAM,GAAG,EAAO,aAC9D,EAAQ,EAAS,EACpB,GACL,EAEJ,IAAM,EAAM,IAAI,WAAW,EAAQ,EAAS,CAAC,EAC7C,IAAK,IAAI,EAAI,EAAG,EAAI,EAAG,EAAI,EAAK,OAAQ,GAAK,EAAG,GAAK,EACjD,EAAI,GAAK,EAAK,GACd,EAAI,EAAI,GAAK,EAAK,EAAI,GACtB,EAAI,EAAI,GAAK,EAAK,EAAI,GAE1B,OAAO,IAAI,EAAA,SAAS,EAAK,EAAO,CAAM,CAC1C,CAGA,SAAgB,EAAe,EAA4B,CACvD,IAAM,EAAO,IAAI,kBAAkB,EAAM,MAAQ,EAAM,OAAS,CAAC,EACjE,IAAK,IAAI,EAAI,EAAG,EAAI,EAAG,EAAI,EAAM,KAAK,OAAQ,GAAK,EAAG,GAAK,EACvD,EAAK,GAAK,EAAM,KAAK,GACrB,EAAK,EAAI,GAAK,EAAM,KAAK,EAAI,GAC7B,EAAK,EAAI,GAAK,EAAM,KAAK,EAAI,GAC7B,EAAK,EAAI,GAAK,IAElB,OAAO,IAAI,UAAU,EAAM,EAAM,MAAO,EAAM,MAAM,CACxD"}