duckengine
Version:
A 2D Game Engine for the web.
209 lines (208 loc) • 7.26 kB
TypeScript
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;
}