summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2014-10-07 13:38:16 -0400
committerJesse Luehrs <doy@tozt.net>2014-10-07 13:38:16 -0400
commit34123b9d0460b50118a76290aafa0fc31eb365b1 (patch)
tree68ea9f0f025a63fbf0de3d9a069fe1e7c6e55976
parent35a0bc2f82802800bdb0769882d667d59313f141 (diff)
downloadimage-pnm-34123b9d0460b50118a76290aafa0fc31eb365b1.tar.gz
image-pnm-34123b9d0460b50118a76290aafa0fc31eb365b1.zip
add some accessors
-rw-r--r--lib/Image/PNM.pm38
-rw-r--r--t/P3.t7
2 files changed, 45 insertions, 0 deletions
diff --git a/lib/Image/PNM.pm b/lib/Image/PNM.pm
index 31d4c93..bc748e7 100644
--- a/lib/Image/PNM.pm
+++ b/lib/Image/PNM.pm
@@ -35,6 +35,44 @@ sub as_string {
return $self->$method;
}
+sub width {
+ my $self = shift;
+ return $self->{w};
+}
+
+sub height {
+ my $self = shift;
+ return $self->{h};
+}
+
+sub max_pixel_value {
+ my $self = shift;
+ return $self->{max};
+}
+
+sub pixel {
+ my $self = shift;
+ my ($row, $col) = @_;
+
+ my $pixel = $self->raw_pixel($row, $col);
+ return [ map { $_ / $self->{max} } @$pixel ];
+}
+
+sub raw_pixel {
+ my $self = shift;
+ my ($row, $col) = @_;
+
+ my $pixel = $self->{pixels}[$row][$col];
+ die "invalid pixel location ($row, $col)"
+ unless defined $pixel;
+
+ if (!ref $pixel) {
+ $pixel = [ $pixel, $pixel, $pixel ];
+ }
+
+ return $pixel;
+}
+
sub _as_string_P3 {
my $self = shift;
diff --git a/t/P3.t b/t/P3.t
index 5712ace..3c75def 100644
--- a/t/P3.t
+++ b/t/P3.t
@@ -6,6 +6,13 @@ use Test::More;
use Image::PNM;
my $image = Image::PNM->new('t/data/P3.pnm');
+
+is($image->width, 8);
+is($image->height, 8);
+is($image->max_pixel_value, 255);
+is_deeply($image->raw_pixel(1, 3), [0, 84, 255]);
+is_deeply($image->pixel(4, 2), [1, 0, 0]);
+
is($image->as_string('P3'), <<IMAGE);
P3
8 8