From 5e4c37b26db8009a1104b7784fe4520d228aa7ff Mon Sep 17 00:00:00 2001 From: Mischa POSLAWSKY Date: Sun, 15 Aug 2021 04:31:33 +0200 Subject: [PATCH] word/edit: precalculate image width and height Code cleanup. --- Shiar_Sheet/ImagePrep.pm | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Shiar_Sheet/ImagePrep.pm b/Shiar_Sheet/ImagePrep.pm index 4fc33b6..0c7489b 100644 --- a/Shiar_Sheet/ImagePrep.pm +++ b/Shiar_Sheet/ImagePrep.pm @@ -34,12 +34,13 @@ sub convert { if (my ($cmdarg) = grep { $cmds[$_] eq '-area' } 0 .. $#cmds) { # replace option by permillage crop my @dim = map { $_ / 1000 } split /\D/, $cmds[$cmdarg + 1]; + $dim[$_] ||= 1 for 2, 3; # optional end + push @dim, $dim[2 + $_] - $dim[$_] for 0, 1; # add width, height splice @cmds, $cmdarg, 2, ( -set => 'option:distort:viewport' => sprintf( - '%%[fx:w*%s]x%%[fx:h*%s]+%%[fx:w*%s]+%%[fx:h*%s]', - ($dim[2] || 1) - $dim[0], # width = x2 - x1 - ($dim[3] || 1) - $dim[1], # height = y2 - y1 - @dim[0, 1] # offset = x1,y1 + '%%[fx:%s]x%%[fx:%s]+%%[fx:%s]+%%[fx:%s]', + "w*$dim[4]", "h*$dim[5]", # width x height + "w*$dim[0]", "h*$dim[1]", # x+y offset ), -distort => SRT => 0, # noop transform to apply viewport ); -- 2.30.0