UNPKG

9.09 kBSource Map (JSON)View Raw
1{"version":3,"file":"loader.js","names":["_util","require","_tag","_swf","_data","asvm1TypeString","str","concat","Uint8Array","stringEncode","asmv1ActionConstantPool","strs","data","map","v","DataView","buffer","byteOffset","byteLength","setUint16","length","asvm1TypeConstant8","i","asmv1ActionPush","pushed","asvm1ActionLoadMovie","setUint8","asvm1ActionEnd","bytecodeLoadMovieSwf4","url","bytecodeLoadMovieSwf5","loader","swfv","width","height","fps","color","delay","Error","swf","Swf","version","frameSize","xMax","Math","round","yMax","frameRate","value","frameCount","setBackgroundColor","Tag","code","tags","push","showFrame","doAction","end","encode"],"sources":["../src/loader.ts"],"sourcesContent":["import {stringEncode} from './swf/util';\nimport {Tag} from './swf/tag';\nimport {Swf} from './swf/swf';\nimport {concat} from './util/internal/data';\n\n/**\n * Type string.\n *\n * @param str The string.\n * @returns Bytecode data.\n */\nfunction asvm1TypeString(str: string) {\n\treturn concat([new Uint8Array(1), stringEncode(str)]);\n}\n\n/**\n * Action: ConstantPoolEnd.\n *\n * @param strs Constant strings.\n * @returns Bytecode data.\n */\nfunction asmv1ActionConstantPool(strs: string[]) {\n\tconst data = concat([new Uint8Array(5), ...strs.map(stringEncode)]);\n\tconst v = new DataView(data.buffer, data.byteOffset, data.byteLength);\n\tdata[0] = 0x88;\n\tv.setUint16(1, data.length - 3, true);\n\tv.setUint16(3, strs.length, true);\n\treturn data;\n}\n\n/**\n * Type constant 8-bit.\n *\n * @param i Constant index.\n * @returns Bytecode data.\n */\nfunction asvm1TypeConstant8(i: number) {\n\tconst data = new Uint8Array(2);\n\tdata[0] = 0x08;\n\tdata[1] = i;\n\treturn data;\n}\n\n/**\n * Action: Push.\n *\n * @param pushed Pushed data.\n * @returns Bytecode data.\n */\nfunction asmv1ActionPush(pushed: Uint8Array[]) {\n\tconst data = concat([new Uint8Array(3), ...pushed]);\n\tconst v = new DataView(data.buffer, data.byteOffset, data.byteLength);\n\tdata[0] = 0x96;\n\tv.setUint16(1, data.length - 3, true);\n\treturn data;\n}\n\n/**\n * Action: LoadMovie.\n *\n * @returns Bytecode data.\n */\nfunction asvm1ActionLoadMovie() {\n\tconst data = new Uint8Array(4);\n\tconst v = new DataView(data.buffer, data.byteOffset, data.byteLength);\n\tdata[0] = 0x9a;\n\tv.setUint16(1, data.length - 3, true);\n\tv.setUint8(3, 0x40);\n\treturn data;\n}\n\n/**\n * Action: End.\n *\n * @returns Bytecode data.\n */\nfunction asvm1ActionEnd() {\n\treturn new Uint8Array(1);\n}\n\n/**\n * Bytecode in SWF4 format.\n *\n * @param url The URL to load.\n * @returns Bytecode data.\n */\nfunction bytecodeLoadMovieSwf4(url: string) {\n\treturn concat([\n\t\tasmv1ActionPush([asvm1TypeString(url)]),\n\t\tasmv1ActionPush([asvm1TypeString('/')]),\n\t\tasvm1ActionLoadMovie(),\n\t\tasvm1ActionEnd()\n\t]);\n}\n\n/**\n * Bytecode in SWF5 format.\n *\n * @param url The URL to load.\n * @returns Bytecode data.\n */\nfunction bytecodeLoadMovieSwf5(url: string) {\n\treturn concat([\n\t\tasmv1ActionConstantPool([url, '_level0']),\n\t\tasmv1ActionPush([asvm1TypeConstant8(0), asvm1TypeConstant8(1)]),\n\t\tasvm1ActionLoadMovie(),\n\t\tasvm1ActionEnd()\n\t]);\n}\n\n/**\n * Generate a loader stub SWF movie.\n * Optionally include a delay to give player a change to initialize first.\n *\n * @param swfv SWF format version number.\n * @param width Frame width.\n * @param height Frame height.\n * @param fps Frames-per-second.\n * @param color Background color.\n * @param url The URL to load.\n * @param delay Number of frame to delay loading.\n * @returns Movie data.\n */\nexport function loader(\n\tswfv: number,\n\twidth: number,\n\theight: number,\n\tfps: number,\n\tcolor: number,\n\turl: string,\n\tdelay = 0\n) {\n\tif (swfv < 4) {\n\t\tthrow new Error('SWF format version must be 4+');\n\t}\n\tdelay = delay < 0 ? 0 : delay;\n\n\tconst swf = new Swf();\n\tswf.version = swfv;\n\tswf.frameSize.xMax = Math.round(width * 20);\n\tswf.frameSize.yMax = Math.round(height * 20);\n\tswf.frameRate.value = fps;\n\tswf.frameCount = delay + 1;\n\n\tconst setBackgroundColor = new Tag();\n\tsetBackgroundColor.code = 9;\n\tsetBackgroundColor.data = new Uint8Array(3);\n\t// eslint-disable-next-line no-bitwise\n\tsetBackgroundColor.data[2] = color & 0xff;\n\t// eslint-disable-next-line no-bitwise\n\tsetBackgroundColor.data[1] = (color >> 8) & 0xff;\n\t// eslint-disable-next-line no-bitwise\n\tsetBackgroundColor.data[0] = (color >> 16) & 0xff;\n\tswf.tags.push(setBackgroundColor);\n\n\tconst showFrame = new Tag();\n\tshowFrame.code = 1;\n\tfor (let i = 0; i < delay; i++) {\n\t\tswf.tags.push(showFrame);\n\t}\n\n\tconst doAction = new Tag();\n\tdoAction.code = 12;\n\tdoAction.data =\n\t\tswfv < 5 ? bytecodeLoadMovieSwf4(url) : bytecodeLoadMovieSwf5(url);\n\tswf.tags.push(doAction);\n\n\tswf.tags.push(showFrame);\n\n\tconst end = new Tag();\n\tend.code = 0;\n\tswf.tags.push(end);\n\n\treturn swf.encode();\n}\n"],"mappings":"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"}
\No newline at end of file