{"version":3,"sources":["../../src/encode/bmp.ts"],"names":["encodeBmp"],"mappings":";;;;;AAIO,IAAM,IAAA,GAAmB;AAAA,EAC9B,GAAA,EAAK,KAAA;AAAA,EACL,SAAS,EAAC;AAAA,EACV,KAAA,EAAO,KAAA;AAAA,EACP,IAAA,EAAM,WAAA;AAAA,EACN,GAAA,EAAK,KAAA;AAAA,EACL,mBAAA,EAAqB,KAAA;AAAA,EACrB,eAAA,EAAiB,MAAA;AAAA,EACjB,cAAA,EAAgB,IAAA;AAAA,EAChB,YAAA,EAAc,IAAA;AAAA,EACd,WAAA,EAAa,+CAAA;AAAA,EACb,wBAAA,EAA0B,IAAA;AAAA,EAC1B,oBAAA,EAAsB;AACxB;AAMA,eAAsB,MAAA,CACpB,QACA,QAAA,EACe;AACf,EAAA,MAAM,IAAI,MAAA,CAAO,KAAA;AACjB,EAAA,MAAM,IAAI,MAAA,CAAO,MAAA;AAEjB,EAAA,MAAM,GAAA,GAAM,MAAA,CAAO,UAAA,CAAW,IAAI,CAAA;AAIlC,EAAA,IAAI,CAAC,GAAA,EAAK,MAAM,IAAI,MAAM,2CAA2C,CAAA;AAErE,EAAA,MAAM,YAAY,GAAA,CAAI,YAAA,CAAa,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAC7C,EAAA,MAAM,OAAO,SAAA,CAAU,IAAA;AAGvB,EAAA,MAAM,aAAa,CAAA,GAAI,CAAA;AACvB,EAAA,MAAM,GAAA,GAAM,IAAI,UAAA,CAAW,UAAA,GAAa,CAAC,CAAA;AACzC,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,UAAA,EAAY,CAAA,EAAA,EAAK;AACnC,IAAA,GAAA,CAAI,CAAA,GAAI,CAAC,CAAA,GAAI,IAAA,CAAK,IAAI,CAAC,CAAA;AACvB,IAAA,GAAA,CAAI,IAAI,CAAA,GAAI,CAAC,IAAI,IAAA,CAAK,CAAA,GAAI,IAAI,CAAC,CAAA;AAC/B,IAAA,GAAA,CAAI,IAAI,CAAA,GAAI,CAAC,IAAI,IAAA,CAAK,CAAA,GAAI,IAAI,CAAC,CAAA;AAAA,EACjC;AAEA,EAAA,MAAM,UAAUA,cAAA,CAAU;AAAA,IACxB,IAAA,EAAM,GAAA;AAAA,IACN,KAAA,EAAO,CAAA;AAAA,IACP,MAAA,EAAQ,CAAA;AAAA,IACR,YAAA,EAAc,EAAA;AAAA,IACd,UAAA,EAAY,CAAA;AAAA,IACZ,QAAA,EAAU;AAAA,GACX,CAAA;AAED,EAAA,OAAO,IAAI,IAAA,CAAK,CAAC,OAAA,CAAQ,MAAqB,GAAG,EAAE,IAAA,EAAM,IAAA,CAAK,IAAA,EAAM,CAAA;AACtE","file":"bmp.cjs","sourcesContent":["import type { FormatMeta, EncodeOptions } from '../types.js';\n\nimport { encode as encodeBmp } from 'fast-bmp';\n\nexport const meta: FormatMeta = {\n  key: 'bmp',\n  aliases: [],\n  label: 'BMP',\n  mime: 'image/bmp',\n  ext: 'bmp',\n  supportsCompression: false,\n  compressionType: 'none',\n  defaultQuality: null,\n  qualityRange: null,\n  qualityHint: 'Uncompressed format — no quality control',\n  requiresAlphaCompositing: true,\n  supportsTransparency: false,\n};\n\n/**\n * Encode a Canvas to BMP using fast-bmp.\n * Produces a 24-bit RGB BMP (alpha is dropped since BMP has no transparency).\n */\nexport async function encode(\n  canvas: HTMLCanvasElement | OffscreenCanvas,\n  _options?: EncodeOptions,\n): Promise<Blob> {\n  const w = canvas.width;\n  const h = canvas.height;\n\n  const ctx = canvas.getContext('2d') as\n    | CanvasRenderingContext2D\n    | OffscreenCanvasRenderingContext2D;\n\n  if (!ctx) throw new Error('Failed to get 2D context for BMP encoding');\n\n  const imageData = ctx.getImageData(0, 0, w, h);\n  const rgba = imageData.data;\n\n  // Convert RGBA → RGB for 24-bit BMP (no alpha)\n  const pixelCount = w * h;\n  const rgb = new Uint8Array(pixelCount * 3);\n  for (let i = 0; i < pixelCount; i++) {\n    rgb[i * 3] = rgba[i * 4]!;\n    rgb[i * 3 + 1] = rgba[i * 4 + 1]!;\n    rgb[i * 3 + 2] = rgba[i * 4 + 2]!;\n  }\n\n  const bmpData = encodeBmp({\n    data: rgb,\n    width: w,\n    height: h,\n    bitsPerPixel: 24,\n    components: 3,\n    channels: 3,\n  });\n\n  return new Blob([bmpData.buffer as ArrayBuffer], { type: meta.mime });\n}\n"]}