File Coverage

blib/lib/PDF/API3/Compat/API2/Resource/XObject/Form.pm
Criterion Covered Total %
statement 20 58 34.4
branch 0 14 0.0
condition 0 11 0.0
subroutine 7 12 58.3
pod 5 5 100.0
total 32 100 32.0


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: Form.pm,v 2.0 2005/11/16 02:18:23 areibens Exp $
31             #
32             #=======================================================================
33             package PDF::API3::Compat::API2::Resource::XObject::Form;
34            
35             BEGIN {
36            
37 1     1   6 use PDF::API3::Compat::API2::Util;
  1         1  
  1         196  
38 1     1   6 use PDF::API3::Compat::API2::Basic::PDF::Utils;
  1         3  
  1         118  
39 1     1   6 use PDF::API3::Compat::API2::Resource::XObject;
  1         2  
  1         34  
40            
41 1     1   6 use POSIX;
  1         2  
  1         9  
42            
43 1     1   3420 use vars qw(@ISA $VERSION);
  1         3  
  1         173  
44            
45 1     1   34 @ISA = qw( PDF::API3::Compat::API2::Resource::XObject );
46            
47 1         45 ( $VERSION ) = sprintf '%i.%03i', split(/\./,('$Revision: 2.0 $' =~ /Revision: (\S+)\s/)[0]); # $Date: 2005/11/16 02:18:23 $
48            
49             }
50 1     1   8 no warnings qw[ deprecated recursion uninitialized ];
  1         3  
  1         756  
51            
52             =item $res = PDF::API3::Compat::API2::Resource::XObject::Form->new $pdf
53            
54             Returns a form-resource object. base class for all types of form-xobjects.
55            
56             =cut
57            
58             sub new {
59 0     0 1   my ($class,$pdf) = @_;
60 0           my $self;
61            
62 0 0         $class = ref $class if ref $class;
63            
64 0           $self=$class->SUPER::new($pdf,pdfkey());
65 0 0         $pdf->new_obj($self) unless($self->is_obj($pdf));
66            
67 0           $self->subtype('Form');
68 0           $self->{FormType}=PDFNum(1);
69            
70 0           $self->{' apipdf'}=$pdf;
71            
72 0           return($self);
73             }
74            
75             =item $res = PDF::API3::Compat::API2::Resource::XObject::Form->new_api $api, $name
76            
77             Returns a form resource object. This method is different from 'new' that
78             it needs an PDF::API3::Compat::API2-object rather than a Text::PDF::File-object.
79            
80             =cut
81            
82             sub new_api {
83 0     0 1   my ($class,$api,@opts)=@_;
84            
85 0           my $obj=$class->new($api->{pdf},@opts);
86 0           $obj->{' api'}=$api;
87            
88 0           return($obj);
89             }
90            
91             =item ($llx, $lly, $urx, $ury) = $res->bbox $llx, $lly, $urx, $ury
92            
93             =cut
94            
95             sub bbox {
96 0     0 1   my $self = shift @_;
97 0           my @b;
98 0 0         if(@b=@_){
99 0           $self->{BBox}=PDFArray(map { PDFNum($_) } @b);
  0            
100             }
101 0           @b=$self->{BBox}->elementsof;
102 0           return(map { $_->val } @b);
  0            
103             }
104            
105             =item $res->resource $type, $key, $obj
106            
107             Adds a resource to the form.
108            
109             B
110            
111             $res->resource('Font',$fontkey,$fontobj);
112             $res->resource('XObject',$imagekey,$imageobj);
113             $res->resource('Shading',$shadekey,$shadeobj);
114             $res->resource('ColorSpace',$spacekey,$speceobj);
115            
116             B You only have to add the required resources, if
117             they are NOT handled by the *font*, *image*, *shade* or *space*
118             methods.
119            
120             =cut
121            
122             sub resource {
123 0     0 1   my ($self, $type, $key, $obj, $force) = @_;
124             # we are a self-contained content stream.
125            
126 0   0       $self->{Resources}||=PDFDict();
127            
128 0           my $dict=$self->{Resources};
129 0 0         $dict->realise if(ref($dict)=~/Objind$/);
130            
131 0   0       $dict->{$type}||= PDFDict();
132 0 0         $dict->{$type}->realise if(ref($dict->{$type})=~/Objind$/);
133 0 0         unless (defined $obj) {
134 0   0       return($dict->{$type}->{$key} || undef);
135             } else {
136 0 0         if($force) {
137 0           $dict->{$type}->{$key}=$obj;
138             } else {
139 0   0       $dict->{$type}->{$key}||= $obj;
140             }
141 0           return($dict);
142             }
143             }
144            
145             sub outobjdeep {
146 0     0 1   my ($self, @opts) = @_;
147 0           foreach my $k (qw/ api apipdf /) {
148 0           $self->{" $k"}=undef;
149 0           delete($self->{" $k"});
150             }
151 0           $self->SUPER::outobjdeep(@opts);
152             }
153            
154            
155             1;
156            
157             __END__