App-NoodlePay
view release on metacpan or search on metacpan
bin/noodlepay.pl view on Meta::CPAN
if ($len < 7090 ) {
my $qrfh; my $level;
my @version = qw( 0 41 77 127 187 255 322 370 461 552 652 772 883 1022 1101 1250 1408 1548 1725 1903 2061 2232
2409 2620 2812 3057 3283 3517 3669 3909 4158 4417 4686 4965 5253 5529 5836 6153 6479 6743 7089 );
for (1..40) { next if $len > $version[$_]; $version = $_; last; }
my $qrxpm = GD::Barcode::QRcode->new($text, { Version => $version, Ecc => L, ModuleSize => 4 })->barcode;
$qrxpm =~ /^(.*)$/m; my $qrsize = length($1);
$qr = Wx::Bitmap->newFromXPM([ split /\n/, "$qrsize $qrsize 2 1\n0 c #FFFFFF\n1 c #000000\n$qrxpm" ]);
}
if (defined $qr) {
my $fontheight = $frame->GetCharHeight;
$msg = "\n" x ($qr->GetHeight / $fontheight) . "\n\n$msgtxt";
$dialog = Wx::TextEntryDialog->new($frame, $msg , $title, $text);
my $dialog_height = $dialog->GetSize->GetHeight;
my $dialogwidth = $dialog->GetSize->GetWidth;
my $qrheight = $qr->GetHeight; my $width = $qrheight + 20 > $dialogwidth ? $qrheight + 20 : $dialogwidth;
my $adjust = 10 unless $^O eq 'MSWin32' or $^O eq 'darwin';
my $qrpos = ($width-$qrheight)/2 + ($width == 300 ? $adjust : 0);
$dialog->SetSize([$width,$dialog_height]);
$dialog->SetMinSize([$width,$dialog_height]);
$dialog->SetMaxSize([$width,$dialog_height]);
Wx::StaticBitmap->new( $dialog, -1, $qr, [$qrpos,10] );
( run in 1.028 second using v1.01-cache-2.11-cpan-ceb78f64989 )