Add action icon for Invert

main
Isaiah Odhner 2019-12-14 23:11:30 -05:00
parent f9069fd8ab
commit be216e5aad
3 changed files with 15 additions and 8 deletions

BIN
help/p_invert.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 B

View File

@ -1439,7 +1439,10 @@ async function edit_paste(execCommandFallback){
} }
function image_invert(){ function image_invert(){
apply_image_transformation("Invert", (original_canvas, original_ctx, new_canvas, new_ctx) => { apply_image_transformation({
name: "Invert",
icon: get_icon_for_tool({help_icon: "p_invert.png"}), // HACK
}, (original_canvas, original_ctx, new_canvas, new_ctx) => {
invert_rgb(original_ctx, new_ctx); invert_rgb(original_ctx, new_ctx);
}); });
} }

View File

@ -393,7 +393,7 @@ function draw_noncontiguous_fill(ctx, x, y, fill_r, fill_g, fill_b, fill_a){
} }
} }
function apply_image_transformation(action_name, fn){ function apply_image_transformation(meta, fn){
// Apply an image transformation function to either the selection or the entire canvas // Apply an image transformation function to either the selection or the entire canvas
const original_canvas = selection ? selection.source_canvas: canvas; const original_canvas = selection ? selection.source_canvas: canvas;
@ -406,13 +406,17 @@ function apply_image_transformation(action_name, fn){
if(selection){ if(selection){
undoable({ undoable({
name: `${action_name} Selection`, name: `${meta.name} Selection`,
icon: meta.icon,
soft: true, soft: true,
}, () => { }, () => {
selection.replace_source_canvas(new_canvas); selection.replace_source_canvas(new_canvas);
}); });
}else{ }else{
undoable({name: action_name}, () => { undoable({
name: meta.name,
icon: meta.icon,
}, () => {
deselect(); deselect();
cancel(); cancel();
saved = false; saved = false;
@ -425,7 +429,7 @@ function apply_image_transformation(action_name, fn){
} }
function flip_horizontal(){ function flip_horizontal(){
apply_image_transformation("Flip Horizontal", (original_canvas, original_ctx, new_canvas, new_ctx) => { apply_image_transformation({name: "Flip Horizontal"}, (original_canvas, original_ctx, new_canvas, new_ctx) => {
new_ctx.translate(new_canvas.width, 0); new_ctx.translate(new_canvas.width, 0);
new_ctx.scale(-1, 1); new_ctx.scale(-1, 1);
new_ctx.drawImage(original_canvas, 0, 0); new_ctx.drawImage(original_canvas, 0, 0);
@ -433,7 +437,7 @@ function flip_horizontal(){
} }
function flip_vertical(){ function flip_vertical(){
apply_image_transformation("Flip Vertical", (original_canvas, original_ctx, new_canvas, new_ctx) => { apply_image_transformation({name: "Flip Vertical"}, (original_canvas, original_ctx, new_canvas, new_ctx) => {
new_ctx.translate(0, new_canvas.height); new_ctx.translate(0, new_canvas.height);
new_ctx.scale(1, -1); new_ctx.scale(1, -1);
new_ctx.drawImage(original_canvas, 0, 0); new_ctx.drawImage(original_canvas, 0, 0);
@ -441,7 +445,7 @@ function flip_vertical(){
} }
function rotate(angle){ function rotate(angle){
apply_image_transformation(`Rotate ${angle / TAU * 360} degrees`, (original_canvas, original_ctx, new_canvas, new_ctx) => { apply_image_transformation({name: `Rotate ${angle / TAU * 360} degrees`}, (original_canvas, original_ctx, new_canvas, new_ctx) => {
new_ctx.save(); new_ctx.save();
switch(angle){ switch(angle){
case TAU / 4: case TAU / 4:
@ -513,7 +517,7 @@ function rotate(angle){
} }
function stretch_and_skew(xscale, yscale, hsa, vsa){ function stretch_and_skew(xscale, yscale, hsa, vsa){
apply_image_transformation("Stretch/Skew", (original_canvas, original_ctx, new_canvas, new_ctx) => { apply_image_transformation({name: "Stretch/Skew"}, (original_canvas, original_ctx, new_canvas, new_ctx) => {
const w = original_canvas.width * xscale; const w = original_canvas.width * xscale;
const h = original_canvas.height * yscale; const h = original_canvas.height * yscale;