File Coverage

blib/lib/PDF/API3/Compat/API2/Resource/ColorSpace/Indexed/ACTFile.pm
Criterion Covered Total %
statement 23 52 44.2
branch 0 6 0.0
condition n/a
subroutine 8 10 80.0
pod 2 2 100.0
total 33 70 47.1


line stmt bran cond sub pod time code
1             #=======================================================================
2             # ____ ____ _____ _ ____ ___ ____
3             # | _ \| _ \| ___| _ _ / \ | _ \_ _| |___ \
4             # | |_) | | | | |_ (_) (_) / _ \ | |_) | | __) |
5             # | __/| |_| | _| _ _ / ___ \| __/| | / __/
6             # |_| |____/|_| (_) (_) /_/ \_\_| |___| |_____|
7             #
8             # A Perl Module Chain to faciliate the Creation and Modification
9             # of High-Quality "Portable Document Format (PDF)" Files.
10             #
11             # Copyright 1999-2005 Alfred Reibenschuh .
12             #
13             #=======================================================================
14             #
15             # This library is free software; you can redistribute it and/or
16             # modify it under the terms of the GNU Lesser General Public
17             # License as published by the Free Software Foundation; either
18             # version 2 of the License, or (at your option) any later version.
19             #
20             # This library is distributed in the hope that it will be useful,
21             # but WITHOUT ANY WARRANTY; without even the implied warranty of
22             # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
23             # Lesser General Public License for more details.
24             #
25             # You should have received a copy of the GNU Lesser General Public
26             # License along with this library; if not, write to the
27             # Free Software Foundation, Inc., 59 Temple Place - Suite 330,
28             # Boston, MA 02111-1307, USA.
29             #
30             # $Id: ACTFile.pm,v 2.0 2005/11/16 02:18:14 areibens Exp $
31             #
32             #=======================================================================
33            
34             package PDF::API3::Compat::API2::Resource::ColorSpace::Indexed::ACTFile;
35            
36             BEGIN {
37            
38 1     1   8 use strict;
  1         5  
  1         60  
39 1     1   8 use vars qw(@ISA $VERSION);
  1         3  
  1         73  
40 1     1   909 use PDF::API3::Compat::API2::Resource::ColorSpace::Indexed;
  1         3  
  1         45  
41 1     1   7 use PDF::API3::Compat::API2::Basic::PDF::Utils;
  1         3  
  1         143  
42 1     1   6 use PDF::API3::Compat::API2::Util;
  1         2  
  1         194  
43 1     1   6 use Math::Trig;
  1         2  
  1         303  
44            
45 1     1   19 @ISA = qw( PDF::API3::Compat::API2::Resource::ColorSpace::Indexed );
46            
47 1         30 ( $VERSION ) = sprintf '%i.%03i', split(/\./,('$Revision: 2.0 $' =~ /Revision: (\S+)\s/)[0]); # $Date: 2005/11/16 02:18:14 $
48            
49             }
50            
51 1     1   7 no warnings qw[ deprecated recursion uninitialized ];
  1         2  
  1         469  
52            
53             =item $cs = PDF::API3::Compat::API2::Resource::ColorSpace::Indexed::ACTFile->new $pdf, $actfile
54            
55             Returns a new colorspace object created from an adobe color table file (ACT/8BCT).
56             See
57             Adobe Photoshop® 6.0 --
58             File Formats Specification Version 6.0 Release 2,
59             November 2000
60             for details.
61            
62             =cut
63            
64             sub new {
65 0     0 1   my ($class,$pdf,$file)=@_;
66 0 0         die "could not find act-file '$file'." unless(-f $file);
67 0 0         $class = ref $class if ref $class;
68 0           $self=$class->SUPER::new($pdf,pdfkey());
69 0 0         $pdf->new_obj($self) unless($self->is_obj($pdf));
70 0           $self->{' apipdf'}=$pdf;
71 0           my $csd=PDFDict();
72 0           $pdf->new_obj($csd);
73 0           $csd->{Filter}=PDFArray(PDFName('FlateDecode'));
74            
75 0           $csd->{WhitePoint}=PDFArray(map {PDFNum($_)} (0.95049, 1, 1.08897));
  0            
76 0           $csd->{BlackPoint}=PDFArray(map {PDFNum($_)} (0, 0, 0));
  0            
77 0           $csd->{Gamma}=PDFArray(map {PDFNum($_)} (2.22218, 2.22218, 2.22218));
  0            
78            
79 0           my $fh;
80 0           open($fh,$file);
81 0           binmode($fh,':raw');
82 0           read($fh,$csd->{' stream'},768);
83 0           close($fh);
84            
85 0           $csd->{' stream'}.="\x00" x 768;
86 0           $csd->{' stream'}=substr($csd->{' stream'},0,768);
87            
88 0           $self->add_elements(PDFName('DeviceRGB'),PDFNum(255),$csd);
89 0           $self->{' csd'}=$csd;
90            
91 0           return($self);
92             }
93            
94             =item $cs = PDF::API3::Compat::API2::Resource::ColorSpace::Indexed->new_api $api, $name
95            
96             Returns a indexed color-space object. This method is different from 'new' that
97             it needs an PDF::API3::Compat::API2-object rather than a Text::PDF::File-object.
98            
99             =cut
100            
101             sub new_api {
102 0     0 1   my ($class,$api,@opts)=@_;
103            
104 0           my $obj=$class->new($api->{pdf},@opts);
105 0           $self->{' api'}=$api;
106            
107 0           return($obj);
108             }
109            
110             1;
111            
112             __END__