use chroma.js to calculate waterfall colors
This commit is contained in:
@ -700,7 +700,7 @@ function on_ws_recv(evt) {
|
||||
switch (json.type) {
|
||||
case "config":
|
||||
var config = json['value'];
|
||||
waterfall_colors = config['waterfall_colors'];
|
||||
waterfall_colors = chroma.scale(config['waterfall_colors']);
|
||||
waterfall_min_level_default = config['waterfall_min_level'];
|
||||
waterfall_max_level_default = config['waterfall_max_level'];
|
||||
waterfall_auto_level_margin = config['waterfall_auto_level_margin'];
|
||||
@ -1207,16 +1207,9 @@ function open_websocket() {
|
||||
}
|
||||
|
||||
function waterfall_mkcolor(db_value, waterfall_colors_arg) {
|
||||
if (typeof waterfall_colors_arg === 'undefined') waterfall_colors_arg = waterfall_colors;
|
||||
if (db_value < waterfall_min_level) db_value = waterfall_min_level;
|
||||
if (db_value > waterfall_max_level) db_value = waterfall_max_level;
|
||||
var full_scale = waterfall_max_level - waterfall_min_level;
|
||||
var relative_value = db_value - waterfall_min_level;
|
||||
var value_percent = relative_value / full_scale;
|
||||
var percent_for_one_color = 1 / (waterfall_colors_arg.length - 1);
|
||||
var index = Math.floor(value_percent / percent_for_one_color);
|
||||
var remain = (value_percent - percent_for_one_color * index) / percent_for_one_color;
|
||||
return color_between(waterfall_colors_arg[index + 1], waterfall_colors_arg[index], remain);
|
||||
waterfall_colors_arg = waterfall_colors_arg || waterfall_colors;
|
||||
var value_percent = (db_value - waterfall_min_level) / (waterfall_max_level - waterfall_min_level);
|
||||
return waterfall_colors(Math.max(0, Math.min(1, value_percent)));
|
||||
}
|
||||
|
||||
function color_between(first, second, percent) {
|
||||
@ -1311,9 +1304,9 @@ function waterfall_add(data) {
|
||||
//Add line to waterfall image
|
||||
var oneline_image = canvas_context.createImageData(w, 1);
|
||||
for (var x = 0; x < w; x++) {
|
||||
var color = waterfall_mkcolor(data[x]);
|
||||
for (i = 0; i < 4; i++)
|
||||
oneline_image.data[x * 4 + i] = ((color >>> 0) >> ((3 - i) * 8)) & 0xff;
|
||||
var color = waterfall_mkcolor(data[x]).rgb();
|
||||
for (i = 0; i < 3; i++) oneline_image.data[x * 4 + i] = color[i];
|
||||
oneline_image.data[x * 4 + 3] = 255;
|
||||
}
|
||||
|
||||
//Draw image
|
||||
@ -1619,8 +1612,9 @@ function secondary_demod_waterfall_add(data) {
|
||||
//Add line to waterfall image
|
||||
var oneline_image = secondary_demod_current_canvas_context.createImageData(w, 1);
|
||||
for (var x = 0; x < w; x++) {
|
||||
var color = waterfall_mkcolor(data[x] + secondary_demod_fft_offset_db);
|
||||
for (var i = 0; i < 4; i++) oneline_image.data[x * 4 + i] = ((color >>> 0) >> ((3 - i) * 8)) & 0xff;
|
||||
var color = waterfall_mkcolor(data[x] + secondary_demod_fft_offset_db).rgb();
|
||||
for (var i = 0; i < 3; i++) oneline_image.data[x * 4 + i] = color[i];
|
||||
oneline_image.data[x * 4 + 3] = 255;
|
||||
}
|
||||
|
||||
//Draw image
|
||||
|
Reference in New Issue
Block a user