@wordinweb/agent 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../node_modules/emf-converter/dist/index.mjs"],"sourcesContent":["// src/emf-constants.ts\nvar EMR_HEADER = 1;\nvar EMR_POLYBEZIER = 2;\nvar EMR_POLYGON = 3;\nvar EMR_POLYLINE = 4;\nvar EMR_POLYBEZIERTO = 5;\nvar EMR_POLYLINETO = 6;\nvar EMR_POLYPOLYLINE = 7;\nvar EMR_POLYPOLYGON = 8;\nvar EMR_SETWINDOWEXTEX = 9;\nvar EMR_SETWINDOWORGEX = 10;\nvar EMR_SETVIEWPORTEXTEX = 11;\nvar EMR_SETVIEWPORTORGEX = 12;\nvar EMR_SETBRUSHORGEX = 13;\nvar EMR_EOF = 14;\nvar EMR_SETPIXELV = 15;\nvar EMR_SETMAPMODE = 17;\nvar EMR_SETBKMODE = 18;\nvar EMR_SETPOLYFILLMODE = 19;\nvar EMR_SETROP2 = 20;\nvar EMR_SETSTRETCHBLTMODE = 21;\nvar R2_NOT = 6;\nvar R2_XORPEN = 7;\nvar R2_MASKPEN = 9;\nvar R2_MERGEPEN = 15;\nvar MAX_CANVAS_DIMENSION = 8192;\nvar MAX_RECORDS_DEFAULT = 2e5;\nvar MAX_RECORDS_EMFPLUS_DEFAULT = 5e5;\nvar EMR_SETTEXTALIGN = 22;\nvar EMR_SETTEXTCOLOR = 24;\nvar EMR_SETBKCOLOR = 25;\nvar EMR_OFFSETCLIPRGN = 26;\nvar EMR_MOVETOEX = 27;\nvar EMR_SETMETARGN = 28;\nvar EMR_EXCLUDECLIPRECT = 29;\nvar EMR_INTERSECTCLIPRECT = 30;\nvar EMR_SCALEVIEWPORTEXTEX = 31;\nvar EMR_SCALEWINDOWEXTEX = 32;\nvar EMR_SAVEDC = 33;\nvar EMR_RESTOREDC = 34;\nvar EMR_SETWORLDTRANSFORM = 35;\nvar EMR_MODIFYWORLDTRANSFORM = 36;\nvar EMR_SELECTOBJECT = 37;\nvar EMR_CREATEPEN = 38;\nvar EMR_CREATEBRUSHINDIRECT = 39;\nvar EMR_DELETEOBJECT = 40;\nvar EMR_ELLIPSE = 42;\nvar EMR_RECTANGLE = 43;\nvar EMR_ROUNDRECT = 44;\nvar EMR_ARC = 45;\nvar EMR_CHORD = 46;\nvar EMR_PIE = 47;\nvar EMR_LINETO = 54;\nvar EMR_ARCTO = 55;\nvar EMR_SETMITERLIMIT = 58;\nvar EMR_BEGINPATH = 59;\nvar EMR_ENDPATH = 60;\nvar EMR_CLOSEFIGURE = 61;\nvar EMR_FILLPATH = 62;\nvar EMR_STROKEANDFILLPATH = 63;\nvar EMR_STROKEPATH = 64;\nvar EMR_SELECTCLIPPATH = 67;\nvar EMR_COMMENT = 70;\nvar EMR_EXTSELECTCLIPRGN = 75;\nvar EMR_BITBLT = 76;\nvar EMR_STRETCHDIBITS = 81;\nvar EMR_EXTCREATEFONTINDIRECTW = 82;\nvar EMR_EXTTEXTOUTW = 84;\nvar EMR_POLYBEZIER16 = 85;\nvar EMR_POLYGON16 = 86;\nvar EMR_POLYLINE16 = 87;\nvar EMR_POLYBEZIERTO16 = 88;\nvar EMR_POLYLINETO16 = 89;\nvar EMR_POLYPOLYGON16 = 91;\nvar EMR_EXTCREATEPEN = 95;\nvar EMR_SETICMMODE = 98;\nvar EMR_SETLAYOUT = 115;\nvar STOCK_OBJECT_BASE = 2147483648;\nvar EMFPLUS_SIGNATURE = 726027589;\nvar EMR_COMMENT_PUBLIC_SIGNATURE = 1128875079;\nvar EMFPLUS_HEADER = 16385;\nvar EMFPLUS_ENDOFFILE = 16386;\nvar EMFPLUS_GETDC = 16388;\nvar EMFPLUS_OBJECT = 16392;\nvar EMFPLUS_FILLRECTS = 16394;\nvar EMFPLUS_DRAWRECTS = 16395;\nvar EMFPLUS_FILLPOLYGON = 16396;\nvar EMFPLUS_DRAWLINES = 16397;\nvar EMFPLUS_FILLELLIPSE = 16398;\nvar EMFPLUS_DRAWELLIPSE = 16399;\nvar EMFPLUS_FILLPIE = 16400;\nvar EMFPLUS_DRAWPIE = 16401;\nvar EMFPLUS_DRAWARC = 16402;\nvar EMFPLUS_FILLPATH = 16404;\nvar EMFPLUS_DRAWPATH = 16405;\nvar EMFPLUS_DRAWIMAGE = 16410;\nvar EMFPLUS_DRAWIMAGEPOINTS = 16411;\nvar EMFPLUS_DRAWSTRING = 16412;\nvar EMFPLUS_SETANTIALIASMODE = 16414;\nvar EMFPLUS_SETTEXTRENDERINGHINT = 16415;\nvar EMFPLUS_SETINTERPOLATIONMODE = 16417;\nvar EMFPLUS_SETPIXELOFFSETMODE = 16418;\nvar EMFPLUS_SETCOMPOSITINGQUALITY = 16420;\nvar EMFPLUS_SAVE = 16421;\nvar EMFPLUS_RESTORE = 16422;\nvar EMFPLUS_BEGINCONTAINERNOPARAMS = 16424;\nvar EMFPLUS_ENDCONTAINER = 16425;\nvar EMFPLUS_SETWORLDTRANSFORM = 16426;\nvar EMFPLUS_RESETWORLDTRANSFORM = 16427;\nvar EMFPLUS_MULTIPLYWORLDTRANSFORM = 16428;\nvar EMFPLUS_TRANSLATEWORLDTRANSFORM = 16429;\nvar EMFPLUS_SCALEWORLDTRANSFORM = 16430;\nvar EMFPLUS_ROTATEWORLDTRANSFORM = 16431;\nvar EMFPLUS_SETPAGETRANSFORM = 16432;\nvar EMFPLUS_RESETCLIP = 16433;\nvar EMFPLUS_SETCLIPRECT = 16434;\nvar EMFPLUS_SETCLIPPATH = 16435;\nvar EMFPLUS_SETCLIPREGION = 16436;\nvar EMFPLUS_DRAWDRIVERSTRING = 16438;\nvar EMFPLUS_OFFSETCLIP = 16437;\nvar EMFPLUS_OBJECTTYPE_BRUSH = 1;\nvar EMFPLUS_OBJECTTYPE_PEN = 2;\nvar EMFPLUS_OBJECTTYPE_PATH = 3;\nvar EMFPLUS_OBJECTTYPE_IMAGEATTRIBUTES = 4;\nvar EMFPLUS_OBJECTTYPE_IMAGE = 5;\nvar EMFPLUS_OBJECTTYPE_FONT = 6;\nvar EMFPLUS_OBJECTTYPE_STRINGFORMAT = 7;\nvar EMFPLUS_OBJECTTYPE_REGION = 8;\nvar EMFPLUS_BRUSHTYPE_SOLID = 0;\nvar EMFPLUS_BRUSHTYPE_HATCHFILL = 1;\nvar EMFPLUS_BRUSHTYPE_PATHGRADIENT = 3;\nvar EMFPLUS_BRUSHTYPE_LINEARGRADIENT = 4;\nvar META_EOF = 0;\nvar META_SETBKCOLOR = 513;\nvar META_SETBKMODE = 258;\nvar META_SETROP2 = 260;\nvar META_SETPOLYFILLMODE = 262;\nvar META_SETTEXTCOLOR = 521;\nvar META_SETTEXTALIGN = 302;\nvar META_SETWINDOWORG = 523;\nvar META_SETWINDOWEXT = 524;\nvar META_MOVETO = 532;\nvar META_LINETO = 531;\nvar META_RECTANGLE = 1051;\nvar META_ROUNDRECT = 1564;\nvar META_ELLIPSE = 1048;\nvar META_ARC = 2071;\nvar META_PIE = 2074;\nvar META_CHORD = 2096;\nvar META_POLYGON = 804;\nvar META_POLYLINE = 805;\nvar META_SELECTOBJECT = 301;\nvar META_DELETEOBJECT = 496;\nvar META_CREATEPENINDIRECT = 762;\nvar META_CREATEBRUSHINDIRECT = 764;\nvar META_CREATEFONTINDIRECT = 763;\nvar META_TEXTOUT = 1313;\nvar META_EXTTEXTOUT = 2610;\nvar META_SAVEDC = 30;\nvar META_RESTOREDC = 295;\nvar META_POLYPOLYGON = 1336;\nvar emfLog = (...args) => {\n};\nvar emfWarn = (...args) => {\n};\n\n// src/emf-canvas-helpers.ts\nvar DEFAULT_DPI_SCALE = 1;\nfunction createCanvas(width, height, maxWidth, maxHeight, dpiScale = DEFAULT_DPI_SCALE, maxCanvasDimension = MAX_CANVAS_DIMENSION) {\n const effectiveScale = Math.max(1, Math.min(dpiScale, 4));\n let w = Math.round(width * effectiveScale);\n let h = Math.round(height * effectiveScale);\n let scaleX = effectiveScale;\n let scaleY = effectiveScale;\n if (maxWidth && w > maxWidth) {\n const factor = maxWidth / w;\n w = maxWidth;\n h = Math.round(h * factor);\n scaleX *= factor;\n scaleY *= factor;\n }\n if (maxHeight && h > maxHeight) {\n const factor = maxHeight / h;\n w = Math.round(w * factor);\n h = maxHeight;\n scaleX *= factor;\n scaleY *= factor;\n }\n const dimCap = Math.max(1, Math.floor(maxCanvasDimension));\n const clampedW = Math.max(1, Math.min(w, dimCap));\n const clampedH = Math.max(1, Math.min(h, dimCap));\n if (clampedW !== w || clampedH !== h) {\n console.warn(\n `[emf-converter] Canvas size clamped from ${w}\\xD7${h} to ${clampedW}\\xD7${clampedH}. Output may lose detail.`\n );\n }\n w = clampedW;\n h = clampedH;\n try {\n if (typeof OffscreenCanvas !== \"undefined\") {\n emfLog(\n `createCanvas: using OffscreenCanvas ${w}\\xD7${h}, scale=(${scaleX.toFixed(3)},${scaleY.toFixed(3)})`\n );\n const canvas2 = new OffscreenCanvas(w, h);\n const ctx2 = canvas2.getContext(\"2d\");\n if (!ctx2) {\n emfWarn('createCanvas: OffscreenCanvas.getContext(\"2d\") returned null');\n return null;\n }\n return { canvas: canvas2, ctx: ctx2, scaleX, scaleY };\n }\n if (typeof document === \"undefined\") {\n emfWarn(\"createCanvas: no OffscreenCanvas and no document \\u2014 cannot create canvas\");\n return null;\n }\n emfLog(\n `createCanvas: using HTMLCanvasElement ${w}\\xD7${h}, scale=(${scaleX.toFixed(3)},${scaleY.toFixed(3)})`\n );\n const canvas = document.createElement(\"canvas\");\n canvas.width = w;\n canvas.height = h;\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) {\n emfWarn('createCanvas: HTMLCanvasElement.getContext(\"2d\") returned null');\n return null;\n }\n return { canvas, ctx, scaleX, scaleY };\n } catch (err) {\n return null;\n }\n}\nfunction createTempCanvas(width, height) {\n if (width <= 0 || height <= 0) {\n return null;\n }\n width = Math.max(1, Math.min(Math.floor(width), MAX_CANVAS_DIMENSION));\n height = Math.max(1, Math.min(Math.floor(height), MAX_CANVAS_DIMENSION));\n if (typeof OffscreenCanvas !== \"undefined\") {\n const canvas = new OffscreenCanvas(width, height);\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) {\n return null;\n }\n return { canvas, ctx };\n }\n if (typeof document !== \"undefined\") {\n const canvas = document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) {\n return null;\n }\n return { canvas, ctx };\n }\n return null;\n}\nfunction rop2ToGco(rop2) {\n switch (rop2) {\n case R2_XORPEN:\n return \"xor\";\n case R2_MASKPEN:\n return \"multiply\";\n case R2_MERGEPEN:\n return \"lighten\";\n case R2_NOT:\n return \"difference\";\n default:\n return \"source-over\";\n }\n}\nfunction applyPen(ctx, state) {\n ctx.globalCompositeOperation = rop2ToGco(state.rop2);\n if (state.penStyle === 5) {\n ctx.strokeStyle = \"rgba(0,0,0,0)\";\n ctx.lineWidth = 0;\n return;\n }\n ctx.strokeStyle = state.penColor;\n ctx.lineWidth = Math.max(state.penWidth, 1);\n switch (state.penStyle) {\n case 1:\n ctx.setLineDash([8, 4]);\n break;\n case 2:\n ctx.setLineDash([2, 2]);\n break;\n case 3:\n ctx.setLineDash([8, 4, 2, 4]);\n break;\n case 4:\n ctx.setLineDash([8, 4, 2, 4, 2, 4]);\n break;\n default:\n ctx.setLineDash([]);\n break;\n }\n}\nfunction applyBrush(ctx, state) {\n ctx.globalCompositeOperation = rop2ToGco(state.rop2);\n if (state.brushStyle === 1) {\n ctx.fillStyle = \"rgba(0,0,0,0)\";\n return;\n }\n ctx.fillStyle = state.brushColor;\n}\nfunction cssFontWeight(weight) {\n if (!weight || weight === 400) {\n return \"\";\n }\n const rounded = Math.round(weight / 100) * 100;\n if (rounded === 700) {\n return \"bold\";\n }\n if (rounded >= 100 && rounded <= 900) {\n return String(rounded);\n }\n return weight >= 700 ? \"bold\" : \"\";\n}\nfunction mapFontFamily(face, map) {\n const resolved = map?.[face.toLowerCase().trim()] ?? face;\n if (/[\\s,]/.test(resolved) && !/^[\"']/.test(resolved)) {\n return `\"${resolved}\"`;\n }\n return resolved;\n}\nfunction applyFont(ctx, state) {\n const italic = state.fontItalic ? \"italic \" : \"\";\n const weight = cssFontWeight(state.fontWeight);\n const weightPart = weight ? `${weight} ` : \"\";\n const size = Math.max(Math.abs(state.fontHeight), 8);\n const family = mapFontFamily(state.fontFamily, state.fontFamilyMap);\n ctx.font = `${italic}${weightPart}${size}px ${family}`;\n}\nfunction drawTextDecorations(ctx, state, x, y, width) {\n if (!state.fontUnderline && !state.fontStrikeOut) {\n return;\n }\n const size = Math.max(Math.abs(state.fontHeight), 8);\n const thickness = Math.max(1, Math.round(size / 14));\n const prevFill = ctx.fillStyle;\n ctx.fillStyle = state.textColor;\n if (state.fontUnderline) {\n ctx.fillRect(x, y + Math.round(size * 0.12), width, thickness);\n }\n if (state.fontStrikeOut) {\n ctx.fillRect(x, y - Math.round(size * 0.3), width, thickness);\n }\n ctx.fillStyle = prevFill;\n}\nfunction readUtf16LE(view, offset, charCount) {\n if (charCount <= 0) {\n return \"\";\n }\n const maxBytes = view.byteLength - offset;\n if (maxBytes <= 0) {\n return \"\";\n }\n const usableChars = Math.min(charCount, Math.floor(maxBytes / 2));\n if (usableChars <= 0) {\n return \"\";\n }\n let decoded;\n try {\n const bytes = new Uint8Array(view.buffer, view.byteOffset + offset, usableChars * 2);\n decoded = new TextDecoder(\"utf-16le\").decode(bytes);\n } catch {\n const chars = [];\n for (let i = 0; i < usableChars; i++) {\n const code = view.getUint16(offset + i * 2, true);\n if (code === 0) {\n return chars.join(\"\");\n }\n chars.push(String.fromCharCode(code));\n }\n return chars.join(\"\");\n }\n const nul = decoded.indexOf(String.fromCharCode(0));\n return nul === -1 ? decoded : decoded.slice(0, nul);\n}\nfunction getStockObject(index) {\n switch (index) {\n case 0:\n return { kind: \"brush\", style: 0, color: \"#ffffff\" };\n case 1:\n return { kind: \"brush\", style: 0, color: \"#c0c0c0\" };\n case 2:\n return { kind: \"brush\", style: 0, color: \"#808080\" };\n case 3:\n return { kind: \"brush\", style: 0, color: \"#404040\" };\n case 4:\n return { kind: \"brush\", style: 0, color: \"#000000\" };\n case 5:\n return { kind: \"brush\", style: 1, color: \"#000000\" };\n case 6:\n return { kind: \"pen\", style: 0, widthX: 1, color: \"#ffffff\" };\n case 7:\n return { kind: \"pen\", style: 0, widthX: 1, color: \"#000000\" };\n case 8:\n return { kind: \"pen\", style: 5, widthX: 0, color: \"#000000\" };\n case 10:\n case 11:\n return {\n kind: \"font\",\n height: 12,\n weight: 400,\n italic: false,\n underline: false,\n strikeOut: false,\n family: \"monospace\"\n };\n case 12:\n case 13:\n case 14:\n case 17:\n return {\n kind: \"font\",\n height: 12,\n weight: 400,\n italic: false,\n underline: false,\n strikeOut: false,\n family: \"sans-serif\"\n };\n default:\n return null;\n }\n}\nasync function blobToDataUrl(blob) {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => resolve(reader.result);\n reader.onerror = () => reject(reader.error);\n reader.readAsDataURL(blob);\n });\n}\nasync function exportCanvasToPngDataUrl(canvas) {\n if (typeof OffscreenCanvas !== \"undefined\" && canvas instanceof OffscreenCanvas) {\n emfLog(\n `exportCanvasToPngDataUrl: using OffscreenCanvas.convertToBlob (${canvas.width}\\xD7${canvas.height})`\n );\n const blob = await canvas.convertToBlob({ type: \"image/png\" });\n emfLog(`exportCanvasToPngDataUrl: blob size=${blob.size} bytes, type=${blob.type}`);\n return blobToDataUrl(blob);\n }\n if (typeof HTMLCanvasElement !== \"undefined\" && canvas instanceof HTMLCanvasElement) {\n emfLog(\n `exportCanvasToPngDataUrl: using HTMLCanvasElement.toDataURL (${canvas.width}\\xD7${canvas.height})`\n );\n return canvas.toDataURL(\"image/png\");\n }\n return null;\n}\n\n// src/emf-header-parser.ts\nfunction parseEmfHeader(view) {\n emfLog(\"parseEmfHeader: byteLength =\", view.byteLength);\n if (view.byteLength < 88) {\n return null;\n }\n const recordType = view.getUint32(0, true);\n if (recordType !== EMR_HEADER) {\n return null;\n }\n const boundsLeft = view.getInt32(8, true);\n const boundsTop = view.getInt32(12, true);\n const boundsRight = view.getInt32(16, true);\n const boundsBottom = view.getInt32(20, true);\n const frameLeft = view.getInt32(24, true);\n const frameTop = view.getInt32(28, true);\n const frameRight = view.getInt32(32, true);\n const frameBottom = view.getInt32(36, true);\n const frameW = frameRight - frameLeft;\n const frameH = frameBottom - frameTop;\n return {\n bounds: {\n left: boundsLeft,\n top: boundsTop,\n right: boundsRight,\n bottom: boundsBottom\n },\n frameW,\n frameH\n };\n}\nfunction getRenderableEmfBounds(header) {\n const boundsW = header.bounds.right - header.bounds.left;\n const boundsH = header.bounds.bottom - header.bounds.top;\n if (boundsW > 0 && boundsH > 0) {\n return header.bounds;\n }\n if (header.frameW > 0 && header.frameH > 0) {\n emfLog(\n `getRenderableEmfBounds: bounds invalid (${boundsW}\\xD7${boundsH}), falling back to frame ${header.frameW}\\xD7${header.frameH}`\n );\n return { left: 0, top: 0, right: header.frameW, bottom: header.frameH };\n }\n return null;\n}\nfunction parseWmfHeader(view) {\n if (view.byteLength < 22) {\n return null;\n }\n const magic = view.getUint32(0, true);\n let headerOffset = 0;\n let boundsLeft = 0;\n let boundsTop = 0;\n let boundsRight = 800;\n let boundsBottom = 600;\n let unitsPerInch = 96;\n if (magic === 2596720087) {\n boundsLeft = view.getInt16(6, true);\n boundsTop = view.getInt16(8, true);\n boundsRight = view.getInt16(10, true);\n boundsBottom = view.getInt16(12, true);\n unitsPerInch = view.getUint16(14, true) || 96;\n headerOffset = 22;\n }\n if (headerOffset + 18 > view.byteLength) {\n return null;\n }\n const fileType = view.getUint16(headerOffset, true);\n if (fileType !== 1 && fileType !== 2) {\n return null;\n }\n const headerSize = view.getUint16(headerOffset + 2, true) * 2;\n const maxRecordSize = view.getUint32(headerOffset + 8, true) * 2;\n return {\n headerSize: headerOffset + headerSize,\n maxRecordSize,\n boundsLeft,\n boundsTop,\n boundsRight,\n boundsBottom,\n unitsPerInch\n };\n}\n\n// src/emf-color-helpers.ts\nfunction colorRefToHex(r, g, b) {\n const toHex = (v) => v.toString(16).padStart(2, \"0\");\n return `#${toHex(r & 255)}${toHex(g & 255)}${toHex(b & 255)}`;\n}\nfunction readColorRef(view, offset) {\n const r = view.getUint8(offset);\n const g = view.getUint8(offset + 1);\n const b = view.getUint8(offset + 2);\n return colorRefToHex(r, g, b);\n}\nfunction argbToRgba(argb) {\n const a = (argb >>> 24 & 255) / 255;\n const r = argb >>> 16 & 255;\n const g = argb >>> 8 & 255;\n const b = argb & 255;\n return `rgba(${r},${g},${b},${a.toFixed(3)})`;\n}\n\n// src/emf-gdi-coord.ts\nfunction gmx(r, x) {\n if (r.useMappingMode) {\n return (x - r.windowOrg.x) / (r.windowExt.cx || 1) * (r.viewportExt.cx || 1) + r.viewportOrg.x;\n }\n return (x - r.bounds.left) * r.sx;\n}\nfunction gmy(r, y) {\n if (r.useMappingMode) {\n return (y - r.windowOrg.y) / (r.windowExt.cy || 1) * (r.viewportExt.cy || 1) + r.viewportOrg.y;\n }\n return (y - r.bounds.top) * r.sy;\n}\nfunction gmw(r, w) {\n if (r.useMappingMode) {\n return w / (r.windowExt.cx || 1) * (r.viewportExt.cx || 1);\n }\n return w * r.sx;\n}\nfunction gmh(r, h) {\n if (r.useMappingMode) {\n return h / (r.windowExt.cy || 1) * (r.viewportExt.cy || 1);\n }\n return h * r.sy;\n}\nfunction activateGdiMappingMode(r) {\n r.useMappingMode = true;\n}\n\n// src/emf-gdi-draw-shapes.ts\nfunction handleSetPixelV(rCtx, dataOff, recSize) {\n const { ctx, view } = rCtx;\n if (recSize >= 20) {\n const x = view.getInt32(dataOff, true);\n const y = view.getInt32(dataOff + 4, true);\n const color = readColorRef(view, dataOff + 8);\n ctx.fillStyle = color;\n ctx.fillRect(gmx(rCtx, x), gmy(rCtx, y), 1, 1);\n }\n return true;\n}\nfunction handleMoveToEx(rCtx, dataOff, recSize) {\n const { ctx, view, state, inPath } = rCtx;\n if (recSize >= 16) {\n state.curX = view.getInt32(dataOff, true);\n state.curY = view.getInt32(dataOff + 4, true);\n if (inPath) {\n ctx.moveTo(gmx(rCtx, state.curX), gmy(rCtx, state.curY));\n }\n }\n return true;\n}\nfunction handleLineTo(rCtx, dataOff, recSize) {\n const { ctx, view, state, inPath } = rCtx;\n if (recSize >= 16) {\n const lx = view.getInt32(dataOff, true);\n const ly = view.getInt32(dataOff + 4, true);\n if (inPath) {\n ctx.lineTo(gmx(rCtx, lx), gmy(rCtx, ly));\n } else {\n applyPen(ctx, state);\n ctx.beginPath();\n ctx.moveTo(gmx(rCtx, state.curX), gmy(rCtx, state.curY));\n ctx.lineTo(gmx(rCtx, lx), gmy(rCtx, ly));\n ctx.stroke();\n }\n state.curX = lx;\n state.curY = ly;\n }\n return true;\n}\nfunction handleRectangle(rCtx, dataOff, recSize) {\n const { ctx, view, state, inPath } = rCtx;\n if (recSize >= 24) {\n const l = view.getInt32(dataOff, true);\n const t = view.getInt32(dataOff + 4, true);\n const r = view.getInt32(dataOff + 8, true);\n const b = view.getInt32(dataOff + 12, true);\n if (inPath) {\n ctx.rect(gmx(rCtx, l), gmy(rCtx, t), gmw(rCtx, r - l), gmh(rCtx, b - t));\n } else {\n applyBrush(ctx, state);\n ctx.fillRect(gmx(rCtx, l), gmy(rCtx, t), gmw(rCtx, r - l), gmh(rCtx, b - t));\n applyPen(ctx, state);\n ctx.strokeRect(gmx(rCtx, l), gmy(rCtx, t), gmw(rCtx, r - l), gmh(rCtx, b - t));\n }\n }\n return true;\n}\nfunction handleRoundRect(rCtx, dataOff, recSize) {\n const { ctx, view, state, inPath } = rCtx;\n if (recSize >= 32) {\n const l = view.getInt32(dataOff, true);\n const t = view.getInt32(dataOff + 4, true);\n const r = view.getInt32(dataOff + 8, true);\n const b = view.getInt32(dataOff + 12, true);\n const rw = Math.abs(gmw(rCtx, view.getInt32(dataOff + 16, true))) / 2;\n const rh = Math.abs(gmh(rCtx, view.getInt32(dataOff + 20, true))) / 2;\n const x1 = gmx(rCtx, l);\n const y1 = gmy(rCtx, t);\n const w = gmw(rCtx, r - l);\n const h = gmh(rCtx, b - t);\n const drawRoundRect = () => {\n const radius = Math.min(rw, rh, w / 2, h / 2);\n ctx.moveTo(x1 + radius, y1);\n ctx.lineTo(x1 + w - radius, y1);\n ctx.arcTo(x1 + w, y1, x1 + w, y1 + radius, radius);\n ctx.lineTo(x1 + w, y1 + h - radius);\n ctx.arcTo(x1 + w, y1 + h, x1 + w - radius, y1 + h, radius);\n ctx.lineTo(x1 + radius, y1 + h);\n ctx.arcTo(x1, y1 + h, x1, y1 + h - radius, radius);\n ctx.lineTo(x1, y1 + radius);\n ctx.arcTo(x1, y1, x1 + radius, y1, radius);\n ctx.closePath();\n };\n if (inPath) {\n drawRoundRect();\n } else {\n ctx.beginPath();\n drawRoundRect();\n applyBrush(ctx, state);\n ctx.fill();\n applyPen(ctx, state);\n ctx.stroke();\n }\n }\n return true;\n}\nfunction handleEllipse(rCtx, dataOff, recSize) {\n const { ctx, view, state, inPath } = rCtx;\n if (recSize >= 24) {\n const l = view.getInt32(dataOff, true);\n const t = view.getInt32(dataOff + 4, true);\n const r = view.getInt32(dataOff + 8, true);\n const b = view.getInt32(dataOff + 12, true);\n const cx = gmx(rCtx, (l + r) / 2);\n const cy = gmy(rCtx, (t + b) / 2);\n const rx = Math.abs(gmw(rCtx, r - l)) / 2;\n const ry = Math.abs(gmh(rCtx, b - t)) / 2;\n if (inPath) {\n ctx.ellipse(cx, cy, rx, ry, 0, 0, Math.PI * 2);\n } else {\n ctx.beginPath();\n ctx.ellipse(cx, cy, rx, ry, 0, 0, Math.PI * 2);\n applyBrush(ctx, state);\n ctx.fill();\n applyPen(ctx, state);\n ctx.stroke();\n }\n }\n return true;\n}\nfunction handleArcFamily(rCtx, recType, dataOff, recSize) {\n const { ctx, view, state, inPath } = rCtx;\n if (recSize >= 40) {\n const l = view.getInt32(dataOff, true);\n const t = view.getInt32(dataOff + 4, true);\n const r = view.getInt32(dataOff + 8, true);\n const b = view.getInt32(dataOff + 12, true);\n const startX = view.getInt32(dataOff + 16, true);\n const startY = view.getInt32(dataOff + 20, true);\n const endX = view.getInt32(dataOff + 24, true);\n const endY = view.getInt32(dataOff + 28, true);\n const cxA = (l + r) / 2;\n const cyA = (t + b) / 2;\n const rx = Math.abs(r - l) / 2;\n const ry = Math.abs(b - t) / 2;\n const startAngle = Math.atan2((startY - cyA) / (ry || 1), (startX - cxA) / (rx || 1));\n const endAngle = Math.atan2((endY - cyA) / (ry || 1), (endX - cxA) / (rx || 1));\n const mcx = gmx(rCtx, cxA);\n const mcy = gmy(rCtx, cyA);\n const mrx = Math.abs(gmw(rCtx, rx));\n const mry = Math.abs(gmh(rCtx, ry));\n const isArcTo = recType === EMR_ARCTO;\n const needsFill = recType === EMR_PIE || recType === EMR_CHORD;\n if (!inPath) {\n ctx.beginPath();\n }\n if (recType === EMR_PIE) {\n ctx.moveTo(mcx, mcy);\n }\n if (isArcTo) {\n ctx.lineTo(mcx + mrx * Math.cos(startAngle), mcy + mry * Math.sin(startAngle));\n }\n ctx.ellipse(mcx, mcy, mrx, mry, 0, startAngle, endAngle, false);\n if (recType === EMR_PIE || recType === EMR_CHORD) {\n ctx.closePath();\n }\n if (!inPath) {\n if (needsFill) {\n applyBrush(ctx, state);\n ctx.fill();\n }\n applyPen(ctx, state);\n ctx.stroke();\n }\n if (isArcTo) {\n state.curX = endX;\n state.curY = endY;\n }\n }\n return true;\n}\nfunction handleEmfGdiShapeRecord(rCtx, recType, dataOff, recSize) {\n switch (recType) {\n case EMR_SETPIXELV:\n return handleSetPixelV(rCtx, dataOff, recSize);\n case EMR_MOVETOEX:\n return handleMoveToEx(rCtx, dataOff, recSize);\n case EMR_LINETO:\n return handleLineTo(rCtx, dataOff, recSize);\n case EMR_RECTANGLE:\n return handleRectangle(rCtx, dataOff, recSize);\n case EMR_ROUNDRECT:\n return handleRoundRect(rCtx, dataOff, recSize);\n case EMR_ELLIPSE:\n return handleEllipse(rCtx, dataOff, recSize);\n case EMR_ARC:\n case EMR_ARCTO:\n case EMR_CHORD:\n case EMR_PIE:\n return handleArcFamily(rCtx, recType, dataOff, recSize);\n default:\n return false;\n }\n}\n\n// src/emf-dib-rle-decoder.ts\nfunction decodeRleBitmap(view, bitsOffset, bitsSize, width, height, _topDown, isRle4, colorTable, out, setPixel) {\n let x = 0;\n let y = height - 1;\n let off = bitsOffset;\n const endOff = bitsOffset + bitsSize;\n while (off + 1 < endOff && y >= 0) {\n const first = view.getUint8(off);\n const second = view.getUint8(off + 1);\n off += 2;\n if (first === 0) {\n if (second === 0) {\n x = 0;\n y--;\n } else if (second === 1) {\n break;\n } else if (second === 2) {\n if (off + 1 >= endOff) {\n break;\n }\n x += view.getUint8(off);\n y -= view.getUint8(off + 1);\n off += 2;\n } else {\n const count = second;\n if (!isRle4) {\n for (let i = 0; i < count && off < endOff && x < width; i++) {\n const idx = view.getUint8(off++);\n if (idx < colorTable.length) {\n setPixel(\n x,\n height - 1 - y,\n colorTable[idx][0],\n colorTable[idx][1],\n colorTable[idx][2],\n 255\n );\n }\n x++;\n }\n if (count & 1) {\n off++;\n }\n } else {\n const bytes = Math.ceil(count / 2);\n let pi = 0;\n for (let i = 0; i < bytes && off < endOff; i++) {\n const byte = view.getUint8(off++);\n for (let nibble = 0; nibble < 2 && pi < count; nibble++) {\n const idx = nibble === 0 ? byte >> 4 & 15 : byte & 15;\n if (idx < colorTable.length && x < width) {\n setPixel(\n x,\n height - 1 - y,\n colorTable[idx][0],\n colorTable[idx][1],\n colorTable[idx][2],\n 255\n );\n }\n x++;\n pi++;\n }\n }\n if (bytes & 1) {\n off++;\n }\n }\n }\n } else if (!isRle4) {\n const idx = second;\n const c = idx < colorTable.length ? colorTable[idx] : [0, 0, 0];\n for (let i = 0; i < first && x < width; i++) {\n setPixel(x, height - 1 - y, c[0], c[1], c[2], 255);\n x++;\n }\n } else {\n const hi = second >> 4 & 15;\n const lo = second & 15;\n for (let i = 0; i < first && x < width; i++) {\n const idx = (i & 1) === 0 ? hi : lo;\n if (idx < colorTable.length) {\n setPixel(\n x,\n height - 1 - y,\n colorTable[idx][0],\n colorTable[idx][1],\n colorTable[idx][2],\n 255\n );\n }\n x++;\n }\n }\n }\n return new ImageData(\n new Uint8ClampedArray(out.buffer, out.byteOffset, out.byteLength),\n width,\n height\n );\n}\n\n// src/emf-dib-uncompressed.ts\nfunction countTrailingZeros(v) {\n if (v === 0) {\n return 0;\n }\n let c = 0;\n let val = v;\n while ((val & 1) === 0) {\n val >>>= 1;\n c++;\n }\n return c;\n}\nvar BI_BITFIELDS = 3;\nfunction parseBitfieldMasks(view, bmiOffset, headerSize, compression, bitCount) {\n let rMask = 0, gMask = 0, bMask = 0;\n let rShift = 0, gShift = 0, bShift = 0;\n let rMax = 1, gMax = 1, bMax = 1;\n if (compression === BI_BITFIELDS) {\n const bfOff = bmiOffset + headerSize;\n if (bfOff + 12 > view.byteLength) {\n return null;\n }\n rMask = view.getUint32(bfOff, true);\n gMask = view.getUint32(bfOff + 4, true);\n bMask = view.getUint32(bfOff + 8, true);\n rShift = countTrailingZeros(rMask);\n gShift = countTrailingZeros(gMask);\n bShift = countTrailingZeros(bMask);\n rMax = rMask >>> rShift || 1;\n gMax = gMask >>> gShift || 1;\n bMax = bMask >>> bShift || 1;\n } else if (bitCount === 16) {\n rMask = 31744;\n gMask = 992;\n bMask = 31;\n rShift = 10;\n gShift = 5;\n bShift = 0;\n rMax = 31;\n gMax = 31;\n bMax = 31;\n }\n return { rMask, gMask, bMask, rShift, gShift, bShift, rMax, gMax, bMax };\n}\nfunction decodeUncompressedRows(view, bitsOffset, width, height, topDown, bitCount, colorTable, masks, out) {\n const rowStride = Math.floor((bitCount * width + 31) / 32) * 4;\n const { rMask, gMask, bMask, rShift, gShift, bShift, rMax, gMax, bMax } = masks;\n for (let y = 0; y < height; y++) {\n const srcY = topDown ? y : height - 1 - y;\n const rowStart = bitsOffset + srcY * rowStride;\n if (rowStart + rowStride > view.byteLength) {\n continue;\n }\n for (let x = 0; x < width; x++) {\n const dstPx = (y * width + x) * 4;\n if (bitCount === 1) {\n const byteIdx = rowStart + (x >> 3);\n const bit = view.getUint8(byteIdx) >> 7 - (x & 7) & 1;\n if (bit < colorTable.length) {\n out[dstPx] = colorTable[bit][0];\n out[dstPx + 1] = colorTable[bit][1];\n out[dstPx + 2] = colorTable[bit][2];\n }\n out[dstPx + 3] = 255;\n } else if (bitCount === 4) {\n const byteIdx = rowStart + (x >> 1);\n const nibble = (x & 1) === 0 ? view.getUint8(byteIdx) >> 4 & 15 : view.getUint8(byteIdx) & 15;\n if (nibble < colorTable.length) {\n out[dstPx] = colorTable[nibble][0];\n out[dstPx + 1] = colorTable[nibble][1];\n out[dstPx + 2] = colorTable[nibble][2];\n }\n out[dstPx + 3] = 255;\n } else if (bitCount === 8) {\n const idx = view.getUint8(rowStart + x);\n if (idx < colorTable.length) {\n out[dstPx] = colorTable[idx][0];\n out[dstPx + 1] = colorTable[idx][1];\n out[dstPx + 2] = colorTable[idx][2];\n }\n out[dstPx + 3] = 255;\n } else if (bitCount === 16) {\n const val = view.getUint16(rowStart + x * 2, true);\n out[dstPx] = Math.round(((val & rMask) >>> rShift) * 255 / rMax);\n out[dstPx + 1] = Math.round(((val & gMask) >>> gShift) * 255 / gMax);\n out[dstPx + 2] = Math.round(((val & bMask) >>> bShift) * 255 / bMax);\n out[dstPx + 3] = 255;\n } else if (bitCount === 24) {\n const srcPx = rowStart + x * 3;\n out[dstPx] = view.getUint8(srcPx + 2);\n out[dstPx + 1] = view.getUint8(srcPx + 1);\n out[dstPx + 2] = view.getUint8(srcPx);\n out[dstPx + 3] = 255;\n } else {\n const srcPx = rowStart + x * 4;\n const bb = view.getUint8(srcPx);\n const gg = view.getUint8(srcPx + 1);\n const rr = view.getUint8(srcPx + 2);\n const aa = view.getUint8(srcPx + 3);\n out[dstPx] = rr;\n out[dstPx + 1] = gg;\n out[dstPx + 2] = bb;\n out[dstPx + 3] = aa === 0 ? 255 : aa;\n }\n }\n }\n}\n\n// src/emf-dib-decoder.ts\nfunction decodeDibToImageData(view, bmiOffset, bitsOffset, bitsSize) {\n if (bmiOffset < 0 || bitsOffset < 0 || bmiOffset + 40 > view.byteLength || bitsOffset + bitsSize > view.byteLength) {\n return null;\n }\n const headerSize = view.getUint32(bmiOffset, true);\n if (headerSize < 40 || bmiOffset + headerSize > view.byteLength) {\n return null;\n }\n const width = view.getInt32(bmiOffset + 4, true);\n const heightRaw = view.getInt32(bmiOffset + 8, true);\n const planes = view.getUint16(bmiOffset + 12, true);\n const bitCount = view.getUint16(bmiOffset + 14, true);\n const compression = view.getUint32(bmiOffset + 16, true);\n if (planes !== 1 || width <= 0 || heightRaw === 0) {\n return null;\n }\n if (width > 8192 || Math.abs(heightRaw) > 8192) {\n return null;\n }\n const BI_RGB = 0;\n const BI_RLE8 = 1;\n const BI_RLE4 = 2;\n const BI_BITFIELDS2 = 3;\n if (bitCount !== 1 && bitCount !== 4 && bitCount !== 8 && bitCount !== 16 && bitCount !== 24 && bitCount !== 32) {\n return null;\n }\n if (compression === BI_RLE8 && bitCount !== 8) {\n return null;\n }\n if (compression === BI_RLE4 && bitCount !== 4) {\n return null;\n }\n if (compression === BI_BITFIELDS2 && bitCount !== 16 && bitCount !== 32) {\n return null;\n }\n if (compression !== BI_RGB && compression !== BI_RLE8 && compression !== BI_RLE4 && compression !== BI_BITFIELDS2) {\n return null;\n }\n const height = Math.abs(heightRaw);\n const topDown = heightRaw < 0;\n const colorTable = [];\n if (bitCount <= 8) {\n const maxColors = 1 << bitCount;\n const colorsUsed = view.getUint32(bmiOffset + 32, true) || maxColors;\n const numColors = Math.min(colorsUsed, maxColors);\n const ctOffset = bmiOffset + headerSize;\n if (ctOffset + numColors * 4 > view.byteLength) {\n return null;\n }\n for (let i = 0; i < numColors; i++) {\n const b = view.getUint8(ctOffset + i * 4);\n const g = view.getUint8(ctOffset + i * 4 + 1);\n const r = view.getUint8(ctOffset + i * 4 + 2);\n colorTable.push([r, g, b]);\n }\n }\n const masks = parseBitfieldMasks(view, bmiOffset, headerSize, compression, bitCount);\n if (!masks) {\n return null;\n }\n const out = new Uint8ClampedArray(width * height * 4);\n if (compression === BI_RLE8 || compression === BI_RLE4) {\n const setPixel = (x, y, r, g, b, a) => {\n const dstPx = (y * width + x) * 4;\n out[dstPx] = r;\n out[dstPx + 1] = g;\n out[dstPx + 2] = b;\n out[dstPx + 3] = a;\n };\n return decodeRleBitmap(\n view,\n bitsOffset,\n bitsSize,\n width,\n height,\n topDown,\n compression === BI_RLE4,\n colorTable,\n out,\n setPixel\n );\n }\n decodeUncompressedRows(\n view,\n bitsOffset,\n width,\n height,\n topDown,\n bitCount,\n colorTable,\n masks,\n out\n );\n return new ImageData(out, width, height);\n}\n\n// src/emf-gdi-draw-text-bitmap.ts\nfunction handleExtTextOutW(rCtx, offset, dataOff, recSize) {\n const { ctx, view, state } = rCtx;\n if (recSize >= 76) {\n const refX = view.getInt32(dataOff + 28, true);\n const refY = view.getInt32(dataOff + 32, true);\n const nChars = view.getUint32(dataOff + 36, true);\n const offString = view.getUint32(dataOff + 40, true);\n const maxOffset = view.byteLength;\n if (nChars > 0 && offString > 0 && offset + offString + nChars * 2 <= maxOffset) {\n const text = readUtf16LE(view, offset + offString, nChars);\n if (text.length > 0) {\n applyFont(ctx, state);\n ctx.fillStyle = state.textColor;\n let alignBaseline = \"alphabetic\";\n let alignHoriz = \"left\";\n if (state.textAlign & 8) {\n alignBaseline = \"bottom\";\n }\n if (state.textAlign & 24) {\n alignBaseline = \"alphabetic\";\n }\n if (state.textAlign & 6) {\n alignHoriz = \"center\";\n }\n if (state.textAlign & 2) {\n alignHoriz = \"right\";\n }\n ctx.textBaseline = alignBaseline;\n ctx.textAlign = alignHoriz;\n if (state.bkMode === 2) {\n const measured = ctx.measureText(text);\n const bgH = state.fontHeight || 12;\n ctx.fillStyle = state.bkColor;\n ctx.fillRect(gmx(rCtx, refX), gmy(rCtx, refY) - bgH, measured.width, bgH);\n ctx.fillStyle = state.textColor;\n }\n ctx.fillText(text, gmx(rCtx, refX), gmy(rCtx, refY));\n if (state.fontUnderline || state.fontStrikeOut) {\n const w = ctx.measureText(text).width;\n const baseX = gmx(rCtx, refX);\n const startX = alignHoriz === \"center\" ? baseX - w / 2 : alignHoriz === \"right\" ? baseX - w : baseX;\n drawTextDecorations(ctx, state, startX, gmy(rCtx, refY), w);\n }\n }\n }\n }\n return true;\n}\nfunction handleBitBlt(rCtx, offset, dataOff, recSize) {\n const { ctx, view } = rCtx;\n if (recSize >= 96) {\n const dstX = view.getInt32(dataOff + 16, true);\n const dstY = view.getInt32(dataOff + 20, true);\n const dstW = view.getInt32(dataOff + 24, true);\n const dstH = view.getInt32(dataOff + 28, true);\n const offBmiSrc = view.getUint32(dataOff + 76, true);\n const cbBmiSrc = view.getUint32(dataOff + 80, true);\n const offBitsSrc = view.getUint32(dataOff + 84, true);\n const cbBitsSrc = view.getUint32(dataOff + 88, true);\n if (offBmiSrc > 0 && cbBmiSrc > 0 && offBitsSrc > 0 && cbBitsSrc > 0) {\n const imageData = decodeDibToImageData(\n view,\n offset + offBmiSrc,\n offset + offBitsSrc,\n cbBitsSrc\n );\n if (imageData) {\n const temp = createTempCanvas(imageData.width, imageData.height);\n if (temp) {\n temp.ctx.putImageData(imageData, 0, 0);\n ctx.drawImage(\n temp.canvas,\n gmx(rCtx, dstX),\n gmy(rCtx, dstY),\n gmw(rCtx, dstW),\n gmh(rCtx, dstH)\n );\n }\n }\n }\n }\n return true;\n}\nfunction handleStretchDibits(rCtx, offset, dataOff, recSize) {\n const { ctx, view } = rCtx;\n if (recSize >= 80) {\n const dstX = view.getInt32(dataOff + 16, true);\n const dstY = view.getInt32(dataOff + 20, true);\n const dstW = view.getInt32(dataOff + 64, true);\n const dstH = view.getInt32(dataOff + 68, true);\n const offBmiSrc = view.getUint32(dataOff + 40, true);\n const cbBmiSrc = view.getUint32(dataOff + 44, true);\n const offBitsSrc = view.getUint32(dataOff + 48, true);\n const cbBitsSrc = view.getUint32(dataOff + 52, true);\n if (offBmiSrc > 0 && cbBmiSrc > 0 && offBitsSrc > 0 && cbBitsSrc > 0) {\n const imageData = decodeDibToImageData(\n view,\n offset + offBmiSrc,\n offset + offBitsSrc,\n cbBitsSrc\n );\n if (imageData) {\n const temp = createTempCanvas(imageData.width, imageData.height);\n if (temp) {\n temp.ctx.putImageData(imageData, 0, 0);\n ctx.drawImage(\n temp.canvas,\n gmx(rCtx, dstX),\n gmy(rCtx, dstY),\n gmw(rCtx, dstW),\n gmh(rCtx, dstH)\n );\n }\n }\n }\n }\n return true;\n}\nfunction handleIntersectClipRect(rCtx, dataOff, recSize) {\n const { ctx, view } = rCtx;\n if (recSize >= 24) {\n const left = view.getInt32(dataOff, true);\n const top = view.getInt32(dataOff + 4, true);\n const right = view.getInt32(dataOff + 8, true);\n const bottom = view.getInt32(dataOff + 12, true);\n ctx.save();\n rCtx.clipSaveDepth++;\n ctx.beginPath();\n ctx.rect(gmx(rCtx, left), gmy(rCtx, top), gmw(rCtx, right - left), gmh(rCtx, bottom - top));\n try {\n ctx.clip();\n } catch {\n }\n }\n return true;\n}\nfunction handleExtSelectClipRgn(rCtx, dataOff, recSize) {\n const { ctx, view } = rCtx;\n if (recSize < 16) {\n return true;\n }\n const cbRgnData = view.getUint32(dataOff, true);\n const iMode = view.getUint32(dataOff + 4, true);\n if (iMode === 5) {\n if (cbRgnData === 0) {\n while (rCtx.clipSaveDepth > 0) {\n ctx.restore();\n rCtx.clipSaveDepth--;\n }\n return true;\n }\n const rgnStart = dataOff + 8;\n if (cbRgnData < 32) {\n return true;\n }\n const nCount = view.getUint32(rgnStart + 8, true);\n if (nCount === 0) {\n return true;\n }\n while (rCtx.clipSaveDepth > 0) {\n ctx.restore();\n rCtx.clipSaveDepth--;\n }\n ctx.save();\n rCtx.clipSaveDepth++;\n ctx.beginPath();\n const rectsStart = rgnStart + 32;\n for (let i = 0; i < nCount; i++) {\n const rOff = rectsStart + i * 16;\n if (rOff + 16 > dataOff + 8 + cbRgnData) {\n break;\n }\n const left = view.getInt32(rOff, true);\n const top = view.getInt32(rOff + 4, true);\n const right = view.getInt32(rOff + 8, true);\n const bottom = view.getInt32(rOff + 12, true);\n ctx.rect(gmx(rCtx, left), gmy(rCtx, top), gmw(rCtx, right - left), gmh(rCtx, bottom - top));\n }\n try {\n ctx.clip();\n } catch {\n }\n }\n return true;\n}\nfunction handleExcludeClipRect(rCtx, dataOff, recSize) {\n if (recSize >= 24) {\n rCtx.view.getInt32(dataOff, true);\n rCtx.view.getInt32(dataOff + 4, true);\n rCtx.view.getInt32(dataOff + 8, true);\n rCtx.view.getInt32(dataOff + 12, true);\n }\n return true;\n}\nfunction handleOffsetClipRgn(rCtx, dataOff, recSize) {\n if (recSize >= 16) {\n rCtx.view.getInt32(dataOff, true);\n rCtx.view.getInt32(dataOff + 4, true);\n }\n return true;\n}\nfunction handleEmfGdiTextBitmapRecord(rCtx, recType, offset, dataOff, recSize) {\n switch (recType) {\n case EMR_EXTTEXTOUTW:\n return handleExtTextOutW(rCtx, offset, dataOff, recSize);\n case EMR_BITBLT:\n return handleBitBlt(rCtx, offset, dataOff, recSize);\n case EMR_STRETCHDIBITS:\n return handleStretchDibits(rCtx, offset, dataOff, recSize);\n case EMR_INTERSECTCLIPRECT:\n return handleIntersectClipRect(rCtx, dataOff, recSize);\n case EMR_EXTSELECTCLIPRGN:\n return handleExtSelectClipRgn(rCtx, dataOff, recSize);\n case EMR_EXCLUDECLIPRECT:\n return handleExcludeClipRect(rCtx, dataOff, recSize);\n case EMR_OFFSETCLIPRGN:\n return handleOffsetClipRgn(rCtx, dataOff, recSize);\n default:\n return false;\n }\n}\n\n// src/emf-gdi-draw-handlers.ts\nfunction handleEmfGdiDrawRecord(rCtx, recType, offset, dataOff, recSize) {\n return handleEmfGdiShapeRecord(rCtx, recType, dataOff, recSize) || handleEmfGdiTextBitmapRecord(rCtx, recType, offset, dataOff, recSize);\n}\n\n// src/emf-gdi-polypolygon-helpers.ts\nfunction handlePolyPolygon32(rCtx, offset, dataOff, recSize) {\n const { ctx, view, state, inPath } = rCtx;\n const numPolys = view.getUint32(dataOff + 16, true);\n const totalPoints = view.getUint32(dataOff + 20, true);\n if (numPolys === 0 || numPolys >= 1e4 || totalPoints >= 1e5) {\n return;\n }\n const countsOff = dataOff + 24;\n const ptOff = countsOff + numPolys * 4;\n if (ptOff + totalPoints * 8 > offset + recSize) {\n return;\n }\n if (!inPath) {\n ctx.beginPath();\n }\n let pIdx = 0;\n for (let p = 0; p < numPolys; p++) {\n const count = view.getUint32(countsOff + p * 4, true);\n for (let i = 0; i < count && pIdx < totalPoints; i++) {\n const px = view.getInt32(ptOff + pIdx * 8, true);\n const py = view.getInt32(ptOff + pIdx * 8 + 4, true);\n if (i === 0) {\n ctx.moveTo(gmx(rCtx, px), gmy(rCtx, py));\n } else {\n ctx.lineTo(gmx(rCtx, px), gmy(rCtx, py));\n }\n pIdx++;\n }\n ctx.closePath();\n }\n if (!inPath) {\n applyBrush(ctx, state);\n ctx.fill(state.polyFillMode === 2 ? \"nonzero\" : \"evenodd\");\n applyPen(ctx, state);\n ctx.stroke();\n }\n}\nfunction handlePolyPolyline32(rCtx, offset, dataOff, recSize) {\n const { ctx, view, state, inPath } = rCtx;\n const numPolys = view.getUint32(dataOff + 16, true);\n const totalPoints = view.getUint32(dataOff + 20, true);\n if (numPolys === 0 || numPolys >= 1e4 || totalPoints >= 1e5) {\n return;\n }\n const countsOff = dataOff + 24;\n const ptOff = countsOff + numPolys * 4;\n if (ptOff + totalPoints * 8 > offset + recSize) {\n return;\n }\n if (!inPath) {\n ctx.beginPath();\n }\n let pIdx = 0;\n for (let p = 0; p < numPolys; p++) {\n const count = view.getUint32(countsOff + p * 4, true);\n for (let i = 0; i < count && pIdx < totalPoints; i++) {\n const px = view.getInt32(ptOff + pIdx * 8, true);\n const py = view.getInt32(ptOff + pIdx * 8 + 4, true);\n if (i === 0) {\n ctx.moveTo(gmx(rCtx, px), gmy(rCtx, py));\n } else {\n ctx.lineTo(gmx(rCtx, px), gmy(rCtx, py));\n }\n pIdx++;\n }\n }\n if (!inPath) {\n applyPen(ctx, state);\n ctx.stroke();\n }\n}\nfunction handlePolyPolygon16(rCtx, offset, dataOff, recSize) {\n const { ctx, view, state, inPath } = rCtx;\n const numPolys = view.getUint32(dataOff + 16, true);\n const totalPoints = view.getUint32(dataOff + 20, true);\n if (numPolys === 0 || numPolys >= 1e4 || totalPoints >= 1e5) {\n return;\n }\n const countsOff = dataOff + 24;\n const ptOff = countsOff + numPolys * 4;\n if (ptOff + totalPoints * 4 > offset + recSize) {\n return;\n }\n if (!inPath) {\n ctx.beginPath();\n }\n let pIdx = 0;\n for (let p = 0; p < numPolys; p++) {\n const count = view.getUint32(countsOff + p * 4, true);\n for (let i = 0; i < count && pIdx < totalPoints; i++) {\n const px = view.getInt16(ptOff + pIdx * 4, true);\n const py = view.getInt16(ptOff + pIdx * 4 + 2, true);\n if (i === 0) {\n ctx.moveTo(gmx(rCtx, px), gmy(rCtx, py));\n } else {\n ctx.lineTo(gmx(rCtx, px), gmy(rCtx, py));\n }\n pIdx++;\n }\n ctx.closePath();\n }\n if (!inPath) {\n applyBrush(ctx, state);\n ctx.fill(state.polyFillMode === 2 ? \"nonzero\" : \"evenodd\");\n applyPen(ctx, state);\n ctx.stroke();\n }\n}\n\n// src/emf-gdi-poly-path-handlers.ts\nfunction handlePoly32(rCtx, recType, offset, dataOff, recSize) {\n const { ctx, view, state, inPath } = rCtx;\n if (recSize < 28) {\n return true;\n }\n const count = view.getUint32(dataOff + 16, true);\n const ptOff = dataOff + 20;\n if (count === 0 || ptOff + count * 8 > offset + recSize) {\n return true;\n }\n const isPolygon = recType === EMR_POLYGON;\n const isBezier = recType === EMR_POLYBEZIER || recType === EMR_POLYBEZIERTO;\n const isTo = recType === EMR_POLYBEZIERTO || recType === EMR_POLYLINETO;\n if (!inPath) {\n ctx.beginPath();\n }\n if (!isTo) {\n ctx.moveTo(gmx(rCtx, view.getInt32(ptOff, true)), gmy(rCtx, view.getInt32(ptOff + 4, true)));\n }\n let i = isTo ? 0 : 1;\n if (isBezier) {\n while (i + 2 < count) {\n ctx.bezierCurveTo(\n gmx(rCtx, view.getInt32(ptOff + i * 8, true)),\n gmy(rCtx, view.getInt32(ptOff + i * 8 + 4, true)),\n gmx(rCtx, view.getInt32(ptOff + (i + 1) * 8, true)),\n gmy(rCtx, view.getInt32(ptOff + (i + 1) * 8 + 4, true)),\n gmx(rCtx, view.getInt32(ptOff + (i + 2) * 8, true)),\n gmy(rCtx, view.getInt32(ptOff + (i + 2) * 8 + 4, true))\n );\n i += 3;\n }\n } else {\n for (; i < count; i++) {\n ctx.lineTo(\n gmx(rCtx, view.getInt32(ptOff + i * 8, true)),\n gmy(rCtx, view.getInt32(ptOff + i * 8 + 4, true))\n );\n }\n }\n if (isPolygon) {\n ctx.closePath();\n }\n if (!inPath) {\n if (isPolygon) {\n applyBrush(ctx, state);\n ctx.fill(state.polyFillMode === 2 ? \"nonzero\" : \"evenodd\");\n }\n applyPen(ctx, state);\n ctx.stroke();\n }\n if (count > 0) {\n const last = count - 1;\n state.curX = view.getInt32(ptOff + last * 8, true);\n state.curY = view.getInt32(ptOff + last * 8 + 4, true);\n }\n return true;\n}\nfunction handlePoly16(rCtx, recType, offset, dataOff, recSize) {\n const { ctx, view, state, inPath } = rCtx;\n if (recSize < 28) {\n return true;\n }\n const count = view.getUint32(dataOff + 16, true);\n const ptOff = dataOff + 20;\n if (count === 0 || ptOff + count * 4 > offset + recSize) {\n return true;\n }\n const isPolygon = recType === EMR_POLYGON16;\n const isBezier = recType === EMR_POLYBEZIER16 || recType === EMR_POLYBEZIERTO16;\n const isTo = recType === EMR_POLYBEZIERTO16 || recType === EMR_POLYLINETO16;\n if (!inPath) {\n ctx.beginPath();\n }\n if (!isTo) {\n ctx.moveTo(gmx(rCtx, view.getInt16(ptOff, true)), gmy(rCtx, view.getInt16(ptOff + 2, true)));\n }\n let i = isTo ? 0 : 1;\n if (isBezier) {\n while (i + 2 < count) {\n ctx.bezierCurveTo(\n gmx(rCtx, view.getInt16(ptOff + i * 4, true)),\n gmy(rCtx, view.getInt16(ptOff + i * 4 + 2, true)),\n gmx(rCtx, view.getInt16(ptOff + (i + 1) * 4, true)),\n gmy(rCtx, view.getInt16(ptOff + (i + 1) * 4 + 2, true)),\n gmx(rCtx, view.getInt16(ptOff + (i + 2) * 4, true)),\n gmy(rCtx, view.getInt16(ptOff + (i + 2) * 4 + 2, true))\n );\n i += 3;\n }\n } else {\n for (; i < count; i++) {\n ctx.lineTo(\n gmx(rCtx, view.getInt16(ptOff + i * 4, true)),\n gmy(rCtx, view.getInt16(ptOff + i * 4 + 2, true))\n );\n }\n }\n if (isPolygon) {\n ctx.closePath();\n }\n if (!inPath) {\n if (isPolygon) {\n applyBrush(ctx, state);\n ctx.fill(state.polyFillMode === 2 ? \"nonzero\" : \"evenodd\");\n }\n applyPen(ctx, state);\n ctx.stroke();\n }\n if (count > 0) {\n const last = count - 1;\n state.curX = view.getInt16(ptOff + last * 4, true);\n state.curY = view.getInt16(ptOff + last * 4 + 2, true);\n }\n return true;\n}\nfunction handleEmfGdiPolyPathRecord(rCtx, recType, offset, dataOff, recSize) {\n const { ctx, state } = rCtx;\n switch (recType) {\n // ---- 32-bit polys ----\n case EMR_POLYLINE:\n case EMR_POLYGON:\n case EMR_POLYBEZIER:\n case EMR_POLYBEZIERTO:\n case EMR_POLYLINETO:\n return handlePoly32(rCtx, recType, offset, dataOff, recSize);\n // ---- 16-bit polys ----\n case EMR_POLYLINE16:\n case EMR_POLYGON16:\n case EMR_POLYBEZIER16:\n case EMR_POLYBEZIERTO16:\n case EMR_POLYLINETO16:\n return handlePoly16(rCtx, recType, offset, dataOff, recSize);\n // ---- polypolyline / polypolygon ----\n case EMR_POLYPOLYLINE:\n if (recSize >= 28) {\n handlePolyPolyline32(rCtx, offset, dataOff, recSize);\n }\n return true;\n case EMR_POLYPOLYGON:\n if (recSize >= 28) {\n handlePolyPolygon32(rCtx, offset, dataOff, recSize);\n }\n return true;\n case EMR_POLYPOLYGON16:\n if (recSize >= 28) {\n handlePolyPolygon16(rCtx, offset, dataOff, recSize);\n }\n return true;\n // ---- path operations ----\n case EMR_BEGINPATH:\n rCtx.inPath = true;\n ctx.beginPath();\n return true;\n case EMR_ENDPATH:\n rCtx.inPath = false;\n return true;\n case EMR_CLOSEFIGURE:\n ctx.closePath();\n return true;\n case EMR_FILLPATH:\n applyBrush(ctx, state);\n ctx.fill(state.polyFillMode === 2 ? \"nonzero\" : \"evenodd\");\n return true;\n case EMR_STROKEANDFILLPATH:\n applyBrush(ctx, state);\n ctx.fill(state.polyFillMode === 2 ? \"nonzero\" : \"evenodd\");\n applyPen(ctx, state);\n ctx.stroke();\n return true;\n case EMR_STROKEPATH:\n applyPen(ctx, state);\n ctx.stroke();\n return true;\n case EMR_SELECTCLIPPATH: {\n const clipMode = recSize >= 12 ? rCtx.view.getUint32(dataOff, true) : 5;\n try {\n if (clipMode === 5) {\n while (rCtx.clipSaveDepth > 0) {\n ctx.restore();\n rCtx.clipSaveDepth--;\n }\n ctx.save();\n rCtx.clipSaveDepth++;\n ctx.clip();\n } else {\n ctx.save();\n rCtx.clipSaveDepth++;\n ctx.clip();\n }\n } catch {\n }\n return true;\n }\n default:\n return false;\n }\n}\n\n// src/emf-gdi-object-handlers.ts\nfunction handleEmfObjectRecord(rCtx, recType, dataOff, recSize) {\n const { view, state } = rCtx;\n switch (recType) {\n case EMR_CREATEPEN: {\n if (recSize >= 28) {\n const ihPen = view.getUint32(dataOff, true);\n const penStyle = view.getUint32(dataOff + 4, true);\n const widthX = view.getInt32(dataOff + 8, true);\n const color = readColorRef(view, dataOff + 16);\n rCtx.objectTable.set(ihPen, {\n kind: \"pen\",\n style: penStyle & 255,\n widthX,\n color\n });\n }\n return true;\n }\n case EMR_EXTCREATEPEN: {\n if (recSize >= 52) {\n const ihPen = view.getUint32(dataOff, true);\n const penStyle = view.getUint32(dataOff + 12, true);\n const widthX = view.getInt32(dataOff + 16, true);\n const color = readColorRef(view, dataOff + 24);\n rCtx.objectTable.set(ihPen, {\n kind: \"pen\",\n style: penStyle & 255,\n widthX,\n color\n });\n }\n return true;\n }\n case EMR_CREATEBRUSHINDIRECT: {\n if (recSize >= 24) {\n const ihBrush = view.getUint32(dataOff, true);\n const brushStyle = view.getUint32(dataOff + 4, true);\n const color = readColorRef(view, dataOff + 8);\n rCtx.objectTable.set(ihBrush, {\n kind: \"brush\",\n style: brushStyle,\n color\n });\n }\n return true;\n }\n case EMR_EXTCREATEFONTINDIRECTW: {\n if (recSize >= 332) {\n const ihFont = view.getUint32(dataOff, true);\n const height = view.getInt32(dataOff + 4, true);\n const weight = view.getInt32(dataOff + 20, true);\n const italic = view.getUint8(dataOff + 24);\n const underline = view.getUint8(dataOff + 25);\n const strikeOut = view.getUint8(dataOff + 26);\n const family = readUtf16LE(view, dataOff + 28, 32) || \"sans-serif\";\n rCtx.objectTable.set(ihFont, {\n kind: \"font\",\n height: Math.abs(height),\n weight,\n italic: italic !== 0,\n underline: underline !== 0,\n strikeOut: strikeOut !== 0,\n family\n });\n }\n return true;\n }\n case EMR_SELECTOBJECT: {\n if (recSize >= 12) {\n const ihObject = view.getUint32(dataOff, true);\n const obj = ihObject >= STOCK_OBJECT_BASE ? getStockObject(ihObject - STOCK_OBJECT_BASE) : rCtx.objectTable.get(ihObject) ?? null;\n if (obj) {\n switch (obj.kind) {\n case \"pen\":\n state.penStyle = obj.style;\n state.penWidth = obj.widthX;\n state.penColor = obj.color;\n break;\n case \"brush\":\n state.brushStyle = obj.style;\n state.brushColor = obj.color;\n break;\n case \"font\":\n state.fontHeight = obj.height;\n state.fontWeight = obj.weight;\n state.fontItalic = obj.italic;\n state.fontUnderline = obj.underline;\n state.fontStrikeOut = obj.strikeOut;\n state.fontFamily = obj.family;\n break;\n }\n }\n }\n return true;\n }\n case EMR_DELETEOBJECT: {\n if (recSize >= 12) {\n rCtx.objectTable.delete(view.getUint32(dataOff, true));\n }\n return true;\n }\n default:\n return false;\n }\n}\n\n// src/emf-gdi-transform-handlers.ts\nfunction handleCoordinateRecord(rCtx, recType, dataOff, recSize) {\n const { view } = rCtx;\n switch (recType) {\n case EMR_SETWINDOWEXTEX: {\n if (recSize >= 16) {\n rCtx.windowExt.cx = view.getInt32(dataOff, true);\n rCtx.windowExt.cy = view.getInt32(dataOff + 4, true);\n activateGdiMappingMode(rCtx);\n }\n return true;\n }\n case EMR_SETWINDOWORGEX: {\n if (recSize >= 16) {\n rCtx.windowOrg.x = view.getInt32(dataOff, true);\n rCtx.windowOrg.y = view.getInt32(dataOff + 4, true);\n activateGdiMappingMode(rCtx);\n }\n return true;\n }\n case EMR_SETVIEWPORTEXTEX: {\n if (recSize >= 16) {\n rCtx.viewportExt.cx = view.getInt32(dataOff, true);\n rCtx.viewportExt.cy = view.getInt32(dataOff + 4, true);\n activateGdiMappingMode(rCtx);\n }\n return true;\n }\n case EMR_SETVIEWPORTORGEX: {\n if (recSize >= 16) {\n rCtx.viewportOrg.x = view.getInt32(dataOff, true);\n rCtx.viewportOrg.y = view.getInt32(dataOff + 4, true);\n activateGdiMappingMode(rCtx);\n }\n return true;\n }\n case EMR_SETMAPMODE: {\n if (recSize >= 12) {\n const mode = view.getUint32(dataOff, true);\n if (mode === 8 || mode === 7) {\n activateGdiMappingMode(rCtx);\n }\n }\n return true;\n }\n case EMR_SCALEVIEWPORTEXTEX: {\n if (recSize >= 24) {\n const xNum = view.getInt32(dataOff, true);\n const xDenom = view.getInt32(dataOff + 4, true);\n const yNum = view.getInt32(dataOff + 8, true);\n const yDenom = view.getInt32(dataOff + 12, true);\n if (xDenom !== 0) {\n rCtx.viewportExt.cx = Math.round(rCtx.viewportExt.cx * xNum / xDenom);\n }\n if (yDenom !== 0) {\n rCtx.viewportExt.cy = Math.round(rCtx.viewportExt.cy * yNum / yDenom);\n }\n activateGdiMappingMode(rCtx);\n }\n return true;\n }\n case EMR_SCALEWINDOWEXTEX: {\n if (recSize >= 24) {\n const xNum = view.getInt32(dataOff, true);\n const xDenom = view.getInt32(dataOff + 4, true);\n const yNum = view.getInt32(dataOff + 8, true);\n const yDenom = view.getInt32(dataOff + 12, true);\n if (xDenom !== 0) {\n rCtx.windowExt.cx = Math.round(rCtx.windowExt.cx * xNum / xDenom);\n }\n if (yDenom !== 0) {\n rCtx.windowExt.cy = Math.round(rCtx.windowExt.cy * yNum / yDenom);\n }\n activateGdiMappingMode(rCtx);\n }\n return true;\n }\n default:\n return false;\n }\n}\nfunction handleWorldTransformRecord(rCtx, recType, dataOff, recSize) {\n const { view, state } = rCtx;\n switch (recType) {\n case EMR_SETWORLDTRANSFORM: {\n if (recSize >= 32) {\n state.worldTransform = [\n view.getFloat32(dataOff, true),\n view.getFloat32(dataOff + 4, true),\n view.getFloat32(dataOff + 8, true),\n view.getFloat32(dataOff + 12, true),\n view.getFloat32(dataOff + 16, true),\n view.getFloat32(dataOff + 20, true)\n ];\n }\n return true;\n }\n case EMR_MODIFYWORLDTRANSFORM: {\n if (recSize >= 36) {\n const mode = view.getUint32(dataOff + 24, true);\n if (mode === 1) {\n state.worldTransform = [1, 0, 0, 1, 0, 0];\n } else if (mode === 2 || mode === 3) {\n const xf = [\n view.getFloat32(dataOff, true),\n view.getFloat32(dataOff + 4, true),\n view.getFloat32(dataOff + 8, true),\n view.getFloat32(dataOff + 12, true),\n view.getFloat32(dataOff + 16, true),\n view.getFloat32(dataOff + 20, true)\n ];\n const [a1, b1, c1, d1, e1, f1] = state.worldTransform;\n if (mode === 2) {\n state.worldTransform = [\n xf[0] * a1 + xf[1] * c1,\n xf[0] * b1 + xf[1] * d1,\n xf[2] * a1 + xf[3] * c1,\n xf[2] * b1 + xf[3] * d1,\n xf[4] * a1 + xf[5] * c1 + e1,\n xf[4] * b1 + xf[5] * d1 + f1\n ];\n } else {\n state.worldTransform = [\n a1 * xf[0] + b1 * xf[2],\n a1 * xf[1] + b1 * xf[3],\n c1 * xf[0] + d1 * xf[2],\n c1 * xf[1] + d1 * xf[3],\n e1 * xf[0] + f1 * xf[2] + xf[4],\n e1 * xf[1] + f1 * xf[3] + xf[5]\n ];\n }\n }\n }\n return true;\n }\n default:\n return false;\n }\n}\nfunction handleEmfTransformRecord(rCtx, recType, dataOff, recSize) {\n return handleCoordinateRecord(rCtx, recType, dataOff, recSize) || handleWorldTransformRecord(rCtx, recType, dataOff, recSize);\n}\n\n// src/emf-types.ts\nfunction defaultState() {\n return {\n penColor: \"#000000\",\n penWidth: 1,\n penStyle: 0,\n brushColor: \"#ffffff\",\n brushStyle: 0,\n textColor: \"#000000\",\n bkColor: \"#ffffff\",\n bkMode: 1,\n fontHeight: 12,\n fontWeight: 400,\n fontItalic: false,\n fontFamily: \"sans-serif\",\n fontUnderline: false,\n fontStrikeOut: false,\n rop2: 13,\n curX: 0,\n curY: 0,\n polyFillMode: 1,\n textAlign: 0,\n worldTransform: [1, 0, 0, 1, 0, 0]\n };\n}\nfunction cloneState(s) {\n return {\n ...s,\n worldTransform: [...s.worldTransform]\n };\n}\nfunction createEmfPlusState() {\n return {\n objectTable: /* @__PURE__ */ new Map(),\n worldTransform: [1, 0, 0, 1, 0, 0],\n saveStack: [],\n saveIdMap: /* @__PURE__ */ new Map()\n };\n}\n\n// src/emf-gdi-state-handlers.ts\nfunction handleEmfGdiStateRecord(rCtx, recType, _offset, dataOff, recSize) {\n if (handleEmfTransformRecord(rCtx, recType, dataOff, recSize)) {\n return true;\n }\n if (handleEmfObjectRecord(rCtx, recType, dataOff, recSize)) {\n return true;\n }\n const { ctx, view, state } = rCtx;\n switch (recType) {\n // ---- save / restore ----\n case EMR_SAVEDC: {\n while (rCtx.clipSaveDepth > 0) {\n ctx.restore();\n rCtx.clipSaveDepth--;\n }\n rCtx.stateStack.push(cloneState(state));\n ctx.save();\n return true;\n }\n case EMR_RESTOREDC: {\n if (recSize >= 12) {\n while (rCtx.clipSaveDepth > 0) {\n ctx.restore();\n rCtx.clipSaveDepth--;\n }\n let rel = view.getInt32(dataOff, true);\n if (rel < 0) {\n rel = rCtx.stateStack.length + rel;\n }\n while (rCtx.stateStack.length > rel && rCtx.stateStack.length > 0) {\n rCtx.stateStack.pop();\n ctx.restore();\n }\n const restored = rCtx.stateStack.pop();\n if (restored) {\n Object.assign(state, restored);\n ctx.restore();\n }\n }\n return true;\n }\n // ---- drawing mode / color settings ----\n case EMR_SETTEXTCOLOR: {\n if (recSize >= 12) {\n state.textColor = readColorRef(view, dataOff);\n }\n return true;\n }\n case EMR_SETBKCOLOR: {\n if (recSize >= 12) {\n state.bkColor = readColorRef(view, dataOff);\n }\n return true;\n }\n case EMR_SETBKMODE: {\n if (recSize >= 12) {\n state.bkMode = view.getUint32(dataOff, true);\n }\n return true;\n }\n case EMR_SETPOLYFILLMODE: {\n if (recSize >= 12) {\n state.polyFillMode = view.getUint32(dataOff, true);\n }\n return true;\n }\n case EMR_SETROP2: {\n if (recSize >= 12) {\n state.rop2 = view.getUint32(dataOff, true);\n }\n return true;\n }\n case EMR_SETSTRETCHBLTMODE:\n case EMR_SETMITERLIMIT:\n case EMR_SETTEXTALIGN: {\n if (recType === EMR_SETTEXTALIGN && recSize >= 12) {\n state.textAlign = view.getUint32(dataOff, true);\n }\n return true;\n }\n default:\n return false;\n }\n}\n\n// src/emf-plus-read-helpers.ts\nfunction readRectFromView(view, offset, compressed) {\n if (compressed) {\n return {\n x: view.getInt16(offset, true),\n y: view.getInt16(offset + 2, true),\n w: view.getInt16(offset + 4, true),\n h: view.getInt16(offset + 6, true)\n };\n }\n return {\n x: view.getFloat32(offset, true),\n y: view.getFloat32(offset + 4, true),\n w: view.getFloat32(offset + 8, true),\n h: view.getFloat32(offset + 12, true)\n };\n}\nfunction readPointFromView(view, offset, compressed) {\n if (compressed) {\n return {\n x: view.getInt16(offset, true),\n y: view.getInt16(offset + 2, true)\n };\n }\n return {\n x: view.getFloat32(offset, true),\n y: view.getFloat32(offset + 4, true)\n };\n}\n\n// src/emf-plus-path.ts\nfunction parseEmfPlusPath(data, off, maxLen) {\n if (maxLen < 12) {\n return null;\n }\n data.getUint32(off, true);\n const pointCount = data.getUint32(off + 4, true);\n const pathFlags = data.getUint32(off + 8, true);\n if (pointCount === 0 || pointCount > 1e5) {\n return null;\n }\n const compressed = (pathFlags & 16384) !== 0;\n const pointSize = compressed ? 4 : 8;\n const pointsBytes = pointCount * pointSize;\n const typesBytes = pointCount;\n const neededAfterHeader = pointsBytes + typesBytes;\n if (12 + neededAfterHeader > maxLen) {\n return null;\n }\n const points = [];\n let pOff = off + 12;\n for (let i = 0; i < pointCount; i++) {\n if (compressed) {\n points.push({\n x: data.getInt16(pOff, true),\n y: data.getInt16(pOff + 2, true)\n });\n pOff += 4;\n } else {\n points.push({\n x: data.getFloat32(pOff, true),\n y: data.getFloat32(pOff + 4, true)\n });\n pOff += 8;\n }\n }\n const alignedPOff = pOff + 3 & -4;\n const types = new Uint8Array(data.buffer, data.byteOffset + alignedPOff, pointCount);\n return { kind: \"plus-path\", points, types: new Uint8Array(types) };\n}\nfunction replayEmfPlusPath(ctx, path) {\n ctx.beginPath();\n const pts = path.points;\n const types = path.types;\n let i = 0;\n while (i < pts.length) {\n const t = types[i] & 15;\n const close = (types[i] & 128) !== 0;\n if (t === 0) {\n ctx.moveTo(pts[i].x, pts[i].y);\n i++;\n } else if (t === 1) {\n ctx.lineTo(pts[i].x, pts[i].y);\n i++;\n } else if (t === 3) {\n if (i + 2 < pts.length) {\n ctx.bezierCurveTo(\n pts[i].x,\n pts[i].y,\n pts[i + 1].x,\n pts[i + 1].y,\n pts[i + 2].x,\n pts[i + 2].y\n );\n if ((types[i + 2] & 128) !== 0) {\n ctx.closePath();\n }\n i += 3;\n continue;\n } else {\n break;\n }\n } else {\n ctx.lineTo(pts[i].x, pts[i].y);\n i++;\n }\n if (close) {\n ctx.closePath();\n }\n }\n}\n\n// src/emf-plus-state-handlers.ts\nfunction multiplyMatrix(m1, m2) {\n return [\n m1[0] * m2[0] + m1[1] * m2[2],\n m1[0] * m2[1] + m1[1] * m2[3],\n m1[2] * m2[0] + m1[3] * m2[2],\n m1[2] * m2[1] + m1[3] * m2[3],\n m1[4] * m2[0] + m1[5] * m2[2] + m2[4],\n m1[4] * m2[1] + m1[5] * m2[3] + m2[5]\n ];\n}\nfunction resolveBrushColor(rCtx, flags, brushIdOrColor) {\n if (flags & 32768) {\n return argbToRgba(brushIdOrColor);\n }\n const obj = rCtx.objectTable.get(brushIdOrColor & 255);\n if (obj && obj.kind === \"plus-brush\") {\n return obj.color;\n }\n return \"rgba(0,0,0,1)\";\n}\nfunction getPageUnitMultiplier(pageUnit, pageScale) {\n const DPI = 96;\n let unitToPixel;\n switch (pageUnit) {\n case 3:\n unitToPixel = DPI / 72;\n break;\n // Point\n case 4:\n unitToPixel = DPI;\n break;\n // Inch\n case 5:\n unitToPixel = DPI / 300;\n break;\n // Document\n case 6:\n unitToPixel = DPI / 25.4;\n break;\n // Millimeter\n default:\n unitToPixel = 1;\n break;\n }\n return unitToPixel * pageScale;\n}\nfunction applyPlusWorldTransform(rCtx) {\n const wt = rCtx.worldTransform;\n const m = getPageUnitMultiplier(rCtx.pageUnit, rCtx.pageScale);\n const d = rCtx.dpiScale;\n rCtx.ctx.setTransform(\n wt[0] * m * d,\n wt[1] * m * d,\n wt[2] * m * d,\n wt[3] * m * d,\n wt[4] * m * d,\n wt[5] * m * d\n );\n}\nfunction pushState(rCtx, stackId) {\n rCtx.saveStack.push({\n transform: [...rCtx.worldTransform]\n });\n rCtx.saveIdMap.set(stackId, rCtx.saveStack.length - 1);\n}\nfunction popState(rCtx, stackId) {\n const idx = rCtx.saveIdMap.get(stackId);\n if (idx !== void 0 && idx < rCtx.saveStack.length) {\n rCtx.worldTransform = [...rCtx.saveStack[idx].transform];\n rCtx.saveStack.length = idx;\n const newMap = /* @__PURE__ */ new Map();\n for (const [k, v] of rCtx.saveIdMap) {\n if (v < idx) {\n newMap.set(k, v);\n }\n }\n rCtx.saveIdMap = newMap;\n }\n}\nfunction ensureClipSave(rCtx) {\n if (rCtx.clipSaveDepth === 0) {\n rCtx.ctx.save();\n rCtx.clipSaveDepth = 1;\n }\n}\nfunction resetClipState(rCtx) {\n if (rCtx.clipSaveDepth > 0) {\n rCtx.ctx.restore();\n rCtx.clipSaveDepth = 0;\n }\n}\nfunction applyClipCombineMode(rCtx, combineMode, opName, clipFn) {\n switch (combineMode) {\n case 0:\n resetClipState(rCtx);\n ensureClipSave(rCtx);\n clipFn();\n return true;\n case 1:\n ensureClipSave(rCtx);\n clipFn();\n return true;\n case 2:\n ensureClipSave(rCtx);\n clipFn();\n return true;\n case 3:\n return false;\n case 4:\n return false;\n case 5:\n return false;\n default:\n ensureClipSave(rCtx);\n clipFn();\n return true;\n }\n}\nvar MAX_REGION_TRACE_DEPTH = 64;\nfunction traceRegionNodePath(ctx, node, depth = 0) {\n if (depth > MAX_REGION_TRACE_DEPTH) {\n ctx.rect(0, 0, 0, 0);\n return;\n }\n switch (node.type) {\n case \"rect\":\n ctx.rect(node.x, node.y, node.width, node.height);\n break;\n case \"path\":\n replayEmfPlusPath(ctx, node.path);\n break;\n case \"infinite\":\n ctx.rect(-1e6, -1e6, 2e6, 2e6);\n break;\n case \"empty\":\n ctx.rect(0, 0, 0, 0);\n break;\n case \"combine\":\n traceRegionNodePath(ctx, node.left, depth + 1);\n if (node.combineMode !== 0) {\n emfWarn(\n `traceRegionNodePath: combine mode ${node.combineMode} not fully supported, using left subtree only`\n );\n } else {\n try {\n ctx.clip();\n } catch {\n }\n ctx.beginPath();\n traceRegionNodePath(ctx, node.right, depth + 1);\n }\n break;\n }\n}\nfunction applyRegionNodeClip(ctx, rootNode, combineMode) {\n ctx.beginPath();\n traceRegionNodePath(ctx, rootNode);\n try {\n ctx.clip();\n } catch {\n }\n}\nfunction handleEmfPlusStateRecord(rCtx, recType, recFlags, dataOff, recDataSize) {\n const { view } = rCtx;\n switch (recType) {\n // ---- transforms ----\n case EMFPLUS_SETWORLDTRANSFORM: {\n if (recDataSize >= 24) {\n rCtx.worldTransform = [\n view.getFloat32(dataOff, true),\n view.getFloat32(dataOff + 4, true),\n view.getFloat32(dataOff + 8, true),\n view.getFloat32(dataOff + 12, true),\n view.getFloat32(dataOff + 16, true),\n view.getFloat32(dataOff + 20, true)\n ];\n }\n return true;\n }\n case EMFPLUS_RESETWORLDTRANSFORM: {\n rCtx.worldTransform = [1, 0, 0, 1, 0, 0];\n return true;\n }\n case EMFPLUS_MULTIPLYWORLDTRANSFORM: {\n if (recDataSize >= 24) {\n const xf = [\n view.getFloat32(dataOff, true),\n view.getFloat32(dataOff + 4, true),\n view.getFloat32(dataOff + 8, true),\n view.getFloat32(dataOff + 12, true),\n view.getFloat32(dataOff + 16, true),\n view.getFloat32(dataOff + 20, true)\n ];\n if (recFlags & 8192) {\n rCtx.worldTransform = multiplyMatrix(rCtx.worldTransform, xf);\n } else {\n rCtx.worldTransform = multiplyMatrix(xf, rCtx.worldTransform);\n }\n }\n return true;\n }\n case EMFPLUS_TRANSLATEWORLDTRANSFORM: {\n if (recDataSize >= 8) {\n const dx = view.getFloat32(dataOff, true);\n const dy = view.getFloat32(dataOff + 4, true);\n const xf = [1, 0, 0, 1, dx, dy];\n if (recFlags & 8192) {\n rCtx.worldTransform = multiplyMatrix(rCtx.worldTransform, xf);\n } else {\n rCtx.worldTransform = multiplyMatrix(xf, rCtx.worldTransform);\n }\n }\n return true;\n }\n case EMFPLUS_SCALEWORLDTRANSFORM: {\n if (recDataSize >= 8) {\n const sx = view.getFloat32(dataOff, true);\n const sy = view.getFloat32(dataOff + 4, true);\n const xf = [sx, 0, 0, sy, 0, 0];\n if (recFlags & 8192) {\n rCtx.worldTransform = multiplyMatrix(rCtx.worldTransform, xf);\n } else {\n rCtx.worldTransform = multiplyMatrix(xf, rCtx.worldTransform);\n }\n }\n return true;\n }\n case EMFPLUS_ROTATEWORLDTRANSFORM: {\n if (recDataSize >= 4) {\n const angle = view.getFloat32(dataOff, true) * Math.PI / 180;\n const cos = Math.cos(angle);\n const sin = Math.sin(angle);\n const xf = [cos, sin, -sin, cos, 0, 0];\n if (recFlags & 8192) {\n rCtx.worldTransform = multiplyMatrix(rCtx.worldTransform, xf);\n } else {\n rCtx.worldTransform = multiplyMatrix(xf, rCtx.worldTransform);\n }\n }\n return true;\n }\n // ---- save / restore ----\n case EMFPLUS_SAVE: {\n if (recDataSize >= 4) {\n pushState(rCtx, view.getUint32(dataOff, true));\n }\n return true;\n }\n case EMFPLUS_RESTORE: {\n if (recDataSize >= 4) {\n popState(rCtx, view.getUint32(dataOff, true));\n }\n return true;\n }\n // ---- clipping ----\n case EMFPLUS_SETCLIPRECT: {\n if (recDataSize >= 16) {\n const combineMode = recFlags >> 8 & 15;\n const cx = view.getFloat32(dataOff, true);\n const cy = view.getFloat32(dataOff + 4, true);\n const cw = view.getFloat32(dataOff + 8, true);\n const ch = view.getFloat32(dataOff + 12, true);\n applyClipCombineMode(rCtx, combineMode, \"SetClipRect\", () => {\n applyPlusWorldTransform(rCtx);\n rCtx.ctx.beginPath();\n rCtx.ctx.rect(cx, cy, cw, ch);\n try {\n rCtx.ctx.clip();\n } catch {\n }\n });\n }\n return true;\n }\n case EMFPLUS_RESETCLIP: {\n resetClipState(rCtx);\n ensureClipSave(rCtx);\n return true;\n }\n case EMFPLUS_SETCLIPREGION: {\n const regionId = recFlags & 255;\n const regionObj = rCtx.objectTable.get(regionId);\n if (regionObj && regionObj.kind === \"plus-region\" && regionObj.nodes.length > 0) {\n applyPlusWorldTransform(rCtx);\n const rootNode = regionObj.nodes[0];\n applyRegionNodeClip(rCtx.ctx, rootNode);\n }\n return true;\n }\n case EMFPLUS_SETCLIPPATH: {\n const pathId = recFlags & 255;\n const combineMode = recFlags >> 8 & 15;\n const pathObj = rCtx.objectTable.get(pathId);\n if (pathObj && pathObj.kind === \"plus-path\") {\n applyClipCombineMode(rCtx, combineMode, \"SetClipPath\", () => {\n applyPlusWorldTransform(rCtx);\n rCtx.ctx.beginPath();\n replayEmfPlusPath(rCtx.ctx, pathObj);\n try {\n rCtx.ctx.clip();\n } catch {\n }\n });\n }\n return true;\n }\n case EMFPLUS_OFFSETCLIP: {\n if (recDataSize >= 8) {\n view.getFloat32(dataOff, true);\n view.getFloat32(dataOff + 4, true);\n }\n return true;\n }\n // ---- containers ----\n case EMFPLUS_BEGINCONTAINERNOPARAMS: {\n if (recDataSize >= 4) {\n pushState(rCtx, view.getUint32(dataOff, true));\n }\n return true;\n }\n case EMFPLUS_ENDCONTAINER: {\n if (recDataSize >= 4) {\n popState(rCtx, view.getUint32(dataOff, true));\n }\n return true;\n }\n // ---- page transform ----\n case EMFPLUS_SETPAGETRANSFORM: {\n const pageUnit = recFlags & 255;\n const pageScale = recDataSize >= 4 ? view.getFloat32(dataOff, true) : 1;\n rCtx.pageUnit = pageUnit;\n rCtx.pageScale = pageScale;\n return true;\n }\n // ---- rendering hints (accepted, ignored) ----\n case EMFPLUS_SETANTIALIASMODE:\n case EMFPLUS_SETTEXTRENDERINGHINT:\n case EMFPLUS_SETINTERPOLATIONMODE:\n case EMFPLUS_SETPIXELOFFSETMODE:\n case EMFPLUS_SETCOMPOSITINGQUALITY:\n return true;\n default:\n return false;\n }\n}\n\n// src/emf-plus-draw-handlers.ts\nfunction applyEmfPlusPen(ctx, pen) {\n ctx.strokeStyle = pen.color;\n ctx.lineWidth = pen.width;\n const w = pen.width || 1;\n switch (pen.dashStyle) {\n case 1:\n ctx.setLineDash([w * 3, Number(w)]);\n break;\n // Dash\n case 2:\n ctx.setLineDash([Number(w), Number(w)]);\n break;\n // Dot\n case 3:\n ctx.setLineDash([w * 3, Number(w), Number(w), Number(w)]);\n break;\n // DashDot\n case 4:\n ctx.setLineDash([w * 3, Number(w), Number(w), Number(w), Number(w), Number(w)]);\n break;\n // DashDotDot\n default:\n ctx.setLineDash([]);\n break;\n }\n}\nfunction handleEmfPlusDrawRecord(rCtx, recType, recFlags, dataOff, recDataSize) {\n const { ctx, view, objectTable } = rCtx;\n switch (recType) {\n case EMFPLUS_FILLRECTS: {\n if (recDataSize >= 8) {\n const brushVal = view.getUint32(dataOff, true);\n const count = view.getUint32(dataOff + 4, true);\n const compressed = (recFlags & 16384) !== 0;\n const rectSize = compressed ? 8 : 16;\n ctx.fillStyle = resolveBrushColor(rCtx, recFlags, brushVal);\n applyPlusWorldTransform(rCtx);\n let rOff = dataOff + 8;\n for (let i = 0; i < count && rOff + rectSize <= dataOff + recDataSize; i++) {\n const { x, y, w, h } = readRectFromView(view, rOff, compressed);\n ctx.fillRect(x, y, w, h);\n rOff += rectSize;\n }\n }\n return true;\n }\n case EMFPLUS_DRAWRECTS: {\n if (recDataSize >= 4) {\n const penId = recFlags & 255;\n const pen = objectTable.get(penId);\n const count = view.getUint32(dataOff, true);\n const compressed = (recFlags & 16384) !== 0;\n const rectSize = compressed ? 8 : 16;\n if (pen && pen.kind === \"plus-pen\") {\n applyEmfPlusPen(ctx, pen);\n }\n applyPlusWorldTransform(rCtx);\n let rOff = dataOff + 4;\n for (let i = 0; i < count && rOff + rectSize <= dataOff + recDataSize; i++) {\n const { x, y, w, h } = readRectFromView(view, rOff, compressed);\n ctx.strokeRect(x, y, w, h);\n rOff += rectSize;\n }\n }\n return true;\n }\n case EMFPLUS_FILLELLIPSE: {\n if (recDataSize >= 12) {\n const brushVal = view.getUint32(dataOff, true);\n const compressed = (recFlags & 16384) !== 0;\n let x, y, w, h;\n if (compressed) {\n x = view.getInt16(dataOff + 4, true);\n y = view.getInt16(dataOff + 6, true);\n w = view.getInt16(dataOff + 8, true);\n h = view.getInt16(dataOff + 10, true);\n } else {\n if (recDataSize < 20) {\n return true;\n }\n x = view.getFloat32(dataOff + 4, true);\n y = view.getFloat32(dataOff + 8, true);\n w = view.getFloat32(dataOff + 12, true);\n h = view.getFloat32(dataOff + 16, true);\n }\n ctx.fillStyle = resolveBrushColor(rCtx, recFlags, brushVal);\n applyPlusWorldTransform(rCtx);\n ctx.beginPath();\n ctx.ellipse(x + w / 2, y + h / 2, Math.abs(w) / 2, Math.abs(h) / 2, 0, 0, Math.PI * 2);\n ctx.fill();\n }\n return true;\n }\n case EMFPLUS_DRAWELLIPSE: {\n const penId = recFlags & 255;\n const pen = objectTable.get(penId);\n const compressed = (recFlags & 16384) !== 0;\n let x, y, w, h;\n if (compressed && recDataSize >= 8) {\n x = view.getInt16(dataOff, true);\n y = view.getInt16(dataOff + 2, true);\n w = view.getInt16(dataOff + 4, true);\n h = view.getInt16(dataOff + 6, true);\n } else if (!compressed && recDataSize >= 16) {\n x = view.getFloat32(dataOff, true);\n y = view.getFloat32(dataOff + 4, true);\n w = view.getFloat32(dataOff + 8, true);\n h = view.getFloat32(dataOff + 12, true);\n } else {\n return true;\n }\n if (pen && pen.kind === \"plus-pen\") {\n applyEmfPlusPen(ctx, pen);\n }\n applyPlusWorldTransform(rCtx);\n ctx.beginPath();\n ctx.ellipse(x + w / 2, y + h / 2, Math.abs(w) / 2, Math.abs(h) / 2, 0, 0, Math.PI * 2);\n ctx.stroke();\n return true;\n }\n case EMFPLUS_FILLPIE:\n case EMFPLUS_DRAWPIE:\n case EMFPLUS_DRAWARC: {\n const isFill = recType === EMFPLUS_FILLPIE;\n const minSize = isFill ? 12 : 8;\n if (recDataSize < minSize) {\n return true;\n }\n let aOff = dataOff;\n if (isFill) {\n const brushVal = view.getUint32(aOff, true);\n ctx.fillStyle = resolveBrushColor(rCtx, recFlags, brushVal);\n aOff += 4;\n }\n const startAngle = view.getFloat32(aOff, true) * Math.PI / 180;\n const sweepAngle = view.getFloat32(aOff + 4, true) * Math.PI / 180;\n aOff += 8;\n const compressed = (recFlags & 16384) !== 0;\n let x, y, w, h;\n if (compressed && aOff + 8 <= dataOff + recDataSize) {\n x = view.getInt16(aOff, true);\n y = view.getInt16(aOff + 2, true);\n w = view.getInt16(aOff + 4, true);\n h = view.getInt16(aOff + 6, true);\n } else if (!compressed && aOff + 16 <= dataOff + recDataSize) {\n x = view.getFloat32(aOff, true);\n y = view.getFloat32(aOff + 4, true);\n w = view.getFloat32(aOff + 8, true);\n h = view.getFloat32(aOff + 12, true);\n } else {\n return true;\n }\n if (recType !== EMFPLUS_FILLPIE) {\n const penId = recFlags & 255;\n const pen = objectTable.get(penId);\n if (pen && pen.kind === \"plus-pen\") {\n applyEmfPlusPen(ctx, pen);\n }\n }\n applyPlusWorldTransform(rCtx);\n ctx.beginPath();\n const cx = x + w / 2;\n const cy = y + h / 2;\n const rx = Math.abs(w) / 2;\n const ry = Math.abs(h) / 2;\n if (isFill) {\n ctx.moveTo(cx, cy);\n }\n ctx.ellipse(cx, cy, rx, ry, 0, startAngle, startAngle + sweepAngle, sweepAngle < 0);\n if (isFill) {\n ctx.closePath();\n ctx.fill();\n } else {\n ctx.stroke();\n }\n return true;\n }\n case EMFPLUS_DRAWLINES: {\n if (recDataSize >= 4) {\n const penId = recFlags & 255;\n const pen = objectTable.get(penId);\n const count = view.getUint32(dataOff, true);\n const compressed = (recFlags & 16384) !== 0;\n const ptSize = compressed ? 4 : 8;\n if (pen && pen.kind === \"plus-pen\") {\n applyEmfPlusPen(ctx, pen);\n }\n applyPlusWorldTransform(rCtx);\n ctx.beginPath();\n let pOff = dataOff + 4;\n for (let i = 0; i < count && pOff + ptSize <= dataOff + recDataSize; i++) {\n const pt = readPointFromView(view, pOff, compressed);\n if (i === 0) {\n ctx.moveTo(pt.x, pt.y);\n } else {\n ctx.lineTo(pt.x, pt.y);\n }\n pOff += ptSize;\n }\n if (recFlags & 8192) {\n ctx.closePath();\n }\n ctx.stroke();\n }\n return true;\n }\n case EMFPLUS_FILLPOLYGON: {\n if (recDataSize >= 8) {\n const brushVal = view.getUint32(dataOff, true);\n const count = view.getUint32(dataOff + 4, true);\n const compressed = (recFlags & 16384) !== 0;\n const ptSize = compressed ? 4 : 8;\n ctx.fillStyle = resolveBrushColor(rCtx, recFlags, brushVal);\n applyPlusWorldTransform(rCtx);\n ctx.beginPath();\n let pOff = dataOff + 8;\n for (let i = 0; i < count && pOff + ptSize <= dataOff + recDataSize; i++) {\n const pt = readPointFromView(view, pOff, compressed);\n if (i === 0) {\n ctx.moveTo(pt.x, pt.y);\n } else {\n ctx.lineTo(pt.x, pt.y);\n }\n pOff += ptSize;\n }\n ctx.closePath();\n ctx.fill();\n }\n return true;\n }\n default:\n return false;\n }\n}\n\n// src/emf-plus-bitmap-decoder.ts\nvar PIXELFORMAT_24BPP_RGB = 137224;\nvar PIXELFORMAT_32BPP_RGB = 139273;\nvar PIXELFORMAT_32BPP_ARGB = 2498570;\nvar PIXELFORMAT_32BPP_PARGB = 925707;\nfunction decodeEmfPlusBitmapPixels(view, pixelStart, width, height, stride, pixelFormat) {\n const absStride = Math.abs(stride);\n const topDown = stride > 0;\n const rowBytes = width * 4;\n const bmpRowStride = rowBytes + 3 & -4;\n const pixelDataSize = bmpRowStride * height;\n const bmpData = new Uint8Array(pixelDataSize);\n for (let y = 0; y < height; y++) {\n const srcRow = topDown ? y : height - 1 - y;\n const rowOff = pixelStart + srcRow * absStride;\n const dstRow = (height - 1 - y) * bmpRowStride;\n switch (pixelFormat) {\n case PIXELFORMAT_32BPP_ARGB:\n case PIXELFORMAT_32BPP_PARGB: {\n for (let x = 0; x < width; x++) {\n const off = rowOff + x * 4;\n if (off + 3 >= view.byteLength) {\n break;\n }\n let b = view.getUint8(off);\n let g = view.getUint8(off + 1);\n let r = view.getUint8(off + 2);\n const a = view.getUint8(off + 3);\n if (pixelFormat === PIXELFORMAT_32BPP_PARGB && a > 0 && a < 255) {\n r = Math.min(255, Math.round(r * 255 / a));\n g = Math.min(255, Math.round(g * 255 / a));\n b = Math.min(255, Math.round(b * 255 / a));\n }\n const di = dstRow + x * 4;\n bmpData[di] = b;\n bmpData[di + 1] = g;\n bmpData[di + 2] = r;\n bmpData[di + 3] = a;\n }\n break;\n }\n case PIXELFORMAT_32BPP_RGB: {\n for (let x = 0; x < width; x++) {\n const off = rowOff + x * 4;\n if (off + 3 >= view.byteLength) {\n break;\n }\n const di = dstRow + x * 4;\n bmpData[di] = view.getUint8(off);\n bmpData[di + 1] = view.getUint8(off + 1);\n bmpData[di + 2] = view.getUint8(off + 2);\n bmpData[di + 3] = 255;\n }\n break;\n }\n case PIXELFORMAT_24BPP_RGB: {\n for (let x = 0; x < width; x++) {\n const off = rowOff + x * 3;\n if (off + 2 >= view.byteLength) {\n break;\n }\n const di = dstRow + x * 4;\n bmpData[di] = view.getUint8(off);\n bmpData[di + 1] = view.getUint8(off + 1);\n bmpData[di + 2] = view.getUint8(off + 2);\n bmpData[di + 3] = 255;\n }\n break;\n }\n default:\n return null;\n }\n }\n const fileHeaderSize = 14;\n const dibHeaderSize = 108;\n const fileSize = fileHeaderSize + dibHeaderSize + pixelDataSize;\n const bmpFile = new ArrayBuffer(fileSize);\n const bmpView = new DataView(bmpFile);\n const bmpBytes = new Uint8Array(bmpFile);\n bmpView.setUint8(0, 66);\n bmpView.setUint8(1, 77);\n bmpView.setUint32(2, fileSize, true);\n bmpView.setUint32(6, 0, true);\n bmpView.setUint32(10, fileHeaderSize + dibHeaderSize, true);\n bmpView.setUint32(14, dibHeaderSize, true);\n bmpView.setInt32(18, width, true);\n bmpView.setInt32(22, height, true);\n bmpView.setUint16(26, 1, true);\n bmpView.setUint16(28, 32, true);\n bmpView.setUint32(30, 3, true);\n bmpView.setUint32(34, pixelDataSize, true);\n bmpView.setInt32(38, 2835, true);\n bmpView.setInt32(42, 2835, true);\n bmpView.setUint32(46, 0, true);\n bmpView.setUint32(50, 0, true);\n bmpView.setUint32(54, 16711680, true);\n bmpView.setUint32(58, 65280, true);\n bmpView.setUint32(62, 255, true);\n bmpView.setUint32(66, 4278190080, true);\n bmpView.setUint32(70, 1934772034, true);\n bmpBytes.set(bmpData, fileHeaderSize + dibHeaderSize);\n return bmpFile;\n}\n\n// src/emf-plus-object-complex.ts\nfunction parseEmfPlusPenObject(view, dataOff, recDataSize) {\n if (recDataSize < 20) {\n return null;\n }\n const penFlags = view.getUint32(dataOff + 4, true);\n const penWidth = view.getFloat32(dataOff + 16, true);\n let brushOff = dataOff + 20;\n const flagSizes = [\n [1, 4],\n // Transform (actually 24 bytes)\n [2, 4],\n // StartCap\n [4, 4],\n // EndCap\n [8, 4],\n // Join\n [16, 4],\n // MiterLimit\n [32, 4],\n // LineStyle (DashStyle)\n [64, 4],\n // DashCap\n [128, 4]\n // DashOffset\n ];\n let dashStyle = 0;\n for (const [flag, size] of flagSizes) {\n if (penFlags & flag) {\n if (flag === 1) {\n brushOff += 24;\n } else {\n if (flag === 32 && brushOff + 4 <= dataOff + recDataSize) {\n dashStyle = view.getUint32(brushOff, true);\n }\n brushOff += size;\n }\n }\n }\n if (penFlags & 256) {\n if (brushOff + 4 <= dataOff + recDataSize) {\n const dashCount = view.getUint32(brushOff, true);\n brushOff += 4 + dashCount * 4;\n }\n }\n if (penFlags & 512) {\n if (brushOff + 4 <= dataOff + recDataSize) {\n const compCount = view.getUint32(brushOff, true);\n brushOff += 4 + compCount * 4;\n }\n }\n if (penFlags & 1024) {\n if (brushOff + 4 <= dataOff + recDataSize) {\n const capSize = view.getUint32(brushOff, true);\n brushOff += 4 + capSize;\n }\n }\n if (penFlags & 2048) {\n if (brushOff + 4 <= dataOff + recDataSize) {\n const capSize = view.getUint32(brushOff, true);\n brushOff += 4 + capSize;\n }\n }\n let penColor = \"rgba(0,0,0,1)\";\n if (brushOff + 8 <= dataOff + recDataSize) {\n const penBrushType = view.getUint32(brushOff, true);\n if (penBrushType === EMFPLUS_BRUSHTYPE_SOLID && brushOff + 8 <= dataOff + recDataSize) {\n penColor = argbToRgba(view.getUint32(brushOff + 4, true));\n }\n }\n return { kind: \"plus-pen\", color: penColor, width: penWidth || 1, dashStyle };\n}\nfunction parseEmfPlusImageObject(view, dataOff, recDataSize, objectId) {\n let imgData = null;\n const imgType = view.getUint32(dataOff + 4, true);\n if (imgType === 1 && recDataSize >= 28) {\n const bmpType = view.getUint32(dataOff + 24, true);\n if (bmpType === 1) {\n const bmpW = view.getInt32(dataOff + 8, true);\n const bmpH = view.getInt32(dataOff + 12, true);\n const bmpStride = view.getInt32(dataOff + 16, true);\n const pixelFormat = view.getUint32(dataOff + 20, true);\n emfLog(\n ` Bitmap(Pixel): ${bmpW}\\xD7${bmpH}, stride=${bmpStride}, pixelFormat=0x${pixelFormat.toString(16).padStart(8, \"0\")}`\n );\n const pixelStart = dataOff + 28;\n const absStride = Math.abs(bmpStride);\n if (bmpW > 0 && bmpH > 0 && bmpW <= 8192 && bmpH <= 8192 && pixelStart + absStride * bmpH <= view.byteLength) {\n const decoded = decodeEmfPlusBitmapPixels(\n view,\n pixelStart,\n bmpW,\n bmpH,\n bmpStride,\n pixelFormat\n );\n if (decoded) {\n emfLog(` Bitmap(Pixel): decoded successfully, size=${decoded.byteLength} bytes`);\n imgData = decoded;\n }\n }\n } else if (bmpType === 2) {\n const imgStart = dataOff + 28;\n const imgLen = recDataSize - 28;\n emfLog(` Bitmap(Compressed): imgLen=${imgLen}, imgStart=0x${imgStart.toString(16)}`);\n if (imgLen > 0 && imgStart + imgLen <= view.byteLength) {\n imgData = view.buffer.slice(\n view.byteOffset + imgStart,\n view.byteOffset + imgStart + imgLen\n );\n if (imgData.byteLength >= 4) {\n const hdr = new Uint8Array(imgData, 0, 4);\n emfLog(\n ` Bitmap(Compressed): first 4 bytes = [${Array.from(hdr).map((b) => b.toString(16).padStart(2, \"0\")).join(\" \")}]`\n );\n }\n }\n }\n } else if (imgType === 2 && recDataSize >= 12) {\n view.getUint32(dataOff + 8, true);\n const mfDataSize = view.getUint32(dataOff + 12, true);\n const mfStart = dataOff + 16;\n if (mfDataSize > 0 && mfStart + mfDataSize <= view.byteLength) {\n imgData = view.buffer.slice(\n view.byteOffset + mfStart,\n view.byteOffset + mfStart + mfDataSize\n );\n if (imgData.byteLength >= 4) {\n const hdr = new DataView(imgData);\n hdr.getUint32(0, true);\n }\n } else {\n emfWarn(\n ` Metafile: out of bounds or empty (mfStart=0x${mfStart.toString(16)}, mfDataSize=${mfDataSize}, viewLen=${view.byteLength})`\n );\n }\n }\n return { data: imgData, type: imgType };\n}\nfunction parseEmfPlusFontObject(view, dataOff, recDataSize) {\n if (recDataSize < 28) {\n return null;\n }\n const emSize = view.getFloat32(dataOff + 4, true);\n const styleFlags = view.getInt32(dataOff + 12, true);\n const nameLen = view.getUint32(dataOff + 20, true);\n let family = \"sans-serif\";\n if (nameLen > 0 && dataOff + 24 + nameLen * 2 <= dataOff + recDataSize) {\n family = readUtf16LE(view, dataOff + 24, nameLen) || \"sans-serif\";\n }\n return { kind: \"plus-font\", emSize: emSize || 12, flags: styleFlags, family };\n}\n\n// src/emf-plus-object-parser.ts\nfunction handleEmfPlusObjectRecord(rCtx, recFlags, dataOff, recDataSize) {\n const { view, objectTable } = rCtx;\n const objectId = recFlags & 255;\n const objectType = recFlags >> 8 & 127;\n switch (objectType) {\n // ---------------------------------------------------------------\n // Brush\n // ---------------------------------------------------------------\n case EMFPLUS_OBJECTTYPE_BRUSH: {\n if (recDataSize >= 8) {\n const brushType = view.getUint32(dataOff, true);\n let color = \"rgba(0,0,0,1)\";\n if (brushType === EMFPLUS_BRUSHTYPE_SOLID && recDataSize >= 8) {\n color = argbToRgba(view.getUint32(dataOff + 4, true));\n } else if (brushType === EMFPLUS_BRUSHTYPE_LINEARGRADIENT && recDataSize >= 48) {\n color = argbToRgba(view.getUint32(dataOff + 40, true));\n } else if (brushType === EMFPLUS_BRUSHTYPE_PATHGRADIENT && recDataSize >= 12) {\n color = argbToRgba(view.getUint32(dataOff + 8, true));\n } else if (brushType === EMFPLUS_BRUSHTYPE_HATCHFILL && recDataSize >= 12) {\n color = argbToRgba(view.getUint32(dataOff + 8, true));\n }\n objectTable.set(objectId, { kind: \"plus-brush\", color });\n }\n break;\n }\n // ---------------------------------------------------------------\n // Pen\n // ---------------------------------------------------------------\n case EMFPLUS_OBJECTTYPE_PEN: {\n const pen = parseEmfPlusPenObject(view, dataOff, recDataSize);\n if (pen) {\n objectTable.set(objectId, pen);\n }\n break;\n }\n // ---------------------------------------------------------------\n // Path\n // ---------------------------------------------------------------\n case EMFPLUS_OBJECTTYPE_PATH: {\n const path = parseEmfPlusPath(view, dataOff, recDataSize);\n if (path) {\n objectTable.set(objectId, path);\n }\n break;\n }\n // ---------------------------------------------------------------\n // Font\n // ---------------------------------------------------------------\n case EMFPLUS_OBJECTTYPE_FONT: {\n const font = parseEmfPlusFontObject(view, dataOff, recDataSize);\n if (font) {\n objectTable.set(objectId, font);\n }\n break;\n }\n // ---------------------------------------------------------------\n // StringFormat\n // ---------------------------------------------------------------\n case EMFPLUS_OBJECTTYPE_STRINGFORMAT: {\n if (recDataSize >= 16) {\n const sfFlags = view.getUint32(dataOff + 4, true);\n const alignment = view.getUint32(dataOff + 12, true);\n const lineAlignment = view.getUint32(dataOff + 16, true);\n objectTable.set(objectId, {\n kind: \"plus-stringformat\",\n flags: sfFlags,\n alignment: alignment ?? 0,\n lineAlignment: lineAlignment ?? 0\n });\n }\n break;\n }\n // ---------------------------------------------------------------\n // Image\n // ---------------------------------------------------------------\n case EMFPLUS_OBJECTTYPE_IMAGE: {\n if (recDataSize < 8) {\n break;\n }\n const parsed = parseEmfPlusImageObject(view, dataOff, recDataSize);\n objectTable.set(objectId, {\n kind: \"plus-image\",\n data: parsed.data,\n type: parsed.type\n });\n rCtx.totalImageObjects++;\n break;\n }\n // ---------------------------------------------------------------\n // ImageAttributes\n // ---------------------------------------------------------------\n case EMFPLUS_OBJECTTYPE_IMAGEATTRIBUTES: {\n objectTable.set(objectId, { kind: \"plus-imageattributes\" });\n break;\n }\n // ---------------------------------------------------------------\n // Region\n // ---------------------------------------------------------------\n case EMFPLUS_OBJECTTYPE_REGION: {\n const region = parseEmfPlusRegionObject(view, dataOff, recDataSize);\n if (region) {\n objectTable.set(objectId, region);\n }\n break;\n }\n }\n}\nvar MAX_REGION_NODE_DEPTH = 64;\nfunction parseRegionNode(view, off, endOff, depth = 0) {\n if (off + 4 > endOff) {\n return null;\n }\n if (depth > MAX_REGION_NODE_DEPTH) {\n return null;\n }\n const nodeType = view.getUint32(off, true);\n let cursor = off + 4;\n if (nodeType <= 4) {\n const leftResult = parseRegionNode(view, cursor, endOff, depth + 1);\n if (!leftResult) {\n return null;\n }\n cursor += leftResult.bytesRead;\n const rightResult = parseRegionNode(view, cursor, endOff, depth + 1);\n if (!rightResult) {\n return null;\n }\n cursor += rightResult.bytesRead;\n return {\n node: {\n type: \"combine\",\n combineMode: nodeType,\n left: leftResult.node,\n right: rightResult.node\n },\n bytesRead: cursor - off\n };\n }\n if (nodeType === 268435456) {\n if (cursor + 16 > endOff) {\n return null;\n }\n const x = view.getFloat32(cursor, true);\n const y = view.getFloat32(cursor + 4, true);\n const w = view.getFloat32(cursor + 8, true);\n const h = view.getFloat32(cursor + 12, true);\n return {\n node: { type: \"rect\", x, y, width: w, height: h },\n bytesRead: cursor + 16 - off\n };\n }\n if (nodeType === 268435457) {\n if (cursor + 4 > endOff) {\n return null;\n }\n const pathDataSize = view.getInt32(cursor, true);\n cursor += 4;\n if (pathDataSize <= 0 || cursor + pathDataSize > endOff) {\n return null;\n }\n const path = parseEmfPlusPath(view, cursor, pathDataSize);\n return {\n node: path ? { type: \"path\", path } : { type: \"empty\" },\n bytesRead: cursor + pathDataSize - off\n };\n }\n if (nodeType === 268435458) {\n return { node: { type: \"empty\" }, bytesRead: 4 };\n }\n if (nodeType === 268435459) {\n return { node: { type: \"infinite\" }, bytesRead: 4 };\n }\n emfWarn(`parseRegionNode: unknown node type 0x${nodeType.toString(16)}`);\n return { node: { type: \"empty\" }, bytesRead: 4 };\n}\nfunction parseEmfPlusRegionObject(view, off, maxLen) {\n if (maxLen < 8) {\n return null;\n }\n view.getUint32(off, true);\n const regionNodeCount = view.getUint32(off + 4, true);\n if (regionNodeCount === 0 || regionNodeCount > 1e5) {\n return null;\n }\n const endOff = off + maxLen;\n const result = parseRegionNode(view, off + 8, endOff);\n if (!result) {\n return null;\n }\n return {\n kind: \"plus-region\",\n nodes: [result.node]\n };\n}\n\n// src/emf-plus-text-image-handlers.ts\nfunction handleEmfPlusTextImageRecord(rCtx, recType, recFlags, dataOff, recDataSize) {\n const { ctx, view, objectTable } = rCtx;\n switch (recType) {\n // ---- path-based drawing ----\n case EMFPLUS_FILLPATH: {\n if (recDataSize >= 4) {\n const brushVal = view.getUint32(dataOff, true);\n const pathId = recFlags & 255;\n const pathObj = objectTable.get(pathId);\n if (pathObj && pathObj.kind === \"plus-path\") {\n ctx.fillStyle = resolveBrushColor(rCtx, recFlags, brushVal);\n applyPlusWorldTransform(rCtx);\n replayEmfPlusPath(ctx, pathObj);\n ctx.fill();\n }\n }\n return true;\n }\n case EMFPLUS_DRAWPATH: {\n if (recDataSize >= 4) {\n const penIndex = view.getUint32(dataOff, true);\n const pathId = recFlags & 255;\n const pathObj = objectTable.get(pathId);\n const pen = objectTable.get(penIndex & 255);\n if (pathObj && pathObj.kind === \"plus-path\") {\n if (pen && pen.kind === \"plus-pen\") {\n ctx.strokeStyle = pen.color;\n ctx.lineWidth = pen.width;\n }\n applyPlusWorldTransform(rCtx);\n replayEmfPlusPath(ctx, pathObj);\n ctx.stroke();\n }\n }\n return true;\n }\n // ---- text ----\n case EMFPLUS_DRAWSTRING: {\n if (recDataSize >= 28) {\n const brushVal = view.getUint32(dataOff, true);\n const formatId = view.getUint32(dataOff + 4, true);\n const strLen = view.getUint32(dataOff + 8, true);\n const layoutX = view.getFloat32(dataOff + 12, true);\n const layoutY = view.getFloat32(dataOff + 16, true);\n view.getFloat32(dataOff + 20, true);\n view.getFloat32(dataOff + 24, true);\n const fontId = recFlags & 255;\n const font = objectTable.get(fontId);\n if (strLen > 0 && dataOff + 28 + strLen * 2 <= dataOff + recDataSize) {\n const text = readUtf16LE(view, dataOff + 28, strLen);\n if (text.length > 0 && font && font.kind === \"plus-font\") {\n const bold = font.flags & 1 ? \"bold \" : \"\";\n const italic = font.flags & 2 ? \"italic \" : \"\";\n const family = mapFontFamily(font.family, rCtx.fontFamilyMap);\n ctx.font = `${italic}${bold}${font.emSize}px ${family}`;\n ctx.fillStyle = resolveBrushColor(rCtx, recFlags, brushVal);\n ctx.textBaseline = \"top\";\n const sf = objectTable.get(formatId);\n if (sf && sf.kind === \"plus-stringformat\") {\n switch (sf.alignment) {\n case 1:\n ctx.textAlign = \"center\";\n break;\n case 2:\n ctx.textAlign = \"right\";\n break;\n default:\n ctx.textAlign = \"left\";\n }\n } else {\n ctx.textAlign = \"left\";\n }\n applyPlusWorldTransform(rCtx);\n ctx.fillText(text, layoutX, layoutY);\n }\n }\n }\n return true;\n }\n case EMFPLUS_DRAWDRIVERSTRING: {\n if (recDataSize >= 16) {\n const brushVal = view.getUint32(dataOff, true);\n const glyphCount = view.getUint32(dataOff + 12, true);\n const fontId = recFlags & 255;\n const font = objectTable.get(fontId);\n const glyphsOff = dataOff + 16;\n const posOff = glyphsOff + glyphCount * 2;\n const alignedPosOff = posOff + 3 & -4;\n if (glyphCount > 0 && glyphCount < 1e5 && alignedPosOff + glyphCount * 8 <= dataOff + recDataSize && font && font.kind === \"plus-font\") {\n const text = readUtf16LE(view, glyphsOff, glyphCount);\n if (text.length > 0) {\n const bold = font.flags & 1 ? \"bold \" : \"\";\n const italic = font.flags & 2 ? \"italic \" : \"\";\n const family = mapFontFamily(font.family, rCtx.fontFamilyMap);\n ctx.font = `${italic}${bold}${font.emSize}px ${family}`;\n ctx.fillStyle = resolveBrushColor(rCtx, recFlags, brushVal);\n ctx.textBaseline = \"alphabetic\";\n ctx.textAlign = \"left\";\n applyPlusWorldTransform(rCtx);\n const gx = view.getFloat32(alignedPosOff, true);\n const gy = view.getFloat32(alignedPosOff + 4, true);\n ctx.fillText(text, gx, gy);\n }\n }\n }\n return true;\n }\n // ---- images ----\n case EMFPLUS_DRAWIMAGE: {\n if (recDataSize >= 24) {\n const imgId = recFlags & 255;\n const imgObj = objectTable.get(imgId);\n const compressed = (recFlags & 16384) !== 0;\n const rectOff = dataOff + 24;\n let dx, dy, dw, dh;\n if (compressed && rectOff + 8 <= dataOff + recDataSize) {\n dx = view.getInt16(rectOff, true);\n dy = view.getInt16(rectOff + 2, true);\n dw = view.getInt16(rectOff + 4, true);\n dh = view.getInt16(rectOff + 6, true);\n } else if (!compressed && rectOff + 16 <= dataOff + recDataSize) {\n dx = view.getFloat32(rectOff, true);\n dy = view.getFloat32(rectOff + 4, true);\n dw = view.getFloat32(rectOff + 8, true);\n dh = view.getFloat32(rectOff + 12, true);\n } else {\n return true;\n }\n rCtx.totalDrawImageCalls++;\n const hasData = imgObj && imgObj.kind === \"plus-image\" && imgObj.data;\n emfLog(\n `DrawImage: imgId=${imgId}, dest=(${dx},${dy},${dw},${dh}), compressed=${compressed}, hasObj=${Boolean(imgObj)}, objKind=${imgObj?.kind}, hasData=${Boolean(hasData)}, dataLen=${hasData ? imgObj.data.byteLength : 0}, isMetafile=${imgObj?.kind === \"plus-image\" ? imgObj.type === 2 : \"N/A\"}`\n );\n emfLog(\n `DrawImage: worldTransform=[${rCtx.worldTransform.map((v) => v.toFixed(3)).join(\", \")}]`\n );\n if (imgObj && imgObj.kind === \"plus-image\" && imgObj.data) {\n const wt = rCtx.worldTransform;\n const s = getPageUnitMultiplier(rCtx.pageUnit, rCtx.pageScale) * rCtx.dpiScale;\n rCtx.deferredImages.push({\n imageData: imgObj.data,\n dx,\n dy,\n dw,\n dh,\n transform: [\n wt[0] * s,\n wt[1] * s,\n wt[2] * s,\n wt[3] * s,\n wt[4] * s,\n wt[5] * s\n ],\n isMetafile: imgObj.type === 2\n });\n emfLog(`DrawImage: queued deferred image (total=${rCtx.deferredImages.length})`);\n }\n }\n return true;\n }\n case EMFPLUS_DRAWIMAGEPOINTS: {\n if (recDataSize >= 28) {\n const imgId = recFlags & 255;\n const imgObj = objectTable.get(imgId);\n const count = view.getUint32(dataOff + 24, true);\n const compressed = (recFlags & 16384) !== 0;\n const ptOff = dataOff + 28;\n if (count >= 3 && imgObj && imgObj.kind === \"plus-image\" && imgObj.data) {\n let p1x, p1y, p2x, p2y, p3x, p3y;\n if (compressed && ptOff + 12 <= dataOff + recDataSize) {\n p1x = view.getInt16(ptOff, true);\n p1y = view.getInt16(ptOff + 2, true);\n p2x = view.getInt16(ptOff + 4, true);\n p2y = view.getInt16(ptOff + 6, true);\n p3x = view.getInt16(ptOff + 8, true);\n p3y = view.getInt16(ptOff + 10, true);\n } else if (!compressed && ptOff + 24 <= dataOff + recDataSize) {\n p1x = view.getFloat32(ptOff, true);\n p1y = view.getFloat32(ptOff + 4, true);\n p2x = view.getFloat32(ptOff + 8, true);\n p2y = view.getFloat32(ptOff + 12, true);\n p3x = view.getFloat32(ptOff + 16, true);\n p3y = view.getFloat32(ptOff + 20, true);\n } else {\n return true;\n }\n const dx = p1x;\n const dy = p1y;\n const dw = Math.sqrt((p2x - p1x) ** 2 + (p2y - p1y) ** 2);\n const dh = Math.sqrt((p3x - p1x) ** 2 + (p3y - p1y) ** 2);\n rCtx.totalDrawImageCalls++;\n emfLog(\n `DrawImagePoints: imgId=${imgId}, points=[(${p1x},${p1y}),(${p2x},${p2y}),(${p3x},${p3y})], dest=(${dx.toFixed(1)},${dy.toFixed(1)},${dw.toFixed(1)},${dh.toFixed(1)})`\n );\n emfLog(\n `DrawImagePoints: worldTransform=[${rCtx.worldTransform.map((v) => v.toFixed(3)).join(\", \")}]`\n );\n const wt2 = rCtx.worldTransform;\n const s2 = getPageUnitMultiplier(rCtx.pageUnit, rCtx.pageScale) * rCtx.dpiScale;\n rCtx.deferredImages.push({\n imageData: imgObj.data,\n dx,\n dy,\n dw,\n dh,\n transform: [\n wt2[0] * s2,\n wt2[1] * s2,\n wt2[2] * s2,\n wt2[3] * s2,\n wt2[4] * s2,\n wt2[5] * s2\n ],\n isMetafile: imgObj.type === 2\n });\n emfLog(`DrawImagePoints: queued deferred image (total=${rCtx.deferredImages.length})`);\n } else {\n imgObj && imgObj.kind === \"plus-image\" && imgObj.data;\n }\n }\n return true;\n }\n default:\n return false;\n }\n}\n\n// src/emf-plus-replay.ts\nvar EMFPLUS_REC_NAMES = {\n 16385: \"Header\",\n 16386: \"EndOfFile\",\n 16388: \"GetDC\",\n 16392: \"Object\",\n 16394: \"FillRects\",\n 16395: \"DrawRects\",\n 16396: \"FillPolygon\",\n 16397: \"DrawLines\",\n 16398: \"FillEllipse\",\n 16399: \"DrawEllipse\",\n 16404: \"FillPath\",\n 16405: \"DrawPath\",\n 16410: \"DrawImage\",\n 16411: \"DrawImagePoints\",\n 16412: \"DrawString\",\n 16438: \"DrawDriverString\",\n 16414: \"SetAntiAliasMode\",\n 16426: \"SetWorldTransform\",\n 16427: \"ResetWorldTransform\",\n 16428: \"MultiplyWorldTransform\",\n 16432: \"SetPageTransform\",\n 16433: \"ResetClip\",\n 16434: \"SetClipRect\",\n 16435: \"SetClipPath\",\n 16436: \"SetClipRegion\",\n 16437: \"OffsetClip\",\n 16421: \"Save\",\n 16422: \"Restore\",\n 16424: \"BeginContainerNoParams\",\n 16425: \"EndContainer\"\n};\nfunction replayEmfPlusRecords(view, offset, length, ctx, _canvasW, _canvasH, state, dpiScale = 1, maxRecords = MAX_RECORDS_EMFPLUS_DEFAULT, fontFamilyMap) {\n const s = state ?? createEmfPlusState();\n const rCtx = {\n ctx,\n view,\n objectTable: s.objectTable,\n worldTransform: s.worldTransform,\n deferredImages: [],\n saveStack: s.saveStack,\n saveIdMap: s.saveIdMap,\n totalImageObjects: 0,\n totalDrawImageCalls: 0,\n clipSaveDepth: 0,\n pageUnit: 2,\n pageScale: 1,\n continuationBuffer: null,\n continuationObjectId: -1,\n continuationObjectType: 0,\n continuationTotalSize: 0,\n continuationOffset: 0,\n dpiScale,\n fontFamilyMap\n };\n const end = offset + length;\n let recordCount = 0;\n const emfPlusRecordTypes = /* @__PURE__ */ new Map();\n emfLog(`replayEmfPlusRecords: offset=0x${offset.toString(16)}, length=${length}`);\n while (offset + 12 <= end && recordCount < maxRecords) {\n const recType = view.getUint16(offset, true);\n const recFlags = view.getUint16(offset + 2, true);\n const recSize = view.getUint32(offset + 4, true);\n const recDataSize = view.getUint32(offset + 8, true);\n if (recSize < 12 || offset + recSize > end) {\n break;\n }\n recordCount++;\n emfPlusRecordTypes.set(recType, (emfPlusRecordTypes.get(recType) ?? 0) + 1);\n const dataOff = offset + 12;\n switch (recType) {\n case EMFPLUS_HEADER: {\n if (recDataSize >= 16) {\n view.getFloat32(dataOff + 8, true);\n view.getFloat32(dataOff + 12, true);\n }\n break;\n }\n case EMFPLUS_ENDOFFILE:\n offset = end;\n continue;\n case EMFPLUS_GETDC:\n break;\n case EMFPLUS_OBJECT: {\n const isContinuation = (recFlags & 32768) !== 0;\n const objectId = recFlags & 255;\n if (isContinuation) {\n if (rCtx.continuationBuffer === null) {\n if (recDataSize >= 4) {\n const totalSize = view.getUint32(dataOff, true);\n const objectType = recFlags >> 8 & 127;\n const MAX_CONTINUATION_BYTES = 64 * 1024 * 1024;\n const remainingEmfPlusBytes = view.byteLength - dataOff;\n if (!Number.isFinite(totalSize) || totalSize <= 0 || totalSize > MAX_CONTINUATION_BYTES || totalSize > remainingEmfPlusBytes || recDataSize - 4 < 0) ; else {\n rCtx.continuationTotalSize = totalSize;\n rCtx.continuationObjectId = objectId;\n rCtx.continuationObjectType = objectType;\n rCtx.continuationBuffer = new Uint8Array(totalSize);\n const chunkSize = recDataSize - 4;\n const chunk = new Uint8Array(\n view.buffer,\n view.byteOffset + dataOff + 4,\n Math.min(chunkSize, totalSize)\n );\n rCtx.continuationBuffer.set(chunk, 0);\n rCtx.continuationOffset = chunk.length;\n }\n }\n } else {\n const remaining = rCtx.continuationTotalSize - rCtx.continuationOffset;\n const chunk = new Uint8Array(\n view.buffer,\n view.byteOffset + dataOff,\n Math.min(recDataSize, remaining)\n );\n rCtx.continuationBuffer.set(chunk, rCtx.continuationOffset);\n rCtx.continuationOffset += chunk.length;\n }\n } else if (rCtx.continuationBuffer !== null && objectId === rCtx.continuationObjectId) {\n const remaining = rCtx.continuationTotalSize - rCtx.continuationOffset;\n const chunk = new Uint8Array(\n view.buffer,\n view.byteOffset + dataOff,\n Math.min(recDataSize, remaining)\n );\n rCtx.continuationBuffer.set(chunk, rCtx.continuationOffset);\n const completeView = new DataView(\n rCtx.continuationBuffer.buffer,\n rCtx.continuationBuffer.byteOffset,\n rCtx.continuationBuffer.byteLength\n );\n const assembledFlags = rCtx.continuationObjectType << 8 | objectId;\n handleEmfPlusObjectRecord(\n { ...rCtx, view: completeView },\n assembledFlags,\n 0,\n rCtx.continuationTotalSize\n );\n rCtx.continuationBuffer = null;\n rCtx.continuationObjectId = -1;\n rCtx.continuationObjectType = 0;\n rCtx.continuationTotalSize = 0;\n rCtx.continuationOffset = 0;\n } else {\n handleEmfPlusObjectRecord(rCtx, recFlags, dataOff, recDataSize);\n }\n break;\n }\n default: {\n const handled = handleEmfPlusDrawRecord(rCtx, recType, recFlags, dataOff, recDataSize) || handleEmfPlusTextImageRecord(rCtx, recType, recFlags, dataOff, recDataSize) || handleEmfPlusStateRecord(rCtx, recType, recFlags, dataOff, recDataSize);\n if (!handled) {\n console.warn(`[emf-converter] Unhandled EMF+ record type: 0x${recType.toString(16)}`);\n }\n break;\n }\n }\n offset += recSize;\n }\n if (recordCount >= maxRecords) {\n console.warn(\n `[emf-converter] EMF+ record limit reached (${maxRecords}). Output may be incomplete.`\n );\n }\n const summary = [];\n for (const [type, cnt] of emfPlusRecordTypes) {\n summary.push(`${EMFPLUS_REC_NAMES[type] ?? `0x${type.toString(16)}`}:${cnt}`);\n }\n emfLog(\n `replayEmfPlusRecords: totalImageObjects=${rCtx.totalImageObjects}, totalDrawImageCalls=${rCtx.totalDrawImageCalls}, deferredImages=${rCtx.deferredImages.length}`\n );\n emfLog(\n `replayEmfPlusRecords: object table has ${rCtx.objectTable.size} entries: [${Array.from(\n rCtx.objectTable.entries()\n ).map(([id, obj]) => `${id}:${obj.kind}`).join(\", \")}]`\n );\n if (state) {\n state.worldTransform = rCtx.worldTransform;\n state.saveIdMap = rCtx.saveIdMap;\n }\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n return rCtx.deferredImages;\n}\n\n// src/emf-record-replay.ts\nvar GDI_NAMES = {\n 1: \"EMR_HEADER\",\n 2: \"EMR_POLYBEZIER\",\n 3: \"EMR_POLYGON\",\n 4: \"EMR_POLYLINE\",\n 5: \"EMR_POLYBEZIERTO\",\n 6: \"EMR_POLYLINETO\",\n 14: \"EMR_EOF\",\n 27: \"EMR_MOVETOEX\",\n 37: \"EMR_SELECTOBJECT\",\n 38: \"EMR_CREATEPEN\",\n 39: \"EMR_CREATEBRUSHINDIRECT\",\n 40: \"EMR_DELETEOBJECT\",\n 42: \"EMR_ELLIPSE\",\n 43: \"EMR_RECTANGLE\",\n 54: \"EMR_LINETO\",\n 59: \"EMR_BEGINPATH\",\n 60: \"EMR_ENDPATH\",\n 62: \"EMR_FILLPATH\",\n 63: \"EMR_STROKEANDFILLPATH\",\n 64: \"EMR_STROKEPATH\",\n 70: \"EMR_COMMENT\",\n 76: \"EMR_BITBLT\",\n 81: \"EMR_STRETCHDIBITS\",\n 84: \"EMR_EXTTEXTOUTW\",\n 85: \"EMR_POLYBEZIER16\",\n 86: \"EMR_POLYGON16\",\n 87: \"EMR_POLYLINE16\",\n 88: \"EMR_POLYBEZIERTO16\",\n 91: \"EMR_POLYPOLYGON16\"\n};\nfunction replayEmfRecords(view, ctx, bounds, canvasW, canvasH, dpiScale = 1, replayOptions = {}) {\n emfLog(\n `replayEmfRecords: bounds=(${bounds.left},${bounds.top})\\u2192(${bounds.right},${bounds.bottom}), canvas=${canvasW}\\xD7${canvasH}`\n );\n const allDeferredImages = [];\n const emfPlusState = createEmfPlusState();\n const maxRecords = replayOptions.maxRecords ?? MAX_RECORDS_DEFAULT;\n const maxRecordsEmfPlus = replayOptions.maxRecordsEmfPlus ?? MAX_RECORDS_EMFPLUS_DEFAULT;\n const logicalW = bounds.right - bounds.left || 1;\n const logicalH = bounds.bottom - bounds.top || 1;\n const sx = canvasW / logicalW;\n const sy = canvasH / logicalH;\n emfLog(\n `replayEmfRecords: logical=${logicalW}\\xD7${logicalH}, scale=(${sx.toFixed(4)},${sy.toFixed(4)})`\n );\n const rCtx = {\n ctx,\n view,\n objectTable: /* @__PURE__ */ new Map(),\n state: { ...defaultState(), fontFamilyMap: replayOptions.fontFamilyMap },\n stateStack: [],\n inPath: false,\n windowOrg: { x: bounds.left, y: bounds.top },\n windowExt: { cx: logicalW, cy: logicalH },\n viewportOrg: { x: 0, y: 0 },\n viewportExt: { cx: canvasW, cy: canvasH },\n useMappingMode: false,\n clipSaveDepth: 0,\n bounds,\n canvasW,\n canvasH,\n sx,\n sy\n };\n let offset = 0;\n const maxOffset = view.byteLength;\n let recordCount = 0;\n let emfPlusCommentCount = 0;\n const gdiRecordTypes = /* @__PURE__ */ new Map();\n while (offset + 8 <= maxOffset && recordCount < maxRecords) {\n const recType = view.getUint32(offset, true);\n const recSize = view.getUint32(offset + 4, true);\n if (recSize < 8 || offset + recSize > maxOffset) {\n break;\n }\n recordCount++;\n const dataOff = offset + 8;\n gdiRecordTypes.set(recType, (gdiRecordTypes.get(recType) ?? 0) + 1);\n if (recType === EMR_COMMENT) {\n if (recSize >= 16) {\n const commentDataSize = view.getUint32(dataOff, true);\n const sig = view.getUint32(dataOff + 4, true);\n if (sig === EMFPLUS_SIGNATURE && commentDataSize > 4) {\n emfPlusCommentCount++;\n emfLog(\n `replayEmfRecords: EMF+ comment #${emfPlusCommentCount} at offset 0x${offset.toString(16)}, dataSize=${commentDataSize}`\n );\n const deferred = replayEmfPlusRecords(\n view,\n dataOff + 8,\n commentDataSize - 4,\n ctx,\n canvasW,\n canvasH,\n emfPlusState,\n dpiScale,\n maxRecordsEmfPlus,\n replayOptions.fontFamilyMap\n );\n emfLog(\n `replayEmfRecords: EMF+ comment #${emfPlusCommentCount} returned ${deferred.length} deferred images`\n );\n allDeferredImages.push(...deferred);\n } else if (sig === EMR_COMMENT_PUBLIC_SIGNATURE) {\n emfLog(\n `replayEmfRecords: EMR_COMMENT_PUBLIC at offset 0x${offset.toString(16)}, size=${commentDataSize}`\n );\n } else {\n emfLog(\n `replayEmfRecords: EMR_COMMENT (sig=0x${sig.toString(16).padStart(8, \"0\")}) at offset 0x${offset.toString(16)}, size=${commentDataSize}`\n );\n }\n }\n offset += recSize;\n continue;\n }\n if (recType === EMR_EOF) {\n const summary = [];\n for (const [type, count] of gdiRecordTypes) {\n summary.push(`${GDI_NAMES[type] ?? `0x${type.toString(16)}`}:${count}`);\n }\n emfLog(\n `replayEmfRecords: total deferred images = ${allDeferredImages.length}, EMF+ object table size = ${emfPlusState.objectTable.size}`\n );\n break;\n }\n if (recType === EMR_SETBRUSHORGEX || recType === EMR_SETMETARGN || recType === EMR_SETICMMODE || recType === EMR_SETLAYOUT || recType === EMR_HEADER) {\n offset += recSize;\n continue;\n }\n const handled = handleEmfGdiStateRecord(rCtx, recType, offset, dataOff, recSize) || handleEmfGdiDrawRecord(rCtx, recType, offset, dataOff, recSize) || handleEmfGdiPolyPathRecord(rCtx, recType, offset, dataOff, recSize);\n if (!handled) {\n console.warn(`[emf-converter] Unhandled EMR record type: ${recType}`);\n }\n offset += recSize;\n }\n if (recordCount >= maxRecords) {\n console.warn(\n `[emf-converter] EMF record limit reached (${maxRecords}). Output may be incomplete.`\n );\n }\n return allDeferredImages;\n}\n\n// src/wmf-draw-handlers.ts\nfunction handleWmfDrawRecord(wCtx, recType, offset, dataOff, recSize) {\n const { ctx, view, state, coord } = wCtx;\n const { mx, my, mw, mh } = coord;\n switch (recType) {\n case META_MOVETO:\n if (recSize >= 10) {\n state.curY = view.getInt16(dataOff, true);\n state.curX = view.getInt16(dataOff + 2, true);\n }\n return true;\n case META_LINETO:\n if (recSize >= 10) {\n const ly = view.getInt16(dataOff, true);\n const lx = view.getInt16(dataOff + 2, true);\n applyPen(ctx, state);\n ctx.beginPath();\n ctx.moveTo(mx(state.curX), my(state.curY));\n ctx.lineTo(mx(lx), my(ly));\n ctx.stroke();\n state.curX = lx;\n state.curY = ly;\n }\n return true;\n case META_RECTANGLE:\n if (recSize >= 14) {\n const b = view.getInt16(dataOff, true);\n const r = view.getInt16(dataOff + 2, true);\n const t = view.getInt16(dataOff + 4, true);\n const l = view.getInt16(dataOff + 6, true);\n applyBrush(ctx, state);\n ctx.fillRect(mx(l), my(t), mw(r - l), mh(b - t));\n applyPen(ctx, state);\n ctx.strokeRect(mx(l), my(t), mw(r - l), mh(b - t));\n }\n return true;\n case META_ROUNDRECT:\n if (recSize >= 18) {\n const rh = Math.abs(mh(view.getInt16(dataOff, true))) / 2;\n const rw = Math.abs(mw(view.getInt16(dataOff + 2, true))) / 2;\n const b = view.getInt16(dataOff + 4, true);\n const r = view.getInt16(dataOff + 6, true);\n const t = view.getInt16(dataOff + 8, true);\n const l = view.getInt16(dataOff + 10, true);\n const x1 = mx(l), y1 = my(t);\n const w = mw(r - l), h = mh(b - t);\n const radius = Math.min(rw, rh, w / 2, h / 2);\n ctx.beginPath();\n ctx.moveTo(x1 + radius, y1);\n ctx.lineTo(x1 + w - radius, y1);\n ctx.arcTo(x1 + w, y1, x1 + w, y1 + radius, radius);\n ctx.lineTo(x1 + w, y1 + h - radius);\n ctx.arcTo(x1 + w, y1 + h, x1 + w - radius, y1 + h, radius);\n ctx.lineTo(x1 + radius, y1 + h);\n ctx.arcTo(x1, y1 + h, x1, y1 + h - radius, radius);\n ctx.lineTo(x1, y1 + radius);\n ctx.arcTo(x1, y1, x1 + radius, y1, radius);\n ctx.closePath();\n applyBrush(ctx, state);\n ctx.fill();\n applyPen(ctx, state);\n ctx.stroke();\n }\n return true;\n case META_ELLIPSE:\n if (recSize >= 14) {\n const b = view.getInt16(dataOff, true);\n const r = view.getInt16(dataOff + 2, true);\n const t = view.getInt16(dataOff + 4, true);\n const l = view.getInt16(dataOff + 6, true);\n ctx.beginPath();\n ctx.ellipse(\n mx((l + r) / 2),\n my((t + b) / 2),\n Math.abs(mw(r - l)) / 2,\n Math.abs(mh(b - t)) / 2,\n 0,\n 0,\n Math.PI * 2\n );\n applyBrush(ctx, state);\n ctx.fill();\n applyPen(ctx, state);\n ctx.stroke();\n }\n return true;\n case META_ARC:\n case META_PIE:\n case META_CHORD:\n if (recSize >= 22) {\n const endY = view.getInt16(dataOff, true);\n const endX = view.getInt16(dataOff + 2, true);\n const startY = view.getInt16(dataOff + 4, true);\n const startX = view.getInt16(dataOff + 6, true);\n const b = view.getInt16(dataOff + 8, true);\n const r = view.getInt16(dataOff + 10, true);\n const t = view.getInt16(dataOff + 12, true);\n const l = view.getInt16(dataOff + 14, true);\n const cxA = (l + r) / 2;\n const cyA = (t + b) / 2;\n const rxA = Math.abs(r - l) / 2;\n const ryA = Math.abs(b - t) / 2;\n const startAngle = Math.atan2((startY - cyA) / (ryA || 1), (startX - cxA) / (rxA || 1));\n const endAngle = Math.atan2((endY - cyA) / (ryA || 1), (endX - cxA) / (rxA || 1));\n ctx.beginPath();\n if (recType === META_PIE) {\n ctx.moveTo(mx(cxA), my(cyA));\n }\n ctx.ellipse(\n mx(cxA),\n my(cyA),\n Math.abs(mw(rxA)),\n Math.abs(mh(ryA)),\n 0,\n startAngle,\n endAngle,\n false\n );\n if (recType === META_PIE || recType === META_CHORD) {\n ctx.closePath();\n }\n if (recType === META_PIE || recType === META_CHORD) {\n applyBrush(ctx, state);\n ctx.fill();\n }\n applyPen(ctx, state);\n ctx.stroke();\n }\n return true;\n // ---- poly ----\n case META_POLYGON:\n if (recSize >= 10) {\n const count = view.getInt16(dataOff, true);\n if (count > 0 && dataOff + 2 + count * 4 <= offset + recSize) {\n ctx.beginPath();\n for (let i = 0; i < count; i++) {\n const px = view.getInt16(dataOff + 2 + i * 4, true);\n const py = view.getInt16(dataOff + 4 + i * 4, true);\n if (i === 0) {\n ctx.moveTo(mx(px), my(py));\n } else {\n ctx.lineTo(mx(px), my(py));\n }\n }\n ctx.closePath();\n applyBrush(ctx, state);\n ctx.fill(state.polyFillMode === 2 ? \"nonzero\" : \"evenodd\");\n applyPen(ctx, state);\n ctx.stroke();\n }\n }\n return true;\n case META_POLYLINE:\n if (recSize >= 10) {\n const count = view.getInt16(dataOff, true);\n if (count > 0 && dataOff + 2 + count * 4 <= offset + recSize) {\n ctx.beginPath();\n for (let i = 0; i < count; i++) {\n const px = view.getInt16(dataOff + 2 + i * 4, true);\n const py = view.getInt16(dataOff + 4 + i * 4, true);\n if (i === 0) {\n ctx.moveTo(mx(px), my(py));\n } else {\n ctx.lineTo(mx(px), my(py));\n }\n }\n applyPen(ctx, state);\n ctx.stroke();\n }\n }\n return true;\n case META_POLYPOLYGON:\n if (recSize >= 10) {\n const numPolys = view.getUint16(dataOff, true);\n let polyOff = dataOff + 2;\n const counts = [];\n for (let p = 0; p < numPolys && polyOff + 2 <= offset + recSize; p++) {\n counts.push(view.getInt16(polyOff, true));\n polyOff += 2;\n }\n ctx.beginPath();\n for (const count of counts) {\n if (count > 0 && polyOff + count * 4 <= offset + recSize) {\n for (let i = 0; i < count; i++) {\n const px = view.getInt16(polyOff + i * 4, true);\n const py = view.getInt16(polyOff + i * 4 + 2, true);\n if (i === 0) {\n ctx.moveTo(mx(px), my(py));\n } else {\n ctx.lineTo(mx(px), my(py));\n }\n }\n ctx.closePath();\n polyOff += count * 4;\n }\n }\n applyBrush(ctx, state);\n ctx.fill(state.polyFillMode === 2 ? \"nonzero\" : \"evenodd\");\n applyPen(ctx, state);\n ctx.stroke();\n }\n return true;\n // ---- text ----\n case META_TEXTOUT:\n if (recSize >= 12) {\n const nChars = view.getInt16(dataOff, true);\n if (nChars > 0 && dataOff + 2 + nChars <= offset + recSize) {\n let text = \"\";\n for (let i = 0; i < nChars; i++) {\n const ch = view.getUint8(dataOff + 2 + i);\n if (ch === 0) {\n break;\n }\n text += String.fromCharCode(ch);\n }\n const strBytes = nChars + nChars % 2;\n const txOff = dataOff + 2 + strBytes;\n if (txOff + 4 <= offset + recSize) {\n const ty2 = view.getInt16(txOff, true);\n const txCoord = view.getInt16(txOff + 2, true);\n applyFont(ctx, state);\n ctx.fillStyle = state.textColor;\n ctx.fillText(text, mx(txCoord), my(ty2));\n }\n }\n }\n return true;\n case META_EXTTEXTOUT:\n if (recSize >= 14) {\n const ty2 = view.getInt16(dataOff, true);\n const txCoord = view.getInt16(dataOff + 2, true);\n const nChars = view.getInt16(dataOff + 4, true);\n const hasClipRect = (view.getUint16(dataOff + 6, true) & 4) !== 0;\n const stringOff = dataOff + 8 + (hasClipRect ? 8 : 0);\n if (nChars > 0 && stringOff + nChars <= offset + recSize) {\n let text = \"\";\n for (let i = 0; i < nChars; i++) {\n const ch = view.getUint8(stringOff + i);\n if (ch === 0) {\n break;\n }\n text += String.fromCharCode(ch);\n }\n applyFont(ctx, state);\n ctx.fillStyle = state.textColor;\n ctx.fillText(text, mx(txCoord), my(ty2));\n }\n }\n return true;\n default:\n return false;\n }\n}\n\n// src/wmf-replay.ts\nfunction createWmfCoord(windowOrg, windowExt, canvasW, canvasH) {\n return {\n mx: (x) => (x - windowOrg.x) / (windowExt.cx || 1) * canvasW,\n my: (y) => (y - windowOrg.y) / (windowExt.cy || 1) * canvasH,\n mw: (w) => w / (windowExt.cx || 1) * canvasW,\n mh: (h) => h / (windowExt.cy || 1) * canvasH\n };\n}\nfunction replayWmfRecords(view, ctx, header, canvasW, canvasH, replayOptions = {}) {\n const logicalW = header.boundsRight - header.boundsLeft || 1;\n const logicalH = header.boundsBottom - header.boundsTop || 1;\n const windowOrg = { x: header.boundsLeft, y: header.boundsTop };\n const windowExt = { cx: logicalW, cy: logicalH };\n const coord = createWmfCoord(windowOrg, windowExt, canvasW, canvasH);\n const objectTable = /* @__PURE__ */ new Map();\n const allocObjectSlot = () => {\n let slot = 0;\n while (objectTable.has(slot)) {\n slot++;\n }\n return slot;\n };\n const state = { ...defaultState(), fontFamilyMap: replayOptions.fontFamilyMap };\n const stateStack = [];\n const wCtx = { view, ctx, state, coord };\n let offset = header.headerSize;\n const maxOffset = view.byteLength;\n const maxRecords = replayOptions.maxRecords ?? MAX_RECORDS_DEFAULT;\n let recordCount = 0;\n while (offset + 6 <= maxOffset && recordCount < maxRecords) {\n const recSizeWords = view.getUint32(offset, true);\n const recType = view.getUint16(offset + 4, true);\n const recSize = recSizeWords * 2;\n if (recSize < 6 || offset + recSize > maxOffset) {\n break;\n }\n if (recType === META_EOF) {\n break;\n }\n recordCount++;\n const dataOff = offset + 6;\n if (handleWmfDrawRecord(wCtx, recType, offset, dataOff, recSize)) {\n offset += recSize;\n continue;\n }\n switch (recType) {\n case META_SETWINDOWORG:\n if (recSize >= 10) {\n windowOrg.y = view.getInt16(dataOff, true);\n windowOrg.x = view.getInt16(dataOff + 2, true);\n }\n break;\n case META_SETWINDOWEXT:\n if (recSize >= 10) {\n windowExt.cy = view.getInt16(dataOff, true);\n windowExt.cx = view.getInt16(dataOff + 2, true);\n }\n break;\n case META_SAVEDC:\n stateStack.push(cloneState(state));\n break;\n case META_RESTOREDC: {\n const restored = stateStack.pop();\n if (restored) {\n Object.assign(state, restored);\n }\n break;\n }\n case META_SETTEXTCOLOR:\n if (recSize >= 10) {\n state.textColor = readColorRef(view, dataOff);\n }\n break;\n case META_SETBKCOLOR:\n if (recSize >= 10) {\n state.bkColor = readColorRef(view, dataOff);\n }\n break;\n case META_SETBKMODE:\n if (recSize >= 8) {\n state.bkMode = view.getUint16(dataOff, true);\n }\n break;\n case META_SETROP2:\n if (recSize >= 8) {\n state.rop2 = view.getUint16(dataOff, true);\n }\n break;\n case META_SETPOLYFILLMODE:\n if (recSize >= 8) {\n state.polyFillMode = view.getUint16(dataOff, true);\n }\n break;\n case META_SETTEXTALIGN:\n if (recSize >= 8) {\n state.textAlign = view.getUint16(dataOff, true);\n }\n break;\n case META_CREATEPENINDIRECT:\n if (recSize >= 16) {\n const slot = allocObjectSlot();\n objectTable.set(slot, {\n kind: \"pen\",\n style: view.getUint16(dataOff, true) & 255,\n widthX: view.getInt16(dataOff + 2, true),\n color: readColorRef(view, dataOff + 6)\n });\n }\n break;\n case META_CREATEBRUSHINDIRECT:\n if (recSize >= 14) {\n const slot = allocObjectSlot();\n objectTable.set(slot, {\n kind: \"brush\",\n style: view.getUint16(dataOff, true),\n color: readColorRef(view, dataOff + 2)\n });\n }\n break;\n case META_CREATEFONTINDIRECT:\n if (recSize >= 24) {\n let family = \"\";\n for (let i = 0; i < 32 && dataOff + 14 + i < offset + recSize; i++) {\n const ch = view.getUint8(dataOff + 14 + i);\n if (ch === 0) {\n break;\n }\n family += String.fromCharCode(ch);\n }\n const slot = allocObjectSlot();\n objectTable.set(slot, {\n kind: \"font\",\n height: Math.abs(view.getInt16(dataOff, true)),\n weight: view.getInt16(dataOff + 8, true),\n italic: view.getUint8(dataOff + 10) !== 0,\n underline: view.getUint8(dataOff + 11) !== 0,\n strikeOut: view.getUint8(dataOff + 12) !== 0,\n family: family || \"sans-serif\"\n });\n }\n break;\n case META_SELECTOBJECT:\n if (recSize >= 8) {\n const obj = objectTable.get(view.getUint16(dataOff, true));\n if (obj) {\n switch (obj.kind) {\n case \"pen\":\n state.penStyle = obj.style;\n state.penWidth = obj.widthX;\n state.penColor = obj.color;\n break;\n case \"brush\":\n state.brushStyle = obj.style;\n state.brushColor = obj.color;\n break;\n case \"font\":\n state.fontHeight = obj.height;\n state.fontWeight = obj.weight;\n state.fontItalic = obj.italic;\n state.fontUnderline = obj.underline;\n state.fontStrikeOut = obj.strikeOut;\n state.fontFamily = obj.family;\n break;\n }\n }\n }\n break;\n case META_DELETEOBJECT:\n if (recSize >= 8) {\n objectTable.delete(view.getUint16(dataOff, true));\n }\n break;\n }\n offset += recSize;\n }\n if (recordCount >= maxRecords) {\n console.warn(\n `[emf-converter] WMF record limit reached (${maxRecords}). Output may be incomplete.`\n );\n }\n}\n\n// src/emf-converter.ts\nvar MAX_METAFILE_RECURSION = 3;\nasync function processDeferredImages(ctx, deferredImages, recursionDepth = 0) {\n emfLog(\n `processDeferredImages: processing ${deferredImages.length} deferred images (recursionDepth=${recursionDepth})...`\n );\n for (let idx = 0; idx < deferredImages.length; idx++) {\n const img = deferredImages[idx];\n emfLog(\n ` Deferred image [${idx}]: isMetafile=${img.isMetafile}, dataLen=${img.imageData.byteLength}, dest=(${img.dx.toFixed(1)},${img.dy.toFixed(1)},${img.dw.toFixed(1)},${img.dh.toFixed(1)}), transform=[${img.transform.map((v) => v.toFixed(3)).join(\",\")}]`\n );\n try {\n const plainBuffer = new ArrayBuffer(img.imageData.byteLength);\n const dstBytes = new Uint8Array(plainBuffer);\n dstBytes.set(new Uint8Array(img.imageData));\n ctx.setTransform(\n img.transform[0],\n img.transform[1],\n img.transform[2],\n img.transform[3],\n img.transform[4],\n img.transform[5]\n );\n if (img.isMetafile) {\n if (recursionDepth >= MAX_METAFILE_RECURSION) {\n emfWarn(\n ` Deferred image [${idx}]: skipping embedded metafile \\u2014 recursion depth ${recursionDepth} >= ${MAX_METAFILE_RECURSION}`\n );\n continue;\n }\n emfLog(` Deferred image [${idx}]: recursively converting embedded metafile...`);\n const metafileDataUrl = await convertEmfToDataUrl(\n plainBuffer,\n void 0,\n void 0,\n void 0,\n recursionDepth + 1\n ) ?? await convertWmfToDataUrl(\n plainBuffer,\n void 0,\n void 0,\n void 0,\n recursionDepth + 1\n );\n if (metafileDataUrl) {\n emfLog(\n ` Deferred image [${idx}]: metafile converted, dataUrl length=${metafileDataUrl.length}`\n );\n const byteString = atob(metafileDataUrl.split(\",\")[1]);\n const mimeMatch = metafileDataUrl.match(/data:([^;]+)/);\n const mime = mimeMatch ? mimeMatch[1] : \"image/png\";\n const ab = new ArrayBuffer(byteString.length);\n const ia = new Uint8Array(ab);\n for (let i = 0; i < byteString.length; i++) {\n ia[i] = byteString.charCodeAt(i);\n }\n const metaBlob = new Blob([ab], { type: mime });\n emfLog(\n ` Deferred image [${idx}]: creating ImageBitmap from ${metaBlob.size} byte blob (${mime})...`\n );\n const bitmap = await createImageBitmap(metaBlob);\n emfLog(` Deferred image [${idx}]: ImageBitmap created ${bitmap.width}\\xD7${bitmap.height}`);\n ctx.drawImage(bitmap, img.dx, img.dy, img.dw, img.dh);\n bitmap.close();\n } else {\n emfWarn(` Deferred image [${idx}]: metafile conversion returned null`);\n }\n } else {\n emfLog(\n ` Deferred image [${idx}]: creating ImageBitmap from ${plainBuffer.byteLength} byte blob...`\n );\n const blob = new Blob([plainBuffer]);\n const bitmap = await createImageBitmap(blob);\n emfLog(` Deferred image [${idx}]: ImageBitmap created ${bitmap.width}\\xD7${bitmap.height}`);\n ctx.drawImage(bitmap, img.dx, img.dy, img.dw, img.dh);\n bitmap.close();\n }\n } catch (imgErr) {\n imgErr instanceof Error ? imgErr.message : String(imgErr);\n console.warn(\n \"[emf-converter] Deferred image draw failed:\",\n imgErr instanceof Error ? imgErr.message : imgErr,\n `(isMetafile=${img.isMetafile}, dataLen=${img.imageData.byteLength})`\n );\n }\n }\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n}\nasync function convertEmfToDataUrl(buffer, maxWidth, maxHeight, optionsOrDpiScale, recursionDepth = 0) {\n if (recursionDepth > MAX_METAFILE_RECURSION) {\n return null;\n }\n const opts = typeof optionsOrDpiScale === \"number\" ? { dpiScale: optionsOrDpiScale } : optionsOrDpiScale ?? {};\n const dpiScale = opts.dpiScale ?? DEFAULT_DPI_SCALE;\n const effectiveMaxWidth = maxWidth ?? opts.maxWidth;\n const effectiveMaxHeight = maxHeight ?? opts.maxHeight;\n const replayOptions = {\n maxRecords: opts.maxRecords,\n maxRecordsEmfPlus: opts.maxRecords,\n fontFamilyMap: opts.fontFamilyMap\n };\n try {\n emfLog(\"=== convertEmfToDataUrl START ===\");\n emfLog(\n `Input buffer: ${buffer.byteLength} bytes, maxWidth=${effectiveMaxWidth}, maxHeight=${effectiveMaxHeight}, dpiScale=${dpiScale}`\n );\n if (buffer.byteLength >= 16) {\n const hdrBytes = new Uint8Array(buffer, 0, 16);\n emfLog(\n `First 16 bytes: [${Array.from(hdrBytes).map((b) => b.toString(16).padStart(2, \"0\")).join(\" \")}]`\n );\n }\n const view = new DataView(buffer);\n const header = parseEmfHeader(view);\n if (!header) {\n emfLog(\"convertEmfToDataUrl: parseEmfHeader returned null \\u2014 returning null\");\n return null;\n }\n const renderBounds = getRenderableEmfBounds(header);\n if (!renderBounds) {\n emfLog(\"convertEmfToDataUrl: getRenderableEmfBounds returned null \\u2014 returning null\");\n return null;\n }\n const logicalW = renderBounds.right - renderBounds.left;\n const logicalH = renderBounds.bottom - renderBounds.top;\n emfLog(`convertEmfToDataUrl: logicalSize=${logicalW}\\xD7${logicalH}`);\n const setup = createCanvas(\n logicalW,\n logicalH,\n effectiveMaxWidth,\n effectiveMaxHeight,\n dpiScale,\n opts.maxCanvasDimension\n );\n if (!setup) {\n emfLog(\"convertEmfToDataUrl: createCanvas returned null \\u2014 returning null\");\n return null;\n }\n const { canvas, ctx } = setup;\n emfLog(\n `convertEmfToDataUrl: canvas created ${canvas.width}\\xD7${canvas.height} (dpiScale=${dpiScale})`\n );\n ctx.save();\n emfLog(\"convertEmfToDataUrl: starting replayEmfRecords...\");\n const deferredImages = replayEmfRecords(\n view,\n ctx,\n renderBounds,\n canvas.width,\n canvas.height,\n dpiScale,\n replayOptions\n );\n emfLog(\n `convertEmfToDataUrl: replayEmfRecords returned ${deferredImages.length} deferred images`\n );\n ctx.restore();\n await processDeferredImages(ctx, deferredImages);\n emfLog(\"convertEmfToDataUrl: exporting canvas to PNG data URL...\");\n const result = await exportCanvasToPngDataUrl(canvas);\n if (result) {\n emfLog(`convertEmfToDataUrl: SUCCESS \\u2014 data URL length=${result.length}`);\n } else {\n emfWarn(\"convertEmfToDataUrl: exportCanvasToPngDataUrl returned null\");\n }\n emfLog(\"=== convertEmfToDataUrl END ===\");\n return result;\n } catch (err) {\n emfWarn(\"convertEmfToDataUrl: EXCEPTION:\", err instanceof Error ? err.message : err);\n console.warn(\"[pptx-editor] EMF conversion failed:\", err instanceof Error ? err.message : err);\n return null;\n }\n}\nasync function convertWmfToDataUrl(buffer, maxWidth, maxHeight, optionsOrDpiScale, recursionDepth = 0) {\n if (recursionDepth > MAX_METAFILE_RECURSION) {\n return null;\n }\n const opts = typeof optionsOrDpiScale === \"number\" ? { dpiScale: optionsOrDpiScale } : optionsOrDpiScale ?? {};\n const dpiScale = opts.dpiScale ?? DEFAULT_DPI_SCALE;\n const effectiveMaxWidth = maxWidth ?? opts.maxWidth;\n const effectiveMaxHeight = maxHeight ?? opts.maxHeight;\n const replayOptions = {\n maxRecords: opts.maxRecords,\n fontFamilyMap: opts.fontFamilyMap\n };\n try {\n emfLog(\n \"=== convertWmfToDataUrl START ===\",\n `buffer=${buffer.byteLength} bytes, dpiScale=${dpiScale}`\n );\n const view = new DataView(buffer);\n const header = parseWmfHeader(view);\n if (!header) {\n emfLog(\"convertWmfToDataUrl: parseWmfHeader returned null\");\n return null;\n }\n const logicalW = header.boundsRight - header.boundsLeft;\n const logicalH = header.boundsBottom - header.boundsTop;\n emfLog(`convertWmfToDataUrl: logicalSize=${logicalW}\\xD7${logicalH}`);\n if (logicalW <= 0 || logicalH <= 0) {\n emfLog(\"convertWmfToDataUrl: invalid dimensions \\u2014 returning null\");\n return null;\n }\n const setup = createCanvas(\n logicalW,\n logicalH,\n effectiveMaxWidth,\n effectiveMaxHeight,\n dpiScale,\n opts.maxCanvasDimension\n );\n if (!setup) {\n return null;\n }\n const { canvas, ctx } = setup;\n ctx.save();\n replayWmfRecords(view, ctx, header, canvas.width, canvas.height, replayOptions);\n ctx.restore();\n const result = await exportCanvasToPngDataUrl(canvas);\n emfLog(`convertWmfToDataUrl: result=${result ? `dataUrl len=${result.length}` : \"null\"}`);\n emfLog(\"=== convertWmfToDataUrl END ===\");\n return result;\n } catch (err) {\n emfWarn(\"convertWmfToDataUrl: EXCEPTION:\", err instanceof Error ? err.message : err);\n console.warn(\"[pptx-editor] WMF conversion failed:\", err instanceof Error ? err.message : err);\n return null;\n }\n}\n\nexport { DEFAULT_DPI_SCALE, convertEmfToDataUrl, convertWmfToDataUrl };\n"],"mappings":"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","names":[]}