├── .gitignore ├── .npmignore ├── LICENSE ├── README.md ├── assets └── forgecanvas.png ├── dist ├── classes │ ├── builder.d.ts │ ├── builder.js │ ├── index.d.ts │ ├── index.js │ ├── manager.d.ts │ ├── manager.js │ ├── util.d.ts │ └── util.js ├── docgen.d.ts ├── docgen.js ├── functions │ ├── canvas │ │ ├── attachCanvas.d.ts │ │ ├── attachCanvas.js │ │ ├── canvasBuffer.d.ts │ │ ├── canvasBuffer.js │ │ ├── canvasDataUrl.d.ts │ │ ├── canvasDataUrl.js │ │ ├── canvasSize.d.ts │ │ ├── canvasSize.js │ │ ├── createCanvas.d.ts │ │ ├── createCanvas.js │ │ ├── deleteCanvas.d.ts │ │ ├── deleteCanvas.js │ │ ├── resizeCanvas.d.ts │ │ ├── resizeCanvas.js │ │ ├── saveCanvas.d.ts │ │ ├── saveCanvas.js │ │ ├── setCanvasSize.d.ts │ │ ├── setCanvasSize.js │ │ ├── trimCanvas.d.ts │ │ └── trimCanvas.js │ ├── drawing │ │ ├── drawImage.d.ts │ │ ├── drawImage.js │ │ ├── drawRect.d.ts │ │ ├── drawRect.js │ │ ├── drawText.d.ts │ │ ├── drawText.js │ │ ├── putPixels.d.ts │ │ └── putPixels.js │ ├── gif │ │ ├── GIFDecoderOption.d.ts │ │ ├── GIFDecoderOption.js │ │ ├── GIFDecoderSize.d.ts │ │ ├── GIFDecoderSize.js │ │ ├── GIFEncoderGlobalPalette.d.ts │ │ ├── GIFEncoderGlobalPalette.js │ │ ├── GIFEncoderSize.d.ts │ │ ├── GIFEncoderSize.js │ │ ├── addFrame.d.ts │ │ ├── addFrame.js │ │ ├── allowUnknownBlocks.d.ts │ │ ├── allowUnknownBlocks.js │ │ ├── attachGif.d.ts │ │ ├── attachGif.js │ │ ├── checkFrameConsistency.d.ts │ │ ├── checkFrameConsistency.js │ │ ├── checkLZWEndCode.d.ts │ │ ├── checkLZWEndCode.js │ │ ├── createFrame.d.ts │ │ ├── createFrame.js │ │ ├── decodeOptions.d.ts │ │ ├── decodeOptions.js │ │ ├── deleteDecoder.d.ts │ │ ├── deleteDecoder.js │ │ ├── deleteEncoder.d.ts │ │ ├── deleteEncoder.js │ │ ├── deleteFrame.d.ts │ │ ├── deleteFrame.js │ │ ├── frameOption.d.ts │ │ ├── frameOption.js │ │ ├── newGIFDecoder.d.ts │ │ ├── newGIFDecoder.js │ │ ├── newGIFEncoder.d.ts │ │ ├── newGIFEncoder.js │ │ ├── nextFrameInfo.d.ts │ │ ├── nextFrameInfo.js │ │ ├── readNextFrame.d.ts │ │ ├── readNextFrame.js │ │ ├── saveEncoder.d.ts │ │ ├── saveEncoder.js │ │ ├── setColorOutput.d.ts │ │ ├── setColorOutput.js │ │ ├── setEncoderLoops.d.ts │ │ ├── setEncoderLoops.js │ │ ├── setEncoderOptions.d.ts │ │ ├── setEncoderOptions.js │ │ ├── setMemoryLimit.d.ts │ │ ├── setMemoryLimit.js │ │ ├── skipFrameDecoding.d.ts │ │ └── skipFrameDecoding.js │ ├── gradient │ │ ├── addColorStop.d.ts │ │ ├── addColorStop.js │ │ ├── newConicGradient.d.ts │ │ ├── newConicGradient.js │ │ ├── newLinearGradient.d.ts │ │ ├── newLinearGradient.js │ │ ├── newRadialGradient.d.ts │ │ └── newRadialGradient.js │ ├── helper │ │ ├── barData.d.ts │ │ ├── barData.js │ │ ├── barOptions.d.ts │ │ ├── barOptions.js │ │ ├── drawProgressBar.d.ts │ │ └── drawProgressBar.js │ ├── line │ │ ├── bezierCurveTo.d.ts │ │ ├── bezierCurveTo.js │ │ ├── lineDash.d.ts │ │ ├── lineDash.js │ │ ├── lineDashOffset.d.ts │ │ ├── lineDashOffset.js │ │ ├── lineJoin.d.ts │ │ ├── lineJoin.js │ │ ├── lineTo.d.ts │ │ ├── lineTo.js │ │ ├── lineWidth.d.ts │ │ ├── lineWidth.js │ │ ├── quadraticCurveTo.d.ts │ │ └── quadraticCurveTo.js │ ├── neuquant │ │ ├── NQindexOf.d.ts │ │ ├── NQindexOf.js │ │ ├── NQlookup.d.ts │ │ ├── NQlookup.js │ │ ├── NQmapPixel.d.ts │ │ ├── NQmapPixel.js │ │ ├── colorMapRgb.d.ts │ │ ├── colorMapRgb.js │ │ ├── colorMapRgba.d.ts │ │ ├── colorMapRgba.js │ │ ├── newNeuQuant.d.ts │ │ └── newNeuQuant.js │ ├── path │ │ ├── arc.d.ts │ │ ├── arc.js │ │ ├── arcTo.d.ts │ │ ├── arcTo.js │ │ ├── beginPath.d.ts │ │ ├── beginPath.js │ │ ├── clip.d.ts │ │ ├── clip.js │ │ ├── closePath.d.ts │ │ ├── closePath.js │ │ ├── ellipse.d.ts │ │ ├── ellipse.js │ │ ├── fill.d.ts │ │ ├── fill.js │ │ ├── moveTo.d.ts │ │ ├── moveTo.js │ │ ├── stroke.d.ts │ │ └── stroke.js │ ├── transform │ │ ├── getTransform.d.ts │ │ ├── getTransform.js │ │ ├── resetTransform.d.ts │ │ ├── resetTransform.js │ │ ├── rotate.d.ts │ │ ├── rotate.js │ │ ├── scale.d.ts │ │ ├── scale.js │ │ ├── setTransform.d.ts │ │ ├── setTransform.js │ │ ├── transform.d.ts │ │ ├── transform.js │ │ ├── translate.d.ts │ │ └── translate.js │ └── util │ │ ├── attachImage.d.ts │ │ ├── attachImage.js │ │ ├── canvasVersion.d.ts │ │ ├── canvasVersion.js │ │ ├── compositeOperation.d.ts │ │ ├── compositeOperation.js │ │ ├── deleteImage.d.ts │ │ ├── deleteImage.js │ │ ├── filter.d.ts │ │ ├── filter.js │ │ ├── fontFamilies.d.ts │ │ ├── fontFamilies.js │ │ ├── fontVariantCaps.d.ts │ │ ├── fontVariantCaps.js │ │ ├── getPixels.d.ts │ │ ├── getPixels.js │ │ ├── hexToRgb.d.ts │ │ ├── hexToRgb.js │ │ ├── hexToRgba.d.ts │ │ ├── hexToRgba.js │ │ ├── imageBuffer.d.ts │ │ ├── imageBuffer.js │ │ ├── imageSize.d.ts │ │ ├── imageSize.js │ │ ├── imageSmoothing.d.ts │ │ ├── imageSmoothing.js │ │ ├── indexedToHex.d.ts │ │ ├── indexedToHex.js │ │ ├── indexedToRgba.d.ts │ │ ├── indexedToRgba.js │ │ ├── letterSpacing.d.ts │ │ ├── letterSpacing.js │ │ ├── loadImage.d.ts │ │ ├── loadImage.js │ │ ├── measureText.d.ts │ │ ├── measureText.js │ │ ├── opacity.d.ts │ │ ├── opacity.js │ │ ├── rectAlign.d.ts │ │ ├── rectAlign.js │ │ ├── rectBaseline.d.ts │ │ ├── rectBaseline.js │ │ ├── registerFont.d.ts │ │ ├── registerFont.js │ │ ├── restore.d.ts │ │ ├── restore.js │ │ ├── rgbToHex.d.ts │ │ ├── rgbToHex.js │ │ ├── rgbaToHex.d.ts │ │ ├── rgbaToHex.js │ │ ├── save.d.ts │ │ ├── save.js │ │ ├── shadowOptions.d.ts │ │ ├── shadowOptions.js │ │ ├── textAlign.d.ts │ │ ├── textAlign.js │ │ ├── textBaseline.d.ts │ │ ├── textBaseline.js │ │ ├── wordSpacing.d.ts │ │ └── wordSpacing.js ├── index.d.ts ├── index.js ├── typings.d.ts └── typings.js ├── docs ├── .nojekyll ├── assets │ ├── highlight.css │ ├── icons.js │ ├── icons.svg │ ├── main.js │ ├── navigation.js │ ├── search.js │ └── style.css ├── classes │ ├── CanvasBuilder.html │ ├── CanvasManager.html │ ├── ForgeCanvas.html │ ├── GIFManager.html │ ├── GradientManager.html │ ├── ImageManager.html │ └── NeuQuantManager.html ├── enums │ ├── AlignOrBaseline.html │ ├── ColorDataType.html │ ├── ColorOutput.html │ ├── CompositingOperation.html │ ├── DecoderOption.html │ ├── DisposalMethod.html │ ├── FCError.html │ ├── FillOrStroke.html │ ├── FillOrStrokeOrClear.html │ ├── FillRule.html │ ├── FilterMethod.html │ ├── Filters.html │ ├── FontVariantCaps.html │ ├── FrameOption.html │ ├── GradientType.html │ ├── ImageFormat.html │ ├── LineJoinShape.html │ ├── MeasureTextProperty.html │ ├── RectAlign.html │ ├── RectBaseline.html │ ├── StyleType.html │ ├── TextAlign.html │ ├── TextBaseline.html │ └── WidthOrHeight.html ├── functions │ ├── loadFrame.html │ ├── parseArgs.html │ └── registerFonts.html ├── index.html ├── interfaces │ ├── BarData.html │ ├── BarOptions.html │ ├── CustomCanvasProperties.html │ ├── PieChartOptions.html │ └── ProgressBarOptions.html ├── modules.html └── variables │ ├── CanvasUtil.html │ ├── Colors.html │ ├── fontRegex.html │ ├── hexRegex.html │ └── rgbaRegex.html ├── metadata ├── enums.json └── functions.json ├── package.json ├── src ├── classes │ ├── builder.ts │ ├── index.ts │ ├── manager.ts │ └── util.ts ├── docgen.ts ├── functions │ ├── canvas │ │ ├── attachCanvas.ts │ │ ├── canvasBuffer.ts │ │ ├── canvasDataUrl.ts │ │ ├── canvasSize.ts │ │ ├── createCanvas.ts │ │ ├── deleteCanvas.ts │ │ ├── resizeCanvas.ts │ │ ├── saveCanvas.ts │ │ ├── setCanvasSize.ts │ │ └── trimCanvas.ts │ ├── drawing │ │ ├── drawImage.ts │ │ ├── drawRect.ts │ │ ├── drawText.ts │ │ └── putPixels.ts │ ├── gif │ │ ├── GIFDecoderOption.ts │ │ ├── GIFDecoderSize.ts │ │ ├── GIFEncoderGlobalPalette.ts │ │ ├── GIFEncoderSize.ts │ │ ├── addFrame.ts │ │ ├── allowUnknownBlocks.ts │ │ ├── attachGif.ts │ │ ├── checkFrameConsistency.ts │ │ ├── checkLZWEndCode.ts │ │ ├── createFrame.ts │ │ ├── decodeOptions.ts │ │ ├── deleteDecoder.ts │ │ ├── deleteEncoder.ts │ │ ├── deleteFrame.ts │ │ ├── frameOption.ts │ │ ├── newGIFDecoder.ts │ │ ├── newGIFEncoder.ts │ │ ├── nextFrameInfo.ts │ │ ├── readNextFrame.ts │ │ ├── saveEncoder.ts │ │ ├── setColorOutput.ts │ │ ├── setEncoderLoops.ts │ │ ├── setEncoderOptions.ts │ │ ├── setMemoryLimit.ts │ │ └── skipFrameDecoding.ts │ ├── gradient │ │ ├── addColorStop.ts │ │ ├── newConicGradient.ts │ │ ├── newLinearGradient.ts │ │ └── newRadialGradient.ts │ ├── helper │ │ ├── barData.ts │ │ ├── barOptions.ts │ │ └── drawProgressBar.ts │ ├── line │ │ ├── bezierCurveTo.ts │ │ ├── lineDash.ts │ │ ├── lineDashOffset.ts │ │ ├── lineJoin.ts │ │ ├── lineTo.ts │ │ ├── lineWidth.ts │ │ └── quadraticCurveTo.ts │ ├── neuquant │ │ ├── NQindexOf.ts │ │ ├── NQlookup.ts │ │ ├── NQmapPixel.ts │ │ ├── colorMapRgb.ts │ │ ├── colorMapRgba.ts │ │ └── newNeuQuant.ts │ ├── path │ │ ├── arc.ts │ │ ├── arcTo.ts │ │ ├── beginPath.ts │ │ ├── clip.ts │ │ ├── closePath.ts │ │ ├── ellipse.ts │ │ ├── fill.ts │ │ ├── moveTo.ts │ │ └── stroke.ts │ ├── transform │ │ ├── getTransform.ts │ │ ├── resetTransform.ts │ │ ├── rotate.ts │ │ ├── scale.ts │ │ ├── setTransform.ts │ │ ├── transform.ts │ │ └── translate.ts │ └── util │ │ ├── attachImage.ts │ │ ├── canvasVersion.ts │ │ ├── compositeOperation.ts │ │ ├── deleteImage.ts │ │ ├── filter.ts │ │ ├── fontFamilies.ts │ │ ├── fontVariantCaps.ts │ │ ├── getPixels.ts │ │ ├── hexToRgb.ts │ │ ├── hexToRgba.ts │ │ ├── imageBuffer.ts │ │ ├── imageSize.ts │ │ ├── imageSmoothing.ts │ │ ├── indexedToHex.ts │ │ ├── indexedToRgba.ts │ │ ├── letterSpacing.ts │ │ ├── loadImage.ts │ │ ├── measureText.ts │ │ ├── opacity.ts │ │ ├── rectAlign.ts │ │ ├── rectBaseline.ts │ │ ├── registerFont.ts │ │ ├── restore.ts │ │ ├── rgbToHex.ts │ │ ├── rgbaToHex.ts │ │ ├── save.ts │ │ ├── shadowOptions.ts │ │ ├── textAlign.ts │ │ ├── textBaseline.ts │ │ └── wordSpacing.ts ├── index.ts └── typings.ts ├── templates ├── Examples.md ├── FakeDm.js └── ReviewChart.js └── tsconfig.json /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | src/__tests__ 3 | dist/__tests__ -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | */__tests__/ 2 | templates 3 | docs 4 | metadata 5 | src 6 | TODO.meow 7 | assets 8 | tsconfig.json -------------------------------------------------------------------------------- /assets/forgecanvas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tryforge/ForgeCanvas/0feba362f7430080b72b9038234d5c3cd7987abb/assets/forgecanvas.png -------------------------------------------------------------------------------- /dist/classes/index.d.ts: -------------------------------------------------------------------------------- 1 | export * from './builder'; 2 | export * from './manager'; 3 | export * from './util'; 4 | -------------------------------------------------------------------------------- /dist/classes/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { 3 | if (k2 === undefined) k2 = k; 4 | var desc = Object.getOwnPropertyDescriptor(m, k); 5 | if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { 6 | desc = { enumerable: true, get: function() { return m[k]; } }; 7 | } 8 | Object.defineProperty(o, k2, desc); 9 | }) : (function(o, m, k, k2) { 10 | if (k2 === undefined) k2 = k; 11 | o[k2] = m[k]; 12 | })); 13 | var __exportStar = (this && this.__exportStar) || function(m, exports) { 14 | for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); 15 | }; 16 | Object.defineProperty(exports, "__esModule", { value: true }); 17 | __exportStar(require("./builder"), exports); 18 | __exportStar(require("./manager"), exports); 19 | __exportStar(require("./util"), exports); 20 | -------------------------------------------------------------------------------- /dist/docgen.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /dist/docgen.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const forgescript_1 = require("@tryforge/forgescript"); 4 | (0, forgescript_1.generateMetadata)(`${__dirname}/functions`, 'functions'); 5 | -------------------------------------------------------------------------------- /dist/functions/canvas/attachCanvas.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { ImageFormat } from '../..'; 3 | declare const _default: NativeFunction<[{ 4 | name: string; 5 | description: string; 6 | type: ArgType.String; 7 | required: true; 8 | rest: false; 9 | }, { 10 | name: string; 11 | description: string; 12 | type: ArgType.String; 13 | required: false; 14 | rest: false; 15 | }, { 16 | name: string; 17 | description: string; 18 | type: ArgType.Enum; 19 | enum: typeof ImageFormat; 20 | required: false; 21 | rest: false; 22 | }], true>; 23 | export default _default; 24 | -------------------------------------------------------------------------------- /dist/functions/canvas/canvasBuffer.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { ImageFormat } from '../..'; 3 | declare const _default: NativeFunction<[{ 4 | name: string; 5 | description: string; 6 | type: ArgType.String; 7 | required: false; 8 | rest: false; 9 | }, { 10 | name: string; 11 | description: string; 12 | type: ArgType.Enum; 13 | enum: typeof ImageFormat; 14 | required: false; 15 | rest: false; 16 | }], true>; 17 | export default _default; 18 | -------------------------------------------------------------------------------- /dist/functions/canvas/canvasBuffer.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const forgescript_1 = require("@tryforge/forgescript"); 4 | const __1 = require("../.."); 5 | exports.default = new forgescript_1.NativeFunction({ 6 | name: '$canvasBuffer', 7 | description: 'Returns buffer of a canvas.', 8 | version: '1.2.0', 9 | brackets: false, 10 | unwrap: true, 11 | args: [ 12 | { 13 | name: 'canvas', 14 | description: 'Name of the canvas.', 15 | type: forgescript_1.ArgType.String, 16 | required: false, 17 | rest: false 18 | }, 19 | { 20 | name: 'format', 21 | description: 'The image format.', 22 | type: forgescript_1.ArgType.Enum, 23 | enum: __1.ImageFormat, 24 | required: false, 25 | rest: false 26 | } 27 | ], 28 | execute(ctx, [name, f]) { 29 | const canvas = name 30 | ? ctx.canvasManager?.get(name) 31 | : ctx.canvasManager?.lastCurrent; 32 | if (!canvas) 33 | return this.customError(__1.FCError.NoCanvas); 34 | return this.success(`[${Array.from(canvas.buffer((f !== null 35 | ? 'image/' + (typeof f === 'number' ? __1.ImageFormat[f] : f) 36 | : 'image/png'))).join(', ')}]`); 37 | } 38 | }); 39 | -------------------------------------------------------------------------------- /dist/functions/canvas/canvasDataUrl.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { ImageFormat } from '../..'; 3 | declare const _default: NativeFunction<[{ 4 | name: string; 5 | description: string; 6 | type: ArgType.String; 7 | required: false; 8 | rest: false; 9 | }, { 10 | name: string; 11 | description: string; 12 | type: ArgType.Enum; 13 | enum: typeof ImageFormat; 14 | required: false; 15 | rest: false; 16 | }], true>; 17 | export default _default; 18 | -------------------------------------------------------------------------------- /dist/functions/canvas/canvasDataUrl.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const forgescript_1 = require("@tryforge/forgescript"); 4 | const __1 = require("../.."); 5 | exports.default = new forgescript_1.NativeFunction({ 6 | name: '$canvasDataUrl', 7 | description: 'Returns buffer of a canvas.', 8 | version: '1.2.2', 9 | brackets: false, 10 | unwrap: true, 11 | args: [ 12 | { 13 | name: 'canvas', 14 | description: 'Name of the canvas.', 15 | type: forgescript_1.ArgType.String, 16 | required: false, 17 | rest: false 18 | }, 19 | { 20 | name: 'format', 21 | description: 'The image format.', 22 | type: forgescript_1.ArgType.Enum, 23 | enum: __1.ImageFormat, 24 | required: false, 25 | rest: false 26 | } 27 | ], 28 | execute(ctx, [name, f]) { 29 | const canvas = name 30 | ? ctx.canvasManager?.get(name) 31 | : ctx.canvasManager?.lastCurrent; 32 | if (!canvas) 33 | return this.customError(__1.FCError.NoCanvas); 34 | return this.success(canvas.dataUrl((f !== null 35 | ? 'image/' + (typeof f === 'number' ? __1.ImageFormat[f] : f) 36 | : 'image/png'))); 37 | } 38 | }); 39 | -------------------------------------------------------------------------------- /dist/functions/canvas/canvasSize.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { WidthOrHeight } from '../..'; 3 | declare const _default: NativeFunction<[{ 4 | name: string; 5 | description: string; 6 | type: ArgType.String; 7 | required: false; 8 | rest: false; 9 | }, { 10 | name: string; 11 | description: string; 12 | type: ArgType.Enum; 13 | enum: typeof WidthOrHeight; 14 | required: false; 15 | rest: false; 16 | }], true>; 17 | export default _default; 18 | -------------------------------------------------------------------------------- /dist/functions/canvas/canvasSize.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const forgescript_1 = require("@tryforge/forgescript"); 4 | const __1 = require("../.."); 5 | exports.default = new forgescript_1.NativeFunction({ 6 | name: '$canvasSize', 7 | aliases: ['$canvasDimensions'], 8 | description: 'Returns canvas size.', 9 | version: '1.1.0', 10 | brackets: false, 11 | unwrap: true, 12 | args: [ 13 | { 14 | name: 'canvas', 15 | description: 'Name of the canvas.', 16 | type: forgescript_1.ArgType.String, 17 | required: false, 18 | rest: false 19 | }, 20 | { 21 | name: 'property', 22 | description: 'The size property to return.', 23 | type: forgescript_1.ArgType.Enum, 24 | enum: __1.WidthOrHeight, 25 | required: false, 26 | rest: false 27 | } 28 | ], 29 | execute(ctx, [name, property]) { 30 | const canvas = name 31 | ? ctx.canvasManager?.get(name) 32 | : ctx.canvasManager?.lastCurrent; 33 | if (!canvas) 34 | return this.customError(__1.FCError.NoCanvas); 35 | return this.success(property !== null // @ts-ignore 36 | ? canvas[__1.WidthOrHeight[(typeof property === 'string' ? __1.WidthOrHeight[property] : property)]] 37 | : JSON.stringify({ width: canvas.width, height: canvas.height })); 38 | } 39 | }); 40 | -------------------------------------------------------------------------------- /dist/functions/canvas/createCanvas.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: true; 7 | rest: false; 8 | }, { 9 | name: string; 10 | description: string; 11 | type: ArgType.Number; 12 | required: true; 13 | rest: false; 14 | }, { 15 | name: string; 16 | description: string; 17 | type: ArgType.Number; 18 | required: true; 19 | rest: false; 20 | }, { 21 | name: string; 22 | description: string; 23 | type: ArgType.Unknown; 24 | required: false; 25 | rest: true; 26 | }], false>; 27 | export default _default; 28 | -------------------------------------------------------------------------------- /dist/functions/canvas/deleteCanvas.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: true; 7 | rest: false; 8 | }], true>; 9 | export default _default; 10 | -------------------------------------------------------------------------------- /dist/functions/canvas/deleteCanvas.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const forgescript_1 = require("@tryforge/forgescript"); 4 | exports.default = new forgescript_1.NativeFunction({ 5 | name: '$deleteCanvas', 6 | aliases: ['$removeCanvas'], 7 | description: 'Deletes the canvas.', 8 | version: '1.0.0', 9 | brackets: true, 10 | unwrap: true, 11 | args: [ 12 | { 13 | name: 'name', 14 | description: 'Name of the canvas.', 15 | type: forgescript_1.ArgType.String, 16 | required: true, 17 | rest: false 18 | } 19 | ], 20 | execute(ctx, [name]) { 21 | ctx.canvasManager?.remove(name); 22 | return this.success(); 23 | } 24 | }); 25 | -------------------------------------------------------------------------------- /dist/functions/canvas/resizeCanvas.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: false; 7 | rest: false; 8 | }, { 9 | name: string; 10 | description: string; 11 | type: ArgType.Number; 12 | required: true; 13 | rest: false; 14 | }, { 15 | name: string; 16 | description: string; 17 | type: ArgType.Number; 18 | required: true; 19 | rest: false; 20 | }], true>; 21 | export default _default; 22 | -------------------------------------------------------------------------------- /dist/functions/canvas/resizeCanvas.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const forgescript_1 = require("@tryforge/forgescript"); 4 | const classes_1 = require("../../classes"); 5 | exports.default = new forgescript_1.NativeFunction({ 6 | name: '$resizeCanvas', 7 | aliases: ['$canvasResize'], 8 | description: 'Resizes a canvas.', 9 | version: '1.0.0', 10 | brackets: true, 11 | unwrap: true, 12 | args: [ 13 | { 14 | name: 'canvas', 15 | description: 'Name of the canvas.', 16 | type: forgescript_1.ArgType.String, 17 | required: false, 18 | rest: false 19 | }, 20 | { 21 | name: 'width', 22 | description: 'The new canvas width.', 23 | type: forgescript_1.ArgType.Number, 24 | required: true, 25 | rest: false 26 | }, 27 | { 28 | name: 'height', 29 | description: 'The new canvas height.', 30 | type: forgescript_1.ArgType.Number, 31 | required: true, 32 | rest: false 33 | }, 34 | ], 35 | execute(ctx, [name, w, h]) { 36 | const canvas = name 37 | ? ctx.canvasManager?.get(name) 38 | : ctx.canvasManager?.lastCurrent; 39 | if (!canvas) 40 | return this.customError(classes_1.FCError.NoCanvas); 41 | canvas.resize(w, h); 42 | return this.success(); 43 | } 44 | }); 45 | -------------------------------------------------------------------------------- /dist/functions/canvas/saveCanvas.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { ImageFormat } from '../..'; 3 | declare const _default: NativeFunction<[{ 4 | name: string; 5 | description: string; 6 | type: ArgType.String; 7 | required: false; 8 | rest: false; 9 | }, { 10 | name: string; 11 | description: string; 12 | type: ArgType.String; 13 | required: true; 14 | rest: false; 15 | }, { 16 | name: string; 17 | description: string; 18 | type: ArgType.Enum; 19 | enum: typeof ImageFormat; 20 | required: false; 21 | rest: false; 22 | }], true>; 23 | export default _default; 24 | -------------------------------------------------------------------------------- /dist/functions/canvas/setCanvasSize.d.ts: -------------------------------------------------------------------------------- 1 | import { ArgType, NativeFunction } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.Number; 6 | required: true; 7 | rest: false; 8 | }, { 9 | name: string; 10 | description: string; 11 | type: ArgType.Number; 12 | required: true; 13 | rest: false; 14 | }], true>; 15 | export default _default; 16 | -------------------------------------------------------------------------------- /dist/functions/canvas/setCanvasSize.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const forgescript_1 = require("@tryforge/forgescript"); 4 | const __1 = require("../.."); 5 | exports.default = new forgescript_1.NativeFunction({ 6 | name: '$setCanvasSize', 7 | aliases: ['$setCanvasDimensions'], 8 | description: 'Sets size of the new canvas.', 9 | version: '1.0.0', 10 | brackets: true, 11 | deprecated: true, 12 | unwrap: true, 13 | args: [ 14 | { 15 | name: 'width', 16 | description: 'Width of the new canvas.', 17 | type: forgescript_1.ArgType.Number, 18 | required: true, 19 | rest: false 20 | }, 21 | { 22 | name: 'height', 23 | description: 'Height of the new canvas.', 24 | type: forgescript_1.ArgType.Number, 25 | required: true, 26 | rest: false 27 | } 28 | ], 29 | execute(ctx, [w, h]) { 30 | if (!ctx.canvasManager || !(ctx.canvasManager instanceof __1.CanvasManager)) 31 | ctx.canvasManager = new __1.CanvasManager(); 32 | ctx.canvasManager.current.push(new __1.CanvasBuilder(w, h)); 33 | return this.success(); 34 | } 35 | }); 36 | -------------------------------------------------------------------------------- /dist/functions/canvas/trimCanvas.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: false; 7 | rest: false; 8 | }], true>; 9 | export default _default; 10 | -------------------------------------------------------------------------------- /dist/functions/canvas/trimCanvas.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const forgescript_1 = require("@tryforge/forgescript"); 4 | const classes_1 = require("../../classes"); 5 | exports.default = new forgescript_1.NativeFunction({ 6 | name: '$trimCanvas', 7 | aliases: ['$canvasTrim'], 8 | description: 'Trims a canvas.', 9 | version: '1.0.0', 10 | brackets: false, 11 | unwrap: true, 12 | args: [ 13 | { 14 | name: 'canvas', 15 | description: 'Name of the canvas.', 16 | type: forgescript_1.ArgType.String, 17 | required: false, 18 | rest: false 19 | } 20 | ], 21 | execute(ctx, [name]) { 22 | const canvas = name 23 | ? ctx.canvasManager?.get(name) 24 | : ctx.canvasManager?.lastCurrent; 25 | if (!canvas) 26 | return this.customError(classes_1.FCError.NoCanvas); 27 | canvas.trim(); 28 | return this.success(); 29 | } 30 | }); 31 | -------------------------------------------------------------------------------- /dist/functions/drawing/drawImage.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: false; 7 | rest: false; 8 | }, { 9 | name: string; 10 | description: string; 11 | type: ArgType.String; 12 | required: true; 13 | rest: false; 14 | }, { 15 | name: string; 16 | description: string; 17 | type: ArgType.Number; 18 | required: true; 19 | rest: false; 20 | }, { 21 | name: string; 22 | description: string; 23 | type: ArgType.Number; 24 | required: true; 25 | rest: false; 26 | }, { 27 | name: string; 28 | description: string; 29 | type: ArgType.Number; 30 | required: false; 31 | rest: false; 32 | }, { 33 | name: string; 34 | description: string; 35 | type: ArgType.Number; 36 | required: false; 37 | rest: false; 38 | }, { 39 | name: string; 40 | description: string; 41 | type: ArgType.Number; 42 | required: false; 43 | rest: true; 44 | }], true>; 45 | export default _default; 46 | -------------------------------------------------------------------------------- /dist/functions/drawing/drawRect.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { FillOrStrokeOrClear } from '../..'; 3 | declare const _default: NativeFunction<[{ 4 | name: string; 5 | description: string; 6 | type: ArgType.String; 7 | required: false; 8 | rest: false; 9 | }, { 10 | name: string; 11 | description: string; 12 | type: ArgType.Enum; 13 | enum: typeof FillOrStrokeOrClear; 14 | required: true; 15 | rest: false; 16 | }, { 17 | name: string; 18 | description: string; 19 | type: ArgType.String; 20 | required: false; 21 | rest: false; 22 | }, { 23 | name: string; 24 | description: string; 25 | type: ArgType.Number; 26 | required: true; 27 | rest: false; 28 | }, { 29 | name: string; 30 | description: string; 31 | type: ArgType.Number; 32 | required: true; 33 | rest: false; 34 | }, { 35 | name: string; 36 | description: string; 37 | type: ArgType.Number; 38 | required: true; 39 | rest: false; 40 | }, { 41 | name: string; 42 | description: string; 43 | type: ArgType.Number; 44 | required: true; 45 | rest: false; 46 | }, { 47 | name: string; 48 | description: string; 49 | type: ArgType.Number; 50 | required: false; 51 | rest: true; 52 | }], true>; 53 | export default _default; 54 | -------------------------------------------------------------------------------- /dist/functions/drawing/putPixels.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { ColorDataType } from '../..'; 3 | declare const _default: NativeFunction<[{ 4 | name: string; 5 | description: string; 6 | type: ArgType.String; 7 | required: false; 8 | rest: false; 9 | }, { 10 | name: string; 11 | description: string; 12 | type: ArgType.Json; 13 | required: true; 14 | rest: false; 15 | }, { 16 | name: string; 17 | description: string; 18 | type: ArgType.Number; 19 | required: true; 20 | rest: false; 21 | }, { 22 | name: string; 23 | description: string; 24 | type: ArgType.Number; 25 | required: true; 26 | rest: false; 27 | }, { 28 | name: string; 29 | description: string; 30 | type: ArgType.Number; 31 | required: true; 32 | rest: false; 33 | }, { 34 | name: string; 35 | description: string; 36 | type: ArgType.Number; 37 | required: true; 38 | rest: false; 39 | }, { 40 | name: string; 41 | description: string; 42 | type: ArgType.Enum; 43 | enum: typeof ColorDataType; 44 | required: false; 45 | rest: false; 46 | }], true>; 47 | export default _default; 48 | -------------------------------------------------------------------------------- /dist/functions/gif/GIFDecoderOption.d.ts: -------------------------------------------------------------------------------- 1 | import { ArgType, NativeFunction } from '@tryforge/forgescript'; 2 | import { DecoderOption } from '../..'; 3 | declare const _default: NativeFunction<[{ 4 | name: string; 5 | description: string; 6 | type: ArgType.String; 7 | required: true; 8 | rest: false; 9 | }, { 10 | name: string; 11 | description: string; 12 | type: ArgType.Enum; 13 | enum: typeof DecoderOption; 14 | required: true; 15 | rest: false; 16 | }], true>; 17 | export default _default; 18 | -------------------------------------------------------------------------------- /dist/functions/gif/GIFDecoderSize.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { WidthOrHeight } from '../..'; 3 | declare const _default: NativeFunction<[{ 4 | name: string; 5 | description: string; 6 | type: ArgType.String; 7 | required: true; 8 | rest: false; 9 | }, { 10 | name: string; 11 | description: string; 12 | type: ArgType.Enum; 13 | enum: typeof WidthOrHeight; 14 | required: false; 15 | rest: false; 16 | }], true>; 17 | export default _default; 18 | -------------------------------------------------------------------------------- /dist/functions/gif/GIFDecoderSize.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const forgescript_1 = require("@tryforge/forgescript"); 4 | const __1 = require("../.."); 5 | exports.default = new forgescript_1.NativeFunction({ 6 | name: '$GIFDecoderSize', 7 | aliases: ['$decoderSize'], 8 | description: 'Returns the size of the GIF Decoder.', 9 | version: '1.2.0', 10 | brackets: true, 11 | unwrap: true, 12 | args: [ 13 | { 14 | name: 'gif', 15 | description: 'Name of the Decoder.', 16 | type: forgescript_1.ArgType.String, 17 | required: true, 18 | rest: false 19 | }, 20 | { 21 | name: 'property', 22 | description: 'The size property to return.', 23 | type: forgescript_1.ArgType.Enum, 24 | enum: __1.WidthOrHeight, 25 | required: false, 26 | rest: false 27 | } 28 | ], 29 | execute(ctx, [name, property]) { 30 | const gif = ctx.gifManager?.getDecoder(name); 31 | if (!gif) 32 | return this.customError(__1.FCError.NoDecoder); 33 | return this.success(property !== null // @ts-ignore 34 | ? gif[__1.WidthOrHeight[(typeof property === 'string' ? __1.WidthOrHeight[property] : property)]] 35 | : JSON.stringify({ width: gif.width, height: gif.height })); 36 | } 37 | }); 38 | -------------------------------------------------------------------------------- /dist/functions/gif/GIFEncoderGlobalPalette.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: false; 7 | rest: false; 8 | }], true>; 9 | export default _default; 10 | -------------------------------------------------------------------------------- /dist/functions/gif/GIFEncoderGlobalPalette.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const forgescript_1 = require("@tryforge/forgescript"); 4 | const classes_1 = require("../../classes"); 5 | exports.default = new forgescript_1.NativeFunction({ 6 | name: '$GIFEncoderGlobalPalette', 7 | aliases: ['$encoderGlobalPalette', '$globalPalette'], 8 | description: 'Gets the global palette of the GIF Encoder.', 9 | version: '1.2.0', 10 | brackets: false, 11 | unwrap: true, 12 | args: [ 13 | { 14 | name: 'gif', 15 | description: 'Name of the GIF.', 16 | type: forgescript_1.ArgType.String, 17 | required: false, 18 | rest: false 19 | } 20 | ], 21 | execute(ctx, [name]) { 22 | const gif = name 23 | ? ctx.gifManager?.getEncoder(name) 24 | : ctx.gifManager?.lastCurrentEncoder; 25 | if (!gif) 26 | return this.customError(classes_1.FCError.NoEncoder); 27 | return this.success(gif.palette !== null 28 | ? `[${Array.from(gif.palette).join(', ')}]` : null); 29 | } 30 | }); 31 | -------------------------------------------------------------------------------- /dist/functions/gif/GIFEncoderSize.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { WidthOrHeight } from '../..'; 3 | declare const _default: NativeFunction<[{ 4 | name: string; 5 | description: string; 6 | type: ArgType.String; 7 | required: false; 8 | rest: false; 9 | }, { 10 | name: string; 11 | description: string; 12 | type: ArgType.Enum; 13 | enum: typeof WidthOrHeight; 14 | required: false; 15 | rest: false; 16 | }], true>; 17 | export default _default; 18 | -------------------------------------------------------------------------------- /dist/functions/gif/addFrame.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: false; 7 | rest: false; 8 | }, { 9 | name: string; 10 | description: string; 11 | type: ArgType.String; 12 | required: true; 13 | rest: false; 14 | }, { 15 | name: string; 16 | description: string; 17 | type: ArgType.Json; 18 | required: false; 19 | rest: false; 20 | }, { 21 | name: string; 22 | description: string; 23 | type: ArgType.Number; 24 | check: (x: number) => boolean; 25 | required: false; 26 | rest: false; 27 | }], true>; 28 | export default _default; 29 | -------------------------------------------------------------------------------- /dist/functions/gif/allowUnknownBlocks.d.ts: -------------------------------------------------------------------------------- 1 | import { ArgType, NativeFunction } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: false; 7 | rest: false; 8 | }, { 9 | name: string; 10 | description: string; 11 | type: ArgType.Boolean; 12 | required: true; 13 | rest: false; 14 | }], true>; 15 | export default _default; 16 | -------------------------------------------------------------------------------- /dist/functions/gif/attachGif.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: true; 7 | rest: false; 8 | }, { 9 | name: string; 10 | description: string; 11 | type: ArgType.String; 12 | required: false; 13 | rest: false; 14 | }], true>; 15 | export default _default; 16 | -------------------------------------------------------------------------------- /dist/functions/gif/attachGif.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const forgescript_1 = require("@tryforge/forgescript"); 4 | const discord_js_1 = require("discord.js"); 5 | const classes_1 = require("../../classes"); 6 | exports.default = new forgescript_1.NativeFunction({ 7 | name: '$attachGIF', 8 | aliases: ['$sendGIF', '$renderGIF', '$gifRender'], 9 | description: 'Attaches the GIF.', 10 | version: '1.2.0', 11 | brackets: true, 12 | unwrap: true, 13 | args: [ 14 | { 15 | name: 'gif', 16 | description: 'Name of the GIF.', 17 | type: forgescript_1.ArgType.String, 18 | required: true, 19 | rest: false 20 | }, 21 | { 22 | name: 'filename', 23 | description: 'The name of the GIF to be attached as.', 24 | type: forgescript_1.ArgType.String, 25 | required: false, 26 | rest: false 27 | } 28 | ], 29 | execute(ctx, [name, filename]) { 30 | const gif = ctx.gifManager?.getEncoder(name); 31 | filename = `${filename ?? name}.gif`; 32 | if (!gif) 33 | return this.customError(classes_1.FCError.NoEncoder); 34 | ctx.container.files.push(new discord_js_1.AttachmentBuilder(Buffer.from(gif.getBuffer()), { name: filename })); 35 | return this.success(); 36 | } 37 | }); 38 | -------------------------------------------------------------------------------- /dist/functions/gif/checkFrameConsistency.d.ts: -------------------------------------------------------------------------------- 1 | import { ArgType, NativeFunction } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: false; 7 | rest: false; 8 | }, { 9 | name: string; 10 | description: string; 11 | type: ArgType.Boolean; 12 | required: true; 13 | rest: false; 14 | }], true>; 15 | export default _default; 16 | -------------------------------------------------------------------------------- /dist/functions/gif/checkLZWEndCode.d.ts: -------------------------------------------------------------------------------- 1 | import { ArgType, NativeFunction } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: false; 7 | rest: false; 8 | }, { 9 | name: string; 10 | description: string; 11 | type: ArgType.Boolean; 12 | required: true; 13 | rest: false; 14 | }], true>; 15 | export default _default; 16 | -------------------------------------------------------------------------------- /dist/functions/gif/createFrame.d.ts: -------------------------------------------------------------------------------- 1 | import { ArgType, NativeFunction } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: true; 7 | rest: false; 8 | }, { 9 | name: string; 10 | description: string; 11 | type: ArgType.String; 12 | required: true; 13 | rest: false; 14 | }, { 15 | name: string; 16 | description: string; 17 | type: ArgType.Json; 18 | required: false; 19 | rest: false; 20 | }, { 21 | name: string; 22 | description: string; 23 | type: ArgType.Number; 24 | check: (x: number) => boolean; 25 | required: false; 26 | rest: false; 27 | }], true>; 28 | export default _default; 29 | -------------------------------------------------------------------------------- /dist/functions/gif/decodeOptions.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: true; 7 | rest: false; 8 | }, { 9 | name: string; 10 | description: string; 11 | type: ArgType.Unknown; 12 | required: false; 13 | rest: true; 14 | }], true>; 15 | export default _default; 16 | -------------------------------------------------------------------------------- /dist/functions/gif/decodeOptions.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const forgescript_1 = require("@tryforge/forgescript"); 4 | const gifsx_1 = require("@gifsx/gifsx"); 5 | const __1 = require("../.."); 6 | exports.default = new forgescript_1.NativeFunction({ 7 | name: '$decodeOptions', 8 | aliases: ['$decoderOptions'], 9 | description: 'Creates new GIF Decode Options.', 10 | version: '1.2.0', 11 | brackets: true, 12 | unwrap: true, 13 | args: [ 14 | { 15 | name: 'name', 16 | description: 'Name of the new GIF Decode Options.', 17 | type: forgescript_1.ArgType.String, 18 | required: true, 19 | rest: false 20 | }, 21 | { 22 | name: 'options', 23 | description: 'Options.', 24 | type: forgescript_1.ArgType.Unknown, 25 | required: false, 26 | rest: true 27 | } 28 | ], 29 | execute(ctx, [name]) { 30 | if (!ctx.gifManager || !(ctx.gifManager instanceof __1.GIFManager)) 31 | ctx.gifManager = new __1.GIFManager(); 32 | if (ctx.gifManager.currentOptions) { 33 | ctx.gifManager.setDecodeOptions(name, ctx.gifManager.currentOptions); 34 | ctx.gifManager.currentOptions = null; 35 | } 36 | else 37 | ctx.gifManager.setDecodeOptions(name, new gifsx_1.DecodeOptions()); 38 | return this.success(); 39 | } 40 | }); 41 | -------------------------------------------------------------------------------- /dist/functions/gif/deleteDecoder.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: true; 7 | rest: false; 8 | }], true>; 9 | export default _default; 10 | -------------------------------------------------------------------------------- /dist/functions/gif/deleteDecoder.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const forgescript_1 = require("@tryforge/forgescript"); 4 | exports.default = new forgescript_1.NativeFunction({ 5 | name: '$deleteDecoder', 6 | aliases: ['$removeDecoder'], 7 | description: 'Deletes the Decoder.', 8 | version: '1.2.0', 9 | brackets: true, 10 | unwrap: true, 11 | args: [ 12 | { 13 | name: 'name', 14 | description: 'Name of the Decoder.', 15 | type: forgescript_1.ArgType.String, 16 | required: true, 17 | rest: false 18 | } 19 | ], 20 | execute(ctx, [name]) { 21 | ctx.gifManager?.removeDecoder(name); 22 | return this.success(); 23 | } 24 | }); 25 | -------------------------------------------------------------------------------- /dist/functions/gif/deleteEncoder.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: true; 7 | rest: false; 8 | }], true>; 9 | export default _default; 10 | -------------------------------------------------------------------------------- /dist/functions/gif/deleteEncoder.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const forgescript_1 = require("@tryforge/forgescript"); 4 | exports.default = new forgescript_1.NativeFunction({ 5 | name: '$deleteEncoder', 6 | aliases: ['$removeEncoder'], 7 | description: 'Deletes the Encoder.', 8 | version: '1.2.0', 9 | brackets: true, 10 | unwrap: true, 11 | args: [ 12 | { 13 | name: 'name', 14 | description: 'Name of the Encoder.', 15 | type: forgescript_1.ArgType.String, 16 | required: true, 17 | rest: false 18 | } 19 | ], 20 | execute(ctx, [name]) { 21 | ctx.gifManager?.removeEncoder(name); 22 | return this.success(); 23 | } 24 | }); 25 | -------------------------------------------------------------------------------- /dist/functions/gif/deleteFrame.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: true; 7 | rest: false; 8 | }], true>; 9 | export default _default; 10 | -------------------------------------------------------------------------------- /dist/functions/gif/deleteFrame.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const forgescript_1 = require("@tryforge/forgescript"); 4 | exports.default = new forgescript_1.NativeFunction({ 5 | name: '$deleteFrame', 6 | aliases: ['$removeFrame'], 7 | description: 'Deletes the frame.', 8 | version: '1.2.0', 9 | brackets: true, 10 | unwrap: true, 11 | args: [ 12 | { 13 | name: 'name', 14 | description: 'Name of the frame.', 15 | type: forgescript_1.ArgType.String, 16 | required: true, 17 | rest: false 18 | } 19 | ], 20 | execute(ctx, [name]) { 21 | ctx.gifManager?.removeFrame(name); 22 | return this.success(); 23 | } 24 | }); 25 | -------------------------------------------------------------------------------- /dist/functions/gif/frameOption.d.ts: -------------------------------------------------------------------------------- 1 | import { ArgType, NativeFunction } from '@tryforge/forgescript'; 2 | import { FrameOption } from '../..'; 3 | declare const _default: NativeFunction<[{ 4 | name: string; 5 | description: string; 6 | type: ArgType.String; 7 | required: true; 8 | rest: false; 9 | }, { 10 | name: string; 11 | description: string; 12 | type: ArgType.Enum; 13 | enum: typeof FrameOption; 14 | required: true; 15 | rest: false; 16 | }], true>; 17 | export default _default; 18 | -------------------------------------------------------------------------------- /dist/functions/gif/newGIFDecoder.d.ts: -------------------------------------------------------------------------------- 1 | import { ArgType, NativeFunction } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: true; 7 | rest: false; 8 | }, { 9 | name: string; 10 | description: string; 11 | type: ArgType.String; 12 | required: true; 13 | rest: false; 14 | }, { 15 | name: string; 16 | description: string; 17 | type: ArgType.String; 18 | required: false; 19 | rest: false; 20 | }], true>; 21 | export default _default; 22 | -------------------------------------------------------------------------------- /dist/functions/gif/newGIFEncoder.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: true; 7 | rest: false; 8 | }, { 9 | name: string; 10 | description: string; 11 | type: ArgType.Number; 12 | required: true; 13 | rest: false; 14 | }, { 15 | name: string; 16 | description: string; 17 | type: ArgType.Number; 18 | required: true; 19 | rest: false; 20 | }, { 21 | name: string; 22 | description: string; 23 | type: ArgType.Json; 24 | required: false; 25 | rest: false; 26 | }, { 27 | name: string; 28 | description: string; 29 | type: ArgType.Unknown; 30 | required: false; 31 | rest: true; 32 | }], false>; 33 | export default _default; 34 | -------------------------------------------------------------------------------- /dist/functions/gif/nextFrameInfo.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: true; 7 | rest: false; 8 | }, { 9 | name: string; 10 | description: string; 11 | type: ArgType.String; 12 | required: true; 13 | rest: false; 14 | }], true>; 15 | export default _default; 16 | -------------------------------------------------------------------------------- /dist/functions/gif/nextFrameInfo.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const forgescript_1 = require("@tryforge/forgescript"); 4 | const classes_1 = require("../../classes"); 5 | exports.default = new forgescript_1.NativeFunction({ 6 | name: '$nextFrameInfo', 7 | description: 'Reads and saves the next frame info (skipping the buffer) of the GIF Decoder into an env.', 8 | version: '1.2.0', 9 | brackets: true, 10 | unwrap: true, 11 | args: [ 12 | { 13 | name: 'gif', 14 | description: 'Name of the Decoder.', 15 | type: forgescript_1.ArgType.String, 16 | required: true, 17 | rest: false 18 | }, 19 | { 20 | name: 'name', 21 | description: 'The frame name to save the info as.', 22 | type: forgescript_1.ArgType.String, 23 | required: true, 24 | rest: false 25 | } 26 | ], 27 | execute(ctx, [name, f]) { 28 | const gif = ctx.gifManager?.getDecoder(name); 29 | if (!gif) 30 | return this.customError(classes_1.FCError.NoDecoder); 31 | const frame = gif.nextFrameInfo(); 32 | if (frame) { 33 | ctx.gifManager?.setFrame(f, frame); 34 | return this.success(f); 35 | } 36 | ctx.gifManager?.removeFrame(f); 37 | return this.success(); 38 | } 39 | }); 40 | -------------------------------------------------------------------------------- /dist/functions/gif/readNextFrame.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: true; 7 | rest: false; 8 | }, { 9 | name: string; 10 | description: string; 11 | type: ArgType.String; 12 | required: true; 13 | rest: false; 14 | }], true>; 15 | export default _default; 16 | -------------------------------------------------------------------------------- /dist/functions/gif/readNextFrame.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const forgescript_1 = require("@tryforge/forgescript"); 4 | const classes_1 = require("../../classes"); 5 | exports.default = new forgescript_1.NativeFunction({ 6 | name: '$readNextFrame', 7 | description: 'Reads and saves the next frame (including the buffer) of the GIF Decoder into an env.', 8 | version: '1.2.0', 9 | brackets: true, 10 | unwrap: true, 11 | args: [ 12 | { 13 | name: 'gif', 14 | description: 'Name of the Decoder.', 15 | type: forgescript_1.ArgType.String, 16 | required: true, 17 | rest: false 18 | }, 19 | { 20 | name: 'name', 21 | description: 'Name of the env to save the frame info.', 22 | type: forgescript_1.ArgType.String, 23 | required: true, 24 | rest: false 25 | } 26 | ], 27 | execute(ctx, [name, f]) { 28 | const gif = ctx.gifManager?.getDecoder(name); 29 | if (!gif) 30 | return this.customError(classes_1.FCError.NoDecoder); 31 | const frame = gif.readNextFrame(); 32 | if (frame) { 33 | ctx.gifManager?.setFrame(f, frame); 34 | return this.success(f); 35 | } 36 | ctx.gifManager?.removeFrame(f); 37 | return this.success(); 38 | } 39 | }); 40 | -------------------------------------------------------------------------------- /dist/functions/gif/saveEncoder.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: false; 7 | rest: false; 8 | }, { 9 | name: string; 10 | description: string; 11 | type: ArgType.String; 12 | required: true; 13 | rest: false; 14 | }], true>; 15 | export default _default; 16 | -------------------------------------------------------------------------------- /dist/functions/gif/setColorOutput.d.ts: -------------------------------------------------------------------------------- 1 | import { ArgType, NativeFunction } from '@tryforge/forgescript'; 2 | import { ColorOutput } from '../..'; 3 | declare const _default: NativeFunction<[{ 4 | name: string; 5 | description: string; 6 | type: ArgType.String; 7 | required: false; 8 | rest: false; 9 | }, { 10 | name: string; 11 | description: string; 12 | type: ArgType.Enum; 13 | enum: typeof ColorOutput; 14 | required: true; 15 | rest: false; 16 | }], true>; 17 | export default _default; 18 | -------------------------------------------------------------------------------- /dist/functions/gif/setEncoderLoops.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: false; 7 | rest: false; 8 | }, { 9 | name: string; 10 | description: string; 11 | type: ArgType.Number; 12 | required: true; 13 | rest: false; 14 | }], true>; 15 | export default _default; 16 | -------------------------------------------------------------------------------- /dist/functions/gif/setEncoderLoops.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const forgescript_1 = require("@tryforge/forgescript"); 4 | const classes_1 = require("../../classes"); 5 | exports.default = new forgescript_1.NativeFunction({ 6 | name: '$setEncoderLoops', 7 | aliases: [ 8 | '$setEncoderRepeat', 9 | '$setGIFEncoderRepeat', 10 | '$setGIFEncoderLoops', 11 | '$setLoops', 12 | '$setRepeat' 13 | ], 14 | description: 'Sets the number of loops for the GIF Encoder.', 15 | version: '1.2.0', 16 | brackets: true, 17 | unwrap: true, 18 | args: [ 19 | { 20 | name: 'gif', 21 | description: 'Name of the GIF.', 22 | type: forgescript_1.ArgType.String, 23 | required: false, 24 | rest: false 25 | }, 26 | { 27 | name: 'loops', 28 | description: 'Number of loops.', 29 | type: forgescript_1.ArgType.Number, 30 | required: true, 31 | rest: false 32 | } 33 | ], 34 | execute(ctx, [name, loops]) { 35 | const gif = name 36 | ? ctx.gifManager?.getEncoder(name) 37 | : ctx.gifManager?.lastCurrentEncoder; 38 | if (!gif) 39 | return this.customError(classes_1.FCError.NoEncoder); 40 | gif.setRepeat(loops); 41 | return this.success(); 42 | } 43 | }); 44 | -------------------------------------------------------------------------------- /dist/functions/gif/setEncoderOptions.d.ts: -------------------------------------------------------------------------------- 1 | import { ArgType, NativeFunction } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.Number; 6 | required: true; 7 | rest: false; 8 | }, { 9 | name: string; 10 | description: string; 11 | type: ArgType.Number; 12 | required: true; 13 | rest: false; 14 | }, { 15 | name: string; 16 | description: string; 17 | type: ArgType.Json; 18 | required: false; 19 | rest: false; 20 | }], true>; 21 | export default _default; 22 | -------------------------------------------------------------------------------- /dist/functions/gif/setMemoryLimit.d.ts: -------------------------------------------------------------------------------- 1 | import { ArgType, NativeFunction } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: false; 7 | rest: false; 8 | }, { 9 | name: string; 10 | description: string; 11 | type: ArgType.Number; 12 | required: true; 13 | rest: false; 14 | }], true>; 15 | export default _default; 16 | -------------------------------------------------------------------------------- /dist/functions/gif/skipFrameDecoding.d.ts: -------------------------------------------------------------------------------- 1 | import { ArgType, NativeFunction } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: false; 7 | rest: false; 8 | }, { 9 | name: string; 10 | description: string; 11 | type: ArgType.Boolean; 12 | required: true; 13 | rest: false; 14 | }], true>; 15 | export default _default; 16 | -------------------------------------------------------------------------------- /dist/functions/gradient/addColorStop.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: false; 7 | rest: false; 8 | }, { 9 | name: string; 10 | description: string; 11 | type: ArgType.Number; 12 | required: true; 13 | rest: false; 14 | }, { 15 | name: string; 16 | description: string; 17 | type: ArgType.String; 18 | required: true; 19 | rest: false; 20 | }], true>; 21 | export default _default; 22 | -------------------------------------------------------------------------------- /dist/functions/gradient/newConicGradient.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: true; 7 | rest: false; 8 | }, { 9 | name: string; 10 | description: string; 11 | type: ArgType.Number; 12 | required: true; 13 | rest: false; 14 | }, { 15 | name: string; 16 | description: string; 17 | type: ArgType.Number; 18 | required: true; 19 | rest: false; 20 | }, { 21 | name: string; 22 | description: string; 23 | type: ArgType.Number; 24 | required: true; 25 | rest: false; 26 | }, { 27 | name: string; 28 | description: string; 29 | type: ArgType.Number; 30 | required: false; 31 | rest: true; 32 | }], true>; 33 | export default _default; 34 | -------------------------------------------------------------------------------- /dist/functions/gradient/newLinearGradient.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: true; 7 | rest: false; 8 | }, { 9 | name: string; 10 | description: string; 11 | type: ArgType.Number; 12 | required: true; 13 | rest: false; 14 | }, { 15 | name: string; 16 | description: string; 17 | type: ArgType.Number; 18 | required: true; 19 | rest: false; 20 | }, { 21 | name: string; 22 | description: string; 23 | type: ArgType.Number; 24 | required: true; 25 | rest: false; 26 | }, { 27 | name: string; 28 | description: string; 29 | type: ArgType.Number; 30 | required: true; 31 | rest: false; 32 | }, { 33 | name: string; 34 | description: string; 35 | type: ArgType.Number; 36 | required: false; 37 | rest: true; 38 | }], true>; 39 | export default _default; 40 | -------------------------------------------------------------------------------- /dist/functions/gradient/newRadialGradient.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: true; 7 | rest: false; 8 | }, { 9 | name: string; 10 | description: string; 11 | type: ArgType.Number; 12 | required: true; 13 | rest: false; 14 | }, { 15 | name: string; 16 | description: string; 17 | type: ArgType.Number; 18 | required: true; 19 | rest: false; 20 | }, { 21 | name: string; 22 | description: string; 23 | type: ArgType.Number; 24 | required: true; 25 | rest: false; 26 | }, { 27 | name: string; 28 | description: string; 29 | type: ArgType.Number; 30 | required: true; 31 | rest: false; 32 | }, { 33 | name: string; 34 | description: string; 35 | type: ArgType.Number; 36 | required: true; 37 | rest: false; 38 | }, { 39 | name: string; 40 | description: string; 41 | type: ArgType.Number; 42 | required: true; 43 | rest: false; 44 | }, { 45 | name: string; 46 | description: string; 47 | type: ArgType.Number; 48 | required: false; 49 | rest: true; 50 | }], true>; 51 | export default _default; 52 | -------------------------------------------------------------------------------- /dist/functions/helper/barData.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: true; 7 | rest: false; 8 | }, { 9 | name: string; 10 | description: string; 11 | type: ArgType.String; 12 | required: true; 13 | rest: false; 14 | }], true>; 15 | export default _default; 16 | -------------------------------------------------------------------------------- /dist/functions/helper/barData.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const forgescript_1 = require("@tryforge/forgescript"); 4 | const __1 = require("../.."); 5 | exports.default = new forgescript_1.NativeFunction({ 6 | name: '$barData', 7 | description: 'Adds data for progress bars.', 8 | version: '1.2.0', 9 | brackets: true, 10 | unwrap: true, 11 | args: [ 12 | { 13 | name: 'value', 14 | description: 'Value for the data segment (percentage or absolute).', 15 | type: forgescript_1.ArgType.String, 16 | required: true, 17 | rest: false 18 | }, 19 | { 20 | name: 'style', 21 | description: 'Style for the data segment.', 22 | type: forgescript_1.ArgType.String, 23 | required: true, 24 | rest: false 25 | } 26 | ], 27 | execute(ctx, [value, style]) { 28 | const numericValue = Number.parseFloat(value); 29 | if (Number.isNaN(numericValue) || numericValue < 0) 30 | return this.customError(__1.FCError.InvalidBarData); 31 | const barData = (ctx.getEnvironmentKey('progressBarData') || []); 32 | barData.push({ value: numericValue, style }); 33 | ctx.setEnvironmentKey('progressBarData', barData); 34 | return this.success(); 35 | } 36 | }); 37 | -------------------------------------------------------------------------------- /dist/functions/helper/barOptions.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: true; 7 | rest: true; 8 | }], true>; 9 | export default _default; 10 | -------------------------------------------------------------------------------- /dist/functions/helper/drawProgressBar.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: false; 7 | rest: false; 8 | }, { 9 | name: string; 10 | description: string; 11 | type: ArgType.Number; 12 | required: true; 13 | rest: false; 14 | }, { 15 | name: string; 16 | description: string; 17 | type: ArgType.Number; 18 | required: true; 19 | rest: false; 20 | }, { 21 | name: string; 22 | description: string; 23 | type: ArgType.Number; 24 | required: true; 25 | rest: false; 26 | }, { 27 | name: string; 28 | description: string; 29 | type: ArgType.Number; 30 | required: true; 31 | rest: false; 32 | }, { 33 | name: string; 34 | description: string; 35 | type: ArgType.Json; 36 | required: true; 37 | rest: false; 38 | }], true>; 39 | export default _default; 40 | -------------------------------------------------------------------------------- /dist/functions/line/bezierCurveTo.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: false; 7 | rest: false; 8 | }, { 9 | name: string; 10 | description: string; 11 | type: ArgType.Number; 12 | required: true; 13 | rest: false; 14 | }, { 15 | name: string; 16 | description: string; 17 | type: ArgType.Number; 18 | required: true; 19 | rest: false; 20 | }, { 21 | name: string; 22 | description: string; 23 | type: ArgType.Number; 24 | required: true; 25 | rest: false; 26 | }, { 27 | name: string; 28 | description: string; 29 | type: ArgType.Number; 30 | required: true; 31 | rest: false; 32 | }, { 33 | name: string; 34 | description: string; 35 | type: ArgType.Number; 36 | required: true; 37 | rest: false; 38 | }, { 39 | name: string; 40 | description: string; 41 | type: ArgType.Number; 42 | required: true; 43 | rest: false; 44 | }], true>; 45 | export default _default; 46 | -------------------------------------------------------------------------------- /dist/functions/line/lineDash.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: false; 7 | rest: false; 8 | }, { 9 | name: string; 10 | description: string; 11 | type: ArgType.Json; 12 | required: false; 13 | rest: false; 14 | }], true>; 15 | export default _default; 16 | -------------------------------------------------------------------------------- /dist/functions/line/lineDashOffset.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: false; 7 | rest: false; 8 | }, { 9 | name: string; 10 | description: string; 11 | type: ArgType.Number; 12 | required: false; 13 | rest: false; 14 | }], true>; 15 | export default _default; 16 | -------------------------------------------------------------------------------- /dist/functions/line/lineDashOffset.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const forgescript_1 = require("@tryforge/forgescript"); 4 | const classes_1 = require("../../classes"); 5 | exports.default = new forgescript_1.NativeFunction({ 6 | name: '$lineDashOffset', 7 | description: 'Sets or returns the line dash offset in a canvas.', 8 | version: '1.0.0', 9 | brackets: false, 10 | unwrap: true, 11 | args: [ 12 | { 13 | name: 'canvas', 14 | description: 'Name of the canvas.', 15 | type: forgescript_1.ArgType.String, 16 | required: false, 17 | rest: false 18 | }, 19 | { 20 | name: 'offset', 21 | description: 'The new offset.', 22 | type: forgescript_1.ArgType.Number, 23 | required: false, 24 | rest: false 25 | } 26 | ], 27 | execute(ctx, [name, offset]) { 28 | const canvas = (name 29 | ? ctx.canvasManager?.get(name) 30 | : ctx.canvasManager?.lastCurrent)?.ctx; 31 | if (!canvas) 32 | return this.customError(classes_1.FCError.NoCanvas); 33 | return this.success(offset 34 | ? (canvas.lineDashOffset = offset, undefined) 35 | : canvas.lineDashOffset); 36 | } 37 | }); 38 | -------------------------------------------------------------------------------- /dist/functions/line/lineJoin.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { LineJoinShape } from '../..'; 3 | declare const _default: NativeFunction<[{ 4 | name: string; 5 | description: string; 6 | type: ArgType.String; 7 | required: false; 8 | rest: false; 9 | }, { 10 | name: string; 11 | description: string; 12 | type: ArgType.Enum; 13 | enum: typeof LineJoinShape; 14 | required: false; 15 | rest: false; 16 | }], true>; 17 | export default _default; 18 | -------------------------------------------------------------------------------- /dist/functions/line/lineJoin.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const forgescript_1 = require("@tryforge/forgescript"); 4 | const __1 = require("../.."); 5 | exports.default = new forgescript_1.NativeFunction({ 6 | name: '$lineJoin', 7 | description: 'Sets or returns the line join shape in a canvas.', 8 | version: '1.0.0', 9 | brackets: false, 10 | unwrap: true, 11 | args: [ 12 | { 13 | name: 'canvas', 14 | description: 'Name of the canvas.', 15 | type: forgescript_1.ArgType.String, 16 | required: false, 17 | rest: false 18 | }, 19 | { 20 | name: 'shape', 21 | description: 'The new shape.', 22 | type: forgescript_1.ArgType.Enum, 23 | enum: __1.LineJoinShape, 24 | required: false, 25 | rest: false 26 | } 27 | ], 28 | execute(ctx, [name, shape]) { 29 | const canvas = (name 30 | ? ctx.canvasManager?.get(name) 31 | : ctx.canvasManager?.lastCurrent)?.ctx; 32 | if (!canvas) 33 | return this.customError(__1.FCError.NoCanvas); 34 | return this.success(shape 35 | ? (canvas.lineJoin = (typeof shape === 'number' 36 | ? __1.LineJoinShape[shape] 37 | : shape), undefined) : canvas.lineJoin); 38 | } 39 | }); 40 | -------------------------------------------------------------------------------- /dist/functions/line/lineTo.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: false; 7 | rest: false; 8 | }, { 9 | name: string; 10 | description: string; 11 | type: ArgType.Number; 12 | required: true; 13 | rest: false; 14 | }, { 15 | name: string; 16 | description: string; 17 | type: ArgType.Number; 18 | required: true; 19 | rest: false; 20 | }], true>; 21 | export default _default; 22 | -------------------------------------------------------------------------------- /dist/functions/line/lineWidth.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: false; 7 | rest: false; 8 | }, { 9 | name: string; 10 | description: string; 11 | type: ArgType.Number; 12 | required: false; 13 | rest: false; 14 | }], true>; 15 | export default _default; 16 | -------------------------------------------------------------------------------- /dist/functions/line/lineWidth.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const forgescript_1 = require("@tryforge/forgescript"); 4 | const classes_1 = require("../../classes"); 5 | exports.default = new forgescript_1.NativeFunction({ 6 | name: '$lineWidth', 7 | aliases: ['$strokeWidth'], 8 | description: 'Sets or returns the line width in a canvas.', 9 | version: '1.0.0', 10 | brackets: false, 11 | unwrap: true, 12 | args: [ 13 | { 14 | name: 'canvas', 15 | description: 'Name of the canvas.', 16 | type: forgescript_1.ArgType.String, 17 | required: false, 18 | rest: false 19 | }, 20 | { 21 | name: 'width', 22 | description: 'The new line width.', 23 | type: forgescript_1.ArgType.Number, 24 | required: false, 25 | rest: false 26 | } 27 | ], 28 | execute(ctx, [name, width]) { 29 | const canvas = name 30 | ? ctx.canvasManager?.get(name) 31 | : ctx.canvasManager?.lastCurrent; 32 | if (!canvas) 33 | return this.customError(classes_1.FCError.NoCanvas); 34 | if (!width) 35 | return this.success(canvas.ctx.lineWidth); 36 | canvas.ctx.lineWidth = width; 37 | return this.success(); 38 | } 39 | }); 40 | -------------------------------------------------------------------------------- /dist/functions/line/quadraticCurveTo.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: false; 7 | rest: false; 8 | }, { 9 | name: string; 10 | description: string; 11 | type: ArgType.Number; 12 | required: true; 13 | rest: false; 14 | }, { 15 | name: string; 16 | description: string; 17 | type: ArgType.Number; 18 | required: true; 19 | rest: false; 20 | }, { 21 | name: string; 22 | description: string; 23 | type: ArgType.Number; 24 | required: true; 25 | rest: false; 26 | }, { 27 | name: string; 28 | description: string; 29 | type: ArgType.Number; 30 | required: true; 31 | rest: false; 32 | }], true>; 33 | export default _default; 34 | -------------------------------------------------------------------------------- /dist/functions/neuquant/NQindexOf.d.ts: -------------------------------------------------------------------------------- 1 | import { ArgType, NativeFunction } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: true; 7 | rest: false; 8 | }, { 9 | name: string; 10 | description: string; 11 | type: ArgType.Number; 12 | required: true; 13 | rest: false; 14 | }, { 15 | name: string; 16 | description: string; 17 | type: ArgType.Number; 18 | required: true; 19 | rest: false; 20 | }, { 21 | name: string; 22 | description: string; 23 | type: ArgType.Number; 24 | required: true; 25 | rest: false; 26 | }, { 27 | name: string; 28 | description: string; 29 | type: ArgType.Number; 30 | required: true; 31 | rest: false; 32 | }], true>; 33 | export default _default; 34 | -------------------------------------------------------------------------------- /dist/functions/neuquant/NQlookup.d.ts: -------------------------------------------------------------------------------- 1 | import { ArgType, NativeFunction } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: true; 7 | rest: false; 8 | }, { 9 | name: string; 10 | description: string; 11 | type: ArgType.Number; 12 | required: true; 13 | rest: false; 14 | }], true>; 15 | export default _default; 16 | -------------------------------------------------------------------------------- /dist/functions/neuquant/NQlookup.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const forgescript_1 = require("@tryforge/forgescript"); 4 | const classes_1 = require("../../classes"); 5 | exports.default = new forgescript_1.NativeFunction({ 6 | name: '$NQlookup', 7 | description: 'Lookup pixel values for color at idx in the colormap.', 8 | version: '1.2.1', 9 | brackets: true, 10 | unwrap: true, 11 | args: [ 12 | { 13 | name: 'name', 14 | description: 'Name of the NeuQuant instance.', 15 | type: forgescript_1.ArgType.String, 16 | required: true, 17 | rest: false 18 | }, 19 | { 20 | name: 'idx', 21 | description: 'The index of the color in the colormap.', 22 | type: forgescript_1.ArgType.Number, 23 | required: true, 24 | rest: false 25 | } 26 | ], 27 | execute(ctx, [name, idx]) { 28 | const nq = ctx.neuquantManager?.get(name); 29 | if (!nq) 30 | return this.customError(classes_1.FCError.NoNeuQuant); 31 | return this.success(nq.lookup(idx)); 32 | } 33 | }); 34 | -------------------------------------------------------------------------------- /dist/functions/neuquant/NQmapPixel.d.ts: -------------------------------------------------------------------------------- 1 | import { ArgType, NativeFunction } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: true; 7 | rest: false; 8 | }, { 9 | name: string; 10 | description: string; 11 | type: ArgType.Number; 12 | required: true; 13 | rest: false; 14 | }, { 15 | name: string; 16 | description: string; 17 | type: ArgType.Number; 18 | required: true; 19 | rest: false; 20 | }, { 21 | name: string; 22 | description: string; 23 | type: ArgType.Number; 24 | required: true; 25 | rest: false; 26 | }, { 27 | name: string; 28 | description: string; 29 | type: ArgType.Number; 30 | required: true; 31 | rest: false; 32 | }], true>; 33 | export default _default; 34 | -------------------------------------------------------------------------------- /dist/functions/neuquant/colorMapRgb.d.ts: -------------------------------------------------------------------------------- 1 | import { ArgType, NativeFunction } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: true; 7 | rest: false; 8 | }], true>; 9 | export default _default; 10 | -------------------------------------------------------------------------------- /dist/functions/neuquant/colorMapRgb.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const forgescript_1 = require("@tryforge/forgescript"); 4 | const classes_1 = require("../../classes"); 5 | exports.default = new forgescript_1.NativeFunction({ 6 | name: '$colorMapRgb', 7 | aliases: ['$NQcolorMapRgb'], 8 | description: 'Returns the RGB color map calculated from the sample.', 9 | version: '1.2.1', 10 | brackets: true, 11 | unwrap: true, 12 | args: [ 13 | { 14 | name: 'name', 15 | description: 'Name of the NeuQuant instance.', 16 | type: forgescript_1.ArgType.String, 17 | required: true, 18 | rest: false 19 | } 20 | ], 21 | execute(ctx, [name]) { 22 | const nq = ctx.neuquantManager?.get(name); 23 | if (!nq) 24 | return this.customError(classes_1.FCError.NoNeuQuant); 25 | return this.success(nq.colorMapRgb()); 26 | } 27 | }); 28 | -------------------------------------------------------------------------------- /dist/functions/neuquant/colorMapRgba.d.ts: -------------------------------------------------------------------------------- 1 | import { ArgType, NativeFunction } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: true; 7 | rest: false; 8 | }], true>; 9 | export default _default; 10 | -------------------------------------------------------------------------------- /dist/functions/neuquant/colorMapRgba.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const forgescript_1 = require("@tryforge/forgescript"); 4 | const classes_1 = require("../../classes"); 5 | exports.default = new forgescript_1.NativeFunction({ 6 | name: '$colorMapRgba', 7 | aliases: ['$NQcolorMapRgba'], 8 | description: 'Returns the RGBA color map calculated from the sample.', 9 | version: '1.2.1', 10 | brackets: true, 11 | unwrap: true, 12 | args: [ 13 | { 14 | name: 'name', 15 | description: 'Name of the NeuQuant instance.', 16 | type: forgescript_1.ArgType.String, 17 | required: true, 18 | rest: false 19 | } 20 | ], 21 | execute(ctx, [name]) { 22 | const nq = ctx.neuquantManager?.get(name); 23 | if (!nq) 24 | return this.customError(classes_1.FCError.NoNeuQuant); 25 | return this.success(nq.colorMapRgba()); 26 | } 27 | }); 28 | -------------------------------------------------------------------------------- /dist/functions/neuquant/newNeuQuant.d.ts: -------------------------------------------------------------------------------- 1 | import { ArgType, NativeFunction } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: true; 7 | rest: false; 8 | }, { 9 | name: string; 10 | description: string; 11 | type: ArgType.Number; 12 | required: true; 13 | rest: false; 14 | }, { 15 | name: string; 16 | description: string; 17 | type: ArgType.Number; 18 | required: true; 19 | rest: false; 20 | }, { 21 | name: string; 22 | description: string; 23 | type: ArgType.Json; 24 | required: true; 25 | rest: false; 26 | }], true>; 27 | export default _default; 28 | -------------------------------------------------------------------------------- /dist/functions/path/arc.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: false; 7 | rest: false; 8 | }, { 9 | name: string; 10 | description: string; 11 | type: ArgType.Number; 12 | required: true; 13 | rest: false; 14 | }, { 15 | name: string; 16 | description: string; 17 | type: ArgType.Number; 18 | required: true; 19 | rest: false; 20 | }, { 21 | name: string; 22 | description: string; 23 | type: ArgType.Number; 24 | required: true; 25 | rest: false; 26 | }, { 27 | name: string; 28 | description: string; 29 | type: ArgType.Number; 30 | required: true; 31 | rest: false; 32 | }, { 33 | name: string; 34 | description: string; 35 | type: ArgType.Number; 36 | required: true; 37 | rest: false; 38 | }, { 39 | name: string; 40 | description: string; 41 | type: ArgType.Boolean; 42 | required: false; 43 | rest: false; 44 | }], true>; 45 | export default _default; 46 | -------------------------------------------------------------------------------- /dist/functions/path/arcTo.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: false; 7 | rest: false; 8 | }, { 9 | name: string; 10 | description: string; 11 | type: ArgType.Number; 12 | required: true; 13 | rest: false; 14 | }, { 15 | name: string; 16 | description: string; 17 | type: ArgType.Number; 18 | required: true; 19 | rest: false; 20 | }, { 21 | name: string; 22 | description: string; 23 | type: ArgType.Number; 24 | required: true; 25 | rest: false; 26 | }, { 27 | name: string; 28 | description: string; 29 | type: ArgType.Number; 30 | required: true; 31 | rest: false; 32 | }, { 33 | name: string; 34 | description: string; 35 | type: ArgType.Number; 36 | required: true; 37 | rest: false; 38 | }], true>; 39 | export default _default; 40 | -------------------------------------------------------------------------------- /dist/functions/path/beginPath.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: false; 7 | rest: false; 8 | }], true>; 9 | export default _default; 10 | -------------------------------------------------------------------------------- /dist/functions/path/beginPath.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const forgescript_1 = require("@tryforge/forgescript"); 4 | const classes_1 = require("../../classes"); 5 | exports.default = new forgescript_1.NativeFunction({ 6 | name: '$beginPath', 7 | aliases: ['$startPath', '$pathStart'], 8 | description: 'Begins a new path.', 9 | version: '1.0.0', 10 | brackets: false, 11 | unwrap: true, 12 | args: [ 13 | { 14 | name: 'canvas', 15 | description: 'Name of the canvas.', 16 | type: forgescript_1.ArgType.String, 17 | required: false, 18 | rest: false 19 | } 20 | ], 21 | execute(ctx, [name]) { 22 | const canvas = name 23 | ? ctx.canvasManager?.get(name) 24 | : ctx.canvasManager?.lastCurrent; 25 | if (!canvas) 26 | return this.customError(classes_1.FCError.NoCanvas); 27 | canvas.ctx.beginPath(); 28 | return this.success(); 29 | } 30 | }); 31 | -------------------------------------------------------------------------------- /dist/functions/path/clip.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { FillRule } from '../..'; 3 | declare const _default: NativeFunction<[{ 4 | name: string; 5 | description: string; 6 | type: ArgType.String; 7 | required: false; 8 | rest: false; 9 | }, { 10 | name: string; 11 | description: string; 12 | type: ArgType.Enum; 13 | enum: typeof FillRule; 14 | required: false; 15 | rest: false; 16 | }], true>; 17 | export default _default; 18 | -------------------------------------------------------------------------------- /dist/functions/path/clip.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const forgescript_1 = require("@tryforge/forgescript"); 4 | const __1 = require("../.."); 5 | exports.default = new forgescript_1.NativeFunction({ 6 | name: '$clip', 7 | aliases: ['$clipCanvas', '$canvasClip'], 8 | description: 'Turns the current path into the current clipping region.', 9 | version: '1.0.0', 10 | brackets: false, 11 | unwrap: true, 12 | args: [ 13 | { 14 | name: 'canvas', 15 | description: 'Name of the canvas.', 16 | type: forgescript_1.ArgType.String, 17 | required: false, 18 | rest: false 19 | }, 20 | { 21 | name: 'fillRule', 22 | description: 'The fill rule', 23 | type: forgescript_1.ArgType.Enum, 24 | enum: __1.FillRule, 25 | required: false, 26 | rest: false 27 | } 28 | ], 29 | execute(ctx, [name, rule]) { 30 | const canvas = name 31 | ? ctx.canvasManager?.get(name) 32 | : ctx.canvasManager?.lastCurrent; 33 | if (!canvas) 34 | return this.customError(__1.FCError.NoCanvas); 35 | canvas.ctx.clip((typeof rule === 'number' ? __1.FillRule[rule] : rule)); 36 | return this.success(); 37 | } 38 | }); 39 | -------------------------------------------------------------------------------- /dist/functions/path/closePath.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: false; 7 | rest: false; 8 | }], true>; 9 | export default _default; 10 | -------------------------------------------------------------------------------- /dist/functions/path/closePath.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const forgescript_1 = require("@tryforge/forgescript"); 4 | const classes_1 = require("../../classes"); 5 | exports.default = new forgescript_1.NativeFunction({ 6 | name: '$closePath', 7 | aliases: ['$endPath'], 8 | description: 'Adds a straight line from the current point to the start of the current path.', 9 | version: '1.0.0', 10 | unwrap: true, 11 | args: [ 12 | { 13 | name: 'canvas', 14 | description: 'Name of the canvas.', 15 | type: forgescript_1.ArgType.String, 16 | required: false, 17 | rest: false 18 | } 19 | ], 20 | execute(ctx, [name]) { 21 | const canvas = name 22 | ? ctx.canvasManager?.get(name) 23 | : ctx.canvasManager?.lastCurrent; 24 | if (!canvas) 25 | return this.customError(classes_1.FCError.NoCanvas); 26 | canvas.ctx.closePath(); 27 | return this.success(); 28 | } 29 | }); 30 | -------------------------------------------------------------------------------- /dist/functions/path/ellipse.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: false; 7 | rest: false; 8 | }, { 9 | name: string; 10 | description: string; 11 | type: ArgType.Number; 12 | required: true; 13 | rest: false; 14 | }, { 15 | name: string; 16 | description: string; 17 | type: ArgType.Number; 18 | required: true; 19 | rest: false; 20 | }, { 21 | name: string; 22 | description: string; 23 | type: ArgType.Number; 24 | required: true; 25 | rest: false; 26 | }, { 27 | name: string; 28 | description: string; 29 | type: ArgType.Number; 30 | required: true; 31 | rest: false; 32 | }, { 33 | name: string; 34 | description: string; 35 | type: ArgType.Number; 36 | required: true; 37 | rest: false; 38 | }, { 39 | name: string; 40 | description: string; 41 | type: ArgType.Number; 42 | required: true; 43 | rest: false; 44 | }, { 45 | name: string; 46 | description: string; 47 | type: ArgType.Number; 48 | required: true; 49 | rest: false; 50 | }, { 51 | name: string; 52 | description: string; 53 | type: ArgType.Boolean; 54 | required: false; 55 | rest: false; 56 | }], true>; 57 | export default _default; 58 | -------------------------------------------------------------------------------- /dist/functions/path/fill.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { FillRule } from '../..'; 3 | declare const _default: NativeFunction<[{ 4 | name: string; 5 | description: string; 6 | type: ArgType.String; 7 | required: false; 8 | rest: false; 9 | }, { 10 | name: string; 11 | description: string; 12 | type: ArgType.String; 13 | required: true; 14 | rest: false; 15 | }, { 16 | name: string; 17 | description: string; 18 | type: ArgType.Enum; 19 | enum: typeof FillRule; 20 | required: false; 21 | rest: false; 22 | }], true>; 23 | export default _default; 24 | -------------------------------------------------------------------------------- /dist/functions/path/moveTo.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: false; 7 | rest: false; 8 | }, { 9 | name: string; 10 | description: string; 11 | type: ArgType.Number; 12 | required: true; 13 | rest: false; 14 | }, { 15 | name: string; 16 | description: string; 17 | type: ArgType.Number; 18 | required: true; 19 | rest: false; 20 | }], true>; 21 | export default _default; 22 | -------------------------------------------------------------------------------- /dist/functions/path/moveTo.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const forgescript_1 = require("@tryforge/forgescript"); 4 | const classes_1 = require("../../classes"); 5 | exports.default = new forgescript_1.NativeFunction({ 6 | name: '$moveTo', 7 | description: 'Begins a new path at the point specified by the given (x, y) coordinates.', 8 | version: '1.0.0', 9 | brackets: true, 10 | unwrap: true, 11 | args: [ 12 | { 13 | name: 'canvas', 14 | description: 'Name of the canvas.', 15 | type: forgescript_1.ArgType.String, 16 | required: false, 17 | rest: false 18 | }, 19 | { 20 | name: 'x', 21 | description: 'The X coordinate of the point.', 22 | type: forgescript_1.ArgType.Number, 23 | required: true, 24 | rest: false 25 | }, 26 | { 27 | name: 'y', 28 | description: 'The Y coordinate of the point.', 29 | type: forgescript_1.ArgType.Number, 30 | required: true, 31 | rest: false 32 | } 33 | ], 34 | execute(ctx, [name, x, y]) { 35 | const canvas = name 36 | ? ctx.canvasManager?.get(name) 37 | : ctx.canvasManager?.lastCurrent; 38 | if (!canvas) 39 | return this.customError(classes_1.FCError.NoCanvas); 40 | canvas.ctx.moveTo(x, y); 41 | return this.success(); 42 | } 43 | }); 44 | -------------------------------------------------------------------------------- /dist/functions/path/stroke.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: false; 7 | rest: false; 8 | }, { 9 | name: string; 10 | description: string; 11 | type: ArgType.String; 12 | required: true; 13 | rest: false; 14 | }], true>; 15 | export default _default; 16 | -------------------------------------------------------------------------------- /dist/functions/transform/getTransform.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: false; 7 | rest: false; 8 | }], true>; 9 | export default _default; 10 | -------------------------------------------------------------------------------- /dist/functions/transform/getTransform.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const forgescript_1 = require("@tryforge/forgescript"); 4 | const classes_1 = require("../../classes"); 5 | exports.default = new forgescript_1.NativeFunction({ 6 | name: '$getTransform', 7 | description: 'Returns the current transformation matrix.', 8 | version: '1.0.0', 9 | brackets: false, 10 | unwrap: true, 11 | args: [ 12 | { 13 | name: 'canvas', 14 | description: 'Name of the canvas.', 15 | type: forgescript_1.ArgType.String, 16 | required: false, 17 | rest: false 18 | } 19 | ], 20 | execute(ctx, [name]) { 21 | const canvas = name 22 | ? ctx.canvasManager?.get(name) 23 | : ctx.canvasManager?.lastCurrent; 24 | if (!canvas) 25 | return this.customError(classes_1.FCError.NoCanvas); 26 | const { a, b, c, d, e, f } = canvas.ctx.getTransform(); 27 | return this.success(JSON.stringify([a, b, c, d, e, f])); 28 | } 29 | }); 30 | -------------------------------------------------------------------------------- /dist/functions/transform/resetTransform.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: false; 7 | rest: false; 8 | }], true>; 9 | export default _default; 10 | -------------------------------------------------------------------------------- /dist/functions/transform/resetTransform.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const forgescript_1 = require("@tryforge/forgescript"); 4 | const classes_1 = require("../../classes"); 5 | exports.default = new forgescript_1.NativeFunction({ 6 | name: '$resetTransform', 7 | description: 'Resets the current transformation.', 8 | version: '1.0.0', 9 | brackets: false, 10 | unwrap: true, 11 | args: [ 12 | { 13 | name: 'canvas', 14 | description: 'Name of the canvas.', 15 | type: forgescript_1.ArgType.String, 16 | required: false, 17 | rest: false 18 | } 19 | ], 20 | execute(ctx, [name]) { 21 | const canvas = name 22 | ? ctx.canvasManager?.get(name) 23 | : ctx.canvasManager?.lastCurrent; 24 | if (!canvas) 25 | return this.customError(classes_1.FCError.NoCanvas); 26 | canvas.ctx.resetTransform(); 27 | return this.success(); 28 | } 29 | }); 30 | -------------------------------------------------------------------------------- /dist/functions/transform/rotate.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: false; 7 | rest: false; 8 | }, { 9 | name: string; 10 | description: string; 11 | type: ArgType.Number; 12 | required: true; 13 | rest: false; 14 | }], true>; 15 | export default _default; 16 | -------------------------------------------------------------------------------- /dist/functions/transform/rotate.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const forgescript_1 = require("@tryforge/forgescript"); 4 | const classes_1 = require("../../classes"); 5 | exports.default = new forgescript_1.NativeFunction({ 6 | name: '$rotate', 7 | aliases: ['$rotateCanvas', '$rotation'], 8 | description: 'Rotates a canvas.', 9 | version: '1.0.0', 10 | brackets: true, 11 | unwrap: true, 12 | args: [ 13 | { 14 | name: 'canvas', 15 | description: 'Name of the canvas.', 16 | type: forgescript_1.ArgType.String, 17 | required: false, 18 | rest: false 19 | }, 20 | { 21 | name: 'angle', 22 | description: 'The rotation angle.', 23 | type: forgescript_1.ArgType.Number, 24 | required: true, 25 | rest: false 26 | } 27 | ], 28 | execute(ctx, [name, angle]) { 29 | const canvas = name 30 | ? ctx.canvasManager?.get(name) 31 | : ctx.canvasManager?.lastCurrent; 32 | if (!canvas) 33 | return this.customError(classes_1.FCError.NoCanvas); 34 | canvas.rotate(angle); 35 | return this.success(); 36 | } 37 | }); 38 | -------------------------------------------------------------------------------- /dist/functions/transform/scale.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: false; 7 | rest: false; 8 | }, { 9 | name: string; 10 | description: string; 11 | type: ArgType.Number; 12 | required: true; 13 | rest: false; 14 | }, { 15 | name: string; 16 | description: string; 17 | type: ArgType.Number; 18 | required: true; 19 | rest: false; 20 | }], true>; 21 | export default _default; 22 | -------------------------------------------------------------------------------- /dist/functions/transform/scale.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const forgescript_1 = require("@tryforge/forgescript"); 4 | const classes_1 = require("../../classes"); 5 | exports.default = new forgescript_1.NativeFunction({ 6 | name: '$scale', 7 | description: 'Adds a scaling transformation to the canvas.', 8 | version: '1.0.0', 9 | brackets: true, 10 | unwrap: true, 11 | args: [ 12 | { 13 | name: 'canvas', 14 | description: 'Name of the canvas.', 15 | type: forgescript_1.ArgType.String, 16 | required: false, 17 | rest: false 18 | }, 19 | { 20 | name: 'x', 21 | description: 'Scaling factor in the horizontal direction', 22 | type: forgescript_1.ArgType.Number, 23 | required: true, 24 | rest: false 25 | }, 26 | { 27 | name: 'y', 28 | description: 'Scaling factor in the vertical direction', 29 | type: forgescript_1.ArgType.Number, 30 | required: true, 31 | rest: false 32 | } 33 | ], 34 | execute(ctx, [name, x, y]) { 35 | const canvas = name 36 | ? ctx.canvasManager?.get(name) 37 | : ctx.canvasManager?.lastCurrent; 38 | if (!canvas) 39 | return this.customError(classes_1.FCError.NoCanvas); 40 | canvas.ctx.scale(x, y); 41 | return this.success(); 42 | } 43 | }); 44 | -------------------------------------------------------------------------------- /dist/functions/transform/setTransform.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: false; 7 | rest: false; 8 | }, { 9 | name: string; 10 | description: string; 11 | type: ArgType.Number; 12 | required: true; 13 | rest: false; 14 | }, { 15 | name: string; 16 | description: string; 17 | type: ArgType.Number; 18 | required: true; 19 | rest: false; 20 | }, { 21 | name: string; 22 | description: string; 23 | type: ArgType.Number; 24 | required: true; 25 | rest: false; 26 | }, { 27 | name: string; 28 | description: string; 29 | type: ArgType.Number; 30 | required: true; 31 | rest: false; 32 | }, { 33 | name: string; 34 | description: string; 35 | type: ArgType.Number; 36 | required: true; 37 | rest: false; 38 | }, { 39 | name: string; 40 | description: string; 41 | type: ArgType.Number; 42 | required: true; 43 | rest: false; 44 | }], true>; 45 | export default _default; 46 | -------------------------------------------------------------------------------- /dist/functions/transform/transform.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: false; 7 | rest: false; 8 | }, { 9 | name: string; 10 | description: string; 11 | type: ArgType.Number; 12 | required: true; 13 | rest: false; 14 | }, { 15 | name: string; 16 | description: string; 17 | type: ArgType.Number; 18 | required: true; 19 | rest: false; 20 | }, { 21 | name: string; 22 | description: string; 23 | type: ArgType.Number; 24 | required: true; 25 | rest: false; 26 | }, { 27 | name: string; 28 | description: string; 29 | type: ArgType.Number; 30 | required: true; 31 | rest: false; 32 | }, { 33 | name: string; 34 | description: string; 35 | type: ArgType.Number; 36 | required: true; 37 | rest: false; 38 | }, { 39 | name: string; 40 | description: string; 41 | type: ArgType.Number; 42 | required: true; 43 | rest: false; 44 | }], true>; 45 | export default _default; 46 | -------------------------------------------------------------------------------- /dist/functions/transform/translate.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: false; 7 | rest: false; 8 | }, { 9 | name: string; 10 | description: string; 11 | type: ArgType.Number; 12 | required: true; 13 | rest: false; 14 | }, { 15 | name: string; 16 | description: string; 17 | type: ArgType.Number; 18 | required: true; 19 | rest: false; 20 | }], true>; 21 | export default _default; 22 | -------------------------------------------------------------------------------- /dist/functions/transform/translate.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const forgescript_1 = require("@tryforge/forgescript"); 4 | const classes_1 = require("../../classes"); 5 | exports.default = new forgescript_1.NativeFunction({ 6 | name: '$translate', 7 | description: 'Adds a translation transformation.', 8 | version: '1.0.0', 9 | brackets: true, 10 | unwrap: true, 11 | args: [ 12 | { 13 | name: 'canvas', 14 | description: 'Name of the canvas.', 15 | type: forgescript_1.ArgType.String, 16 | required: false, 17 | rest: false 18 | }, 19 | { 20 | name: 'x', 21 | description: 'Distance to move in the horizontal direction.', 22 | type: forgescript_1.ArgType.Number, 23 | required: true, 24 | rest: false 25 | }, 26 | { 27 | name: 'y', 28 | description: 'Distance to move in the vertical direction.', 29 | type: forgescript_1.ArgType.Number, 30 | required: true, 31 | rest: false 32 | } 33 | ], 34 | execute(ctx, [name, x, y]) { 35 | const canvas = name 36 | ? ctx.canvasManager?.get(name) 37 | : ctx.canvasManager?.lastCurrent; 38 | if (!canvas) 39 | return this.customError(classes_1.FCError.NoCanvas); 40 | canvas.ctx.translate(x, y); 41 | return this.success(); 42 | } 43 | }); 44 | -------------------------------------------------------------------------------- /dist/functions/util/attachImage.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: true; 7 | rest: false; 8 | }, { 9 | name: string; 10 | description: string; 11 | type: ArgType.String; 12 | required: false; 13 | rest: false; 14 | }], true>; 15 | export default _default; 16 | -------------------------------------------------------------------------------- /dist/functions/util/attachImage.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const forgescript_1 = require("@tryforge/forgescript"); 4 | const discord_js_1 = require("discord.js"); 5 | const classes_1 = require("../../classes"); 6 | exports.default = new forgescript_1.NativeFunction({ 7 | name: '$attachImage', 8 | aliases: ['$sendImage', '$renderImage', '$imageRender'], 9 | description: 'Attaches the image.', 10 | version: '1.2.0', 11 | brackets: true, 12 | unwrap: true, 13 | args: [ 14 | { 15 | name: 'image', 16 | description: 'Name of the image.', 17 | type: forgescript_1.ArgType.String, 18 | required: true, 19 | rest: false 20 | }, 21 | { 22 | name: 'filename', 23 | description: 'The name with the extension of the image to be attached as.', 24 | type: forgescript_1.ArgType.String, 25 | required: false, 26 | rest: false 27 | } 28 | ], 29 | async execute(ctx, [name, filename]) { 30 | const img = await ctx.imageManager?.get(name)?.getBuffer(); 31 | if (!img) 32 | return this.customError(classes_1.FCError.NoImage); 33 | ctx.container.files.push(new discord_js_1.AttachmentBuilder(img, { name: filename ?? `${name}.png` })); 34 | return this.success(); 35 | } 36 | }); 37 | -------------------------------------------------------------------------------- /dist/functions/util/canvasVersion.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[], true>; 3 | export default _default; 4 | -------------------------------------------------------------------------------- /dist/functions/util/canvasVersion.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const forgescript_1 = require("@tryforge/forgescript"); 4 | const package_json_1 = require("../../../package.json"); 5 | exports.default = new forgescript_1.NativeFunction({ 6 | name: '$canvasVersion', 7 | description: 'Returns the forge.canvas version.', 8 | version: '1.1.0', 9 | brackets: false, 10 | unwrap: true, 11 | args: [], 12 | execute() { return this.success(package_json_1.version); } 13 | }); 14 | -------------------------------------------------------------------------------- /dist/functions/util/compositeOperation.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { CompositingOperation } from '../..'; 3 | declare const _default: NativeFunction<[{ 4 | name: string; 5 | description: string; 6 | type: ArgType.String; 7 | required: false; 8 | rest: false; 9 | }, { 10 | name: string; 11 | description: string; 12 | type: ArgType.Enum; 13 | enum: typeof CompositingOperation; 14 | required: false; 15 | rest: false; 16 | }], true>; 17 | export default _default; 18 | -------------------------------------------------------------------------------- /dist/functions/util/deleteImage.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: true; 7 | rest: false; 8 | }], true>; 9 | export default _default; 10 | -------------------------------------------------------------------------------- /dist/functions/util/deleteImage.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const forgescript_1 = require("@tryforge/forgescript"); 4 | exports.default = new forgescript_1.NativeFunction({ 5 | name: '$deleteImage', 6 | aliases: ['$removeImage'], 7 | description: 'Deletes the image.', 8 | version: '1.2.0', 9 | brackets: true, 10 | unwrap: true, 11 | args: [ 12 | { 13 | name: 'name', 14 | description: 'Name of the image.', 15 | type: forgescript_1.ArgType.String, 16 | required: true, 17 | rest: false 18 | } 19 | ], 20 | execute(ctx, [name]) { 21 | ctx.imageManager?.remove(name); 22 | return this.success(); 23 | } 24 | }); 25 | -------------------------------------------------------------------------------- /dist/functions/util/filter.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { FilterMethod, Filters } from '../..'; 3 | declare const _default: NativeFunction<[{ 4 | name: string; 5 | description: string; 6 | type: ArgType.String; 7 | required: false; 8 | rest: false; 9 | }, { 10 | name: string; 11 | description: string; 12 | type: ArgType.Enum; 13 | enum: typeof FilterMethod; 14 | required: true; 15 | rest: false; 16 | }, { 17 | name: string; 18 | description: string; 19 | type: ArgType.Enum; 20 | enum: typeof Filters; 21 | required: false; 22 | rest: false; 23 | }, { 24 | name: string; 25 | description: string; 26 | type: ArgType.String; 27 | required: false; 28 | rest: false; 29 | }], true>; 30 | export default _default; 31 | -------------------------------------------------------------------------------- /dist/functions/util/fontFamilies.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: false; 7 | rest: false; 8 | }], true>; 9 | export default _default; 10 | -------------------------------------------------------------------------------- /dist/functions/util/fontFamilies.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const forgescript_1 = require("@tryforge/forgescript"); 4 | const canvas_1 = require("@napi-rs/canvas"); 5 | exports.default = new forgescript_1.NativeFunction({ 6 | name: '$fontFamilies', 7 | aliases: ['$fontFam', '$fonts', '$fontNames'], 8 | description: 'Returns a list of the available fonts.', 9 | version: '1.0.0', 10 | brackets: false, 11 | unwrap: true, 12 | args: [{ 13 | name: 'separator', 14 | description: 'The font separator.', 15 | type: forgescript_1.ArgType.String, 16 | required: false, 17 | rest: false 18 | }], 19 | execute(_, [sep]) { 20 | return this.success(canvas_1.GlobalFonts.families 21 | .map(x => x?.family) 22 | .join(sep ?? ', ')); 23 | } 24 | }); 25 | -------------------------------------------------------------------------------- /dist/functions/util/fontVariantCaps.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { FontVariantCaps } from '../..'; 3 | declare const _default: NativeFunction<[{ 4 | name: string; 5 | description: string; 6 | type: ArgType.String; 7 | required: false; 8 | rest: false; 9 | }, { 10 | name: string; 11 | description: string; 12 | type: ArgType.Enum; 13 | enum: typeof FontVariantCaps; 14 | required: false; 15 | rest: false; 16 | }], true>; 17 | export default _default; 18 | -------------------------------------------------------------------------------- /dist/functions/util/fontVariantCaps.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const forgescript_1 = require("@tryforge/forgescript"); 4 | const __1 = require("../.."); 5 | exports.default = new forgescript_1.NativeFunction({ 6 | name: '$fontVariantCaps', 7 | aliases: ['$fontCaps'], 8 | description: 'Sets or returns the capitalization of the text.', 9 | version: '1.1.0', 10 | brackets: false, 11 | unwrap: true, 12 | args: [ 13 | { 14 | name: 'canvas', 15 | description: 'Name of the canvas.', 16 | type: forgescript_1.ArgType.String, 17 | required: false, 18 | rest: false 19 | }, 20 | { 21 | name: 'type', 22 | description: 'The new alternative capitalization.', 23 | type: forgescript_1.ArgType.Enum, 24 | enum: __1.FontVariantCaps, 25 | required: false, 26 | rest: false 27 | } 28 | ], 29 | execute(ctx, [name, t]) { 30 | const canvas = (name 31 | ? ctx.canvasManager?.get(name) 32 | : ctx.canvasManager?.lastCurrent)?.ctx; 33 | if (!canvas) 34 | return this.customError(__1.FCError.NoCanvas); 35 | return this.success(t !== null 36 | ? (canvas.fontVariantCaps = (typeof t === 'number' 37 | ? __1.FontVariantCaps[t] 38 | : t), undefined) : canvas.fontVariantCaps); 39 | } 40 | }); 41 | -------------------------------------------------------------------------------- /dist/functions/util/getPixels.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { ColorDataType } from '../..'; 3 | declare const _default: NativeFunction<[{ 4 | name: string; 5 | description: string; 6 | type: ArgType.String; 7 | required: false; 8 | rest: false; 9 | }, { 10 | name: string; 11 | description: string; 12 | type: ArgType.Number; 13 | required: true; 14 | rest: false; 15 | }, { 16 | name: string; 17 | description: string; 18 | type: ArgType.Number; 19 | required: true; 20 | rest: false; 21 | }, { 22 | name: string; 23 | description: string; 24 | type: ArgType.Number; 25 | required: true; 26 | rest: false; 27 | }, { 28 | name: string; 29 | description: string; 30 | type: ArgType.Number; 31 | required: true; 32 | rest: false; 33 | }, { 34 | name: string; 35 | description: string; 36 | type: ArgType.Enum; 37 | enum: typeof ColorDataType; 38 | required: false; 39 | rest: false; 40 | }], true>; 41 | export default _default; 42 | -------------------------------------------------------------------------------- /dist/functions/util/hexToRgb.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: true; 7 | rest: true; 8 | }], true>; 9 | export default _default; 10 | -------------------------------------------------------------------------------- /dist/functions/util/hexToRgb.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const forgescript_1 = require("@tryforge/forgescript"); 4 | const gifsx_1 = require("@gifsx/gifsx"); 5 | exports.default = new forgescript_1.NativeFunction({ 6 | name: '$hexToRgb', 7 | description: 'Converts HEX into RGB.', 8 | version: '1.2.1', 9 | brackets: true, 10 | unwrap: true, 11 | args: [ 12 | { 13 | name: 'hex', 14 | description: 'The hex to convert into RGB.', 15 | type: forgescript_1.ArgType.String, 16 | required: true, 17 | rest: true 18 | } 19 | ], 20 | execute(_, [hex]) { 21 | try { 22 | const res = (0, gifsx_1.hexToRgb)(hex); 23 | return this.success(`[${res.join(', ')}]`); 24 | } 25 | catch (e) { 26 | return this.customError(e.toString()); 27 | } 28 | } 29 | }); 30 | -------------------------------------------------------------------------------- /dist/functions/util/hexToRgba.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: true; 7 | rest: true; 8 | }], true>; 9 | export default _default; 10 | -------------------------------------------------------------------------------- /dist/functions/util/hexToRgba.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const forgescript_1 = require("@tryforge/forgescript"); 4 | const gifsx_1 = require("@gifsx/gifsx"); 5 | exports.default = new forgescript_1.NativeFunction({ 6 | name: '$hexToRgba', 7 | description: 'Converts HEX into RGBA.', 8 | version: '1.2.1', 9 | brackets: true, 10 | unwrap: true, 11 | args: [ 12 | { 13 | name: 'hex', 14 | description: 'The hex to convert into RGBA.', 15 | type: forgescript_1.ArgType.String, 16 | required: true, 17 | rest: true 18 | } 19 | ], 20 | execute(_, [hex]) { 21 | try { 22 | const res = (0, gifsx_1.hexToRgba)(hex); 23 | return this.success(`[${res.join(', ')}]`); 24 | } 25 | catch (e) { 26 | return this.customError(e.toString()); 27 | } 28 | } 29 | }); 30 | -------------------------------------------------------------------------------- /dist/functions/util/imageBuffer.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: true; 7 | rest: false; 8 | }], true>; 9 | export default _default; 10 | -------------------------------------------------------------------------------- /dist/functions/util/imageBuffer.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const forgescript_1 = require("@tryforge/forgescript"); 4 | const canvas_1 = require("@napi-rs/canvas"); 5 | const classes_1 = require("../../classes"); 6 | exports.default = new forgescript_1.NativeFunction({ 7 | name: '$imageBuffer', 8 | description: 'Returns image\'s buffer.', 9 | version: '1.2.0', 10 | brackets: true, 11 | unwrap: true, 12 | args: [ 13 | { 14 | name: 'path', 15 | description: 'The image path.', 16 | type: forgescript_1.ArgType.String, 17 | required: true, 18 | rest: false 19 | } 20 | ], 21 | async execute(ctx, [path]) { 22 | let image; 23 | if (path.startsWith('images://') && ctx.imageManager) 24 | image = ctx.imageManager.get(path.slice(9)); 25 | else 26 | image = await (0, canvas_1.loadImage)(path); 27 | if (!image) 28 | return this.customError(classes_1.FCError.NoImage); 29 | return this.success(`[${Array.from(await image.getBuffer() ?? []).join(', ')}]`); 30 | } 31 | }); 32 | -------------------------------------------------------------------------------- /dist/functions/util/imageSize.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { WidthOrHeight } from '../..'; 3 | declare const _default: NativeFunction<[{ 4 | name: string; 5 | description: string; 6 | type: ArgType.String; 7 | required: true; 8 | rest: false; 9 | }, { 10 | name: string; 11 | description: string; 12 | type: ArgType.Enum; 13 | enum: typeof WidthOrHeight; 14 | required: false; 15 | rest: false; 16 | }], true>; 17 | export default _default; 18 | -------------------------------------------------------------------------------- /dist/functions/util/imageSmoothing.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: false; 7 | rest: false; 8 | }, { 9 | name: string; 10 | description: string; 11 | type: ArgType.Boolean; 12 | required: false; 13 | rest: false; 14 | }], true>; 15 | export default _default; 16 | -------------------------------------------------------------------------------- /dist/functions/util/imageSmoothing.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const forgescript_1 = require("@tryforge/forgescript"); 4 | const classes_1 = require("../../classes"); 5 | exports.default = new forgescript_1.NativeFunction({ 6 | name: '$imageSmoothing', 7 | description: 'Sets or returns the image smoothing in a canvas.', 8 | version: '1.0.0', 9 | aliases: ["$imageSmooth"], 10 | brackets: false, 11 | unwrap: true, 12 | args: [ 13 | { 14 | name: 'canvas', 15 | description: 'Name of the canvas.', 16 | type: forgescript_1.ArgType.String, 17 | required: false, 18 | rest: false 19 | }, 20 | { 21 | name: 'enabled', 22 | description: 'Determines whether scaled images are smoothed or not.', 23 | type: forgescript_1.ArgType.Boolean, 24 | required: false, 25 | rest: false 26 | } 27 | ], 28 | execute(ctx, [name, enabled]) { 29 | const canvas = (name 30 | ? ctx.canvasManager?.get(name) 31 | : ctx.canvasManager?.lastCurrent)?.ctx; 32 | if (!canvas) 33 | return this.customError(classes_1.FCError.NoCanvas); 34 | return this.success(enabled 35 | ? (canvas.imageSmoothingEnabled = enabled, undefined) 36 | : canvas.imageSmoothingEnabled); 37 | } 38 | }); 39 | -------------------------------------------------------------------------------- /dist/functions/util/indexedToHex.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.Json; 6 | required: true; 7 | rest: false; 8 | }, { 9 | name: string; 10 | description: string; 11 | type: ArgType.Number; 12 | required: false; 13 | rest: false; 14 | }, { 15 | name: string; 16 | description: string; 17 | type: ArgType.Boolean; 18 | required: false; 19 | rest: false; 20 | }, { 21 | name: string; 22 | description: string; 23 | type: ArgType.Boolean; 24 | required: false; 25 | rest: false; 26 | }, { 27 | name: string; 28 | description: string; 29 | type: ArgType.Number; 30 | check: (x: number) => boolean; 31 | required: true; 32 | rest: true; 33 | }], true>; 34 | export default _default; 35 | -------------------------------------------------------------------------------- /dist/functions/util/indexedToRgba.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.Json; 6 | required: true; 7 | rest: false; 8 | }, { 9 | name: string; 10 | description: string; 11 | type: ArgType.Number; 12 | required: false; 13 | rest: false; 14 | }, { 15 | name: string; 16 | description: string; 17 | type: ArgType.Number; 18 | check: (x: number) => boolean; 19 | required: true; 20 | rest: true; 21 | }], true>; 22 | export default _default; 23 | -------------------------------------------------------------------------------- /dist/functions/util/letterSpacing.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: false; 7 | rest: false; 8 | }, { 9 | name: string; 10 | description: string; 11 | type: ArgType.Number; 12 | required: false; 13 | rest: false; 14 | }], true>; 15 | export default _default; 16 | -------------------------------------------------------------------------------- /dist/functions/util/letterSpacing.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const forgescript_1 = require("@tryforge/forgescript"); 4 | const classes_1 = require("../../classes"); 5 | exports.default = new forgescript_1.NativeFunction({ 6 | name: '$letterSpacing', 7 | description: 'Sets or returns the spacing between letters when drawing text.', 8 | version: '1.0.0', 9 | brackets: false, 10 | unwrap: true, 11 | args: [ 12 | { 13 | name: 'canvas', 14 | description: 'Name of the canvas.', 15 | type: forgescript_1.ArgType.String, 16 | required: false, 17 | rest: false 18 | }, 19 | { 20 | name: 'spacing', 21 | description: 'The new spacing.', 22 | type: forgescript_1.ArgType.Number, 23 | required: false, 24 | rest: false 25 | } 26 | ], 27 | async execute(ctx, [name, spacing]) { 28 | const canvas = (name 29 | ? ctx.canvasManager?.get(name) 30 | : ctx.canvasManager?.lastCurrent)?.ctx; 31 | if (!canvas) 32 | return this.customError(classes_1.FCError.NoCanvas); 33 | return this.success(spacing 34 | ? (canvas.letterSpacing = `${spacing}px`, undefined) 35 | : canvas.letterSpacing); 36 | } 37 | }); 38 | -------------------------------------------------------------------------------- /dist/functions/util/loadImage.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: true; 7 | rest: false; 8 | }, { 9 | name: string; 10 | description: string; 11 | type: ArgType.String; 12 | required: true; 13 | rest: false; 14 | }], true>; 15 | export default _default; 16 | -------------------------------------------------------------------------------- /dist/functions/util/loadImage.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const forgescript_1 = require("@tryforge/forgescript"); 4 | const __1 = require("../.."); 5 | exports.default = new forgescript_1.NativeFunction({ 6 | name: '$loadImage', 7 | aliases: ['$createImage', '$newImage'], 8 | description: 'Loads an image.', 9 | version: '1.1.0', 10 | brackets: true, 11 | unwrap: true, 12 | args: [ 13 | { 14 | name: 'name', 15 | description: 'The image name.', 16 | type: forgescript_1.ArgType.String, 17 | required: true, 18 | rest: false 19 | }, 20 | { 21 | name: 'src', 22 | description: 'The image source.', 23 | type: forgescript_1.ArgType.String, 24 | required: true, 25 | rest: false 26 | } 27 | ], 28 | async execute(ctx, [name, src]) { 29 | if (!ctx.imageManager || !(ctx.imageManager instanceof __1.ImageManager)) 30 | ctx.imageManager = new __1.ImageManager(); 31 | const img = await __1.CanvasUtil.resolveImage(this, ctx, src); 32 | if (img instanceof forgescript_1.Return) 33 | return img; 34 | ctx.imageManager.set(name, img); 35 | return this.success(); 36 | } 37 | }); 38 | -------------------------------------------------------------------------------- /dist/functions/util/measureText.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { MeasureTextProperty } from '../..'; 3 | declare const _default: NativeFunction<[{ 4 | name: string; 5 | description: string; 6 | type: ArgType.String; 7 | required: false; 8 | rest: false; 9 | }, { 10 | name: string; 11 | description: string; 12 | type: ArgType.String; 13 | required: true; 14 | rest: false; 15 | }, { 16 | name: string; 17 | description: string; 18 | type: ArgType.String; 19 | required: true; 20 | rest: false; 21 | }, { 22 | name: string; 23 | description: string; 24 | type: ArgType.Enum; 25 | enum: typeof MeasureTextProperty; 26 | required: false; 27 | rest: false; 28 | }], true>; 29 | export default _default; 30 | -------------------------------------------------------------------------------- /dist/functions/util/opacity.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: false; 7 | rest: false; 8 | }, { 9 | name: string; 10 | description: string; 11 | type: ArgType.Number; 12 | required: false; 13 | rest: false; 14 | }], true>; 15 | export default _default; 16 | -------------------------------------------------------------------------------- /dist/functions/util/opacity.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const forgescript_1 = require("@tryforge/forgescript"); 4 | const classes_1 = require("../../classes"); 5 | exports.default = new forgescript_1.NativeFunction({ 6 | name: '$opacity', 7 | aliases: ['$globalAlpha', '$alpha'], 8 | description: 'Sets or returns the opacity in a canvas.', 9 | version: '1.0.0', 10 | brackets: false, 11 | unwrap: true, 12 | args: [ 13 | { 14 | name: 'canvas', 15 | description: 'Name of the canvas.', 16 | type: forgescript_1.ArgType.String, 17 | required: false, 18 | rest: false 19 | }, 20 | { 21 | name: 'opacity', 22 | description: 'The new opacity.', 23 | type: forgescript_1.ArgType.Number, 24 | required: false, 25 | rest: false 26 | } 27 | ], 28 | execute(ctx, [name, opacity]) { 29 | const canvas = (name 30 | ? ctx.canvasManager?.get(name) 31 | : ctx.canvasManager?.lastCurrent)?.ctx; 32 | if (!canvas) 33 | return this.customError(classes_1.FCError.NoCanvas); 34 | return this.success(opacity 35 | ? (canvas.globalAlpha = opacity / 100, undefined) 36 | : canvas.globalAlpha); 37 | } 38 | }); 39 | -------------------------------------------------------------------------------- /dist/functions/util/rectAlign.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { RectAlign } from '../..'; 3 | declare const _default: NativeFunction<[{ 4 | name: string; 5 | description: string; 6 | type: ArgType.String; 7 | required: false; 8 | rest: false; 9 | }, { 10 | name: string; 11 | description: string; 12 | type: ArgType.Enum; 13 | enum: typeof RectAlign; 14 | required: false; 15 | rest: false; 16 | }], true>; 17 | export default _default; 18 | -------------------------------------------------------------------------------- /dist/functions/util/rectBaseline.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { RectBaseline } from '../..'; 3 | declare const _default: NativeFunction<[{ 4 | name: string; 5 | description: string; 6 | type: ArgType.String; 7 | required: false; 8 | rest: false; 9 | }, { 10 | name: string; 11 | description: string; 12 | type: ArgType.Enum; 13 | enum: typeof RectBaseline; 14 | required: false; 15 | rest: false; 16 | }], true>; 17 | export default _default; 18 | -------------------------------------------------------------------------------- /dist/functions/util/registerFont.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: true; 7 | rest: false; 8 | }, { 9 | name: string; 10 | description: string; 11 | type: ArgType.String; 12 | required: false; 13 | rest: false; 14 | }, { 15 | name: string; 16 | description: string; 17 | type: ArgType.Boolean; 18 | required: false; 19 | rest: false; 20 | }], true>; 21 | export default _default; 22 | -------------------------------------------------------------------------------- /dist/functions/util/registerFont.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const forgescript_1 = require("@tryforge/forgescript"); 4 | const __1 = require("../.."); 5 | exports.default = new forgescript_1.NativeFunction({ 6 | name: '$registerFont', 7 | description: 'Registers a font.', 8 | version: '1.0.0', 9 | brackets: true, 10 | unwrap: true, 11 | args: [ 12 | { 13 | name: 'src', 14 | description: 'The font source path.', 15 | type: forgescript_1.ArgType.String, 16 | required: true, 17 | rest: false 18 | }, 19 | { 20 | name: 'name', 21 | description: 'The font name.', 22 | type: forgescript_1.ArgType.String, 23 | required: false, 24 | rest: false 25 | }, 26 | { 27 | name: 'log', 28 | description: 'Whether to log the registration.', 29 | type: forgescript_1.ArgType.Boolean, 30 | required: false, 31 | rest: false 32 | } 33 | ], 34 | async execute(_, [src, name, log]) { 35 | await (0, __1.registerFonts)([{ src: src, name }], log ?? false); 36 | return this.success(); 37 | } 38 | }); 39 | -------------------------------------------------------------------------------- /dist/functions/util/restore.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: false; 7 | rest: false; 8 | }], true>; 9 | export default _default; 10 | -------------------------------------------------------------------------------- /dist/functions/util/restore.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const forgescript_1 = require("@tryforge/forgescript"); 4 | const classes_1 = require("../../classes"); 5 | exports.default = new forgescript_1.NativeFunction({ 6 | name: '$restore', 7 | description: 'Restores the most recently saved canvas state.', 8 | version: '1.0.0', 9 | brackets: false, 10 | unwrap: true, 11 | args: [ 12 | { 13 | name: 'canvas', 14 | description: 'Name of the canvas.', 15 | type: forgescript_1.ArgType.String, 16 | required: false, 17 | rest: false 18 | } 19 | ], 20 | execute(ctx, [name]) { 21 | const canvas = name 22 | ? ctx.canvasManager?.get(name) 23 | : ctx.canvasManager?.lastCurrent; 24 | if (!canvas) 25 | return this.customError(classes_1.FCError.NoCanvas); 26 | canvas.ctx.restore(); 27 | return this.success(); 28 | } 29 | }); 30 | -------------------------------------------------------------------------------- /dist/functions/util/rgbToHex.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.Boolean; 6 | required: false; 7 | rest: false; 8 | }, { 9 | name: string; 10 | description: string; 11 | type: ArgType.Number; 12 | check: (x: number) => boolean; 13 | required: true; 14 | rest: true; 15 | }], true>; 16 | export default _default; 17 | -------------------------------------------------------------------------------- /dist/functions/util/rgbToHex.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const forgescript_1 = require("@tryforge/forgescript"); 4 | const gifsx_1 = require("@gifsx/gifsx"); 5 | exports.default = new forgescript_1.NativeFunction({ 6 | name: '$rgbToHex', 7 | description: 'Converts RGB into HEX.', 8 | version: '1.2.1', 9 | brackets: true, 10 | unwrap: true, 11 | args: [ 12 | { 13 | name: 'allowShort', 14 | description: 'Whether to allow short hex output. (default: false)', 15 | type: forgescript_1.ArgType.Boolean, 16 | required: false, 17 | rest: false 18 | }, 19 | { 20 | name: 'rgba', 21 | description: 'The RGB to convert into HEX.', 22 | type: forgescript_1.ArgType.Number, 23 | check: (x) => x >= 0 && x <= 255, 24 | required: true, 25 | rest: true 26 | } 27 | ], 28 | execute(_, [a_s, rgb]) { 29 | try { 30 | const res = (0, gifsx_1.rgbToHex)(Uint8Array.from(rgb), a_s ?? false); 31 | return this.success(`[${res.map(x => `"${x}"`).join(', ')}]`); 32 | } 33 | catch (e) { 34 | return this.customError(e.toString()); 35 | } 36 | } 37 | }); 38 | -------------------------------------------------------------------------------- /dist/functions/util/rgbaToHex.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.Boolean; 6 | required: false; 7 | rest: false; 8 | }, { 9 | name: string; 10 | description: string; 11 | type: ArgType.Boolean; 12 | required: false; 13 | rest: false; 14 | }, { 15 | name: string; 16 | description: string; 17 | type: ArgType.Number; 18 | check: (x: number) => boolean; 19 | required: true; 20 | rest: true; 21 | }], true>; 22 | export default _default; 23 | -------------------------------------------------------------------------------- /dist/functions/util/save.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: false; 7 | rest: false; 8 | }], true>; 9 | export default _default; 10 | -------------------------------------------------------------------------------- /dist/functions/util/save.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const forgescript_1 = require("@tryforge/forgescript"); 4 | const classes_1 = require("../../classes"); 5 | exports.default = new forgescript_1.NativeFunction({ 6 | name: '$save', 7 | description: 'Saves the entire state of the canvas.', 8 | version: '1.0.0', 9 | brackets: false, 10 | unwrap: true, 11 | args: [ 12 | { 13 | name: 'canvas', 14 | description: 'Name of the canvas.', 15 | type: forgescript_1.ArgType.String, 16 | required: false, 17 | rest: false 18 | } 19 | ], 20 | execute(ctx, [name]) { 21 | const canvas = name 22 | ? ctx.canvasManager?.get(name) 23 | : ctx.canvasManager?.lastCurrent; 24 | if (!canvas) 25 | return this.customError(classes_1.FCError.NoCanvas); 26 | canvas.ctx.save(); 27 | return this.success(); 28 | } 29 | }); 30 | -------------------------------------------------------------------------------- /dist/functions/util/shadowOptions.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: false; 7 | rest: false; 8 | }, { 9 | name: string; 10 | description: string; 11 | type: ArgType.Json; 12 | required: true; 13 | rest: false; 14 | }], true>; 15 | export default _default; 16 | -------------------------------------------------------------------------------- /dist/functions/util/textAlign.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { TextAlign } from '../..'; 3 | declare const _default: NativeFunction<[{ 4 | name: string; 5 | description: string; 6 | type: ArgType.String; 7 | required: false; 8 | rest: false; 9 | }, { 10 | name: string; 11 | description: string; 12 | type: ArgType.Enum; 13 | enum: typeof TextAlign; 14 | required: false; 15 | rest: false; 16 | }], true>; 17 | export default _default; 18 | -------------------------------------------------------------------------------- /dist/functions/util/textAlign.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const forgescript_1 = require("@tryforge/forgescript"); 4 | const __1 = require("../.."); 5 | exports.default = new forgescript_1.NativeFunction({ 6 | name: '$textAlign', 7 | aliases: ['$alignText'], 8 | description: 'Sets or returns the text align.', 9 | version: '1.0.0', 10 | brackets: false, 11 | unwrap: true, 12 | args: [ 13 | { 14 | name: 'canvas', 15 | description: 'Name of the canvas.', 16 | type: forgescript_1.ArgType.String, 17 | required: false, 18 | rest: false 19 | }, 20 | { 21 | name: 'align', 22 | description: 'The new align.', 23 | type: forgescript_1.ArgType.Enum, 24 | enum: __1.TextAlign, 25 | required: false, 26 | rest: false 27 | } 28 | ], 29 | execute(ctx, [name, align]) { 30 | const canvas = (name 31 | ? ctx.canvasManager?.get(name) 32 | : ctx.canvasManager?.lastCurrent)?.ctx; 33 | if (!canvas) 34 | return this.customError(__1.FCError.NoCanvas); 35 | return this.success(align !== null 36 | ? (canvas.textAlign = (typeof align === 'number' ? __1.TextAlign[align] : align), undefined) : typeof canvas.textAlign === 'number' 37 | ? __1.TextAlign[canvas.textAlign] 38 | : canvas.textAlign ?? 'start'); 39 | } 40 | }); 41 | -------------------------------------------------------------------------------- /dist/functions/util/textBaseline.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { TextBaseline } from '../..'; 3 | declare const _default: NativeFunction<[{ 4 | name: string; 5 | description: string; 6 | type: ArgType.String; 7 | required: false; 8 | rest: false; 9 | }, { 10 | name: string; 11 | description: string; 12 | type: ArgType.Enum; 13 | enum: typeof TextBaseline; 14 | required: false; 15 | rest: false; 16 | }], true>; 17 | export default _default; 18 | -------------------------------------------------------------------------------- /dist/functions/util/wordSpacing.d.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | declare const _default: NativeFunction<[{ 3 | name: string; 4 | description: string; 5 | type: ArgType.String; 6 | required: false; 7 | rest: false; 8 | }, { 9 | name: string; 10 | description: string; 11 | type: ArgType.Number; 12 | required: false; 13 | rest: false; 14 | }], true>; 15 | export default _default; 16 | -------------------------------------------------------------------------------- /dist/functions/util/wordSpacing.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const forgescript_1 = require("@tryforge/forgescript"); 4 | const classes_1 = require("../../classes"); 5 | exports.default = new forgescript_1.NativeFunction({ 6 | name: '$wordSpacing', 7 | description: 'Sets or returns the spacing between words when drawing text.', 8 | version: '1.0.0', 9 | aliases: ["$wordSpace"], 10 | brackets: false, 11 | unwrap: true, 12 | args: [ 13 | { 14 | name: 'canvas', 15 | description: 'Name of the canvas.', 16 | type: forgescript_1.ArgType.String, 17 | required: false, 18 | rest: false 19 | }, 20 | { 21 | name: 'spacing', 22 | description: 'The new spacing.', 23 | type: forgescript_1.ArgType.Number, 24 | required: false, 25 | rest: false 26 | } 27 | ], 28 | execute(ctx, [name, spacing]) { 29 | const canvas = (name 30 | ? ctx.canvasManager?.get(name) 31 | : ctx.canvasManager?.lastCurrent)?.ctx; 32 | if (!canvas) 33 | return this.customError(classes_1.FCError.NoCanvas); 34 | return this.success(spacing 35 | ? (canvas.wordSpacing = `${spacing}px`, undefined) 36 | : canvas.wordSpacing); 37 | } 38 | }); 39 | -------------------------------------------------------------------------------- /dist/index.d.ts: -------------------------------------------------------------------------------- 1 | import { ForgeExtension } from '@tryforge/forgescript'; 2 | import { CanvasManager, GradientManager, ImageManager, GIFManager, NeuQuantManager } from './classes'; 3 | export declare function registerFonts(fonts: { 4 | src: string; 5 | name?: string | null; 6 | }[], log: boolean): Promise; 7 | export declare class ForgeCanvas extends ForgeExtension { 8 | name: string; 9 | description: string; 10 | version: string; 11 | init(): void; 12 | } 13 | declare module '@tryforge/forgescript' { 14 | interface Context { 15 | canvasManager?: CanvasManager; 16 | gradientManager?: GradientManager; 17 | imageManager?: ImageManager; 18 | gifManager?: GIFManager; 19 | neuquantManager?: NeuQuantManager; 20 | } 21 | } 22 | declare module '@napi-rs/canvas' { 23 | interface Image { 24 | getBuffer(): Promise; 25 | } 26 | } 27 | export * from './classes'; 28 | export * from './typings'; 29 | -------------------------------------------------------------------------------- /docs/.nojekyll: -------------------------------------------------------------------------------- 1 | TypeDoc added this file to prevent GitHub Pages from using Jekyll. You can turn off this behavior by setting the `githubPages` option to false. -------------------------------------------------------------------------------- /docs/assets/navigation.js: -------------------------------------------------------------------------------- 1 | window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAACo2WUW/TMBDHv0ueKyoKTKhvW0fHECVjG/CAeLg118SaY0fny9QK8d1R05LGsX3lNb/7/3Sx43N+/s4Yt5zNs0utSpPTFTjUymA2yRrgKptnaNraTUf4VcW1zibZszJFNn//Z9J7FlZbugaGx10TWDx4xpG33LQcNRyQlK8b6xQrU+YNErCyJhSFNWnjNa5tgZQ3MZUHBYdyjXWgV8iVLQKJR9OW5eIDkaVx/PhYyCmtc3pgss/BtgzZ/xlyWmiEsIuwRPbdtzrazf65mGSk+DoO2TmDi4edkLOGvwMpMLyAJsz7WPAQ1Bj/mgYonb8hKBQajh2yIUsbbmsocWmphuCMDVA6/1kZ/GSVeaggbMGDaccKwbWEj7jlO7INEu/GpkhJ2nePa+4G1djSAzmbGn5DljY88E5jbEN6kM7u3y/aeQ/kbKrzIUsbfqiCq5w+oiqr4GvwoDBzwbyAu2qVLnAwF9YanEM39bBveT0LPSswUKY9Ryx5lpZKPFSHlgGUHDe3y2QjJyYajmcxrfELJFd3LJOiIZUsX7D92oLQ0ahAcl1Bd5mfHMow0gbW6KZH5sdn7y78+GHOuZThiCXJonVs68NeHieEwrgwXirJ7xQuKiCW2hzViDqyJaFzZ148LBMXoHufb6z0Sfayv4OedH9e9tR3vJmN/7dcNN4RIbqxhu+xxG0s3UNBUOE2mf/HhDiVT5DM91AQaAtFd+WeBJvWrLtln/bQF1y8HQgaIIeXVLqYoIeCgLBUjpH2Pw9RiVcQiH79Bb1znmHECwAA" -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@tryforge/forge.canvas", 3 | "version": "1.2.3", 4 | "description": "A ForgeScript extension that allows you to create and edit images with ease.", 5 | "main": "dist/index.js", 6 | "scripts": { 7 | "docgen": "tsc && typedoc src/index.ts && node dist/docgen", 8 | "test": "tsc && echo Done Compiling! && node dist/__tests__/index.js" 9 | }, 10 | "repository": { 11 | "type": "git", 12 | "url": "git+https://github.com/tryforge/ForgeCanvas.git" 13 | }, 14 | "keywords": [ 15 | "forgescript", 16 | "forge", 17 | "canvas", 18 | "image", 19 | "png", 20 | "jpeg", 21 | "botforge", 22 | "gif" 23 | ], 24 | "author": "lordex", 25 | "license": "GPL-3.0", 26 | "bugs": { 27 | "url": "https://github.com/tryforge/ForgeCanvas/issues" 28 | }, 29 | "homepage": "https://github.com/tryforge/ForgeCanvas#readme", 30 | "devDependencies": { 31 | "@tryforge/forgescript": "^2.2.0", 32 | "@types/node": "^22.13.5", 33 | "typedoc": "^0.26.11", 34 | "typescript": "^5.7.3" 35 | }, 36 | "dependencies": { 37 | "@gifsx/gifsx": "^1.0.15", 38 | "@napi-rs/canvas": "^0.1.67" 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/classes/index.ts: -------------------------------------------------------------------------------- 1 | export * from './builder'; 2 | export * from './manager'; 3 | export * from './util'; -------------------------------------------------------------------------------- /src/docgen.ts: -------------------------------------------------------------------------------- 1 | import { generateMetadata } from '@tryforge/forgescript'; 2 | generateMetadata(`${__dirname}/functions`, 'functions'); -------------------------------------------------------------------------------- /src/functions/canvas/canvasBuffer.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { FCError, ImageFormat } from '../..'; 3 | 4 | export default new NativeFunction({ 5 | name: '$canvasBuffer', 6 | description: 'Returns buffer of a canvas.', 7 | version: '1.2.0', 8 | brackets: false, 9 | unwrap: true, 10 | args: [ 11 | { 12 | name: 'canvas', 13 | description: 'Name of the canvas.', 14 | type: ArgType.String, 15 | required: false, 16 | rest: false 17 | }, 18 | { 19 | name: 'format', 20 | description: 'The image format.', 21 | type: ArgType.Enum, 22 | enum: ImageFormat, 23 | required: false, 24 | rest: false 25 | } 26 | ], 27 | execute (ctx, [name, f]) { 28 | const canvas = name 29 | ? ctx.canvasManager?.get(name) 30 | : ctx.canvasManager?.lastCurrent; 31 | if (!canvas) return this.customError(FCError.NoCanvas); 32 | 33 | return this.success(`[${Array.from(canvas.buffer( 34 | (f !== null 35 | ? 'image/' + (typeof f === 'number' ? ImageFormat[f] : f) 36 | : 'image/png') as any 37 | )).join(', ')}]`); 38 | } 39 | }); -------------------------------------------------------------------------------- /src/functions/canvas/canvasDataUrl.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { FCError, ImageFormat } from '../..'; 3 | 4 | export default new NativeFunction({ 5 | name: '$canvasDataUrl', 6 | description: 'Returns buffer of a canvas.', 7 | version: '1.2.2', 8 | brackets: false, 9 | unwrap: true, 10 | args: [ 11 | { 12 | name: 'canvas', 13 | description: 'Name of the canvas.', 14 | type: ArgType.String, 15 | required: false, 16 | rest: false 17 | }, 18 | { 19 | name: 'format', 20 | description: 'The image format.', 21 | type: ArgType.Enum, 22 | enum: ImageFormat, 23 | required: false, 24 | rest: false 25 | } 26 | ], 27 | execute (ctx, [name, f]) { 28 | const canvas = name 29 | ? ctx.canvasManager?.get(name) 30 | : ctx.canvasManager?.lastCurrent; 31 | if (!canvas) return this.customError(FCError.NoCanvas); 32 | 33 | return this.success(canvas.dataUrl((f !== null 34 | ? 'image/' + (typeof f === 'number' ? ImageFormat[f] : f) 35 | : 'image/png') as any)); 36 | } 37 | }); -------------------------------------------------------------------------------- /src/functions/canvas/canvasSize.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { FCError, WidthOrHeight } from '../..'; 3 | 4 | export default new NativeFunction({ 5 | name: '$canvasSize', 6 | aliases: ['$canvasDimensions'], 7 | description: 'Returns canvas size.', 8 | version: '1.1.0', 9 | brackets: false, 10 | unwrap: true, 11 | args: [ 12 | { 13 | name: 'canvas', 14 | description: 'Name of the canvas.', 15 | type: ArgType.String, 16 | required: false, 17 | rest: false 18 | }, 19 | { 20 | name: 'property', 21 | description: 'The size property to return.', 22 | type: ArgType.Enum, 23 | enum: WidthOrHeight, 24 | required: false, 25 | rest: false 26 | } 27 | ], 28 | execute (ctx, [name, property]) { 29 | const canvas = name 30 | ? ctx.canvasManager?.get(name) 31 | : ctx.canvasManager?.lastCurrent; 32 | if (!canvas) return this.customError(FCError.NoCanvas); 33 | 34 | return this.success(property !== null // @ts-ignore 35 | ? canvas[WidthOrHeight[ 36 | (typeof property === 'string' ? WidthOrHeight[property] : property) as any 37 | ]] 38 | : JSON.stringify({ width: canvas.width, height: canvas.height }) 39 | ); 40 | } 41 | }); -------------------------------------------------------------------------------- /src/functions/canvas/deleteCanvas.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | 3 | export default new NativeFunction({ 4 | name: '$deleteCanvas', 5 | aliases: ['$removeCanvas'], 6 | description: 'Deletes the canvas.', 7 | version: '1.0.0', 8 | brackets: true, 9 | unwrap: true, 10 | args: [ 11 | { 12 | name: 'name', 13 | description: 'Name of the canvas.', 14 | type: ArgType.String, 15 | required: true, 16 | rest: false 17 | } 18 | ], 19 | execute (ctx, [name]) { 20 | ctx.canvasManager?.remove(name); 21 | return this.success(); 22 | } 23 | }); -------------------------------------------------------------------------------- /src/functions/canvas/resizeCanvas.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { FCError } from '../../classes'; 3 | 4 | export default new NativeFunction({ 5 | name: '$resizeCanvas', 6 | aliases: ['$canvasResize'], 7 | description: 'Resizes a canvas.', 8 | version: '1.0.0', 9 | brackets: true, 10 | unwrap: true, 11 | args: [ 12 | { 13 | name: 'canvas', 14 | description: 'Name of the canvas.', 15 | type: ArgType.String, 16 | required: false, 17 | rest: false 18 | }, 19 | { 20 | name: 'width', 21 | description: 'The new canvas width.', 22 | type: ArgType.Number, 23 | required: true, 24 | rest: false 25 | }, 26 | { 27 | name: 'height', 28 | description: 'The new canvas height.', 29 | type: ArgType.Number, 30 | required: true, 31 | rest: false 32 | }, 33 | ], 34 | execute (ctx, [name, w, h]) { 35 | const canvas = name 36 | ? ctx.canvasManager?.get(name) 37 | : ctx.canvasManager?.lastCurrent; 38 | if (!canvas) return this.customError(FCError.NoCanvas); 39 | 40 | canvas.resize(w,h); 41 | return this.success(); 42 | } 43 | }); -------------------------------------------------------------------------------- /src/functions/canvas/setCanvasSize.ts: -------------------------------------------------------------------------------- 1 | import { ArgType, NativeFunction } from '@tryforge/forgescript'; 2 | import { CanvasBuilder, CanvasManager } from '../..'; 3 | 4 | export default new NativeFunction({ 5 | name: '$setCanvasSize', 6 | aliases: ['$setCanvasDimensions'], 7 | description: 'Sets size of the new canvas.', 8 | version: '1.0.0', 9 | brackets: true, 10 | deprecated: true, 11 | unwrap: true, 12 | args: [ 13 | { 14 | name: 'width', 15 | description: 'Width of the new canvas.', 16 | type: ArgType.Number, 17 | required: true, 18 | rest: false 19 | }, 20 | { 21 | name: 'height', 22 | description: 'Height of the new canvas.', 23 | type: ArgType.Number, 24 | required: true, 25 | rest: false 26 | } 27 | ], 28 | execute (ctx, [w, h]) { 29 | if (!ctx.canvasManager || !(ctx.canvasManager instanceof CanvasManager)) 30 | ctx.canvasManager = new CanvasManager(); 31 | 32 | ctx.canvasManager.current.push(new CanvasBuilder(w, h)); 33 | return this.success(); 34 | } 35 | }); -------------------------------------------------------------------------------- /src/functions/canvas/trimCanvas.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { FCError } from '../../classes'; 3 | 4 | export default new NativeFunction({ 5 | name: '$trimCanvas', 6 | aliases: ['$canvasTrim'], 7 | description: 'Trims a canvas.', 8 | version: '1.0.0', 9 | brackets: false, 10 | unwrap: true, 11 | args: [ 12 | { 13 | name: 'canvas', 14 | description: 'Name of the canvas.', 15 | type: ArgType.String, 16 | required: false, 17 | rest: false 18 | } 19 | ], 20 | execute (ctx, [name]) { 21 | const canvas = name 22 | ? ctx.canvasManager?.get(name) 23 | : ctx.canvasManager?.lastCurrent; 24 | if (!canvas) return this.customError(FCError.NoCanvas); 25 | 26 | canvas.trim(); 27 | return this.success(); 28 | } 29 | }); -------------------------------------------------------------------------------- /src/functions/gif/GIFDecoderSize.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { FCError, WidthOrHeight } from '../..'; 3 | 4 | export default new NativeFunction({ 5 | name: '$GIFDecoderSize', 6 | aliases: ['$decoderSize'], 7 | description: 'Returns the size of the GIF Decoder.', 8 | version: '1.2.0', 9 | brackets: true, 10 | unwrap: true, 11 | args: [ 12 | { 13 | name: 'gif', 14 | description: 'Name of the Decoder.', 15 | type: ArgType.String, 16 | required: true, 17 | rest: false 18 | }, 19 | { 20 | name: 'property', 21 | description: 'The size property to return.', 22 | type: ArgType.Enum, 23 | enum: WidthOrHeight, 24 | required: false, 25 | rest: false 26 | } 27 | ], 28 | execute (ctx, [name, property]) { 29 | const gif = ctx.gifManager?.getDecoder(name); 30 | if (!gif) return this.customError(FCError.NoDecoder); 31 | 32 | return this.success(property !== null // @ts-ignore 33 | ? gif[WidthOrHeight[ 34 | (typeof property === 'string' ? WidthOrHeight[property] : property) as any 35 | ]] 36 | : JSON.stringify({ width: gif.width, height: gif.height }) 37 | ); 38 | } 39 | }); -------------------------------------------------------------------------------- /src/functions/gif/GIFEncoderGlobalPalette.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { FCError } from '../../classes'; 3 | 4 | export default new NativeFunction({ 5 | name: '$GIFEncoderGlobalPalette', 6 | aliases: ['$encoderGlobalPalette', '$globalPalette'], 7 | description: 'Gets the global palette of the GIF Encoder.', 8 | version: '1.2.0', 9 | brackets: false, 10 | unwrap: true, 11 | args: [ 12 | { 13 | name: 'gif', 14 | description: 'Name of the GIF.', 15 | type: ArgType.String, 16 | required: false, 17 | rest: false 18 | } 19 | ], 20 | execute (ctx, [name]) { 21 | const gif = name 22 | ? ctx.gifManager?.getEncoder(name) 23 | : ctx.gifManager?.lastCurrentEncoder; 24 | if (!gif) return this.customError(FCError.NoEncoder); 25 | 26 | return this.success(gif.palette !== null 27 | ? `[${Array.from(gif.palette).join(', ')}]` : null 28 | ); 29 | } 30 | }); -------------------------------------------------------------------------------- /src/functions/gif/GIFEncoderSize.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { FCError, WidthOrHeight } from '../..'; 3 | 4 | export default new NativeFunction({ 5 | name: '$GIFEncoderSize', 6 | aliases: ['$encoderSize'], 7 | description: 'Returns the size of the GIF Encoder.', 8 | version: '1.2.0', 9 | brackets: false, 10 | unwrap: true, 11 | args: [ 12 | { 13 | name: 'gif', 14 | description: 'Name of the Encoder.', 15 | type: ArgType.String, 16 | required: false, 17 | rest: false 18 | }, 19 | { 20 | name: 'property', 21 | description: 'The size property to return.', 22 | type: ArgType.Enum, 23 | enum: WidthOrHeight, 24 | required: false, 25 | rest: false 26 | } 27 | ], 28 | execute (ctx, [name, property]) { 29 | const gif = name 30 | ? ctx.gifManager?.getEncoder(name) 31 | : ctx.gifManager?.lastCurrentEncoder; 32 | if (!gif) return this.customError(FCError.NoEncoder); 33 | 34 | return this.success(property !== null // @ts-ignore 35 | ? gif[WidthOrHeight[ 36 | (typeof property === 'string' 37 | ? WidthOrHeight[property] : property 38 | ) as any 39 | ]] 40 | : JSON.stringify({ width: gif.width, height: gif.height }) 41 | ); 42 | } 43 | }); -------------------------------------------------------------------------------- /src/functions/gif/allowUnknownBlocks.ts: -------------------------------------------------------------------------------- 1 | import { ArgType, NativeFunction } from '@tryforge/forgescript'; 2 | import { DecodeOptions } from '@gifsx/gifsx'; 3 | import { GIFManager } from '../..'; 4 | 5 | export default new NativeFunction({ 6 | name: '$checkLZWEndCode', 7 | description: 'Configure if LZW encoded blocks must end with a marker end code.', 8 | version: '1.2.0', 9 | brackets: true, 10 | unwrap: true, 11 | args: [ 12 | { 13 | name: 'name', 14 | description: 'Name of the Decode Options.', 15 | type: ArgType.String, 16 | required: false, 17 | rest: false 18 | }, 19 | { 20 | name: 'boolean', 21 | description: 'If LZW encoded blocks must end with a marker end code.', 22 | type: ArgType.Boolean, 23 | required: true, 24 | rest: false 25 | } 26 | ], 27 | execute (ctx, [name, bool]) { 28 | if (!ctx.gifManager || !(ctx.gifManager instanceof GIFManager)) 29 | ctx.gifManager = new GIFManager(); 30 | if (!name && !ctx.gifManager.currentOptions) 31 | ctx.gifManager.currentOptions = new DecodeOptions(); 32 | 33 | const options = name 34 | ? ctx.gifManager.getDecodeOptions(name) 35 | : ctx.gifManager.currentOptions; 36 | 37 | if (options) options.allowUnknownBlocks(bool); 38 | return this.success(); 39 | } 40 | }); -------------------------------------------------------------------------------- /src/functions/gif/attachGif.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { AttachmentBuilder } from 'discord.js'; 3 | import { FCError } from '../../classes'; 4 | 5 | export default new NativeFunction({ 6 | name: '$attachGIF', 7 | aliases: ['$sendGIF', '$renderGIF', '$gifRender'], 8 | description: 'Attaches the GIF.', 9 | version: '1.2.0', 10 | brackets: true, 11 | unwrap: true, 12 | args: [ 13 | { 14 | name: 'gif', 15 | description: 'Name of the GIF.', 16 | type: ArgType.String, 17 | required: true, 18 | rest: false 19 | }, 20 | { 21 | name: 'filename', 22 | description: 'The name of the GIF to be attached as.', 23 | type: ArgType.String, 24 | required: false, 25 | rest: false 26 | } 27 | ], 28 | execute (ctx, [name, filename]) { 29 | const gif = ctx.gifManager?.getEncoder(name); 30 | filename = `${filename ?? name}.gif`; 31 | 32 | if (!gif) return this.customError(FCError.NoEncoder); 33 | 34 | ctx.container.files.push(new AttachmentBuilder( 35 | Buffer.from(gif.getBuffer()), 36 | { name: filename } 37 | )); 38 | return this.success(); 39 | } 40 | }); -------------------------------------------------------------------------------- /src/functions/gif/checkFrameConsistency.ts: -------------------------------------------------------------------------------- 1 | import { ArgType, NativeFunction } from '@tryforge/forgescript'; 2 | import { DecodeOptions } from '@gifsx/gifsx'; 3 | import { GIFManager } from '../..'; 4 | 5 | export default new NativeFunction({ 6 | name: '$checkFrameConsistency', 7 | aliases: ['$checkFrame', '$frameConsistency'], 8 | description: 'Configure if frames must be within the screen descriptor.', 9 | version: '1.2.0', 10 | brackets: true, 11 | unwrap: true, 12 | args: [ 13 | { 14 | name: 'name', 15 | description: 'Name of the Decode Options.', 16 | type: ArgType.String, 17 | required: false, 18 | rest: false 19 | }, 20 | { 21 | name: 'boolean', 22 | description: 'If frames must be within the screen descriptor.', 23 | type: ArgType.Boolean, 24 | required: true, 25 | rest: false 26 | } 27 | ], 28 | execute (ctx, [name, bool]) { 29 | if (!ctx.gifManager || !(ctx.gifManager instanceof GIFManager)) 30 | ctx.gifManager = new GIFManager(); 31 | if (!name && !ctx.gifManager.currentOptions) 32 | ctx.gifManager.currentOptions = new DecodeOptions(); 33 | 34 | const options = name 35 | ? ctx.gifManager.getDecodeOptions(name) 36 | : ctx.gifManager.currentOptions; 37 | 38 | if (options) options.checkFrameConsistency(bool); 39 | return this.success(); 40 | } 41 | }); -------------------------------------------------------------------------------- /src/functions/gif/checkLZWEndCode.ts: -------------------------------------------------------------------------------- 1 | import { ArgType, NativeFunction } from '@tryforge/forgescript'; 2 | import { DecodeOptions } from '@gifsx/gifsx'; 3 | import { GIFManager } from '../..'; 4 | 5 | export default new NativeFunction({ 6 | name: '$checkLZWEndCode', 7 | description: 'Configure if LZW encoded blocks must end with a marker end code.', 8 | version: '1.2.0', 9 | brackets: true, 10 | unwrap: true, 11 | args: [ 12 | { 13 | name: 'name', 14 | description: 'Name of the Decode Options.', 15 | type: ArgType.String, 16 | required: false, 17 | rest: false 18 | }, 19 | { 20 | name: 'boolean', 21 | description: 'If LZW encoded blocks must end with a marker end code.', 22 | type: ArgType.Boolean, 23 | required: true, 24 | rest: false 25 | } 26 | ], 27 | execute (ctx, [name, bool]) { 28 | if (!ctx.gifManager || !(ctx.gifManager instanceof GIFManager)) 29 | ctx.gifManager = new GIFManager(); 30 | if (!name && !ctx.gifManager.currentOptions) 31 | ctx.gifManager.currentOptions = new DecodeOptions(); 32 | 33 | const options = name 34 | ? ctx.gifManager.getDecodeOptions(name) 35 | : ctx.gifManager.currentOptions; 36 | 37 | if (options) options.checkLzwEndCode(bool); 38 | return this.success(); 39 | } 40 | }); -------------------------------------------------------------------------------- /src/functions/gif/decodeOptions.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { DecodeOptions } from '@gifsx/gifsx'; 3 | import { GIFManager } from '../..'; 4 | 5 | export default new NativeFunction({ 6 | name: '$decodeOptions', 7 | aliases: ['$decoderOptions'], 8 | description: 'Creates new GIF Decode Options.', 9 | version: '1.2.0', 10 | brackets: true, 11 | unwrap: true, 12 | args: [ 13 | { 14 | name: 'name', 15 | description: 'Name of the new GIF Decode Options.', 16 | type: ArgType.String, 17 | required: true, 18 | rest: false 19 | }, 20 | { 21 | name: 'options', 22 | description: 'Options.', 23 | type: ArgType.Unknown, 24 | required: false, 25 | rest: true 26 | } 27 | ], 28 | execute (ctx, [name]) { 29 | if (!ctx.gifManager || !(ctx.gifManager instanceof GIFManager)) 30 | ctx.gifManager = new GIFManager(); 31 | 32 | if (ctx.gifManager.currentOptions) { 33 | ctx.gifManager.setDecodeOptions(name, ctx.gifManager.currentOptions); 34 | ctx.gifManager.currentOptions = null; 35 | } else ctx.gifManager.setDecodeOptions(name, new DecodeOptions()); 36 | 37 | return this.success(); 38 | } 39 | }); -------------------------------------------------------------------------------- /src/functions/gif/deleteDecoder.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | 3 | export default new NativeFunction({ 4 | name: '$deleteDecoder', 5 | aliases: ['$removeDecoder'], 6 | description: 'Deletes the Decoder.', 7 | version: '1.2.0', 8 | brackets: true, 9 | unwrap: true, 10 | args: [ 11 | { 12 | name: 'name', 13 | description: 'Name of the Decoder.', 14 | type: ArgType.String, 15 | required: true, 16 | rest: false 17 | } 18 | ], 19 | execute (ctx, [name]) { 20 | ctx.gifManager?.removeDecoder(name); 21 | return this.success(); 22 | } 23 | }); -------------------------------------------------------------------------------- /src/functions/gif/deleteEncoder.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | 3 | export default new NativeFunction({ 4 | name: '$deleteEncoder', 5 | aliases: ['$removeEncoder'], 6 | description: 'Deletes the Encoder.', 7 | version: '1.2.0', 8 | brackets: true, 9 | unwrap: true, 10 | args: [ 11 | { 12 | name: 'name', 13 | description: 'Name of the Encoder.', 14 | type: ArgType.String, 15 | required: true, 16 | rest: false 17 | } 18 | ], 19 | execute (ctx, [name]) { 20 | ctx.gifManager?.removeEncoder(name); 21 | return this.success(); 22 | } 23 | }); -------------------------------------------------------------------------------- /src/functions/gif/deleteFrame.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | 3 | export default new NativeFunction({ 4 | name: '$deleteFrame', 5 | aliases: ['$removeFrame'], 6 | description: 'Deletes the frame.', 7 | version: '1.2.0', 8 | brackets: true, 9 | unwrap: true, 10 | args: [ 11 | { 12 | name: 'name', 13 | description: 'Name of the frame.', 14 | type: ArgType.String, 15 | required: true, 16 | rest: false 17 | } 18 | ], 19 | execute (ctx, [name]) { 20 | ctx.gifManager?.removeFrame(name); 21 | return this.success(); 22 | } 23 | }); -------------------------------------------------------------------------------- /src/functions/gif/nextFrameInfo.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { FCError } from '../../classes'; 3 | 4 | export default new NativeFunction({ 5 | name: '$nextFrameInfo', 6 | description: 'Reads and saves the next frame info (skipping the buffer) of the GIF Decoder into an env.', 7 | version: '1.2.0', 8 | brackets: true, 9 | unwrap: true, 10 | args: [ 11 | { 12 | name: 'gif', 13 | description: 'Name of the Decoder.', 14 | type: ArgType.String, 15 | required: true, 16 | rest: false 17 | }, 18 | { 19 | name: 'name', 20 | description: 'The frame name to save the info as.', 21 | type: ArgType.String, 22 | required: true, 23 | rest: false 24 | } 25 | ], 26 | execute (ctx, [name, f]) { 27 | const gif = ctx.gifManager?.getDecoder(name); 28 | if (!gif) return this.customError(FCError.NoDecoder); 29 | 30 | const frame = gif.nextFrameInfo(); 31 | if (frame) { 32 | ctx.gifManager?.setFrame(f, frame); 33 | return this.success(f); 34 | } 35 | 36 | ctx.gifManager?.removeFrame(f); 37 | return this.success(); 38 | } 39 | }); -------------------------------------------------------------------------------- /src/functions/gif/readNextFrame.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { FCError } from '../../classes'; 3 | 4 | export default new NativeFunction({ 5 | name: '$readNextFrame', 6 | description: 'Reads and saves the next frame (including the buffer) of the GIF Decoder into an env.', 7 | version: '1.2.0', 8 | brackets: true, 9 | unwrap: true, 10 | args: [ 11 | { 12 | name: 'gif', 13 | description: 'Name of the Decoder.', 14 | type: ArgType.String, 15 | required: true, 16 | rest: false 17 | }, 18 | { 19 | name: 'name', 20 | description: 'Name of the env to save the frame info.', 21 | type: ArgType.String, 22 | required: true, 23 | rest: false 24 | } 25 | ], 26 | execute (ctx, [name, f]) { 27 | const gif = ctx.gifManager?.getDecoder(name); 28 | if (!gif) return this.customError(FCError.NoDecoder); 29 | 30 | const frame = gif.readNextFrame(); 31 | if (frame) { 32 | ctx.gifManager?.setFrame(f, frame); 33 | return this.success(f); 34 | } 35 | 36 | ctx.gifManager?.removeFrame(f); 37 | return this.success(); 38 | } 39 | }); -------------------------------------------------------------------------------- /src/functions/gif/saveEncoder.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { writeFileSync } from 'node:fs'; 3 | import { FCError } from '../../classes'; 4 | 5 | export default new NativeFunction({ 6 | name: '$saveEncoder', 7 | aliases: [ 8 | '$downloadEncoder', 9 | '$downloadGIF', 10 | '$saveGIF', 11 | '$encoderSave', 12 | '$encoderDownload', 13 | '$gifDownload', 14 | '$gifSave' 15 | ], 16 | description: 'Saves an Encoder GIF to a file.', 17 | version: '1.1.0', 18 | brackets: true, 19 | unwrap: true, 20 | args: [ 21 | { 22 | name: 'gif', 23 | description: 'Name of the Encoder.', 24 | type: ArgType.String, 25 | required: false, 26 | rest: false 27 | }, 28 | { 29 | name: 'path', 30 | description: 'Path to a directory. (including the canvas file name)', 31 | type: ArgType.String, 32 | required: true, 33 | rest: false 34 | } 35 | ], 36 | execute (ctx, [name, path]) { 37 | const gif = name 38 | ? ctx.gifManager?.getEncoder(name) 39 | : ctx.gifManager?.lastCurrentEncoder; 40 | 41 | if (!gif) return this.customError(FCError.NoEncoder); 42 | if (!path) return this.customError(FCError.NoPath); 43 | 44 | writeFileSync(path, gif.getBuffer()); 45 | return this.success(); 46 | } 47 | }); -------------------------------------------------------------------------------- /src/functions/gif/setEncoderLoops.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { FCError } from '../../classes'; 3 | 4 | export default new NativeFunction({ 5 | name: '$setEncoderLoops', 6 | aliases: [ 7 | '$setEncoderRepeat', 8 | '$setGIFEncoderRepeat', 9 | '$setGIFEncoderLoops', 10 | '$setLoops', 11 | '$setRepeat' 12 | ], 13 | description: 'Sets the number of loops for the GIF Encoder.', 14 | version: '1.2.0', 15 | brackets: true, 16 | unwrap: true, 17 | args: [ 18 | { 19 | name: 'gif', 20 | description: 'Name of the GIF.', 21 | type: ArgType.String, 22 | required: false, 23 | rest: false 24 | }, 25 | { 26 | name: 'loops', 27 | description: 'Number of loops.', 28 | type: ArgType.Number, 29 | required: true, 30 | rest: false 31 | } 32 | ], 33 | execute (ctx, [name, loops]) { 34 | const gif = name 35 | ? ctx.gifManager?.getEncoder(name) 36 | : ctx.gifManager?.lastCurrentEncoder; 37 | if (!gif) return this.customError(FCError.NoEncoder); 38 | 39 | gif.setRepeat(loops); 40 | return this.success(); 41 | } 42 | }); -------------------------------------------------------------------------------- /src/functions/gif/setMemoryLimit.ts: -------------------------------------------------------------------------------- 1 | import { ArgType, NativeFunction } from '@tryforge/forgescript'; 2 | import { DecodeOptions } from '@gifsx/gifsx'; 3 | import { GIFManager } from '../..'; 4 | 5 | export default new NativeFunction({ 6 | name: '$setMemoryLimit', 7 | aliases: ['$setRAMLimit'], 8 | description: 'Configure the memory limit for the GIF Decoder.', 9 | version: '1.2.0', 10 | brackets: true, 11 | unwrap: true, 12 | args: [ 13 | { 14 | name: 'name', 15 | description: 'Name of the Decode Options.', 16 | type: ArgType.String, 17 | required: false, 18 | rest: false 19 | }, 20 | { 21 | name: 'limit', 22 | description: 'Memory limit in bytes.', 23 | type: ArgType.Number, 24 | required: true, 25 | rest: false 26 | } 27 | ], 28 | execute (ctx, [name, limit]) { 29 | if (!ctx.gifManager || !(ctx.gifManager instanceof GIFManager)) 30 | ctx.gifManager = new GIFManager(); 31 | if (!name && !ctx.gifManager.currentOptions) 32 | ctx.gifManager.currentOptions = new DecodeOptions(); 33 | 34 | const options = name 35 | ? ctx.gifManager.getDecodeOptions(name) 36 | : ctx.gifManager.currentOptions; 37 | 38 | if (options) options.setMemoryLimit(limit); 39 | return this.success(); 40 | } 41 | }); -------------------------------------------------------------------------------- /src/functions/gif/skipFrameDecoding.ts: -------------------------------------------------------------------------------- 1 | import { ArgType, NativeFunction } from '@tryforge/forgescript'; 2 | import { DecodeOptions } from '@gifsx/gifsx'; 3 | import { GIFManager } from '../..'; 4 | 5 | export default new NativeFunction({ 6 | name: '$skipFrameDecoding', 7 | aliases: ['$skipFrameDecode'], 8 | description: 'Configure whether to skip decoding frames.', 9 | version: '1.2.0', 10 | brackets: true, 11 | unwrap: true, 12 | args: [ 13 | { 14 | name: 'name', 15 | description: 'Name of the Decode Options.', 16 | type: ArgType.String, 17 | required: false, 18 | rest: false 19 | }, 20 | { 21 | name: 'boolean', 22 | description: 'Whether to skip decoding frames.', 23 | type: ArgType.Boolean, 24 | required: true, 25 | rest: false 26 | } 27 | ], 28 | execute (ctx, [name, bool]) { 29 | if (!ctx.gifManager || !(ctx.gifManager instanceof GIFManager)) 30 | ctx.gifManager = new GIFManager(); 31 | if (!name && !ctx.gifManager.currentOptions) 32 | ctx.gifManager.currentOptions = new DecodeOptions(); 33 | 34 | const options = name 35 | ? ctx.gifManager.getDecodeOptions(name) 36 | : ctx.gifManager.currentOptions; 37 | 38 | if (options) options.skipFrameDecoding(bool); 39 | return this.success(); 40 | } 41 | }); -------------------------------------------------------------------------------- /src/functions/helper/barData.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { BarData, FCError } from '../..'; 3 | 4 | export default new NativeFunction({ 5 | name: '$barData', 6 | description: 'Adds data for progress bars.', 7 | version: '1.2.0', 8 | brackets: true, 9 | unwrap: true, 10 | args: [ 11 | { 12 | name: 'value', 13 | description: 'Value for the data segment (percentage or absolute).', 14 | type: ArgType.String, 15 | required: true, 16 | rest: false 17 | }, 18 | { 19 | name: 'style', 20 | description: 'Style for the data segment.', 21 | type: ArgType.String, 22 | required: true, 23 | rest: false 24 | } 25 | ], 26 | execute(ctx, [value, style]) { 27 | const numericValue = Number.parseFloat(value); 28 | 29 | if (Number.isNaN(numericValue) || numericValue < 0) 30 | return this.customError(FCError.InvalidBarData); 31 | 32 | const barData = (ctx.getEnvironmentKey('progressBarData') || []) as BarData[]; 33 | barData.push({ value: numericValue, style }); 34 | 35 | ctx.setEnvironmentKey('progressBarData', barData); 36 | return this.success(); 37 | } 38 | }); 39 | -------------------------------------------------------------------------------- /src/functions/line/lineDash.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { FCError } from '../../classes'; 3 | 4 | export default new NativeFunction({ 5 | name: '$lineDash', 6 | description: 'Sets or returns the line dash segments in a canvas.', 7 | version: '1.0.0', 8 | brackets: false, 9 | unwrap: true, 10 | args: [ 11 | { 12 | name: 'canvas', 13 | description: 'Name of the canvas.', 14 | type: ArgType.String, 15 | required: false, 16 | rest: false 17 | }, 18 | { 19 | name: 'segments', 20 | description: 'The new line dash segments.', 21 | type: ArgType.Json, 22 | required: false, 23 | rest: false 24 | } 25 | ], 26 | execute (ctx, [name, segments]) { 27 | const canvas = (name 28 | ? ctx.canvasManager?.get(name) 29 | : ctx.canvasManager?.lastCurrent)?.ctx; 30 | if (!canvas) return this.customError(FCError.NoCanvas); 31 | 32 | if (segments && (!Array.isArray(segments) || !segments.every(x => typeof x === 'number'))) 33 | return this.customError(FCError.InvalidLineDashSegments); 34 | 35 | return this.success(segments 36 | ? (canvas.setLineDash(segments), undefined) 37 | : canvas.getLineDash() 38 | ); 39 | } 40 | }); -------------------------------------------------------------------------------- /src/functions/line/lineDashOffset.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { FCError } from '../../classes'; 3 | 4 | export default new NativeFunction({ 5 | name: '$lineDashOffset', 6 | description: 'Sets or returns the line dash offset in a canvas.', 7 | version: '1.0.0', 8 | brackets: false, 9 | unwrap: true, 10 | args: [ 11 | { 12 | name: 'canvas', 13 | description: 'Name of the canvas.', 14 | type: ArgType.String, 15 | required: false, 16 | rest: false 17 | }, 18 | { 19 | name: 'offset', 20 | description: 'The new offset.', 21 | type: ArgType.Number, 22 | required: false, 23 | rest: false 24 | } 25 | ], 26 | execute (ctx, [name, offset]) { 27 | const canvas = (name 28 | ? ctx.canvasManager?.get(name) 29 | : ctx.canvasManager?.lastCurrent)?.ctx; 30 | if (!canvas) return this.customError(FCError.NoCanvas); 31 | 32 | return this.success(offset 33 | ? (canvas.lineDashOffset = offset, undefined) 34 | : canvas.lineDashOffset 35 | ); 36 | } 37 | }); -------------------------------------------------------------------------------- /src/functions/line/lineJoin.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { FCError, LineJoinShape } from '../..'; 3 | 4 | export default new NativeFunction({ 5 | name: '$lineJoin', 6 | description: 'Sets or returns the line join shape in a canvas.', 7 | version: '1.0.0', 8 | brackets: false, 9 | unwrap: true, 10 | args: [ 11 | { 12 | name: 'canvas', 13 | description: 'Name of the canvas.', 14 | type: ArgType.String, 15 | required: false, 16 | rest: false 17 | }, 18 | { 19 | name: 'shape', 20 | description: 'The new shape.', 21 | type: ArgType.Enum, 22 | enum: LineJoinShape, 23 | required: false, 24 | rest: false 25 | } 26 | ], 27 | execute (ctx, [name, shape]) { 28 | const canvas = (name 29 | ? ctx.canvasManager?.get(name) 30 | : ctx.canvasManager?.lastCurrent)?.ctx; 31 | if (!canvas) return this.customError(FCError.NoCanvas); 32 | 33 | return this.success(shape 34 | ? (canvas.lineJoin = (typeof shape === 'number' 35 | ? LineJoinShape[shape] 36 | : shape 37 | ) as CanvasLineJoin, undefined) : canvas.lineJoin 38 | ); 39 | } 40 | }); -------------------------------------------------------------------------------- /src/functions/line/lineTo.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { FCError } from '../../classes'; 3 | 4 | export default new NativeFunction({ 5 | name: '$lineTo', 6 | aliases: ['$drawLine'], 7 | description: 'Draws a straight line in the current path.', 8 | version: '1.0.0', 9 | brackets: true, 10 | unwrap: true, 11 | args: [ 12 | { 13 | name: 'canvas', 14 | description: 'Name of the canvas.', 15 | type: ArgType.String, 16 | required: false, 17 | rest: false 18 | }, 19 | { 20 | name: 'x', 21 | description: 'The X coordinate of the line\'s end point.', 22 | type: ArgType.Number, 23 | required: true, 24 | rest: false 25 | }, 26 | { 27 | name: 'y', 28 | description: 'The Y coordinate of the line\'s end point.', 29 | type: ArgType.Number, 30 | required: true, 31 | rest: false 32 | } 33 | ], 34 | execute (ctx, [name, x, y]) { 35 | const canvas = name 36 | ? ctx.canvasManager?.get(name) 37 | : ctx.canvasManager?.lastCurrent; 38 | if (!canvas) return this.customError(FCError.NoCanvas); 39 | 40 | canvas.ctx.lineTo(x, y); 41 | return this.success(); 42 | } 43 | }); -------------------------------------------------------------------------------- /src/functions/line/lineWidth.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { FCError } from '../../classes'; 3 | 4 | export default new NativeFunction({ 5 | name: '$lineWidth', 6 | aliases: ['$strokeWidth'], 7 | description: 'Sets or returns the line width in a canvas.', 8 | version: '1.0.0', 9 | brackets: false, 10 | unwrap: true, 11 | args: [ 12 | { 13 | name: 'canvas', 14 | description: 'Name of the canvas.', 15 | type: ArgType.String, 16 | required: false, 17 | rest: false 18 | }, 19 | { 20 | name: 'width', 21 | description: 'The new line width.', 22 | type: ArgType.Number, 23 | required: false, 24 | rest: false 25 | } 26 | ], 27 | execute (ctx, [name, width]) { 28 | const canvas = name 29 | ? ctx.canvasManager?.get(name) 30 | : ctx.canvasManager?.lastCurrent; 31 | 32 | if (!canvas) return this.customError(FCError.NoCanvas); 33 | if (!width) return this.success(canvas.ctx.lineWidth); 34 | 35 | canvas.ctx.lineWidth = width; 36 | return this.success(); 37 | } 38 | }); -------------------------------------------------------------------------------- /src/functions/neuquant/NQlookup.ts: -------------------------------------------------------------------------------- 1 | import { ArgType, NativeFunction } from '@tryforge/forgescript'; 2 | import { FCError } from '../../classes'; 3 | 4 | export default new NativeFunction({ 5 | name: '$NQlookup', 6 | description: 'Lookup pixel values for color at idx in the colormap.', 7 | version: '1.2.1', 8 | brackets: true, 9 | unwrap: true, 10 | args: [ 11 | { 12 | name: 'name', 13 | description: 'Name of the NeuQuant instance.', 14 | type: ArgType.String, 15 | required: true, 16 | rest: false 17 | }, 18 | { 19 | name: 'idx', 20 | description: 'The index of the color in the colormap.', 21 | type: ArgType.Number, 22 | required: true, 23 | rest: false 24 | } 25 | ], 26 | execute (ctx, [name, idx]) { 27 | const nq = ctx.neuquantManager?.get(name); 28 | if (!nq) return this.customError(FCError.NoNeuQuant); 29 | 30 | return this.success(nq.lookup(idx)); 31 | } 32 | }); -------------------------------------------------------------------------------- /src/functions/neuquant/colorMapRgb.ts: -------------------------------------------------------------------------------- 1 | import { ArgType, NativeFunction } from '@tryforge/forgescript'; 2 | import { FCError } from '../../classes'; 3 | 4 | export default new NativeFunction({ 5 | name: '$colorMapRgb', 6 | aliases: ['$NQcolorMapRgb'], 7 | description: 'Returns the RGB color map calculated from the sample.', 8 | version: '1.2.1', 9 | brackets: true, 10 | unwrap: true, 11 | args: [ 12 | { 13 | name: 'name', 14 | description: 'Name of the NeuQuant instance.', 15 | type: ArgType.String, 16 | required: true, 17 | rest: false 18 | } 19 | ], 20 | execute (ctx, [name]) { 21 | const nq = ctx.neuquantManager?.get(name); 22 | if (!nq) return this.customError(FCError.NoNeuQuant); 23 | 24 | return this.success(nq.colorMapRgb()); 25 | } 26 | }); -------------------------------------------------------------------------------- /src/functions/neuquant/colorMapRgba.ts: -------------------------------------------------------------------------------- 1 | import { ArgType, NativeFunction } from '@tryforge/forgescript'; 2 | import { FCError } from '../../classes'; 3 | 4 | export default new NativeFunction({ 5 | name: '$colorMapRgba', 6 | aliases: ['$NQcolorMapRgba'], 7 | description: 'Returns the RGBA color map calculated from the sample.', 8 | version: '1.2.1', 9 | brackets: true, 10 | unwrap: true, 11 | args: [ 12 | { 13 | name: 'name', 14 | description: 'Name of the NeuQuant instance.', 15 | type: ArgType.String, 16 | required: true, 17 | rest: false 18 | } 19 | ], 20 | execute (ctx, [name]) { 21 | const nq = ctx.neuquantManager?.get(name); 22 | if (!nq) return this.customError(FCError.NoNeuQuant); 23 | 24 | return this.success(nq.colorMapRgba()); 25 | } 26 | }); -------------------------------------------------------------------------------- /src/functions/path/beginPath.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { FCError } from '../../classes'; 3 | 4 | export default new NativeFunction({ 5 | name: '$beginPath', 6 | aliases: ['$startPath', '$pathStart'], 7 | description: 'Begins a new path.', 8 | version: '1.0.0', 9 | brackets: false, 10 | unwrap: true, 11 | args: [ 12 | { 13 | name: 'canvas', 14 | description: 'Name of the canvas.', 15 | type: ArgType.String, 16 | required: false, 17 | rest: false 18 | } 19 | ], 20 | execute (ctx, [name]) { 21 | const canvas = name 22 | ? ctx.canvasManager?.get(name) 23 | : ctx.canvasManager?.lastCurrent; 24 | if (!canvas) return this.customError(FCError.NoCanvas); 25 | 26 | canvas.ctx.beginPath(); 27 | return this.success(); 28 | } 29 | }); -------------------------------------------------------------------------------- /src/functions/path/clip.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { FCError, FillRule } from '../..'; 3 | 4 | export default new NativeFunction({ 5 | name: '$clip', 6 | aliases: ['$clipCanvas', '$canvasClip'], 7 | description: 'Turns the current path into the current clipping region.', 8 | version: '1.0.0', 9 | brackets: false, 10 | unwrap: true, 11 | args: [ 12 | { 13 | name: 'canvas', 14 | description: 'Name of the canvas.', 15 | type: ArgType.String, 16 | required: false, 17 | rest: false 18 | }, 19 | { 20 | name: 'fillRule', 21 | description: 'The fill rule', 22 | type: ArgType.Enum, 23 | enum: FillRule, 24 | required: false, 25 | rest: false 26 | } 27 | ], 28 | execute (ctx, [name, rule]) { 29 | const canvas = name 30 | ? ctx.canvasManager?.get(name) 31 | : ctx.canvasManager?.lastCurrent; 32 | if (!canvas) return this.customError(FCError.NoCanvas); 33 | 34 | canvas.ctx.clip((typeof rule === 'number' ? FillRule[rule] : rule) as CanvasFillRule); 35 | return this.success(); 36 | } 37 | }); -------------------------------------------------------------------------------- /src/functions/path/closePath.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { FCError } from '../../classes'; 3 | 4 | export default new NativeFunction({ 5 | name: '$closePath', 6 | aliases: ['$endPath'], 7 | description: 'Adds a straight line from the current point to the start of the current path.', 8 | version: '1.0.0', 9 | unwrap: true, 10 | args: [ 11 | { 12 | name: 'canvas', 13 | description: 'Name of the canvas.', 14 | type: ArgType.String, 15 | required: false, 16 | rest: false 17 | } 18 | ], 19 | execute (ctx, [name]) { 20 | const canvas = name 21 | ? ctx.canvasManager?.get(name) 22 | : ctx.canvasManager?.lastCurrent; 23 | if (!canvas) return this.customError(FCError.NoCanvas); 24 | 25 | canvas.ctx.closePath(); 26 | return this.success(); 27 | } 28 | }); -------------------------------------------------------------------------------- /src/functions/path/moveTo.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { FCError } from '../../classes'; 3 | 4 | export default new NativeFunction({ 5 | name: '$moveTo', 6 | description: 'Begins a new path at the point specified by the given (x, y) coordinates.', 7 | version: '1.0.0', 8 | brackets: true, 9 | unwrap: true, 10 | args: [ 11 | { 12 | name: 'canvas', 13 | description: 'Name of the canvas.', 14 | type: ArgType.String, 15 | required: false, 16 | rest: false 17 | }, 18 | { 19 | name: 'x', 20 | description: 'The X coordinate of the point.', 21 | type: ArgType.Number, 22 | required: true, 23 | rest: false 24 | }, 25 | { 26 | name: 'y', 27 | description: 'The Y coordinate of the point.', 28 | type: ArgType.Number, 29 | required: true, 30 | rest: false 31 | } 32 | ], 33 | execute (ctx, [name, x, y]) { 34 | const canvas = name 35 | ? ctx.canvasManager?.get(name) 36 | : ctx.canvasManager?.lastCurrent; 37 | if (!canvas) return this.customError(FCError.NoCanvas); 38 | 39 | canvas.ctx.moveTo(x, y); 40 | return this.success(); 41 | } 42 | }); -------------------------------------------------------------------------------- /src/functions/path/stroke.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType, Return } from '@tryforge/forgescript'; 2 | import { CanvasUtil, FCError } from '../..'; 3 | 4 | export default new NativeFunction({ 5 | name: '$stroke', 6 | aliases: ['$strokePath', '$pathStroke'], 7 | description: 'Strokes (outlines) the current path.', 8 | version: '1.1.0', 9 | brackets: true, 10 | unwrap: true, 11 | args: [ 12 | { 13 | name: 'canvas', 14 | description: 'Name of the canvas.', 15 | type: ArgType.String, 16 | required: false, 17 | rest: false 18 | }, 19 | { 20 | name: 'style', 21 | description: 'The style. (color/gradient/pattern)', 22 | type: ArgType.String, 23 | required: true, 24 | rest: false 25 | } 26 | ], 27 | async execute (ctx, [name, style]) { 28 | const canvas = name 29 | ? ctx.canvasManager?.get(name) 30 | : ctx.canvasManager?.lastCurrent; 31 | if (!canvas) return this.customError(FCError.NoCanvas); 32 | 33 | const oldstyle = canvas.ctx.strokeStyle, 34 | s = await CanvasUtil.resolveStyle(this, ctx, canvas, style); 35 | if (s instanceof Return) return s; 36 | 37 | canvas.ctx.strokeStyle = s; 38 | canvas.ctx.stroke(); 39 | canvas.ctx.strokeStyle = oldstyle; 40 | 41 | return this.success(); 42 | } 43 | }); -------------------------------------------------------------------------------- /src/functions/transform/getTransform.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { FCError } from '../../classes'; 3 | 4 | export default new NativeFunction({ 5 | name: '$getTransform', 6 | description: 'Returns the current transformation matrix.', 7 | version: '1.0.0', 8 | brackets: false, 9 | unwrap: true, 10 | args: [ 11 | { 12 | name: 'canvas', 13 | description: 'Name of the canvas.', 14 | type: ArgType.String, 15 | required: false, 16 | rest: false 17 | } 18 | ], 19 | execute (ctx, [name]) { 20 | const canvas = name 21 | ? ctx.canvasManager?.get(name) 22 | : ctx.canvasManager?.lastCurrent; 23 | if (!canvas) return this.customError(FCError.NoCanvas); 24 | 25 | const { a,b,c,d,e,f } = canvas.ctx.getTransform(); 26 | return this.success(JSON.stringify([a,b,c,d,e,f])); 27 | } 28 | }); -------------------------------------------------------------------------------- /src/functions/transform/resetTransform.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { FCError } from '../../classes'; 3 | 4 | export default new NativeFunction({ 5 | name: '$resetTransform', 6 | description: 'Resets the current transformation.', 7 | version: '1.0.0', 8 | brackets: false, 9 | unwrap: true, 10 | args: [ 11 | { 12 | name: 'canvas', 13 | description: 'Name of the canvas.', 14 | type: ArgType.String, 15 | required: false, 16 | rest: false 17 | } 18 | ], 19 | execute (ctx, [name]) { 20 | const canvas = name 21 | ? ctx.canvasManager?.get(name) 22 | : ctx.canvasManager?.lastCurrent; 23 | if (!canvas) return this.customError(FCError.NoCanvas); 24 | 25 | canvas.ctx.resetTransform(); 26 | return this.success(); 27 | } 28 | }); -------------------------------------------------------------------------------- /src/functions/transform/rotate.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { FCError } from '../../classes'; 3 | 4 | export default new NativeFunction({ 5 | name: '$rotate', 6 | aliases: ['$rotateCanvas', '$rotation'], 7 | description: 'Rotates a canvas.', 8 | version: '1.0.0', 9 | brackets: true, 10 | unwrap: true, 11 | args: [ 12 | { 13 | name: 'canvas', 14 | description: 'Name of the canvas.', 15 | type: ArgType.String, 16 | required: false, 17 | rest: false 18 | }, 19 | { 20 | name: 'angle', 21 | description: 'The rotation angle.', 22 | type: ArgType.Number, 23 | required: true, 24 | rest: false 25 | } 26 | ], 27 | execute (ctx, [name, angle]) { 28 | const canvas = name 29 | ? ctx.canvasManager?.get(name) 30 | : ctx.canvasManager?.lastCurrent; 31 | if (!canvas) return this.customError(FCError.NoCanvas); 32 | 33 | canvas.rotate(angle); 34 | return this.success(); 35 | } 36 | }); -------------------------------------------------------------------------------- /src/functions/transform/scale.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { FCError } from '../../classes'; 3 | 4 | export default new NativeFunction({ 5 | name: '$scale', 6 | description: 'Adds a scaling transformation to the canvas.', 7 | version: '1.0.0', 8 | brackets: true, 9 | unwrap: true, 10 | args: [ 11 | { 12 | name: 'canvas', 13 | description: 'Name of the canvas.', 14 | type: ArgType.String, 15 | required: false, 16 | rest: false 17 | }, 18 | { 19 | name: 'x', 20 | description: 'Scaling factor in the horizontal direction', 21 | type: ArgType.Number, 22 | required: true, 23 | rest: false 24 | }, 25 | { 26 | name: 'y', 27 | description: 'Scaling factor in the vertical direction', 28 | type: ArgType.Number, 29 | required: true, 30 | rest: false 31 | } 32 | ], 33 | execute (ctx, [name, x, y]) { 34 | const canvas = name 35 | ? ctx.canvasManager?.get(name) 36 | : ctx.canvasManager?.lastCurrent; 37 | if (!canvas) return this.customError(FCError.NoCanvas); 38 | 39 | canvas.ctx.scale(x, y); 40 | return this.success(); 41 | } 42 | }); -------------------------------------------------------------------------------- /src/functions/transform/translate.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { FCError } from '../../classes'; 3 | 4 | export default new NativeFunction({ 5 | name: '$translate', 6 | description: 'Adds a translation transformation.', 7 | version: '1.0.0', 8 | brackets: true, 9 | unwrap: true, 10 | args: [ 11 | { 12 | name: 'canvas', 13 | description: 'Name of the canvas.', 14 | type: ArgType.String, 15 | required: false, 16 | rest: false 17 | }, 18 | { 19 | name: 'x', 20 | description: 'Distance to move in the horizontal direction.', 21 | type: ArgType.Number, 22 | required: true, 23 | rest: false 24 | }, 25 | { 26 | name: 'y', 27 | description: 'Distance to move in the vertical direction.', 28 | type: ArgType.Number, 29 | required: true, 30 | rest: false 31 | } 32 | ], 33 | execute (ctx, [name, x, y]) { 34 | const canvas = name 35 | ? ctx.canvasManager?.get(name) 36 | : ctx.canvasManager?.lastCurrent; 37 | if (!canvas) return this.customError(FCError.NoCanvas); 38 | 39 | canvas.ctx.translate(x, y); 40 | return this.success(); 41 | } 42 | }); -------------------------------------------------------------------------------- /src/functions/util/attachImage.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { AttachmentBuilder } from 'discord.js'; 3 | import { FCError } from '../../classes'; 4 | 5 | export default new NativeFunction({ 6 | name: '$attachImage', 7 | aliases: ['$sendImage', '$renderImage', '$imageRender'], 8 | description: 'Attaches the image.', 9 | version: '1.2.0', 10 | brackets: true, 11 | unwrap: true, 12 | args: [ 13 | { 14 | name: 'image', 15 | description: 'Name of the image.', 16 | type: ArgType.String, 17 | required: true, 18 | rest: false 19 | }, 20 | { 21 | name: 'filename', 22 | description: 'The name with the extension of the image to be attached as.', 23 | type: ArgType.String, 24 | required: false, 25 | rest: false 26 | } 27 | ], 28 | async execute (ctx, [name, filename]) { 29 | const img = await ctx.imageManager?.get(name)?.getBuffer(); 30 | if (!img) return this.customError(FCError.NoImage); 31 | 32 | ctx.container.files.push(new AttachmentBuilder( 33 | img, { name: filename ?? `${name}.png` } 34 | )); 35 | return this.success(); 36 | } 37 | }); -------------------------------------------------------------------------------- /src/functions/util/canvasVersion.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction } from '@tryforge/forgescript'; 2 | import { version } from '../../../package.json'; 3 | 4 | export default new NativeFunction({ 5 | name: '$canvasVersion', 6 | description: 'Returns the forge.canvas version.', 7 | version: '1.1.0', 8 | brackets: false, 9 | unwrap: true, 10 | args: [], 11 | execute() { return this.success(version) } 12 | }); 13 | -------------------------------------------------------------------------------- /src/functions/util/deleteImage.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | 3 | export default new NativeFunction({ 4 | name: '$deleteImage', 5 | aliases: ['$removeImage'], 6 | description: 'Deletes the image.', 7 | version: '1.2.0', 8 | brackets: true, 9 | unwrap: true, 10 | args: [ 11 | { 12 | name: 'name', 13 | description: 'Name of the image.', 14 | type: ArgType.String, 15 | required: true, 16 | rest: false 17 | } 18 | ], 19 | execute (ctx, [name]) { 20 | ctx.imageManager?.remove(name); 21 | return this.success(); 22 | } 23 | }); -------------------------------------------------------------------------------- /src/functions/util/fontFamilies.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { GlobalFonts } from '@napi-rs/canvas'; 3 | 4 | export default new NativeFunction({ 5 | name: '$fontFamilies', 6 | aliases: ['$fontFam', '$fonts', '$fontNames'], 7 | description: 'Returns a list of the available fonts.', 8 | version: '1.0.0', 9 | brackets: false, 10 | unwrap: true, 11 | args: [{ 12 | name: 'separator', 13 | description: 'The font separator.', 14 | type: ArgType.String, 15 | required: false, 16 | rest: false 17 | }], 18 | execute (_, [sep]) { 19 | return this.success( 20 | GlobalFonts.families 21 | .map(x => x?.family) 22 | .join(sep ?? ', ') 23 | ); 24 | } 25 | }); -------------------------------------------------------------------------------- /src/functions/util/fontVariantCaps.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { FCError, FontVariantCaps } from '../..'; 3 | 4 | export default new NativeFunction({ 5 | name: '$fontVariantCaps', 6 | aliases: ['$fontCaps'], 7 | description: 'Sets or returns the capitalization of the text.', 8 | version: '1.1.0', 9 | brackets: false, 10 | unwrap: true, 11 | args: [ 12 | { 13 | name: 'canvas', 14 | description: 'Name of the canvas.', 15 | type: ArgType.String, 16 | required: false, 17 | rest: false 18 | }, 19 | { 20 | name: 'type', 21 | description: 'The new alternative capitalization.', 22 | type: ArgType.Enum, 23 | enum: FontVariantCaps, 24 | required: false, 25 | rest: false 26 | } 27 | ], 28 | execute (ctx, [name, t]) { 29 | const canvas = (name 30 | ? ctx.canvasManager?.get(name) 31 | : ctx.canvasManager?.lastCurrent)?.ctx; 32 | if (!canvas) return this.customError(FCError.NoCanvas); 33 | 34 | return this.success(t !== null 35 | ? (canvas.fontVariantCaps = (typeof t === 'number' 36 | ? FontVariantCaps[t] 37 | : t 38 | ) as CanvasFontVariantCaps, undefined) : canvas.fontVariantCaps 39 | ); 40 | } 41 | }); -------------------------------------------------------------------------------- /src/functions/util/hexToRgb.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { hexToRgb } from '@gifsx/gifsx'; 3 | 4 | export default new NativeFunction({ 5 | name: '$hexToRgb', 6 | description: 'Converts HEX into RGB.', 7 | version: '1.2.1', 8 | brackets: true, 9 | unwrap: true, 10 | args: [ 11 | { 12 | name: 'hex', 13 | description: 'The hex to convert into RGB.', 14 | type: ArgType.String, 15 | required: true, 16 | rest: true 17 | } 18 | ], 19 | execute (_, [hex]) { 20 | try { 21 | const res = hexToRgb(hex); 22 | return this.success(`[${res.join(', ')}]`); 23 | } catch(e) { 24 | return this.customError((e as any).toString()); 25 | } 26 | } 27 | }); -------------------------------------------------------------------------------- /src/functions/util/hexToRgba.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { hexToRgba } from '@gifsx/gifsx'; 3 | 4 | export default new NativeFunction({ 5 | name: '$hexToRgba', 6 | description: 'Converts HEX into RGBA.', 7 | version: '1.2.1', 8 | brackets: true, 9 | unwrap: true, 10 | args: [ 11 | { 12 | name: 'hex', 13 | description: 'The hex to convert into RGBA.', 14 | type: ArgType.String, 15 | required: true, 16 | rest: true 17 | } 18 | ], 19 | execute (_, [hex]) { 20 | try { 21 | const res = hexToRgba(hex); 22 | return this.success(`[${res.join(', ')}]`); 23 | } catch(e) { 24 | return this.customError((e as any).toString()); 25 | } 26 | } 27 | }); -------------------------------------------------------------------------------- /src/functions/util/imageBuffer.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { Image, loadImage } from '@napi-rs/canvas'; 3 | import { FCError } from '../../classes'; 4 | 5 | export default new NativeFunction({ 6 | name: '$imageBuffer', 7 | description: 'Returns image\'s buffer.', 8 | version: '1.2.0', 9 | brackets: true, 10 | unwrap: true, 11 | args: [ 12 | { 13 | name: 'path', 14 | description: 'The image path.', 15 | type: ArgType.String, 16 | required: true, 17 | rest: false 18 | } 19 | ], 20 | async execute (ctx, [path]) { 21 | let image: Image | undefined 22 | 23 | if (path.startsWith('images://') && ctx.imageManager) 24 | image = ctx.imageManager.get(path.slice(9)); 25 | else image = await loadImage(path); 26 | if (!image) return this.customError(FCError.NoImage); 27 | 28 | return this.success(`[${Array.from( 29 | await image.getBuffer() ?? [] 30 | ).join(', ')}]`); 31 | } 32 | }); 33 | -------------------------------------------------------------------------------- /src/functions/util/imageSmoothing.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { FCError } from '../../classes'; 3 | 4 | export default new NativeFunction({ 5 | name: '$imageSmoothing', 6 | description: 'Sets or returns the image smoothing in a canvas.', 7 | version: '1.0.0', 8 | aliases: ["$imageSmooth"], 9 | brackets: false, 10 | unwrap: true, 11 | args: [ 12 | { 13 | name: 'canvas', 14 | description: 'Name of the canvas.', 15 | type: ArgType.String, 16 | required: false, 17 | rest: false 18 | }, 19 | { 20 | name: 'enabled', 21 | description: 'Determines whether scaled images are smoothed or not.', 22 | type: ArgType.Boolean, 23 | required: false, 24 | rest: false 25 | } 26 | ], 27 | execute (ctx, [name, enabled]) { 28 | const canvas = (name 29 | ? ctx.canvasManager?.get(name) 30 | : ctx.canvasManager?.lastCurrent)?.ctx; 31 | if (!canvas) return this.customError(FCError.NoCanvas); 32 | 33 | return this.success(enabled 34 | ? (canvas.imageSmoothingEnabled = enabled, undefined) 35 | : canvas.imageSmoothingEnabled 36 | ); 37 | } 38 | }); -------------------------------------------------------------------------------- /src/functions/util/letterSpacing.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { FCError } from '../../classes'; 3 | 4 | export default new NativeFunction({ 5 | name: '$letterSpacing', 6 | description: 'Sets or returns the spacing between letters when drawing text.', 7 | version: '1.0.0', 8 | brackets: false, 9 | unwrap: true, 10 | args: [ 11 | { 12 | name: 'canvas', 13 | description: 'Name of the canvas.', 14 | type: ArgType.String, 15 | required: false, 16 | rest: false 17 | }, 18 | { 19 | name: 'spacing', 20 | description: 'The new spacing.', 21 | type: ArgType.Number, 22 | required: false, 23 | rest: false 24 | } 25 | ], 26 | async execute (ctx, [name, spacing]) { 27 | const canvas = (name 28 | ? ctx.canvasManager?.get(name) 29 | : ctx.canvasManager?.lastCurrent)?.ctx; 30 | if (!canvas) return this.customError(FCError.NoCanvas); 31 | 32 | return this.success(spacing 33 | ? (canvas.letterSpacing = `${spacing}px`, undefined) 34 | : canvas.letterSpacing 35 | ); 36 | } 37 | }); -------------------------------------------------------------------------------- /src/functions/util/loadImage.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType, Return } from '@tryforge/forgescript'; 2 | import { CanvasUtil, ImageManager } from '../..'; 3 | import { loadImage } from '@napi-rs/canvas'; 4 | 5 | export default new NativeFunction({ 6 | name: '$loadImage', 7 | aliases: ['$createImage', '$newImage'], 8 | description: 'Loads an image.', 9 | version: '1.1.0', 10 | brackets: true, 11 | unwrap: true, 12 | args: [ 13 | { 14 | name: 'name', 15 | description: 'The image name.', 16 | type: ArgType.String, 17 | required: true, 18 | rest: false 19 | }, 20 | { 21 | name: 'src', 22 | description: 'The image source.', 23 | type: ArgType.String, 24 | required: true, 25 | rest: false 26 | } 27 | ], 28 | async execute (ctx, [name, src]) { 29 | if (!ctx.imageManager || !(ctx.imageManager instanceof ImageManager)) 30 | ctx.imageManager = new ImageManager(); 31 | 32 | const img = await CanvasUtil.resolveImage(this, ctx, src); 33 | if (img instanceof Return) return img; 34 | 35 | ctx.imageManager.set(name, img); 36 | return this.success(); 37 | } 38 | }); -------------------------------------------------------------------------------- /src/functions/util/opacity.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { FCError } from '../../classes'; 3 | 4 | export default new NativeFunction({ 5 | name: '$opacity', 6 | aliases: ['$globalAlpha', '$alpha'], 7 | description: 'Sets or returns the opacity in a canvas.', 8 | version: '1.0.0', 9 | brackets: false, 10 | unwrap: true, 11 | args: [ 12 | { 13 | name: 'canvas', 14 | description: 'Name of the canvas.', 15 | type: ArgType.String, 16 | required: false, 17 | rest: false 18 | }, 19 | { 20 | name: 'opacity', 21 | description: 'The new opacity.', 22 | type: ArgType.Number, 23 | required: false, 24 | rest: false 25 | } 26 | ], 27 | execute (ctx, [name, opacity]) { 28 | const canvas = (name 29 | ? ctx.canvasManager?.get(name) 30 | : ctx.canvasManager?.lastCurrent)?.ctx; 31 | if (!canvas) return this.customError(FCError.NoCanvas); 32 | 33 | return this.success(opacity 34 | ? (canvas.globalAlpha = opacity / 100, undefined) 35 | : canvas.globalAlpha 36 | ); 37 | } 38 | }); -------------------------------------------------------------------------------- /src/functions/util/registerFont.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { registerFonts } from '../..'; 3 | 4 | export default new NativeFunction({ 5 | name: '$registerFont', 6 | description: 'Registers a font.', 7 | version: '1.0.0', 8 | brackets: true, 9 | unwrap: true, 10 | args: [ 11 | { 12 | name: 'src', 13 | description: 'The font source path.', 14 | type: ArgType.String, 15 | required: true, 16 | rest: false 17 | }, 18 | { 19 | name: 'name', 20 | description: 'The font name.', 21 | type: ArgType.String, 22 | required: false, 23 | rest: false 24 | }, 25 | { 26 | name: 'log', 27 | description: 'Whether to log the registration.', 28 | type: ArgType.Boolean, 29 | required: false, 30 | rest: false 31 | } 32 | ], 33 | async execute (_, [src, name, log]) { 34 | await registerFonts([{ src: src, name }], log ?? false); 35 | return this.success(); 36 | } 37 | }); -------------------------------------------------------------------------------- /src/functions/util/restore.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { FCError } from '../../classes'; 3 | 4 | export default new NativeFunction({ 5 | name: '$restore', 6 | description: 'Restores the most recently saved canvas state.', 7 | version: '1.0.0', 8 | brackets: false, 9 | unwrap: true, 10 | args: [ 11 | { 12 | name: 'canvas', 13 | description: 'Name of the canvas.', 14 | type: ArgType.String, 15 | required: false, 16 | rest: false 17 | } 18 | ], 19 | execute (ctx, [name]) { 20 | const canvas = name 21 | ? ctx.canvasManager?.get(name) 22 | : ctx.canvasManager?.lastCurrent; 23 | if (!canvas) return this.customError(FCError.NoCanvas); 24 | 25 | canvas.ctx.restore(); 26 | return this.success(); 27 | } 28 | }); -------------------------------------------------------------------------------- /src/functions/util/rgbToHex.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { rgbToHex } from '@gifsx/gifsx'; 3 | 4 | export default new NativeFunction({ 5 | name: '$rgbToHex', 6 | description: 'Converts RGB into HEX.', 7 | version: '1.2.1', 8 | brackets: true, 9 | unwrap: true, 10 | args: [ 11 | { 12 | name: 'allowShort', 13 | description: 'Whether to allow short hex output. (default: false)', 14 | type: ArgType.Boolean, 15 | required: false, 16 | rest: false 17 | }, 18 | { 19 | name: 'rgba', 20 | description: 'The RGB to convert into HEX.', 21 | type: ArgType.Number, 22 | check: (x: number) => x >= 0 && x <= 255, 23 | required: true, 24 | rest: true 25 | } 26 | ], 27 | execute (_, [a_s, rgb]) { 28 | try { 29 | const res = rgbToHex(Uint8Array.from(rgb), a_s ?? false); 30 | return this.success(`[${res.map(x => `"${x}"`).join(', ')}]`); 31 | } catch(e) { 32 | return this.customError((e as any).toString()); 33 | } 34 | } 35 | }); -------------------------------------------------------------------------------- /src/functions/util/save.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { FCError } from '../../classes'; 3 | 4 | export default new NativeFunction({ 5 | name: '$save', 6 | description: 'Saves the entire state of the canvas.', 7 | version: '1.0.0', 8 | brackets: false, 9 | unwrap: true, 10 | args: [ 11 | { 12 | name: 'canvas', 13 | description: 'Name of the canvas.', 14 | type: ArgType.String, 15 | required: false, 16 | rest: false 17 | } 18 | ], 19 | execute (ctx, [name]) { 20 | const canvas = name 21 | ? ctx.canvasManager?.get(name) 22 | : ctx.canvasManager?.lastCurrent; 23 | if (!canvas) return this.customError(FCError.NoCanvas); 24 | 25 | canvas.ctx.save(); 26 | return this.success(); 27 | } 28 | }); -------------------------------------------------------------------------------- /src/functions/util/textAlign.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { FCError, TextAlign } from '../..'; 3 | 4 | export default new NativeFunction({ 5 | name: '$textAlign', 6 | aliases: ['$alignText'], 7 | description: 'Sets or returns the text align.', 8 | version: '1.0.0', 9 | brackets: false, 10 | unwrap: true, 11 | args: [ 12 | { 13 | name: 'canvas', 14 | description: 'Name of the canvas.', 15 | type: ArgType.String, 16 | required: false, 17 | rest: false 18 | }, 19 | { 20 | name: 'align', 21 | description: 'The new align.', 22 | type: ArgType.Enum, 23 | enum: TextAlign, 24 | required: false, 25 | rest: false 26 | } 27 | ], 28 | execute (ctx, [name, align]) { 29 | const canvas = (name 30 | ? ctx.canvasManager?.get(name) 31 | : ctx.canvasManager?.lastCurrent)?.ctx; 32 | if (!canvas) return this.customError(FCError.NoCanvas); 33 | 34 | return this.success(align !== null 35 | ? ( 36 | canvas.textAlign = ( 37 | typeof align === 'number' ? TextAlign[align] : align 38 | ) as CanvasTextAlign, undefined 39 | ) : typeof canvas.textAlign === 'number' 40 | ? TextAlign[canvas.textAlign] 41 | : canvas.textAlign ?? 'start' 42 | ); 43 | } 44 | }); -------------------------------------------------------------------------------- /src/functions/util/wordSpacing.ts: -------------------------------------------------------------------------------- 1 | import { NativeFunction, ArgType } from '@tryforge/forgescript'; 2 | import { FCError } from '../../classes'; 3 | 4 | export default new NativeFunction({ 5 | name: '$wordSpacing', 6 | description: 'Sets or returns the spacing between words when drawing text.', 7 | version: '1.0.0', 8 | aliases: ["$wordSpace"], 9 | brackets: false, 10 | unwrap: true, 11 | args: [ 12 | { 13 | name: 'canvas', 14 | description: 'Name of the canvas.', 15 | type: ArgType.String, 16 | required: false, 17 | rest: false 18 | }, 19 | { 20 | name: 'spacing', 21 | description: 'The new spacing.', 22 | type: ArgType.Number, 23 | required: false, 24 | rest: false 25 | } 26 | ], 27 | execute (ctx, [name, spacing]) { 28 | const canvas = (name 29 | ? ctx.canvasManager?.get(name) 30 | : ctx.canvasManager?.lastCurrent)?.ctx; 31 | if (!canvas) return this.customError(FCError.NoCanvas); 32 | 33 | return this.success(spacing 34 | ? (canvas.wordSpacing = `${spacing}px`, undefined) 35 | : canvas.wordSpacing 36 | ); 37 | } 38 | }); -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES2022", 4 | "module": "CommonJS", 5 | "rootDir": "src", 6 | "resolveJsonModule": true, 7 | "declaration": true, 8 | "declarationMap": false, 9 | "sourceMap": false, 10 | "outDir": "dist", 11 | "esModuleInterop": true, 12 | "forceConsistentCasingInFileNames": true, 13 | "strict": true, 14 | "skipLibCheck": true 15 | } 16 | } --------------------------------------------------------------------------------