docs: function _hsv2rgb(data, addr, H,S,V) {
  	if (V < 0.0001) {
  		data[addr] = data[addr+1] = data[addr+2] = 0;
  		return;
  	}
  
  	if (V>1) V = 1;
  
  	if (S == 0) {
  		data[addr] = data[addr+1] = data[addr+2] = v2b(V);
  		return;
  	}
  
  	if (S>1) S = 1;
  
  	var hue = H < 0 ? (H + 360) : (H >= 360 ? H - 360 : H),
  	    st = (hue/60),
  	    oct = st-(st|0), // [0...1]
  	    y = hsv_angle_correction ? /* istanbul ignore next */ Math.sin((oct-.5)*1.0471975512)+.5 : oct,
  	    s = S*V,
  	    ns = V - s,
  	    _ns = v2b(ns),
  	    _v = v2b(V);
  
  	switch (st|0) {
  	case 0: data[addr] = _v;          data[addr+1] = v2b(ns+s*y); data[addr+2] = _ns;         return;
  	case 1: data[addr] = v2b(V-s*y);  data[addr+1] = _v;          data[addr+2] = _ns;         return;
  	case 2: data[addr] = _ns;         data[addr+1] = _v;          data[addr+2] = v2b(ns+s*y); return;
  	case 3: data[addr] = _ns;         data[addr+1] = v2b(V-s*y);  data[addr+2] = _v;          return;
  	case 4: data[addr] = v2b(ns+s*y); data[addr+1] = _ns;         data[addr+2] = _v;          return;
  	}
  	/*   5: */
  	        data[addr] = _v;          data[addr+1] = _ns;         data[addr+2] = v2b(V-s*y);
  }