pixel-utils
Version:
Utility Functions for Pixels
85 lines (84 loc) • 3.55 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = rawToRgb;
var _quickScale = require("quick-scale");
var _makeNoDataRgb = _interopRequireDefault(require("../make-no-data-rgb"));
var _convertSingle = _interopRequireDefault(require("./convert-single"));
var _convertSingleStr = _interopRequireDefault(require("./convert-single-str"));
var _convertDouble = _interopRequireDefault(require("./convert-double"));
var _convertDoubleStr = _interopRequireDefault(require("./convert-double-str"));
var _convertTriple = _interopRequireDefault(require("./convert-triple"));
var _convertTripleStr = _interopRequireDefault(require("./convert-triple-str"));
var _convertMany = _interopRequireDefault(require("./convert-many"));
var _convertManyStr = _interopRequireDefault(require("./convert-many-str"));
var _rgbToStr = _interopRequireDefault(require("../rgb-to-str"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function rawToRgb({
format = "array",
ranges,
flip,
new_no_data_pixel,
new_no_data_value,
no_range_value,
no_range_value_strategy,
old_no_data_value,
round = true
}) {
const nbands = ranges.length;
if (new_no_data_pixel && new_no_data_value) {
throw new Error("[pixel-utils/raw-to-rgb] can't specify both new_no_data_pixel and new_no_data_value");
}
if (new_no_data_pixel === undefined || new_no_data_pixel === null) {
if (new_no_data_value === undefined || new_no_data_value === null) {
new_no_data_pixel = (0, _makeNoDataRgb.default)(null);
} else {
new_no_data_pixel = (0, _makeNoDataRgb.default)(new_no_data_value);
}
}
if (new_no_data_pixel === undefined) throw new Error("[raw-to-rgb] undefined new_no_data_pixel");
const new_range = [0 === new_no_data_value ? 1 : 0, 255 === new_no_data_value ? 254 : 255];
const options = {
flip,
no_range_value,
no_range_value_strategy,
round
};
const scalefns = ranges.slice(0, 3).map(rng => (0, _quickScale.createScaleFunction)(rng, new_range, options));
if (nbands === 1) {
if (format === "string") {
// @ts-ignore
return _convertSingleStr.default.bind(null, old_no_data_value, (0, _rgbToStr.default)(new_no_data_pixel), ...scalefns);
} else {
// @ts-ignore
return _convertSingle.default.bind(null, old_no_data_value, new_no_data_pixel, ...scalefns);
}
} else if (nbands === 2) {
if (format === "string") {
// @ts-ignore
return _convertDoubleStr.default.bind(null, old_no_data_value, (0, _rgbToStr.default)(new_no_data_pixel), ...scalefns);
} else {
// @ts-ignore
return _convertDouble.default.bind(null, old_no_data_value, new_no_data_pixel, ...scalefns);
}
} else if (nbands === 3) {
if (format === "string") {
// @ts-ignore
return _convertTripleStr.default.bind(null, old_no_data_value, (0, _rgbToStr.default)(new_no_data_pixel), ...scalefns);
} else {
// @ts-ignore
return _convertTriple.default.bind(null, old_no_data_value, new_no_data_pixel, ...scalefns);
}
} else if (nbands >= 4) {
if (format === "string") {
// @ts-ignore
return _convertManyStr.default.bind(null, old_no_data_value, (0, _rgbToStr.default)(new_no_data_pixel), ...scalefns);
} else {
// @ts-ignore
return _convertMany.default.bind(null, old_no_data_value, new_no_data_pixel, ...scalefns);
}
} else {
throw new Error("[pixel-utils/raw-to-rgb] invalid number of bands: " + nbands);
}
}