Files
openlayers/src/ol/rotationconstraint.js
Tim Schaub 054af09032 Make code prettier
This updates ESLint and our shared eslint-config-openlayers to use Prettier.  Most formatting changes were automatically applied with this:

    npm run lint -- --fix

A few manual changes were required:

 * In `examples/offscreen-canvas.js`, the `//eslint-disable-line` comment needed to be moved to the appropriate line to disable the error about the `'worker-loader!./offscreen-canvas.worker.js'` import.
 * In `examples/webpack/exapmle-builder.js`, spaces could not be added after a couple `function`s for some reason.  While editing this, I reworked `ExampleBuilder` to be a class.
 * In `src/ol/format/WMSGetFeatureInfo.js`, the `// @ts-ignore` comment needed to be moved down one line so it applied to the `parsersNS` argument.
2020-04-06 12:54:09 -06:00

90 lines
1.9 KiB
JavaScript

/**
* @module ol/rotationconstraint
*/
import {toRadians} from './math.js';
/**
* @typedef {function((number|undefined), boolean=): (number|undefined)} Type
*/
/**
* @param {number|undefined} rotation Rotation.
* @return {number|undefined} Rotation.
*/
export function disable(rotation) {
if (rotation !== undefined) {
return 0;
} else {
return undefined;
}
}
/**
* @param {number|undefined} rotation Rotation.
* @return {number|undefined} Rotation.
*/
export function none(rotation) {
if (rotation !== undefined) {
return rotation;
} else {
return undefined;
}
}
/**
* @param {number} n N.
* @return {Type} Rotation constraint.
*/
export function createSnapToN(n) {
const theta = (2 * Math.PI) / n;
return (
/**
* @param {number|undefined} rotation Rotation.
* @param {boolean=} opt_isMoving True if an interaction or animation is in progress.
* @return {number|undefined} Rotation.
*/
function (rotation, opt_isMoving) {
if (opt_isMoving) {
return rotation;
}
if (rotation !== undefined) {
rotation = Math.floor(rotation / theta + 0.5) * theta;
return rotation;
} else {
return undefined;
}
}
);
}
/**
* @param {number=} opt_tolerance Tolerance.
* @return {Type} Rotation constraint.
*/
export function createSnapToZero(opt_tolerance) {
const tolerance = opt_tolerance || toRadians(5);
return (
/**
* @param {number|undefined} rotation Rotation.
* @param {boolean=} opt_isMoving True if an interaction or animation is in progress.
* @return {number|undefined} Rotation.
*/
function (rotation, opt_isMoving) {
if (opt_isMoving) {
return rotation;
}
if (rotation !== undefined) {
if (Math.abs(rotation) <= tolerance) {
return 0;
} else {
return rotation;
}
} else {
return undefined;
}
}
);
}