function DrawPowerSpectrum(i_canvas, i_spectrum) { var ctx = i_canvas.getContext("2d"); // CLEAR THE CANVAS // ctx.clearRect(0, 0, i_canvas.width-1, i_canvas.height-1); // BG // var grd_bg = ctx.createLinearGradient(0, 0, 0, i_canvas.height-1); grd_bg.addColorStop(0, "hsl(210, 15%, 24%)"); grd_bg.addColorStop(.5, "hsl(210, 15%, 40%)"); grd_bg.addColorStop(1, "hsl(210, 15%, 24%)"); ctx.fillStyle = grd_bg; ctx.fillRect(0, 0, i_canvas.width-1, i_canvas.height-1); G_SPECTRUM_ZOOM = Math.max(0, Math.min(1, G_SPECTRUM_ZOOM)); var zoom = G_SPECTRUM_ZOOM; // LOWPASS FILTER DRAW // var _lowpass_bw = GLOBALS.lowpass_bw / (1.0 - .999*zoom); var _lowpass_trans = GLOBALS.lowpass_trans / (1.0 - .999*zoom); var grd_lowpass = ctx.createLinearGradient(0, 0, i_canvas.width-1, 0); var _l = Math.max(0, .5 - .5 * _lowpass_bw); var _ll = Math.max(0, .5 - .5 * (_lowpass_bw + _lowpass_trans)); var _r = Math.min(1, .5 + .5 * _lowpass_bw); var _rr = Math.min(1, .5 + .5 * (_lowpass_bw + _lowpass_trans)); grd_lowpass.addColorStop(0, "rgba(15,25,50,0)"); grd_lowpass.addColorStop(_ll, "rgba(15,25,50,0)"); grd_lowpass.addColorStop(_l, "#113555"); grd_lowpass.addColorStop(_r, "#113555"); grd_lowpass.addColorStop(_rr, "rgba(15,25,50,0)"); grd_lowpass.addColorStop(1, "rgba(15,25,50,0)"); ctx.fillStyle = grd_lowpass; ctx.fillRect(0, 0, i_canvas.width-1, i_canvas.height-1); // SPECTRUM // var power_grd = ctx.createLinearGradient(0, 0, 0, i_canvas.height-1); power_grd.addColorStop(0.2, "yellow"); power_grd.addColorStop(.6, "#993311"); power_grd.addColorStop(1, "black"); ctx.strokeStyle = power_grd; ctx.beginPath(); if(i_spectrum.type_size_ == 1) // 8 bit char { for(var x=0; x