codec: compare 7 image encoding formats
[sheet.git] / codec.plp
diff --git a/codec.plp b/codec.plp
new file mode 100644 (file)
index 0000000..2cc454a
--- /dev/null
+++ b/codec.plp
@@ -0,0 +1,50 @@
+<(common.inc.plp)><:
+
+Html({
+       title => 'Codecs',
+       version => '1.0',
+       description => [
+       ],
+       keywords => [qw'
+       '],
+       stylesheet => [qw'light circus dark red'],
+       data => [qw'codec.inc.pl'],
+});
+
+my $info = do 'codec.inc.pl';
+$info and %{$info} > 1 or Abort("cannot open operator include", 500, $@ // $!);
+
+my %BOOLSCORE = (y => 5, n => 1);
+:>
+<h1>Image codecs</h1>
+
+<div class="section">
+<table class="mapped">
+       <col><colgroup span=2><colgroup span=2><colgroup span=3>
+<thead><tr><th rowspan=2>feature
+<:
+my @codecs = sort {
+       $info->{codec}->{$a}->{available} <=> $info->{codec}->{$b}->{available}
+} keys $info->{codec}->%*;
+
+print '<th>', $_->{name} for @{$info->{codec}}{@codecs};
+print "\n<tr>";
+print '<td>', $_->{available} for @{$info->{codec}}{@codecs};
+say '</thead>';
+
+print '<tbody>';
+for my $feat (sort keys %{$info->{feature}}) {
+       my $featinfo = $info->{feature}->{$feat};
+       printf '<tr><th>%s', $featinfo->{name} // $feat;
+       printf('<td class="l%d">%s',
+               (map { $_ && $BOOLSCORE{$_} || $_ || 0 } $featinfo->{score}->{$_}),
+               $featinfo->{data}->{$_} // (map {
+                       $BOOLSCORE{$_} ? ($_ eq 'y' ? '✔' : '✘') : '•' x ($_ - 1)
+               } $featinfo->{score}->{$_}),
+       ) for @codecs;
+       say '</td>';
+}
+
+:></table>
+</div>
+