import p5 from 'p5'; import { P5AsciifyGrid } from '../Grid'; import { P5AsciifyFontManager } from '../FontManager'; import { FeatureAsciiRendererOptions } from '../renderers/types'; import { P5AsciifyAbstractFeatureRenderer2D } from '../renderers/2d/feature'; import { P5AsciifyRenderer2D } from '../renderers/2d'; import { P5AsciifyRenderer } from '../renderers'; /** * Interface that all p5.asciify renderer plugins must implement. */ export interface P5AsciifyRendererPlugin { /** Unique identifier for the renderer type */ readonly id: string; /** Human-readable name of the renderer */ readonly name: string; /** Description of what the renderer does */ readonly description: string; /** Version of the plugin */ readonly version: string; /** Author of the plugin */ readonly author: string; /** * Creates a new instance of the renderer. * @param p The p5 instance. * @param captureFramebuffer The framebuffer containing the content to asciify. * @param grid The grid to use for the asciification. * @param fontManager The font manager to use. * @param options Optional options for the renderer. * @returns A new instance of the renderer. */ create(p: p5, captureFramebuffer: p5.Framebuffer | p5.Graphics, grid: P5AsciifyGrid, fontManager: P5AsciifyFontManager, options?: FeatureAsciiRendererOptions): P5AsciifyAbstractFeatureRenderer2D | P5AsciifyRenderer2D | P5AsciifyRenderer; }