Skip to content

Commit

Permalink
Add setter for the resolution of Renderer, CanvasRenderer (#8825)
Browse files Browse the repository at this point in the history
  • Loading branch information
bigtimebuddy committed Nov 7, 2022
1 parent 078596d commit 2e78ba2
Show file tree
Hide file tree
Showing 4 changed files with 56 additions and 2 deletions.
17 changes: 16 additions & 1 deletion packages/canvas-renderer/src/CanvasRenderer.ts
Expand Up @@ -189,7 +189,17 @@ export class CanvasRenderer extends SystemManager<CanvasRenderer> implements IRe
options = Object.assign({}, settings.RENDER_OPTIONS, options);

const systemConfig = {
runners: ['init', 'destroy', 'contextChange', 'reset', 'update', 'postrender', 'prerender', 'resize'],
runners: [
'init',
'destroy',
'contextChange',
'resolutionChange',
'reset',
'update',
'postrender',
'prerender',
'resize'
],
systems: CanvasRenderer.__systems,
priority: [
'textureGenerator',
Expand Down Expand Up @@ -325,6 +335,11 @@ export class CanvasRenderer extends SystemManager<CanvasRenderer> implements IRe
{
return this._view.resolution;
}
set resolution(value: number)
{
this._view.resolution = value;
this.runners.resolutionChange.emit(value);
}

/** Whether CSS dimensions of canvas view should be resized to screen dimensions automatically. */
get autoDensity(): boolean
Expand Down
17 changes: 16 additions & 1 deletion packages/core/src/Renderer.ts
Expand Up @@ -326,7 +326,17 @@ export class Renderer extends SystemManager<Renderer> implements IRenderer
}, true);

const systemConfig = {
runners: ['init', 'destroy', 'contextChange', 'reset', 'update', 'postrender', 'prerender', 'resize'],
runners: [
'init',
'destroy',
'contextChange',
'resolutionChange',
'reset',
'update',
'postrender',
'prerender',
'resize'
],
systems: Renderer.__systems,
priority: [
'_view',
Expand Down Expand Up @@ -482,6 +492,11 @@ export class Renderer extends SystemManager<Renderer> implements IRenderer
{
return this._view.resolution;
}
set resolution(value: number)
{
this._view.resolution = value;
this.runners.resolutionChange.emit(value);
}

/** Whether CSS dimensions of canvas view should be resized to screen dimensions automatically. */
get autoDensity(): boolean
Expand Down
9 changes: 9 additions & 0 deletions packages/events/src/EventSystem.ts
Expand Up @@ -130,6 +130,15 @@ export class EventSystem
this.resolution = resolution;
}

/**
* Handle changing resolution.
* @ignore
*/
resolutionChange(resolution: number): void
{
this.resolution = resolution;
}

/** Destroys all event listeners and detaches the renderer. */
destroy(): void
{
Expand Down
15 changes: 15 additions & 0 deletions packages/events/test/EventSystem.tests.ts
Expand Up @@ -365,4 +365,19 @@ describe('EventSystem', () =>
done();
}, 800);
});

it('should inherit resolution changes', () =>
{
const renderer = createRenderer();

renderer.resolution = 2;

expect(renderer.resolution).toEqual(2);
expect(renderer.events.resolution).toEqual(2);

renderer.resolution = 1;

expect(renderer.resolution).toEqual(1);
expect(renderer.events.resolution).toEqual(1);
});
});

0 comments on commit 2e78ba2

Please sign in to comment.