Allow autoscale() with zero height or width
Commit 6e7e6f9
stopped the function from running if width or height was
zero, this commit reverts that change. This commit also makes the
resulting canvas 0x0 if autoscale is called with zero. By adding this
special case we can avoid division by zero in the calculations.
This commit is contained in:
parent
2aa3b5bc79
commit
a136b4b078
|
@ -191,10 +191,16 @@ export default class Display {
|
||||||
}
|
}
|
||||||
|
|
||||||
absX(x) {
|
absX(x) {
|
||||||
|
if (this._scale === 0) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
return x / this._scale + this._viewportLoc.x;
|
return x / this._scale + this._viewportLoc.x;
|
||||||
}
|
}
|
||||||
|
|
||||||
absY(y) {
|
absY(y) {
|
||||||
|
if (this._scale === 0) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
return y / this._scale + this._viewportLoc.y;
|
return y / this._scale + this._viewportLoc.y;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -495,20 +501,22 @@ export default class Display {
|
||||||
}
|
}
|
||||||
|
|
||||||
autoscale(containerWidth, containerHeight) {
|
autoscale(containerWidth, containerHeight) {
|
||||||
if (containerWidth === 0 || containerHeight === 0) {
|
|
||||||
Log.Warn("Autoscale doesn't work when width or height is zero");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const vp = this._viewportLoc;
|
|
||||||
const targetAspectRatio = containerWidth / containerHeight;
|
|
||||||
const fbAspectRatio = vp.w / vp.h;
|
|
||||||
|
|
||||||
let scaleRatio;
|
let scaleRatio;
|
||||||
if (fbAspectRatio >= targetAspectRatio) {
|
|
||||||
scaleRatio = containerWidth / vp.w;
|
if (containerWidth === 0 || containerHeight === 0) {
|
||||||
|
scaleRatio = 0;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
scaleRatio = containerHeight / vp.h;
|
|
||||||
|
const vp = this._viewportLoc;
|
||||||
|
const targetAspectRatio = containerWidth / containerHeight;
|
||||||
|
const fbAspectRatio = vp.w / vp.h;
|
||||||
|
|
||||||
|
if (fbAspectRatio >= targetAspectRatio) {
|
||||||
|
scaleRatio = containerWidth / vp.w;
|
||||||
|
} else {
|
||||||
|
scaleRatio = containerHeight / vp.h;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this._rescale(scaleRatio);
|
this._rescale(scaleRatio);
|
||||||
|
|
Loading…
Reference in New Issue