konva
Version:
HTML5 2d canvas library for interactive graphics, design editors, whiteboards, and diagrams.
31 lines (30 loc) • 1.06 kB
JavaScript
import { _registerCSSFilterFallback } from "../Node.js";
// The shared brightness accessor is registered by Brighten.
import "./Brighten.js";
/**
* Brightness Filter.
* CSS-compatible brightness multiplier. An unset brightness leaves pixels unchanged.
* @function
* @memberof Konva.Filters
* @param {Object} imageData
* @example
* node.cache();
* node.filters([Konva.Filters.Brightness]);
* node.brightness(1.5); // 50% brighter (CSS-compatible)
*/
export const Brightness = function (imageData) {
brighten(imageData, this.attrs.brightness === undefined ? 1 : this.brightness());
};
// CSS brightness(v) is the same multiplier.
_registerCSSFilterFallback('brightness', brighten);
function brighten(imageData, brightness) {
const data = imageData.data, len = data.length;
for (let i = 0; i < len; i += 4) {
// red
data[i] = Math.min(255, data[i] * brightness);
// green
data[i + 1] = Math.min(255, data[i + 1] * brightness);
// blue
data[i + 2] = Math.min(255, data[i + 2] * brightness);
}
}