Add built local::lib
[catagits/Gitalist.git] / local-lib5 / man / man3 / Template::Plugin::Image.3pm
CommitLineData
3fea05b9 1.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.3
2.\"
3.\" Standard preamble:
4.\" ========================================================================
5.de Sh \" Subsection heading
6.br
7.if t .Sp
8.ne 5
9.PP
10\fB\\$1\fR
11.PP
12..
13.de Sp \" Vertical space (when we can't use .PP)
14.if t .sp .5v
15.if n .sp
16..
17.de Vb \" Begin verbatim text
18.ft CW
19.nf
20.ne \\$1
21..
22.de Ve \" End verbatim text
23.ft R
24.fi
25..
26.\" Set up some character translations and predefined strings. \*(-- will
27.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
28.\" double quote, and \*(R" will give a right double quote. | will give a
29.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to
30.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C'
31.\" expand to `' in nroff, nothing in troff, for use with C<>.
32.tr \(*W-|\(bv\*(Tr
33.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
34.ie n \{\
35. ds -- \(*W-
36. ds PI pi
37. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
38. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
39. ds L" ""
40. ds R" ""
41. ds C` ""
42. ds C' ""
43'br\}
44.el\{\
45. ds -- \|\(em\|
46. ds PI \(*p
47. ds L" ``
48. ds R" ''
49'br\}
50.\"
51.\" If the F register is turned on, we'll generate index entries on stderr for
52.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
53.\" entries marked with X<> in POD. Of course, you'll have to process the
54.\" output yourself in some meaningful fashion.
55.if \nF \{\
56. de IX
57. tm Index:\\$1\t\\n%\t"\\$2"
58..
59. nr % 0
60. rr F
61.\}
62.\"
63.\" For nroff, turn off justification. Always turn off hyphenation; it makes
64.\" way too many mistakes in technical documents.
65.hy 0
66.if n .na
67.\"
68.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
69.\" Fear. Run. Save yourself. No user-serviceable parts.
70. \" fudge factors for nroff and troff
71.if n \{\
72. ds #H 0
73. ds #V .8m
74. ds #F .3m
75. ds #[ \f1
76. ds #] \fP
77.\}
78.if t \{\
79. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
80. ds #V .6m
81. ds #F 0
82. ds #[ \&
83. ds #] \&
84.\}
85. \" simple accents for nroff and troff
86.if n \{\
87. ds ' \&
88. ds ` \&
89. ds ^ \&
90. ds , \&
91. ds ~ ~
92. ds /
93.\}
94.if t \{\
95. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
96. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
97. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
98. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
99. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
100. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
101.\}
102. \" troff and (daisy-wheel) nroff accents
103.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
104.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
105.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
106.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
107.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
108.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
109.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
110.ds ae a\h'-(\w'a'u*4/10)'e
111.ds Ae A\h'-(\w'A'u*4/10)'E
112. \" corrections for vroff
113.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
114.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
115. \" for low resolution devices (crt and lpr)
116.if \n(.H>23 .if \n(.V>19 \
117\{\
118. ds : e
119. ds 8 ss
120. ds o a
121. ds d- d\h'-1'\(ga
122. ds D- D\h'-1'\(hy
123. ds th \o'bp'
124. ds Th \o'LP'
125. ds ae ae
126. ds Ae AE
127.\}
128.rm #[ #] #H #V #F C
129.\" ========================================================================
130.\"
131.IX Title "Template::Plugin::Image 3"
132.TH Template::Plugin::Image 3 "2008-11-13" "perl v5.8.7" "User Contributed Perl Documentation"
133.SH "NAME"
134Template::Plugin::Image \- Plugin access to image sizes
135.SH "SYNOPSIS"
136.IX Header "SYNOPSIS"
137.Vb 6
138\& [% USE Image(filename) %]
139\& [% Image.width %]
140\& [% Image.height %]
141\& [% Image.size.join(', ') %]
142\& [% Image.attr %]
143\& [% Image.tag %]
144.Ve
145.SH "DESCRIPTION"
146.IX Header "DESCRIPTION"
147This plugin provides an interface to the Image::Info or Image::Size
148modules for determining the size of image files.
149.PP
150You can specify the plugin name as either '\f(CW\*(C`Image\*(C'\fR' or '\f(CW\*(C`image\*(C'\fR'. The
151plugin object created will then have the same name. The file name of
152the image should be specified as a positional or named argument.
153.PP
154.Vb 6
155\& [% # all these are valid, take your pick %]
156\& [% USE Image('foo.gif') %]
157\& [% USE image('bar.gif') %]
158\& [% USE Image 'ping.gif' %]
159\& [% USE image(name='baz.gif') %]
160\& [% USE Image name='pong.gif' %]
161.Ve
162.PP
163A \f(CW\*(C`root\*(C'\fR parameter can be used to specify the location of the image file:
164.PP
165.Vb 3
166\& [% USE Image(root='/path/to/root', name='images/home.png') %]
167\& # image path: /path/to/root/images/home.png
168\& # img src: images/home.png
169.Ve
170.PP
171In cases where the image path and image url do not match up, specify the
172file name directly:
173.PP
174.Vb 1
175\& [% USE Image(file='/path/to/home.png', name='/images/home.png') %]
176.Ve
177.PP
178The \f(CW\*(C`alt\*(C'\fR parameter can be used to specify an alternate name for the
179image, for use in constructing an \s-1XHTML\s0 element (see the \f(CW\*(C`tag()\*(C'\fR method
180below).
181.PP
182.Vb 1
183\& [% USE Image('home.png', alt="Home") %]
184.Ve
185.PP
186You can also provide an alternate name for an \f(CW\*(C`Image\*(C'\fR plugin object.
187.PP
188.Vb 2
189\& [% USE img1 = image 'foo.gif' %]
190\& [% USE img2 = image 'bar.gif' %]
191.Ve
192.PP
193The \f(CW\*(C`name\*(C'\fR method returns the image file name.
194.PP
195.Vb 1
196\& [% img1.name %] # foo.gif
197.Ve
198.PP
199The \f(CW\*(C`width\*(C'\fR and \f(CW\*(C`height\*(C'\fR methods return the width and height of the
200image, respectively. The \f(CW\*(C`size\*(C'\fR method returns a reference to a 2
201element list containing the width and height.
202.PP
203.Vb 4
204\& [% USE image 'foo.gif' %]
205\& width: [% image.width %]
206\& height: [% image.height %]
207\& size: [% image.size.join(', ') %]
208.Ve
209.PP
210The \f(CW\*(C`modtime\*(C'\fR method returns the modification time of the file in question,
211suitable for use with the Date plugin, for example:
212.PP
213.Vb 3
214\& [% USE image 'foo.gif' %]
215\& [% USE date %]
216\& [% date.format(image.modtime, "%B, %e %Y") %]
217.Ve
218.PP
219The \f(CW\*(C`attr\*(C'\fR method returns the height and width as \s-1HTML/XML\s0 attributes.
220.PP
221.Vb 2
222\& [% USE image 'foo.gif' %]
223\& [% image.attr %]
224.Ve
225.PP
226Typical output:
227.PP
228.Vb 1
229\& width="60" height="20"
230.Ve
231.PP
232The \f(CW\*(C`tag\*(C'\fR method returns a complete \s-1XHTML\s0 tag referencing the image.
233.PP
234.Vb 2
235\& [% USE image 'foo.gif' %]
236\& [% image.tag %]
237.Ve
238.PP
239Typical output:
240.PP
241.Vb 1
242\& <img src="foo.gif" width="60" height="20" alt="" />
243.Ve
244.PP
245You can provide any additional attributes that should be added to the
246\&\s-1XHTML\s0 tag.
247.PP
248.Vb 2
249\& [% USE image 'foo.gif' %]
250\& [% image.tag(class="logo" alt="Logo") %]
251.Ve
252.PP
253Typical output:
254.PP
255.Vb 1
256\& <img src="foo.gif" width="60" height="20" alt="Logo" class="logo" />
257.Ve
258.PP
259Note that the \f(CW\*(C`alt\*(C'\fR attribute is mandatory in a strict \s-1XHTML\s0 \f(CW\*(C`img\*(C'\fR
260element (even if it's empty) so it is always added even if you don't
261explicitly provide a value for it. You can do so as an argument to
262the \f(CW\*(C`tag\*(C'\fR method, as shown in the previous example, or as an argument
263.PP
264.Vb 1
265\& [% USE image('foo.gif', alt='Logo') %]
266.Ve
267.SH "CATCHING ERRORS"
268.IX Header "CATCHING ERRORS"
269If the image file cannot be found then the above methods will throw an
270\&\f(CW\*(C`Image\*(C'\fR error. You can enclose calls to these methods in a
271\&\f(CW\*(C`TRY...CATCH\*(C'\fR block to catch any potential errors.
272.PP
273.Vb 6
274\& [% TRY;
275\& image.width;
276\& CATCH;
277\& error; # print error
278\& END
279\& %]
280.Ve
281.SH "USING Image::Info"
282.IX Header "USING Image::Info"
283At run time, the plugin tries to load Image::Info in preference to
284Image::Size. If Image::Info is found, then some additional methods are
285available, in addition to \f(CW\*(C`size\*(C'\fR, \f(CW\*(C`width\*(C'\fR, \f(CW\*(C`height\*(C'\fR, \f(CW\*(C`attr\*(C'\fR, and \f(CW\*(C`tag\*(C'\fR.
286These additional methods are named after the elements that Image::Info
287retrieves from the image itself. The types of methods available depend on the
288type of image (see Image::Info for more details). These additional methods
289will always include the following:
290.Sh "file_media_type"
291.IX Subsection "file_media_type"
292This is the \s-1MIME\s0 type that is appropriate for the given file format.
293The corresponding value is a string like: "\f(CW\*(C`image/png\*(C'\fR\*(L" or \*(R"\f(CW\*(C`image/jpeg\*(C'\fR".
294.Sh "file_ext"
295.IX Subsection "file_ext"
296The is the suggested file name extention for a file of the given
297file format. The value is a 3 letter, lowercase string like
298"\f(CW\*(C`png\*(C'\fR\*(L", \*(R"\f(CW\*(C`jpg\*(C'\fR".
299.Sh "color_type"
300.IX Subsection "color_type"
301The value is a short string describing what kind of values the pixels
302encode. The value can be one of the following:
303.PP
304.Vb 7
305\& Gray
306\& GrayA
307\& RGB
308\& RGBA
309\& CMYK
310\& YCbCr
311\& CIELab
312.Ve
313.PP
314These names can also be prefixed by "\f(CW\*(C`Indexed\-\*(C'\fR\*(L" if the image is
315composed of indexes into a palette. Of these, only \*(R"\f(CW\*(C`Indexed\-RGB\*(C'\fR" is
316likely to occur.
317.PP
318(It is similar to the \s-1TIFF\s0 field PhotometricInterpretation, but this
319name was found to be too long, so we used the \s-1PNG\s0 inpired term
320instead.)
321.Sh "resolution"
322.IX Subsection "resolution"
323The value of this field normally gives the physical size of the image
324on screen or paper. When the unit specifier is missing then this field
325denotes the squareness of pixels in the image.
326.PP
327The syntax of this field is:
328.PP
329.Vb 3
330\& <res> <unit>
331\& <xres> "/" <yres> <unit>
332\& <xres> "/" <yres>
333.Ve
334.PP
335The \f(CW\*(C`<res>\*(C'\fR, \f(CW\*(C`<xres>\*(C'\fR and \f(CW\*(C`<yres>\*(C'\fR fields are
336numbers. The \f(CW\*(C`<unit>\*(C'\fR is a string like \f(CW\*(C`dpi\*(C'\fR, \f(CW\*(C`dpm\*(C'\fR or
337\&\f(CW\*(C`dpcm\*(C'\fR (denoting "dots per inch/cm/meter).
338.Sh "SamplesPerPixel"
339.IX Subsection "SamplesPerPixel"
340This says how many channels there are in the image. For some image
341formats this number might be higher than the number implied from the
342\&\f(CW\*(C`color_type\*(C'\fR.
343.Sh "BitsPerSample"
344.IX Subsection "BitsPerSample"
345This says how many bits are used to encode each of samples. The value
346is a reference to an array containing numbers. The number of elements
347in the array should be the same as \f(CW\*(C`SamplesPerPixel\*(C'\fR.
348.Sh "Comment"
349.IX Subsection "Comment"
350Textual comments found in the file. The value is a reference to an
351array if there are multiple comments found.
352.Sh "Interlace"
353.IX Subsection "Interlace"
354If the image is interlaced, then this returns the interlace type.
355.Sh "Compression"
356.IX Subsection "Compression"
357This returns the name of the compression algorithm is used.
358.Sh "Gamma"
359.IX Subsection "Gamma"
360A number indicating the gamma curve of the image (e.g. 2.2)
361.SH "AUTHOR"
362.IX Header "AUTHOR"
363Andy Wardley <abw@wardley.org> <http://wardley.org/>
364.SH "COPYRIGHT"
365.IX Header "COPYRIGHT"
366Copyright (C) 1996\-2007 Andy Wardley. All Rights Reserved.
367.PP
368This module is free software; you can redistribute it and/or
369modify it under the same terms as Perl itself.
370.SH "SEE ALSO"
371.IX Header "SEE ALSO"
372Template::Plugin, Image::Info