Documentation and style improvements
[mediawiki.git] / includes / media / PNG.php
blob21de7f28471ca2f8cd0db3abb7b486e4bb43ed74
1 <?php
2 /**
3 * @file
4 * @ingroup Media
5 */
7 /**
8 * Handler for PNG images.
10 * @ingroup Media
12 class PNGHandler extends BitmapHandler {
14 function getMetadata( $image, $filename ) {
15 if ( !isset($image->parsedPNGMetadata) ) {
16 try {
17 $image->parsedPNGMetadata = PNGMetadataExtractor::getMetadata( $filename );
18 } catch( Exception $e ) {
19 // Broken file?
20 wfDebug( __METHOD__ . ': ' . $e->getMessage() . "\n" );
21 return '0';
25 return serialize($image->parsedPNGMetadata);
29 function formatMetadata( $image ) {
30 return false;
33 function isAnimatedImage( $image ) {
34 $ser = $image->getMetadata();
35 if ($ser) {
36 $metadata = unserialize($ser);
37 if( $metadata['frameCount'] > 1 ) return true;
39 return false;
42 function getMetadataType( $image ) {
43 return 'parsed-png';
46 function isMetadataValid( $image, $metadata ) {
47 wfSuppressWarnings();
48 $data = unserialize( $metadata );
49 wfRestoreWarnings();
50 return (boolean) $data;
52 function getLongDesc( $image ) {
53 global $wgLang;
54 $original = parent::getLongDesc( $image );
56 wfSuppressWarnings();
57 $metadata = unserialize($image->getMetadata());
58 wfRestoreWarnings();
60 if( !$metadata || $metadata['frameCount'] <= 0 )
61 return $original;
63 $info = array();
64 $info[] = substr( $original, 1, strlen( $original )-2 );
66 if ($metadata['loopCount'] == 0)
67 $info[] = wfMsgExt( 'file-info-png-looped', 'parseinline' );
68 elseif ($metadata['loopCount'] > 1)
69 $info[] = wfMsgExt( 'file-info-png-repeat', 'parseinline', $metadata['loopCount'] );;
71 if ($metadata['frameCount'] > 0)
72 $info[] = wfMsgExt( 'file-info-png-frames', 'parseinline', $metadata['frameCount'] );
74 if ($metadata['duration'])
75 $info[] = $wgLang->formatTimePeriod( $metadata['duration'] );
77 $infoString = $wgLang->commaList( $info );
79 return "($infoString)";