pixel-utils
Version:
Utility Functions for Pixels
91 lines (90 loc) • 4.36 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = rawToRgba;
var _quickScale = require("quick-scale");
var _makeNoDataRgba = _interopRequireDefault(require("../make-no-data-rgba"));
var _makeNoDataRgbaString = _interopRequireDefault(require("../make-no-data-rgba-string"));
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 _convertDoubleAll = _interopRequireDefault(require("./convert-double-all"));
var _convertDoubleAllStr = _interopRequireDefault(require("./convert-double-all-str"));
var _convertMultiband = _interopRequireDefault(require("./convert-multiband"));
var _convertMultibandStr = _interopRequireDefault(require("./convert-multiband-str"));
var _convertMultibandAll = _interopRequireDefault(require("./convert-multiband-all"));
var _convertMultibandAllStr = _interopRequireDefault(require("./convert-multiband-all-str"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function rawToRgba({
debug_level = 0,
format = "array",
ranges,
flip = false,
new_no_data_value,
no_data_strategy,
no_range_value,
no_range_value_strategy,
old_no_data_value
}) {
if (debug_level >= 1) console.log("[pixel-utils/raw-to-rgba] ranges:", ranges);
const nbands = ranges.length;
const new_range = [0 === new_no_data_value ? 1 : 0, 255 === new_no_data_value ? 254 : 255];
if (debug_level >= 1) console.log("[pixel-utils/raw-to-rgba] new_range:", new_range);
const options = {
no_data_value: new_no_data_value,
flip,
no_range_value,
no_range_value_strategy,
round: true
};
if (debug_level >= 1) console.log("[pixel-utils/raw-to-rgba] options:", options);
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, _makeNoDataRgbaString.default)(new_no_data_value !== null && new_no_data_value !== void 0 ? new_no_data_value : "null"), scalefns[0]);
} else if (format === "array") {
// @ts-ignore
return _convertSingle.default.bind(null, old_no_data_value, (0, _makeNoDataRgba.default)(new_no_data_value), scalefns[0]);
}
} else if (nbands === 2) {
if (no_data_strategy === "all") {
if (format === "string") {
// @ts-ignore
return _convertDoubleAllStr.default.bind(null, old_no_data_value, (0, _makeNoDataRgbaString.default)(new_no_data_value !== null && new_no_data_value !== void 0 ? new_no_data_value : "null"), ...scalefns);
} else if (format === "array") {
// @ts-ignore
return _convertDoubleAll.default.bind(null, old_no_data_value, (0, _makeNoDataRgba.default)(new_no_data_value), ...scalefns);
}
} else {
if (format === "string") {
// @ts-ignore
return _convertDoubleStr.default.bind(null, old_no_data_value, new_no_data_value !== null && new_no_data_value !== void 0 ? new_no_data_value : "null", ...scalefns);
} else if (format === "array") {
// @ts-ignore
return _convertDouble.default.bind(null, old_no_data_value, new_no_data_value, ...scalefns);
}
}
} else if (nbands >= 3) {
if (no_data_strategy === "all") {
if (format === "string") {
// @ts-ignore
return _convertMultibandAllStr.default.bind(null, old_no_data_value, (0, _makeNoDataRgbaString.default)(new_no_data_value), ...scalefns);
} else if (format === "array") {
// @ts-ignore
return _convertMultibandAll.default.bind(null, old_no_data_value, (0, _makeNoDataRgba.default)(new_no_data_value), ...scalefns);
}
} else {
if (format === "string") {
// @ts-ignore
return _convertMultibandStr.default.bind(null, old_no_data_value, new_no_data_value, ...scalefns);
} else if (format === "array") {
// @ts-ignore
return _convertMultiband.default.bind(null, old_no_data_value, new_no_data_value, ...scalefns);
}
}
}
throw Error("uh oh");
}