UNPKG

duckengine

Version:
209 lines (208 loc) 7.26 kB
import Game from '../../game'; import TextureBase from '../../texture/textureBase'; import BaseRenderer from '../baseRenderer'; import { BlendModes } from './const/blendModes'; import RendererPipeline from './pipeline/rendererPipeline'; /** * @class CanvasRenderer * @classdesc Creates a DuckEngine CanvasRenderer * @description The CanvasRenderer Class. Renders everything using the RendererPipeline to pool what to draw * @since 2.1.0 */ export default class CanvasRenderer extends BaseRenderer { /** * @memberof CanvasRenderer * @description The Canvas rendering context * @type CanvasRenderingContext2D * @since 2.1.0 */ ctx: CanvasRenderingContext2D; /** * @memberof CanvasRenderer * @description The RenderingPipeline, handles and manages what needs to be drawn and updated * @type RendererPipeline * @since 2.1.0 */ pipeline: RendererPipeline; /** * @constructor CanvasRenderer * @description Creates a CanvasRenderer instance * @param {Game} game Game instance * @param {number} [poolingInterval= 1000 / game.fps] How often the does the RendererPipeline pool visible scenes and renderables * @since 2.1.0 */ constructor(game: Game, poolingInterval?: number); /** * @memberof CanvasRenderer * @description Gets the poolStack from the pipeline and ticks, updates, and renders the scene and renderables * @param {number} deltaTime Time passed since last frame * @since 2.1.0 */ render(deltaTime: number): void; /** * @memberof CanvasRenderer * @description Calls this.ctx.save * @since 2.1.0 */ save(): void; /** * @memberof CanvasRenderer * @description Calls this.ctx.restore * @since 2.1.0 */ restore(): void; /** * @memberof CanvasRenderer * @description Calls this.ctx.translate * @param {number} x X position * @param {number} y Y position * @since 2.1.0 */ translate(x: number, y: number): void; /** * @memberof CanvasRenderer * @description Transforms the canvas using this.ctx.transform * @param {number} a * @param {number} b * @param {number} c * @param {number} d * @param {number} e * @param {number} f * @since 2.1.0 */ transform(a: number, b: number, c: number, d: number, e: number, f: number): void; /** * @memberof CanvasRenderer * @description Scales the canvas using this.ctx.scale * @param {number} x X scale * @param {number} y Y scale * @since 2.1.0 */ scale(x: number, y: number): void; /** * @memberof CanvasRenderer * @description Sets the font using this.ctx.font = * @param {string} font Font to set to * @since 2.1.0 */ setFont(font: string): void; /** * @memberof CanvasRenderer * @description Measures the text using the font * @param {string} font Font to set to * @param {string} text Text measure * @returns {TextMetrics} * @since 2.1.0 */ measureText(font: string, text: string): TextMetrics; /** * @memberof CanvasRenderer * @description Sets the fillStyle using this.ctx.fillStyle = * @param {string} color Color to set to * @since 2.1.0 */ setFillColor(color: string): void; /** * @memberof CanvasRenderer * @description Sets the strokeStyle using this.ctx.fillStyle = * @param {string} color Color to set to * @since 2.1.0 */ setStrokeColor(color: string): void; /** * @memberof CanvasRenderer * @description Sets the lineWidth using this.ctx.lineWidth = * @param {number} width Width to set as * @since 2.1.0 */ setLineWidth(width: number): void; /** * @memberof CanvasRenderer * @description Draws text to the screen, must set font with this.setFont first and color with this.setFillColor * @param {string} text Text to draw * @param {number} x X Position * @param {number} y Y Position * @param {number} [maxWidth] Max width of text, optional * @since 2.1.0 */ drawText(text: string, x: number, y: number, maxWidth?: number): void; /** * @memberof CanvasRenderer * @description Strokes text to the screen, must set font with this.setFont first and color with this.setStrokeColor * @param {string} text Text to draw * @param {number} x X Position * @param {number} y Y Position * @param {number} [maxWidth] Max width of text, optional * @since 2.1.0 */ strokeText(text: string, x: number, y: number, maxWidth?: number): void; /** * @memberof CanvasRenderer * @description Clears the screen * @since 2.1.0 */ clearFrame(): void; /** * @memberof CanvasRenderer * @description Clears an area * @param {number} x X position * @param {number} y Y position * @param {number} w Width of area to clear * @param {number} h Height of area to clear * @since 2.1.0 */ clearRect(x: number, y: number, w: number, h: number): void; /** * @memberof CanvasRenderer * @description Fills a rectangle * @param {number} x X position * @param {number} y Y position * @param {number} w Width of rect * @param {number} h Height of rect * @param {string} color Color to fill rect with * @since 2.1.0 */ drawRect(x: number, y: number, w: number, h: number, color: string): void; /** * @memberof CanvasRenderer * @description Fills a circle * @param {number} x X position * @param {number} y Y position * @param {number} r Radius of circle * @param {string} color Color to fill circle with * @since 2.1.0 */ drawCircle(x: number, y: number, r: number, color: string): void; /** * @memberof CanvasRenderer * @description Fills a roundRect * @param {number} x X position * @param {number} y Y position * @param {number} w Width of roundRect * @param {number} h Height of roundRect * @param {number} r Radius of roundRect * @param {string} color Color to fill roundRect with * @since 2.1.0 */ drawRoundRect(x: number, y: number, w: number, h: number, r: number, color: string): void; /** * @memberof CanvasRenderer * @description Draws a sprite * @param {number} x X position * @param {number} y Y position * @param {number} w Width of roundRect * @param {number} h Height of roundRect * @param {TextureBase<'image'>} texture Texture to use for the Sprite * @param {number} [currentRow] The default row to use for the texture, for spritesheets * @param {number} [currentCol] The default column to use for the texture, for spritesheets * @since 2.1.0 */ drawSprite(x: number, y: number, w: number, h: number, texture: TextureBase<'image'>, currentRow?: number, currentCol?: number): void; /** * @memberof CanvasRenderer * @description Sets the blend mode / globalCompositionOperation * @param {keyof typeof BlendModes} blendMode Blend Mode * @since 2.1.0 */ setBlendMode(blendMode: keyof typeof BlendModes): void; }