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