Files
PackControl/node_modules/color-space/ydbdr.js
2026-02-27 22:46:14 +01:00

75 lines
1.2 KiB
JavaScript

/**
* https://en.wikipedia.org/?title=YDbDr
*
* @module color-space/ydbdr
*/
import rgb from './rgb.js';
import yuv from './yuv.js';
var ydbdr = {
name: 'ydbdr',
min: [0, -1.333, -1.333],
max: [1, 1.333, 1.333],
channel: ['Y', 'Db', 'Dr'],
alias: ['YDbDr']
};
/**
* YDbDr to RGB
*
* @param {Array<number>} ydbdr RGB values
*
* @return {Array<number>} YDbDr values
*/
ydbdr.rgb = function (ydbdr) {
var y = ydbdr[0], db = ydbdr[1], dr = ydbdr[2];
var r = y + 0.000092303716148 * db - 0.525912630661865 * dr;
var g = y - 0.129132898890509 * db + 0.267899328207599 * dr;
var b = y + 0.664679059978955 * db - 0.000079202543533 * dr;
return [r * 255, g * 255, b * 255];
};
/**
* RGB to YDbDr
*
* @param {Array<number>} rgb YDbDr values
*
* @return {Array<number>} RGB values
*/
rgb.ydbdr = function (rgb) {
var r = rgb[0] / 255, g = rgb[1] / 255, b = rgb[2] / 255;
return [
0.299 * r + 0.587 * g + 0.114 * b,
-0.450 * r - 0.883 * g + 1.333 * b,
-1.333 * r + 1.116 * g + 0.217 * b
];
};
/**
* To YUV
*/
yuv.ydbdr = function (yuv) {
return [
yuv[0], 3.059 * yuv[1], -2.169 * yuv[2]
]
};
/**
* From YUV
*/
ydbdr.yuv = function (ydbdr) {
return [
ydbdr[0], ydbdr[1] / 3.059, -ydbdr[2] / 2.169
]
};
export default (ydbdr);