All files index.js

100% Statements 12/12
100% Branches 3/3
100% Functions 2/2
100% Lines 12/12

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34              1x 1x 1x 1x 1x   1x 1x 1x     1x                 2x 1x     1x    
import { applyFilter } from 'lens-core';
 
/**
 * Iterate over the array applying the sepia transformation
 * @param {Object} data
 * @param {Number} length
 */
export const transform = ({ data, length }) => {
    for (let i = 0; i < length; i += 4) {
        const r = data[i];
        const g = data[i + 1];
        const b = data[i + 2];
 
        data[i] = r * 0.393 + g * 0.769 + b * 0.189;
        data[i + 1] = r * 0.349 + g * 0.686 + b * 0.168;
        data[i + 2] = r * 0.272 + g * 0.534 + b * 0.131;
    }
 
    return data;
};
 
/**
 * @param {ImageData} data - data of a image extracted from a canvas
 * @param {Number} nWorkers - number of workers
 * @returns {Promise}
 */
export default function sepia({ data, nWorkers } = {}) {
    if (!data) {
        throw new Error('lens-filter-sepia:: invalid options provided');
    }
 
    return applyFilter({ data, transform, nWorkers });
}