Ensure scale used in calculations is numeric

This commit is contained in:
mike-000
2021-09-05 00:04:14 +01:00
committed by GitHub
parent 0c912b6c29
commit 7b8d6c817b
+8 -7
View File
@@ -312,7 +312,7 @@ export function getDefaultStyleArray() {
* @param {import("../size.js").Size} size Image size. * @param {import("../size.js").Size} size Image size.
* @return {number} Scale. * @return {number} Scale.
*/ */
function resizeScaleFunction(size) { function scaleForSize(size) {
return 32 / Math.min(size[0], size[1]); return 32 / Math.min(size[0], size[1]);
} }
@@ -341,7 +341,7 @@ function createStyleDefaults() {
anchorYUnits: DEFAULT_IMAGE_STYLE_ANCHOR_Y_UNITS, anchorYUnits: DEFAULT_IMAGE_STYLE_ANCHOR_Y_UNITS,
crossOrigin: 'anonymous', crossOrigin: 'anonymous',
rotation: 0, rotation: 0,
scale: resizeScaleFunction(DEFAULT_IMAGE_STYLE_SIZE), scale: scaleForSize(DEFAULT_IMAGE_STYLE_SIZE),
size: DEFAULT_IMAGE_STYLE_SIZE, size: DEFAULT_IMAGE_STYLE_SIZE,
src: DEFAULT_IMAGE_STYLE_SRC, src: DEFAULT_IMAGE_STYLE_SRC,
}); });
@@ -1338,6 +1338,7 @@ function iconStyleParser(node, objectStack) {
color: color, color: color,
}); });
const imageScale = imageStyle.getScaleArray()[0];
const imageSize = imageStyle.getSize(); const imageSize = imageStyle.getSize();
if (imageSize === null) { if (imageSize === null) {
const imageState = imageStyle.getImageState(); const imageState = imageStyle.getImageState();
@@ -1352,8 +1353,8 @@ function iconStyleParser(node, objectStack) {
) { ) {
const imageSize = imageStyle.getSize(); const imageSize = imageStyle.getSize();
if (imageSize && imageSize.length == 2) { if (imageSize && imageSize.length == 2) {
const resizeScale = resizeScaleFunction(imageSize); const resizeScale = scaleForSize(imageSize);
imageStyle.setScale(scale * resizeScale); imageStyle.setScale(imageScale * resizeScale);
} }
imageStyle.unlistenImageChange(listener); imageStyle.unlistenImageChange(listener);
} }
@@ -1364,8 +1365,8 @@ function iconStyleParser(node, objectStack) {
} }
} }
} else if (imageSize.length == 2) { } else if (imageSize.length == 2) {
const resizeScale = resizeScaleFunction(imageSize); const resizeScale = scaleForSize(imageSize);
imageStyle.setScale(scale * resizeScale); imageStyle.setScale(imageScale * resizeScale);
} }
styleObject['imageStyle'] = imageStyle; styleObject['imageStyle'] = imageStyle;
} else { } else {
@@ -2658,7 +2659,7 @@ function writeIconStyle(node, style, objectStack) {
imageSize = DEFAULT_IMAGE_STYLE_SIZE; imageSize = DEFAULT_IMAGE_STYLE_SIZE;
} }
if (imageSize.length == 2) { if (imageSize.length == 2) {
const resizeScale = resizeScaleFunction(imageSize); const resizeScale = scaleForSize(imageSize);
scale = scale / resizeScale; scale = scale / resizeScale;
} }
if (scale !== 1) { if (scale !== 1) {