miniPaint/src/js/modules/effects/night_vision.js
2021-01-24 23:00:19 +02:00

82 lines
2.2 KiB
JavaScript

import app from './../../app.js';
import config from './../../config.js';
import Dialog_class from './../../libs/popup.js';
import Base_layers_class from './../../core/base-layers.js';
import glfx from './../../libs/glfx.js';
import ImageFilters_class from './../../libs/imagefilters.js';
import alertify from './../../../../node_modules/alertifyjs/build/alertify.min.js';
class Effects_nightVision_class {
constructor() {
this.POP = new Dialog_class();
this.Base_layers = new Base_layers_class();
this.fx_filter = false;
this.ImageFilters = ImageFilters_class;
}
night_vision() {
if (config.layer.type != 'image') {
alertify.error('This layer must contain an image. Please convert it to raster to apply this tool.');
return;
}
//get canvas from layer
var canvas = this.Base_layers.convert_layer_to_canvas(null, true);
var ctx = canvas.getContext("2d");
//change data
var data = this.change(canvas, canvas.width, canvas.height);
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.drawImage(data, 0, 0);
//save
return app.State.do_action(
new app.Actions.Update_layer_image_action(canvas)
);
}
change(canvas, width, height) {
if (this.fx_filter == false) {
//init glfx lib
this.fx_filter = glfx.canvas();
}
//create second copy
var canvas2 = document.createElement('canvas');
var ctx2 = canvas2.getContext("2d");
canvas2.width = width;
canvas2.height = height;
ctx2.drawImage(canvas, 0, 0);
// green overlay
var img = ctx2.getImageData(0, 0, width, height);
//RGB corrections
var img = this.ImageFilters.ColorTransformFilter(img, 1, 1, 1, 1, 0, 100, 0, 1);
//hue/saturation/luminance
var img = this.ImageFilters.HSLAdjustment(img, 0, 0, -50);
ctx2.putImageData(img, 0, 0);
//vignete
var texture = this.fx_filter.texture(canvas2);
this.fx_filter.draw(texture).vignette(0.2, 0.9).update(); //effect
canvas2 = this.fx_filter;
return canvas2;
}
demo(canvas_id, canvas_thumb){
var canvas = document.getElementById(canvas_id);
var ctx = canvas.getContext("2d");
//modify
var params = {};
var data = this.change(canvas_thumb, canvas_thumb.width, canvas_thumb.height);
//draw
ctx.drawImage(data, 0, 0);
}
}
export default Effects_nightVision_class;