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;