X-Git-Url: https://git.heureux-cyclage.org/?p=lhc%2Fweb%2Fwiklou.git;a=blobdiff_plain;f=includes%2Fmedia%2FDjVuImage.php;h=5e8f8c8f1d07f1ea41eb12d61c578cf52c8dc6fb;hp=16740d840a6845f1ff00d15725f78194458d3acb;hb=9964ca1a390c446397dcd466916ffed356cdc3c9;hpb=96906168cac0e9a7748511b48c369cf22c8406d5 diff --git a/includes/media/DjVuImage.php b/includes/media/DjVuImage.php index 16740d840a..5e8f8c8f1d 100644 --- a/includes/media/DjVuImage.php +++ b/includes/media/DjVuImage.php @@ -84,11 +84,9 @@ class DjVuImage { function dump() { $file = fopen( $this->mFilename, 'rb' ); $header = fread( $file, 12 ); - // @todo FIXME: Would be good to replace this extract() call with - // something that explicitly initializes local variables. - extract( unpack( 'a4magic/a4chunk/NchunkLength', $header ) ); - /** @var string $chunk - * @var string $chunkLength */ + $arr = unpack( 'a4magic/a4chunk/NchunkLength', $header ); + $chunk = $arr['chunk']; + $chunkLength = $arr['chunkLength']; echo "$chunk $chunkLength\n"; $this->dumpForm( $file, $chunkLength, 1 ); fclose( $file ); @@ -103,11 +101,9 @@ class DjVuImage { if ( $chunkHeader == '' ) { break; } - // @todo FIXME: Would be good to replace this extract() call with - // something that explicitly initializes local variables. - extract( unpack( 'a4chunk/NchunkLength', $chunkHeader ) ); - /** @var string $chunk - * @var string $chunkLength */ + $arr = unpack( 'a4chunk/NchunkLength', $chunkHeader ); + $chunk = $arr['chunk']; + $chunkLength = $arr['chunkLength']; echo str_repeat( ' ', $indent * 4 ) . "$chunk $chunkLength\n"; if ( $chunk == 'FORM' ) { @@ -138,24 +134,19 @@ class DjVuImage { if ( strlen( $header ) < 16 ) { wfDebug( __METHOD__ . ": too short file header\n" ); } else { - // @todo FIXME: Would be good to replace this extract() call with - // something that explicitly initializes local variables. - extract( unpack( 'a4magic/a4form/NformLength/a4subtype', $header ) ); - - /** @var string $magic - * @var string $subtype - * @var string $formLength - * @var string $formType */ - if ( $magic != 'AT&T' ) { + $arr = unpack( 'a4magic/a4form/NformLength/a4subtype', $header ); + + $subtype = $arr['subtype']; + if ( $arr['magic'] != 'AT&T' ) { wfDebug( __METHOD__ . ": not a DjVu file\n" ); } elseif ( $subtype == 'DJVU' ) { // Single-page document $info = $this->getPageInfo( $file ); } elseif ( $subtype == 'DJVM' ) { // Multi-page document - $info = $this->getMultiPageInfo( $file, $formLength ); + $info = $this->getMultiPageInfo( $file, $arr['formLength'] ); } else { - wfDebug( __METHOD__ . ": unrecognized DJVU file type '$formType'\n" ); + wfDebug( __METHOD__ . ": unrecognized DJVU file type '{$arr['subtype']}'\n" ); } } fclose( $file ); @@ -168,13 +159,9 @@ class DjVuImage { if ( strlen( $header ) < 8 ) { return [ false, 0 ]; } else { - // @todo FIXME: Would be good to replace this extract() call with - // something that explicitly initializes local variables. - extract( unpack( 'a4chunk/Nlength', $header ) ); + $arr = unpack( 'a4chunk/Nlength', $header ); - /** @var string $chunk - * @var string $length */ - return [ $chunk, $length ]; + return [ $arr['chunk'], $arr['length'] ]; } } @@ -236,31 +223,22 @@ class DjVuImage { return false; } - // @todo FIXME: Would be good to replace this extract() call with - // something that explicitly initializes local variables. - extract( unpack( + $arr = unpack( 'nwidth/' . 'nheight/' . 'Cminor/' . 'Cmajor/' . 'vresolution/' . - 'Cgamma', $data ) ); + 'Cgamma', $data ); # Newer files have rotation info in byte 10, but we don't use it yet. - /** @var string $width - * @var string $height - * @var string $major - * @var string $minor - * @var string $resolution - * @var string $length - * @var string $gamma */ return [ - 'width' => $width, - 'height' => $height, - 'version' => "$major.$minor", - 'resolution' => $resolution, - 'gamma' => $gamma / 10.0 ]; + 'width' => $arr['width'], + 'height' => $arr['height'], + 'version' => "{$arr['major']}.{$arr['minor']}", + 'resolution' => $arr['resolution'], + 'gamma' => $arr['gamma'] / 10.0 ]; } /** @@ -276,7 +254,7 @@ class DjVuImage { if ( isset( $wgDjvuDump ) ) { # djvudump is faster as of version 3.5 - # http://sourceforge.net/tracker/index.php?func=detail&aid=1704049&group_id=32953&atid=406583 + # https://sourceforge.net/p/djvu/bugs/71/ $cmd = wfEscapeShellArg( $wgDjvuDump ) . ' ' . wfEscapeShellArg( $this->mFilename ); $dump = wfShellExec( $cmd ); $xml = $this->convertDumpToXML( $dump );