angular-color-picker-fixed
Version:
Radial Color Picker - Angular
70 lines • 8.44 kB
JavaScript
import { Quadrant, Cache } from './constants';
/**
* Calculates in which quadrant is the point, serves for calculating the right angle.
*
* @param point x,y coordinates of client's pointer position
*/
export var calculateQuadrant = function (point) {
if (point.x > 0) {
if (point.y > 0) {
return Quadrant.I;
}
else {
return Quadrant.IV;
}
}
else {
if (point.y > 0) {
return Quadrant.II;
}
else {
return Quadrant.III;
}
}
};
/**
* Calculates the distance between two points.
*
* This variant expects separate x/y values for each point. If you already have
* the points as array or object use the corresponding methods.
*
* @param x1 The X value of the first point.
* @param y1 The Y value of the first point.
* @param x2 The X value of the second point.
* @param y2 The Y value of the second point.
* @return The distance between the two points.
*/
export var distanceOfSegmentByXYValues = function (x1, y1, x2, y2) {
return Math.sqrt(((x1 - x2) * (x1 - x2)) + ((y1 - y2) * (y1 - y2)));
};
/**
* Calculates the angle of rotation
*
* @param point x,y coordinates of client's pointer position
* @param quadrant one of four quarters of the coordinate plane
*/
export var determineCSSRotationAngle = function (point, quadrant) {
var cx = point.x;
var cy = point.y;
var add = 0;
switch (quadrant) {
case Quadrant.II:
add = 270;
cx = ((point.x * Cache.cos90) - (point.y * Cache.sin90));
cy = ((point.x * Cache.sin90) + (point.y * Cache.cos90));
break;
case Quadrant.III:
add = 180;
cx = ((point.x * Cache.cos180) - (point.y * Cache.sin180));
cy = ((point.x * Cache.sin180) + (point.y * Cache.cos180));
break;
case Quadrant.IV:
add = 90;
cx = ((point.x * Cache.cos270) - (point.y * Cache.sin270));
cy = ((point.x * Cache.sin270) + (point.y * Cache.cos270));
break;
}
var rotation = Math.atan((distanceOfSegmentByXYValues(0, cy, cx, cy)) / (distanceOfSegmentByXYValues(0, cy, 0, 0)));
return (rotation * (180 / Math.PI)) + add;
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0ByYWRpYWwtY29sb3ItcGlja2VyL2FuZ3VsYXItY29sb3ItcGlja2VyLyIsInNvdXJjZXMiOlsibGliL2hlbHBlcnMvaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUU5Qzs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLElBQU0saUJBQWlCLEdBQUcsVUFBQyxLQUErQjtJQUMvRCxJQUFJLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ2YsSUFBSSxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNmLE9BQU8sUUFBUSxDQUFDLENBQUMsQ0FBQztTQUNuQjthQUFNO1lBQ0wsT0FBTyxRQUFRLENBQUMsRUFBRSxDQUFDO1NBQ3BCO0tBQ0Y7U0FBTTtRQUNMLElBQUksS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDZixPQUFPLFFBQVEsQ0FBQyxFQUFFLENBQUM7U0FDcEI7YUFBTTtZQUNMLE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQztTQUNyQjtLQUNGO0FBQ0gsQ0FBQyxDQUFDO0FBR0Y7Ozs7Ozs7Ozs7O01BV007QUFDTixNQUFNLENBQUMsSUFBTSwyQkFBMkIsR0FBRyxVQUFDLEVBQVUsRUFBRSxFQUFVLEVBQUUsRUFBVSxFQUFFLEVBQVU7SUFDeEYsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0RSxDQUFDLENBQUM7QUFFRjs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxJQUFNLHlCQUF5QixHQUFHLFVBQUMsS0FBSyxFQUFFLFFBQVE7SUFDdkQsSUFBSSxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNqQixJQUFJLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2pCLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNaLFFBQVEsUUFBUSxFQUFFO1FBQ2hCLEtBQUssUUFBUSxDQUFDLEVBQUU7WUFDZCxHQUFHLEdBQUcsR0FBRyxDQUFDO1lBQ1YsRUFBRSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDekQsRUFBRSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDekQsTUFBTTtRQUNSLEtBQUssUUFBUSxDQUFDLEdBQUc7WUFDZixHQUFHLEdBQUcsR0FBRyxDQUFDO1lBQ1YsRUFBRSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDM0QsRUFBRSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDM0QsTUFBTTtRQUNSLEtBQUssUUFBUSxDQUFDLEVBQUU7WUFDZCxHQUFHLEdBQUcsRUFBRSxDQUFDO1lBQ1QsRUFBRSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDM0QsRUFBRSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDM0QsTUFBTTtLQUNUO0lBRUQsSUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLDJCQUEyQixDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFdEgsT0FBTyxDQUFDLFFBQVEsR0FBRyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7QUFDNUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUXVhZHJhbnQsIENhY2hlIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuXG4vKipcbiAqIENhbGN1bGF0ZXMgaW4gd2hpY2ggcXVhZHJhbnQgaXMgdGhlIHBvaW50LCBzZXJ2ZXMgZm9yIGNhbGN1bGF0aW5nIHRoZSByaWdodCBhbmdsZS5cbiAqXG4gKiBAcGFyYW0gcG9pbnQgeCx5IGNvb3JkaW5hdGVzIG9mIGNsaWVudCdzIHBvaW50ZXIgcG9zaXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IGNhbGN1bGF0ZVF1YWRyYW50ID0gKHBvaW50OiB7IHg6IG51bWJlciwgeTogbnVtYmVyIH0pOiBzdHJpbmcgPT4ge1xuICBpZiAocG9pbnQueCA+IDApIHtcbiAgICBpZiAocG9pbnQueSA+IDApIHtcbiAgICAgIHJldHVybiBRdWFkcmFudC5JO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gUXVhZHJhbnQuSVY7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmIChwb2ludC55ID4gMCkge1xuICAgICAgcmV0dXJuIFF1YWRyYW50LklJO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gUXVhZHJhbnQuSUlJO1xuICAgIH1cbiAgfVxufTtcblxuXG4vKipcbiAgICAqIENhbGN1bGF0ZXMgdGhlIGRpc3RhbmNlIGJldHdlZW4gdHdvIHBvaW50cy5cbiAgICAqXG4gICAgKiBUaGlzIHZhcmlhbnQgZXhwZWN0cyBzZXBhcmF0ZSB4L3kgdmFsdWVzIGZvciBlYWNoIHBvaW50LiBJZiB5b3UgYWxyZWFkeSBoYXZlXG4gICAgKiB0aGUgcG9pbnRzIGFzIGFycmF5IG9yIG9iamVjdCB1c2UgdGhlIGNvcnJlc3BvbmRpbmcgbWV0aG9kcy5cbiAgICAqXG4gICAgKiBAcGFyYW0geDEgVGhlIFggdmFsdWUgb2YgdGhlIGZpcnN0IHBvaW50LlxuICAgICogQHBhcmFtIHkxIFRoZSBZIHZhbHVlIG9mIHRoZSBmaXJzdCBwb2ludC5cbiAgICAqIEBwYXJhbSB4MiBUaGUgWCB2YWx1ZSBvZiB0aGUgc2Vjb25kIHBvaW50LlxuICAgICogQHBhcmFtIHkyIFRoZSBZIHZhbHVlIG9mIHRoZSBzZWNvbmQgcG9pbnQuXG4gICAgKiBAcmV0dXJuIFRoZSBkaXN0YW5jZSBiZXR3ZWVuIHRoZSB0d28gcG9pbnRzLlxuICAgICovXG5leHBvcnQgY29uc3QgZGlzdGFuY2VPZlNlZ21lbnRCeVhZVmFsdWVzID0gKHgxOiBudW1iZXIsIHkxOiBudW1iZXIsIHgyOiBudW1iZXIsIHkyOiBudW1iZXIpOiBudW1iZXIgPT4ge1xuICByZXR1cm4gTWF0aC5zcXJ0KCgoeDEgLSB4MikgKiAoeDEgLSB4MikpICsgKCh5MSAtIHkyKSAqICh5MSAtIHkyKSkpO1xufTtcblxuLyoqXG4gKiBDYWxjdWxhdGVzIHRoZSBhbmdsZSBvZiByb3RhdGlvblxuICpcbiAqIEBwYXJhbSBwb2ludCB4LHkgY29vcmRpbmF0ZXMgb2YgY2xpZW50J3MgcG9pbnRlciBwb3NpdGlvblxuICogQHBhcmFtIHF1YWRyYW50IG9uZSBvZiBmb3VyIHF1YXJ0ZXJzIG9mIHRoZSBjb29yZGluYXRlIHBsYW5lXG4gKi9cbmV4cG9ydCBjb25zdCBkZXRlcm1pbmVDU1NSb3RhdGlvbkFuZ2xlID0gKHBvaW50LCBxdWFkcmFudCkgPT4ge1xuICBsZXQgY3ggPSBwb2ludC54O1xuICBsZXQgY3kgPSBwb2ludC55O1xuICBsZXQgYWRkID0gMDtcbiAgc3dpdGNoIChxdWFkcmFudCkge1xuICAgIGNhc2UgUXVhZHJhbnQuSUk6XG4gICAgICBhZGQgPSAyNzA7XG4gICAgICBjeCA9ICgocG9pbnQueCAqIENhY2hlLmNvczkwKSAtIChwb2ludC55ICogQ2FjaGUuc2luOTApKTtcbiAgICAgIGN5ID0gKChwb2ludC54ICogQ2FjaGUuc2luOTApICsgKHBvaW50LnkgKiBDYWNoZS5jb3M5MCkpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBRdWFkcmFudC5JSUk6XG4gICAgICBhZGQgPSAxODA7XG4gICAgICBjeCA9ICgocG9pbnQueCAqIENhY2hlLmNvczE4MCkgLSAocG9pbnQueSAqIENhY2hlLnNpbjE4MCkpO1xuICAgICAgY3kgPSAoKHBvaW50LnggKiBDYWNoZS5zaW4xODApICsgKHBvaW50LnkgKiBDYWNoZS5jb3MxODApKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgUXVhZHJhbnQuSVY6XG4gICAgICBhZGQgPSA5MDtcbiAgICAgIGN4ID0gKChwb2ludC54ICogQ2FjaGUuY29zMjcwKSAtIChwb2ludC55ICogQ2FjaGUuc2luMjcwKSk7XG4gICAgICBjeSA9ICgocG9pbnQueCAqIENhY2hlLnNpbjI3MCkgKyAocG9pbnQueSAqIENhY2hlLmNvczI3MCkpO1xuICAgICAgYnJlYWs7XG4gIH1cblxuICBjb25zdCByb3RhdGlvbiA9IE1hdGguYXRhbigoZGlzdGFuY2VPZlNlZ21lbnRCeVhZVmFsdWVzKDAsIGN5LCBjeCwgY3kpKSAvIChkaXN0YW5jZU9mU2VnbWVudEJ5WFlWYWx1ZXMoMCwgY3ksIDAsIDApKSk7XG5cbiAgcmV0dXJuIChyb3RhdGlvbiAqICgxODAgLyBNYXRoLlBJKSkgKyBhZGQ7XG59O1xuIl19