summaryrefslogtreecommitdiff
path: root/libre/cowsay/0003-implement-animation-stepping.patch
diff options
context:
space:
mode:
Diffstat (limited to 'libre/cowsay/0003-implement-animation-stepping.patch')
-rw-r--r--libre/cowsay/0003-implement-animation-stepping.patch82
1 files changed, 82 insertions, 0 deletions
diff --git a/libre/cowsay/0003-implement-animation-stepping.patch b/libre/cowsay/0003-implement-animation-stepping.patch
new file mode 100644
index 000000000..bd8ad10f7
--- /dev/null
+++ b/libre/cowsay/0003-implement-animation-stepping.patch
@@ -0,0 +1,82 @@
+From b2c3e20920c2595f800eb1cb1bd28b0ad03377e2 Mon Sep 17 00:00:00 2001
+From: bill-auger <mr.j.spam.me@gmail.com>
+Date: Tue, 21 Mar 2023 13:56:40 -0400
+Subject: [PATCH 3/5] implement animation stepping
+
+---
+ cowsay | 47 +++++++++++++++++++++++++++++++++++++++--------
+ 1 file changed, 39 insertions(+), 8 deletions(-)
+
+diff --git a/cowsay b/cowsay
+index dc49542..aa356df 100755
+--- a/cowsay
++++ b/cowsay
+@@ -45,7 +45,7 @@ if (($^O eq "MSWin32") or ($^O eq "Windows_NT")) { ## Many perls, eek!
+ 'W' => 40,
+ );
+
+-getopts('bde:f:ghlLnNpstT:wW:y', \%opts);
++getopts('abde:f:ghlLnNpstT:wW:y', \%opts);
+
+ &display_usage if $opts{'h'};
+ &list_cowfiles if $opts{'l'};
+@@ -76,18 +76,49 @@ else {
+ my $anim_duration = 3000000;
+ my $n_anim_files = @anim_files;
+ my $sleep_ivl = $anim_duration / $n_anim_files;
+- my $clear_string = `clear`;
++ $clear_string = `clear`;
++ $frame_n = 0;
++ $key = '';
+
+- for my $full (@anim_files) {
+- do $full;
+- die "$progname: $@\n" if $@;
++ # step through animation
++ if ($opts{'a'}) {
++ use Term::ReadKey;
+
+- print $clear_string;
+- &print_cow;
+- usleep($sleep_ivl);
++ while (not $key =~ /q/) {
++ if ($key =~ /,/ and $frame_n > 0 ) { --$frame_n; }
++ elsif ($key =~ /\./ and $frame_n < $n_anim_files - 1) { ++$frame_n; }
++ $full = $anim_files[$frame_n];
++ &print_frame;
++ &read_key;
++ }
++ # play complete animation
++ } else {
++ for $full (@anim_files) {
++ &print_frame;
++ usleep($sleep_ivl);
++ }
+ }
+ }
+
++sub read_key {
++ $key = '';
++
++ while (not $key =~ /,|\.|q/) {
++ ReadMode('cbreak');
++ $key = ReadKey(0);
++ ReadMode('normal');
++ }
++}
++
++sub print_frame {
++ do $full;
++ die "$progname: $@\n" if $@;
++
++ print $clear_string;
++ &print_cow;
++ if ($opts{'a'}) { print "frame[$frame_n]: $full\n"; }
++}
++
+ sub print_cow {
+ print @balloon_lines;
+ print $the_cow;
+--
+2.40.0
+