convex-pixel
Version:
The library for creating pseudo 3d interactive scenes based on webgl
59 lines • 2.33 kB
JavaScript
import { Vector4D } from "./geom/vector";
export var RatioFitTypes;
(function (RatioFitTypes) {
RatioFitTypes[RatioFitTypes["NONE"] = 0] = "NONE";
RatioFitTypes[RatioFitTypes["FILL"] = 1] = "FILL";
RatioFitTypes[RatioFitTypes["SHOW_ALL"] = 2] = "SHOW_ALL";
RatioFitTypes[RatioFitTypes["O_FILL"] = 3] = "O_FILL";
RatioFitTypes[RatioFitTypes["O_SHOW_ALL"] = 4] = "O_SHOW_ALL";
})(RatioFitTypes || (RatioFitTypes = {}));
export var getRatio = function (width1, height1, width2, height2, type) {
if (type === void 0) { type = RatioFitTypes.NONE; }
var ratioX;
var ratioY;
switch (type) {
case RatioFitTypes.SHOW_ALL:
ratioX = width2 / width1;
ratioY = height2 / height1;
return Math.min(ratioX, ratioY);
case RatioFitTypes.FILL:
ratioX = width2 / width1;
ratioY = height2 / height1;
return Math.max(ratioX, ratioY);
case RatioFitTypes.O_SHOW_ALL:
ratioX = width2 < width1 ? width2 / width1 : width1 / width2;
ratioY = height2 < height1 ? height2 / height1 : height1 / height2;
return Math.min(ratioX, ratioY);
case RatioFitTypes.O_FILL:
ratioX = width2 < width1 ? width2 / width1 : width1 / width2;
ratioY = height2 < height1 ? height2 / height1 : height1 / height2;
return Math.min(ratioX, ratioY);
case RatioFitTypes.NONE:
default:
return 1;
}
};
export var getAbsolutePosition = function (object, options, iteration) {
if (iteration === void 0) { iteration = 0; }
var _to;
if (options && options.to) {
_to = options.to;
}
if (!object) {
return Vector4D.new();
}
var result = Vector4D.new(object.x, object.y, object.scale.x, object.scale.y);
if (object.parent) {
var isVect = _to && object.parent instanceof _to;
// if (!isVect) {
var parentPos = getAbsolutePosition(object.parent, options, iteration++);
result.x += parentPos.x || 0;
result.y += parentPos.y || 0;
result.z *= parentPos.z || 1;
result.t *= parentPos.t || 1;
parentPos.free();
// }
}
return result;
};
//# sourceMappingURL=display.js.map