mirror of
https://github.com/viliusle/miniPaint.git
synced 2026-02-06 11:21:47 +00:00
trim update: power parameter
This commit is contained in:
parent
d71629e49a
commit
4c6204224d
@ -50,14 +50,14 @@ class Image_trim_class {
|
||||
params: [
|
||||
{name: "trim_layer", title: "Trim layer:", value: true},
|
||||
{name: "trim_all", title: "Trim borders:", value: true},
|
||||
{}, //gap
|
||||
{name: "power", title: "Power:", value: 0, max: 255},
|
||||
{name: "remove_white", title: "Trim white color?", value: removeWhiteColor},
|
||||
],
|
||||
on_finish: (params) => {
|
||||
if (params.trim_layer == true) {
|
||||
//first trim
|
||||
let actions = [];
|
||||
actions = actions.concat(this.trim_layer(config.layer.id, params.remove_white));
|
||||
actions = actions.concat(this.trim_layer(config.layer.id, params.remove_white, params.power));
|
||||
app.State.do_action(
|
||||
new app.Actions.Bundle_action('trim_layers', 'Trim Layers', actions)
|
||||
);
|
||||
@ -66,7 +66,7 @@ class Image_trim_class {
|
||||
//second trim
|
||||
setTimeout(function(){
|
||||
let actions = [];
|
||||
actions = actions.concat(_this.trim_all(params.remove_white));
|
||||
actions = actions.concat(_this.trim_all(params.remove_white, params.power));
|
||||
app.State.do_action(
|
||||
new app.Actions.Bundle_action('trim_layers', 'Trim Layers', actions)
|
||||
);
|
||||
@ -83,8 +83,9 @@ class Image_trim_class {
|
||||
*
|
||||
* @param layer_id
|
||||
* @param removeWhiteColor
|
||||
* @param {int} power
|
||||
*/
|
||||
trim_layer(layer_id, removeWhiteColor = false) {
|
||||
trim_layer(layer_id, removeWhiteColor = false, power = 0) {
|
||||
var layer = this.Base_layers.get_layer(layer_id);
|
||||
|
||||
if (layer.type != 'image') {
|
||||
@ -92,7 +93,7 @@ class Image_trim_class {
|
||||
return false;
|
||||
}
|
||||
|
||||
var trim = this.get_trim_info(layer_id, removeWhiteColor);
|
||||
var trim = this.get_trim_info(layer_id, removeWhiteColor, power);
|
||||
trim = trim.relative;
|
||||
|
||||
//if image was stretched
|
||||
@ -128,8 +129,9 @@ class Image_trim_class {
|
||||
* this affect canvas size and all layers positions
|
||||
*
|
||||
* @param removeWhiteColor
|
||||
* @param {int} power
|
||||
*/
|
||||
trim_all(removeWhiteColor = false) {
|
||||
trim_all(removeWhiteColor = false, power = 0) {
|
||||
let actions = [];
|
||||
|
||||
var all_top = config.HEIGHT;
|
||||
@ -150,7 +152,7 @@ class Image_trim_class {
|
||||
|
||||
if (layer.width == null || layer.height == null || layer.x == null || layer.y == null) {
|
||||
//layer without dimensions
|
||||
const trim_info = this.get_trim_info(layer.id, removeWhiteColor);
|
||||
const trim_info = this.get_trim_info(layer.id, removeWhiteColor, power);
|
||||
|
||||
all_top = Math.min(all_top, trim_info.top);
|
||||
all_left = Math.min(all_left, trim_info.left);
|
||||
@ -196,9 +198,10 @@ class Image_trim_class {
|
||||
*
|
||||
* @param {int} layer_id
|
||||
* @param {boolean} trim_white
|
||||
* @param {int} power
|
||||
* @returns {object} keys: top, left, bottom, right, width, height, relative
|
||||
*/
|
||||
get_trim_info(layer_id, trim_white) {
|
||||
get_trim_info(layer_id, trim_white, power) {
|
||||
if (trim_white == undefined) {
|
||||
trim_white = false;
|
||||
if (config.TRANSPARENCY == false) {
|
||||
@ -223,9 +226,10 @@ class Image_trim_class {
|
||||
for (var y = 0; y < img.height; y++) {
|
||||
for (var x = 0; x < img.width; x++) {
|
||||
var k = ((y * (img.width * 4)) + (x * 4));
|
||||
if (imgData[k + 3] == 0)
|
||||
if (imgData[k + 3] <= power)
|
||||
continue; //transparent
|
||||
if (trim_white == true && imgData[k] == 255 && imgData[k + 1] == 255 && imgData[k + 2] == 255)
|
||||
if (trim_white == true && imgData[k] >= 255 - power && imgData[k + 1] >= 255 - power
|
||||
&& imgData[k + 2] >= 255 - power)
|
||||
continue; //white
|
||||
break main1;
|
||||
}
|
||||
@ -236,9 +240,10 @@ class Image_trim_class {
|
||||
for (var x = 0; x < img.width; x++) {
|
||||
for (var y = 0; y < img.height; y++) {
|
||||
var k = ((y * (img.width * 4)) + (x * 4));
|
||||
if (imgData[k + 3] == 0)
|
||||
if (imgData[k + 3] <= power)
|
||||
continue; //transparent
|
||||
if (trim_white == true && imgData[k] == 255 && imgData[k + 1] == 255 && imgData[k + 2] == 255)
|
||||
if (trim_white == true && imgData[k] >= 255 - power && imgData[k + 1] >= 255 - power
|
||||
&& imgData[k + 2] >= 255 - power)
|
||||
continue; //white
|
||||
break main2;
|
||||
}
|
||||
@ -249,9 +254,10 @@ class Image_trim_class {
|
||||
for (var y = img.height - 1; y >= 0; y--) {
|
||||
for (var x = img.width - 1; x >= 0; x--) {
|
||||
var k = ((y * (img.width * 4)) + (x * 4));
|
||||
if (imgData[k + 3] == 0)
|
||||
if (imgData[k + 3] <= power)
|
||||
continue; //transparent
|
||||
if (trim_white == true && imgData[k] == 255 && imgData[k + 1] == 255 && imgData[k + 2] == 255)
|
||||
if (trim_white == true && imgData[k] >= 255 - power && imgData[k + 1] >= 255 - power
|
||||
&& imgData[k + 2] >= 255 - power)
|
||||
continue; //white
|
||||
break main3;
|
||||
}
|
||||
@ -262,9 +268,10 @@ class Image_trim_class {
|
||||
for (var x = img.width - 1; x >= 0; x--) {
|
||||
for (var y = img.height - 1; y >= 0; y--) {
|
||||
var k = ((y * (img.width * 4)) + (x * 4));
|
||||
if (imgData[k + 3] == 0)
|
||||
if (imgData[k + 3] <= power)
|
||||
continue; //transparent
|
||||
if (trim_white == true && imgData[k] == 255 && imgData[k + 1] == 255 && imgData[k + 2] == 255)
|
||||
if (trim_white == true && imgData[k] >= 255 - power && imgData[k + 1] >= 255 - power
|
||||
&& imgData[k + 2] >= 255 - power)
|
||||
continue; //white
|
||||
break main4;
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user