mirror of
https://github.com/viliusle/miniPaint.git
synced 2026-02-06 13:36:45 +00:00
82 lines
2.2 KiB
JavaScript
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; |