word/edit: precalculate image width and height
authorMischa POSLAWSKY <perl@shiar.org>
Sun, 15 Aug 2021 02:31:33 +0000 (04:31 +0200)
committerMischa POSLAWSKY <perl@shiar.org>
Wed, 25 Aug 2021 04:53:32 +0000 (06:53 +0200)
Code cleanup.

Shiar_Sheet/ImagePrep.pm

index 4fc33b64639a82ae1cfb71c745ecb1617bf4d3d0..0c7489b54cd1346fd4b6c92118e60034a57c3420 100644 (file)
@@ -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
                );