File Coverage

blib/lib/PDF/Builder/Resource/ExtGState.pm
Criterion Covered Total %
statement 26 108 24.0
branch 0 2 0.0
condition n/a
subroutine 8 34 23.5
pod 29 29 100.0
total 63 173 36.4


line stmt bran cond sub pod time code
1             package PDF::Builder::Resource::ExtGState;
2              
3 34     34   259 use base 'PDF::Builder::Resource';
  34         82  
  34         3643  
4              
5 34     34   226 use strict;
  34         80  
  34         750  
6 34     34   190 use warnings;
  34         78  
  34         1725  
7             #no warnings qw[ deprecated recursion uninitialized ];
8              
9             our $VERSION = '3.023'; # VERSION
10             our $LAST_UPDATE = '3.021'; # manually update whenever code is changed
11              
12 34     34   239 use PDF::Builder::Basic::PDF::Utils;
  34         102  
  34         2799  
13 34     34   249 use PDF::Builder::Util;
  34         73  
  34         52463  
14              
15             =head1 NAME
16              
17             PDF::Builder::Resource::ExtGState - Graphics state dictionary support
18              
19             =head1 METHODS
20              
21             =over
22              
23             =item $egs = PDF::Builder::Resource::ExtGState->new(@parameters)
24              
25             Returns a new extgstate object (called from $pdf->egstate()).
26              
27             =cut
28              
29             sub new {
30 3     3 1 9 my ($class, $pdf, $key) = @_;
31              
32 3         48 my $self = $class->SUPER::new($pdf,$key);
33              
34 3         53 $self->{'Type'} = PDFName('ExtGState');
35 3         10 return $self;
36             }
37              
38             =item $egs->strokeadjust($boolean)
39              
40             =cut
41              
42             sub strokeadjust {
43 0     0 1 0 my ($self, $var) = @_;
44              
45 0         0 $self->{'SA'} = PDFBool($var);
46 0         0 return $self;
47             }
48              
49             =item $egs->strokeoverprint($boolean)
50              
51             =cut
52              
53             sub strokeoverprint {
54 0     0 1 0 my ($self, $var) = @_;
55              
56 0         0 $self->{'OP'} = PDFBool($var);
57 0         0 return $self;
58             }
59              
60             =item $egs->filloverprint($boolean)
61              
62             =cut
63              
64             sub filloverprint {
65 0     0 1 0 my ($self, $var) = @_;
66              
67 0         0 $self->{'op'} = PDFBool($var);
68 0         0 return $self;
69             }
70              
71             =item $egs->overprintmode($num)
72              
73             =cut
74              
75             sub overprintmode {
76 0     0 1 0 my ($self, $var) = @_;
77              
78 0         0 $self->{'OPM'} = PDFNum($var);
79 0         0 return $self;
80             }
81              
82             =item $egs->blackgeneration($obj)
83              
84             =cut
85              
86             sub blackgeneration {
87 0     0 1 0 my ($self, $obj) = @_;
88              
89 0         0 $self->{'BG'} = $obj;
90 0         0 return $self;
91             }
92              
93             =item $egs->blackgeneration2($obj)
94              
95             =cut
96              
97             sub blackgeneration2 {
98 0     0 1 0 my ($self, $obj) = @_;
99              
100 0         0 $self->{'BG2'} = $obj;
101 0         0 return $self;
102             }
103              
104             =item $egs->undercolorremoval($obj)
105              
106             =cut
107              
108             sub undercolorremoval {
109 0     0 1 0 my ($self, $obj) = @_;
110              
111 0         0 $self->{'UCR'} = $obj;
112 0         0 return $self;
113             }
114              
115             =item $egs->undercolorremoval2($obj)
116              
117             =cut
118              
119             sub undercolorremoval2 {
120 0     0 1 0 my ($self, $obj) = @_;
121              
122 0         0 $self->{'UCR2'} = $obj;
123 0         0 return $self;
124             }
125              
126             =item $egs->transfer($obj)
127              
128             =cut
129              
130             sub transfer {
131 0     0 1 0 my ($self, $obj) = @_;
132              
133 0         0 $self->{'TR'} = $obj;
134 0         0 return $self;
135             }
136              
137             =item $egs->transfer2($obj)
138              
139             =cut
140              
141             sub transfer2 {
142 0     0 1 0 my ($self, $obj) = @_;
143              
144 0         0 $self->{'TR2'} = $obj;
145 0         0 return $self;
146             }
147              
148             =item $egs->halftone($obj)
149              
150             =cut
151              
152             sub halftone {
153 0     0 1 0 my ($self, $obj) = @_;
154              
155 0         0 $self->{'HT'} = $obj;
156 0         0 return $self;
157             }
158              
159             =item $egs->halftonephase($obj)
160              
161             =cut
162              
163             # Per RT #113514, this was last present in version 1.2 of the PDF
164             # spec, so it can probably be removed.
165             sub halftonephase {
166 0     0 1 0 my ($self, $obj) = @_;
167              
168 0         0 $self->{'HTP'} = $obj;
169 0         0 return $self;
170             }
171              
172             =item $egs->smoothness($num)
173              
174             =cut
175              
176             sub smoothness {
177 0     0 1 0 my ($self, $var) = @_;
178              
179 0         0 $self->{'SM'} = PDFNum($var);
180 0         0 return $self;
181             }
182              
183             =item $egs->font($font, $size)
184              
185             =cut
186              
187             sub font {
188 0     0 1 0 my ($self, $font, $size) = @_;
189              
190 0         0 $self->{'Font'} = PDFArray(PDFName($font->{' apiname'}), PDFNum($size));
191 0         0 return $self;
192             }
193              
194             =item $egs->linewidth($size)
195              
196             =cut
197              
198             sub linewidth {
199 0     0 1 0 my ($self, $var) = @_;
200              
201 0         0 $self->{'LW'} = PDFNum($var);
202 0         0 return $self;
203             }
204              
205             =item $egs->linecap($cap)
206              
207             =cut
208              
209             sub linecap {
210 0     0 1 0 my ($self, $var) = @_;
211              
212 0         0 $self->{'LC'} = PDFNum($var);
213 0         0 return $self;
214             }
215              
216             =item $egs->linejoin($join)
217              
218             =cut
219              
220             sub linejoin {
221 0     0 1 0 my ($self, $var) = @_;
222              
223 0         0 $self->{'LJ'} = PDFNum($var);
224 0         0 return $self;
225             }
226              
227             =item $egs->miterlimit($limit)
228              
229             =cut
230              
231             sub miterlimit {
232 0     0 1 0 my ($self, $var) = @_;
233              
234 0         0 $self->{'ML'} = PDFNum($var);
235 0         0 return $self;
236             }
237              
238             # Note: miterlimit was originally named incorrectly as meterlimit, renamed
239              
240             =item $egs->dash(@dash)
241              
242             =cut
243              
244             sub dash {
245 1     1 1 9 my ($self, @dash) = @_;
246              
247 1         3 $self->{'D'} = PDFArray(PDFArray( map { PDFNum($_); } @dash), PDFNum(0));
  2         6  
248 1         3 return $self;
249             }
250              
251             =item $egs->flatness($flat)
252              
253             =cut
254              
255             sub flatness {
256 0     0 1 0 my ($self, $var) = @_;
257              
258 0         0 $self->{'FL'} = PDFNum($var);
259 0         0 return $self;
260             }
261              
262             =item $egs->renderingintent($intentName)
263              
264             =cut
265              
266             sub renderingintent {
267 1     1 1 9 my ($self, $var) = @_;
268              
269 1         4 $self->{'RI'} = PDFName($var);
270 1         3 return $self;
271             }
272              
273             =item $egs->strokealpha($alpha)
274              
275             The current stroking alpha constant, specifying the
276             constant shape or constant opacity value to be used
277             for stroking operations in the transparent imaging model.
278              
279             =cut
280              
281             sub strokealpha {
282 0     0 1   my ($self, $var) = @_;
283              
284 0           $self->{'CA'} = PDFNum($var);
285 0           return $self;
286             }
287              
288             =item $egs->fillalpha($alpha)
289              
290             Same as strokealpha, but for nonstroking (fill) operations.
291              
292             =cut
293              
294             sub fillalpha {
295 0     0 1   my ($self, $var) = @_;
296              
297 0           $self->{'ca'} = PDFNum($var);
298 0           return $self;
299             }
300              
301             =item $egs->blendmode($blendname)
302              
303             =item $egs->blendmode($blendfunctionobj)
304              
305             The current blend mode to be used in the transparent imaging model.
306              
307             =cut
308              
309             sub blendmode {
310 0     0 1   my ($self, $var) = @_;
311              
312 0 0         if (ref($var)) {
313 0           $self->{'BM'} = $var;
314             } else {
315 0           $self->{'BM'} = PDFName($var);
316             }
317 0           return $self;
318             }
319              
320             =item $egs->alphaisshape($boolean)
321              
322             The alpha source flag (alpha is shape), specifying
323             whether the current soft mask and alpha constant
324             are to be interpreted as shape values (I) or
325             opacity values (I).
326              
327             =cut
328              
329             sub alphaisshape {
330 0     0 1   my ($self, $var) = @_;
331              
332 0           $self->{'AIS'} = PDFBool($var);
333 0           return $self;
334             }
335              
336             =item $egs->textknockout($boolean)
337              
338             The text knockout flag, which determines the behavior
339             of overlapping glyphs within a text object in the
340             transparent imaging model.
341              
342             =cut
343              
344             sub textknockout {
345 0     0 1   my ($self, $var) = @_;
346              
347 0           $self->{'TK'} = PDFBool($var);
348 0           return $self;
349             }
350              
351             =item $egs->transparency($t)
352              
353             The graphics transparency, with 0 being fully opaque and 1 being fully
354             transparent. This is a convenience method, setting proper values for
355             C and C.
356              
357             =cut
358              
359             sub transparency {
360 0     0 1   my ($self, $t) = @_;
361              
362 0           $self->strokealpha(1-$t);
363 0           $self->fillalpha(1-$t);
364 0           return $self;
365             }
366              
367             =item $egs->opacity($op)
368              
369             The graphics opacity, with 1 being fully opaque and 0 being fully transparent.
370             This is a convenience method, setting proper values for C and
371             C.
372              
373             =cut
374              
375             sub opacity {
376 0     0 1   my ($self, $var) = @_;
377              
378 0           $self->strokealpha($var);
379 0           $self->fillalpha($var);
380 0           return $self;
381             }
382              
383             #sub outobjdeep {
384             # my ($self, @opts) = @_;
385             #
386             # foreach my $k (qw/ api apipdf /) {
387             # $self->{" $k"} = undef;
388             # delete($self->{" $k"});
389             # }
390             # return $self->SUPER::outobjdeep(@opts);
391             #}
392              
393             =back
394              
395             =cut
396              
397             1;