X-Git-Url: https://git.cyclocoop.org/?a=blobdiff_plain;f=includes%2Fmedia%2FGeneric.php;h=9dbd7e30dbea97b97abc1716af8d0be4f7870d40;hb=320d4e1374a7d3db1c4babaefba2614e234a0bae;hp=b804422e90dca841ba1bbb69038cf73f85f8977e;hpb=36dad703d605b534a452767f0fc760ba73dd37fa;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/media/Generic.php b/includes/media/Generic.php index b804422e90..9dbd7e30db 100644 --- a/includes/media/Generic.php +++ b/includes/media/Generic.php @@ -1,13 +1,15 @@ validateParam() + * @param $image File: the image object + * @param $dstPath String: filesystem destination path + * @param $dstUrl String: Destination URL to use in output HTML + * @param $params Array: Arbitrary set of parameters validated by $this->validateParam() */ function getTransform( $image, $dstPath, $dstUrl, $params ) { return $this->doTransform( $image, $dstPath, $dstUrl, $params, self::TRANSFORM_LATER ); } /** - * Get a MediaTransformOutput object representing the transformed output. Does the + * Get a MediaTransformOutput object representing the transformed output. Does the * transform unless $flags contains self::TRANSFORM_LATER. * - * @param Image $image The image object - * @param string $dstPath Filesystem destination path - * @param string $dstUrl Destination URL to use in output HTML - * @param array $params Arbitrary set of parameters validated by $this->validateParam() - * @param integer $flags A bitfield, may contain self::TRANSFORM_LATER + * @param $image File: the image object + * @param $dstPath String: filesystem destination path + * @param $dstUrl String: destination URL to use in output HTML + * @param $params Array: arbitrary set of parameters validated by $this->validateParam() + * @param $flags Integer: a bitfield, may contain self::TRANSFORM_LATER */ abstract function doTransform( $image, $dstPath, $dstUrl, $params, $flags = 0 ); @@ -125,16 +140,16 @@ abstract class MediaHandler { * Get the thumbnail extension and MIME type for a given source MIME type * @return array thumbnail extension and MIME type */ - function getThumbType( $ext, $mime ) { + function getThumbType( $ext, $mime, $params = null ) { return array( $ext, $mime ); - } + } /** * True if the handled types can be transformed */ function canRender( $file ) { return true; } /** - * True if handled types cannot be displayed directly in a browser + * True if handled types cannot be displayed directly in a browser * but can be rendered */ function mustRender( $file ) { return false; } @@ -153,7 +168,7 @@ abstract class MediaHandler { /** * Get an associative array of page dimensions - * Currently "width" and "height" are understood, but this might be + * Currently "width" and "height" are understood, but this might be * expanded in the future. * Returns false if unknown or if the document is not multi-page. */ @@ -165,6 +180,14 @@ abstract class MediaHandler { ); } + /** + * Generic getter for text layer. + * Currently overloaded by PDF and DjVu handlers + */ + function getPageText( $image, $page ) { + return false; + } + /** * Get an array structure that looks like this: * @@ -178,7 +201,7 @@ abstract class MediaHandler { * ... * ) * ) - * The UI will format this into a table where the visible fields are always + * The UI will format this into a table where the visible fields are always * visible, and the collapsed fields are optionally visible. * * The function should return false if there is no metadata to display. @@ -186,7 +209,7 @@ abstract class MediaHandler { /** * FIXME: I don't really like this interface, it's not very flexible - * I think the media handler should generate HTML instead. It can do + * I think the media handler should generate HTML instead. It can do * all the formatting according to some standard. That makes it possible * to do things like visual indication of grouped and chained streams * in ogg container files. @@ -196,7 +219,7 @@ abstract class MediaHandler { } /** - * @fixme document this! + * @todo Fixme: document this! * 'value' thingy goes into a wikitext table; it used to be escaped but * that was incompatible with previous practice of customized display * with wikitext formatting via messages such as 'exif-model-value'. @@ -221,7 +244,24 @@ abstract class MediaHandler { function getLongDesc( $file ) { global $wgUser; $sk = $wgUser->getSkin(); - return wfMsg( 'file-info', $sk->formatSize( $file->getSize() ), $file->getMimeType() ); + return wfMsgExt( 'file-info', 'parseinline', + $sk->formatSize( $file->getSize() ), + $file->getMimeType() ); + } + + static function getGeneralShortDesc( $file ) { + global $wgLang; + $nbytes = '(' . wfMsgExt( 'nbytes', array( 'parsemag', 'escape' ), + $wgLang->formatNum( $file->getSize() ) ) . ')'; + return "$nbytes"; + } + + static function getGeneralLongDesc( $file ) { + global $wgUser; + $sk = $wgUser->getSkin(); + return wfMsgExt( 'file-info', 'parseinline', + $sk->formatSize( $file->getSize() ), + $file->getMimeType() ); } function getDimensionsString( $file ) { @@ -259,7 +299,7 @@ abstract class MediaHandler { /** * Media handler abstract base class for images * - * @addtogroup Media + * @ingroup Media */ abstract class ImageHandler extends MediaHandler { function canRender( $file ) { @@ -318,9 +358,19 @@ abstract class ImageHandler extends MediaHandler { if ( !isset( $params['width'] ) ) { return false; } + if ( !isset( $params['page'] ) ) { $params['page'] = 1; + } else { + if ( $params['page'] > $image->pageCount() ) { + $params['page'] = $image->pageCount(); + } + + if ( $params['page'] < 1 ) { + $params['page'] = 1; + } } + $srcWidth = $image->getWidth( $params['page'] ); $srcHeight = $image->getHeight( $params['page'] ); if ( isset( $params['height'] ) && $params['height'] != -1 ) { @@ -341,13 +391,16 @@ abstract class ImageHandler extends MediaHandler { function getTransform( $image, $dstPath, $dstUrl, $params ) { return $this->doTransform( $image, $dstPath, $dstUrl, $params, self::TRANSFORM_LATER ); } - + /** * Validate thumbnail parameters and fill in the correct height * - * @param integer &$width Specified width (input/output) - * @param integer &$height Height (output only) - * @return false to indicate that an error should be returned to the user. + * @param $width Integer: specified width (input/output) + * @param $height Integer: height (output only) + * @param $srcWidth Integer: width of the source image + * @param $srcHeight Integer: height of the source image + * @param $mimeType Unused + * @return false to indicate that an error should be returned to the user. */ function validateThumbParams( &$width, &$height, $srcWidth, $srcHeight, $mimeType ) { $width = intval( $width ); @@ -372,7 +425,10 @@ abstract class ImageHandler extends MediaHandler { } $url = $script . '&' . wfArrayToCGI( $this->getScriptParams( $params ) ); $page = isset( $params['page'] ) ? $params['page'] : false; - return new ThumbnailImage( $image, $url, $params['width'], $params['height'], $page ); + + if( $image->mustRender() || $params['width'] < $image->getWidth() ) { + return new ThumbnailImage( $image, $url, $params['width'], $params['height'], $page ); + } } function getImageSize( $image, $path ) { @@ -382,10 +438,14 @@ abstract class ImageHandler extends MediaHandler { return $gis; } + function isAnimatedImage( $image ) { + return false; + } + function getShortDesc( $file ) { global $wgLang; - $nbytes = '(' . wfMsgExt( 'nbytes', array( 'parsemag', 'escape' ), - $wgLang->formatNum( $file->getSize() ) ) . ')'; + $nbytes = wfMsgExt( 'nbytes', array( 'parsemag', 'escape' ), + $wgLang->formatNum( $file->getSize() ) ); $widthheight = wfMsgHtml( 'widthheight', $wgLang->formatNum( $file->getWidth() ) ,$wgLang->formatNum( $file->getHeight() ) ); return "$widthheight ($nbytes)"; @@ -393,17 +453,24 @@ abstract class ImageHandler extends MediaHandler { function getLongDesc( $file ) { global $wgLang; - return wfMsgHtml('file-info-size', $wgLang->formatNum( $file->getWidth() ), $wgLang->formatNum( $file->getHeight() ), - $wgLang->formatSize( $file->getSize() ), $file->getMimeType() ); + return wfMsgExt('file-info-size', 'parseinline', + $wgLang->formatNum( $file->getWidth() ), + $wgLang->formatNum( $file->getHeight() ), + $wgLang->formatSize( $file->getSize() ), + $file->getMimeType() ); } function getDimensionsString( $file ) { global $wgLang; $pages = $file->pageCount(); + $width = $wgLang->formatNum( $file->getWidth() ); + $height = $wgLang->formatNum( $file->getHeight() ); + $pagesFmt = $wgLang->formatNum( $pages ); + if ( $pages > 1 ) { - return wfMsg( 'widthheightpage', $wgLang->formatNum( $file->getWidth() ), $wgLang->formatNum( $file->getHeight() ), $wgLang->formatNum( $pages ) ); + return wfMsgExt( 'widthheightpage', 'parsemag', $width, $height, $pagesFmt ); } else { - return wfMsg( 'widthheight', $wgLang->formatNum( $file->getWidth() ), $wgLang->formatNum( $file->getHeight() ) ); + return wfMsg( 'widthheight', $width, $height ); } } }