@openhps/core
Version:
Open Hybrid Positioning System - Core component
62 lines (58 loc) • 1.78 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.posterize = exports.default = void 0;
var _TempNode = _interopRequireDefault(require("../core/TempNode.js"));
var _TSLBase = require("../tsl/TSLBase.js");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* Represents a posterize effect which reduces the number of colors
* in an image, resulting in a more blocky and stylized appearance.
*
* @augments TempNode
*/
class PosterizeNode extends _TempNode.default {
static get type() {
return 'PosterizeNode';
}
/**
* Constructs a new posterize node.
*
* @param {Node} sourceNode - The input color.
* @param {Node} stepsNode - Controls the intensity of the posterization effect. A lower number results in a more blocky appearance.
*/
constructor(sourceNode, stepsNode) {
super();
/**
* The input color.
*
* @type {Node}
*/
this.sourceNode = sourceNode;
/**
* Controls the intensity of the posterization effect. A lower number results in a more blocky appearance.
*
* @type {Node}
*/
this.stepsNode = stepsNode;
}
setup() {
const {
sourceNode,
stepsNode
} = this;
return sourceNode.mul(stepsNode).floor().div(stepsNode);
}
}
var _default = exports.default = PosterizeNode;
/**
* TSL function for creating a posterize node.
*
* @tsl
* @function
* @param {Node} sourceNode - The input color.
* @param {Node} stepsNode - Controls the intensity of the posterization effect. A lower number results in a more blocky appearance.
* @returns {PosterizeNode}
*/
const posterize = exports.posterize = /*@__PURE__*/(0, _TSLBase.nodeProxy)(PosterizeNode).setParameterLength(2);