From c9129ed66317abfcd8e7689ef77199bd86bf5309 Mon Sep 17 00:00:00 2001 From: dakkar Date: Sun, 23 Oct 2016 18:34:19 +0100 Subject: works --- lib/Data/QRCode.pm | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 lib/Data/QRCode.pm (limited to 'lib/Data/QRCode.pm') diff --git a/lib/Data/QRCode.pm b/lib/Data/QRCode.pm new file mode 100644 index 0000000..680e251 --- /dev/null +++ b/lib/Data/QRCode.pm @@ -0,0 +1,46 @@ +package Data::QRCode; +use strict; +use warnings; +# ABSTRACT: qrcodes in C +# VERSION +use Data::QRCode::XS; + +my %levels = ( + L => Data::QRCode::XS::ECLEVEL_L(), + M => Data::QRCode::XS::ECLEVEL_M(), + Q => Data::QRCode::XS::ECLEVEL_Q(), + H => Data::QRCode::XS::ECLEVEL_H(), +); + +sub new { + my ($class, $data, $level, $version) = @_; + $version ||= 0; + $level = $levels{uc $level} || Data::QRCode::XS::ECLEVEL_M(); + return Data::QRCode::XS::_build($class,$data,$level,$version); +} + +sub width { Data::QRCode::XS::width(@_) } + +sub version { Data::QRCode::XS::version(@_) } + +sub data_at { + my ($self,$x,$y) = @_; + my $width = $self->width; + if ($x < 0 or $x >= $width or $y < 0 or $y >= $width) { + return; + } + my $value = Data::QRCode::XS::_data_at($self,$x,$y); + + return { + color => $value & 0x01, + in_data => $value & 0x02, + in_format => $value & 0x04, + in_version => $value & 0x08, + in_timing => $value & 0x10, + in_alignment => $value & 0x20, + in_finder => $value & 0x40, + in_misc => $value & 0x80, + }; +} + +1; -- cgit v1.2.3