[BUGFIX] imagecopyresized: correct invalid parameters
authorStefan Neufeind <typo3.neufeind@speedpartner.de>
Wed, 14 Mar 2012 12:40:37 +0000 (13:40 +0100)
committerSteffen Ritter <info@rs-websystems.de>
Mon, 15 Oct 2012 17:21:36 +0000 (19:21 +0200)
The classes t3lib_stdgraphic and t3lib_iconworks provide
the method imagecopyresized. Those functions got parameters
$w, $h twice in the function-header and therefore the function
only worked in "special cases".

This patch also adds a docblock and improves the (internal)
naming of the variables.

Change-Id: I00166cb30b278e1124675111d2cc3174811e4151
Resolves: #26660
Releases: 4.4, 4.5, 4.6, 4.7
Reviewed-on: http://review.typo3.org/6829
Reviewed-by: Wouter Wolters
Reviewed-by: Andreas Bouche
Tested-by: Andreas Bouche
Reviewed-by: Steffen Ritter
Tested-by: Steffen Ritter
t3lib/class.t3lib_iconworks.php
t3lib/class.t3lib_stdgraphic.php

index 2641b16..c41642e 100644 (file)
@@ -515,23 +515,22 @@ final class t3lib_iconWorks {
         * Of course it works only if ImageMagick is able to create valid png-images - which you cannot be sure of with older versions (still 5+)
         * The only drawback is (apparently) that IM creates true-color png's. The transparency of these will not be shown by MSIE on windows at this time (although it's straight 0%/100% transparency!) and the file size may be larger.
         *
-        * For parameters, see PHP function "imagecopyresized()"
-        *
-        * @param       pointer         see PHP function "imagecopyresized()"
-        * @param       pointer         see PHP function "imagecopyresized()"
-        * @param       integer         see PHP function "imagecopyresized()"
-        * @param       integer         see PHP function "imagecopyresized()"
-        * @param       integer         see PHP function "imagecopyresized()"
-        * @param       integer         see PHP function "imagecopyresized()"
-        * @param       integer         see PHP function "imagecopyresized()"
-        * @param       integer         see PHP function "imagecopyresized()"
-        * @param       integer         see PHP function "imagecopyresized()"
-        * @param       integer         see PHP function "imagecopyresized()"
-        * @return      void
+        * @param resource $dstImg destination image
+        * @param resource $srcImg source image
+        * @param integer $dstX destination x-coordinate
+        * @param integer $dstY destination y-coordinate
+        * @param integer $srcX source x-coordinate
+        * @param integer $srcY source y-coordinate
+        * @param integer $dstWidth destination width
+        * @param integer $dstHeight destination height
+        * @param integer $srcWidth source width
+        * @param integer $srcHeight source height
+        * @return void
         * @access private
+        * @see t3lib_stdGraphic::imagecopyresized()
         */
-       public static function imagecopyresized(&$im, $cpImg, $Xstart, $Ystart, $cpImgCutX, $cpImgCutY, $w, $h, $w, $h) {
-               imagecopyresized($im, $cpImg, $Xstart, $Ystart, $cpImgCutX, $cpImgCutY, $w, $h, $w, $h);
+       public static function imagecopyresized(&$dstImg, $srcImg, $dstX, $dstY, $srcX, $srcY, $dstWidth, $dstHeight, $srcWidth, $srcHeight) {
+               imagecopyresized($dstImg, $srcImg, $dstX, $dstY, $srcX, $srcY, $dstWidth, $dstHeight, $srcWidth, $srcHeight);
        }
 
        /**
index bb3aba1..eaaadf5 100644 (file)
@@ -434,14 +434,18 @@ class t3lib_stdGraphic {
         * @access private
         * @see t3lib_iconWorks::imagecopyresized()
         */
-       function imagecopyresized(&$im, $cpImg, $Xstart, $Ystart, $cpImgCutX, $cpImgCutY, $w, $h, $w, $h) {
+       function imagecopyresized(&$dstImg, $srcImg, $dstX, $dstY, $srcX, $srcY, $dstWidth, $dstHeight, $srcWidth, $srcHeight) {
                if ($this->imagecopyresized_fix && !$this->saveAlphaLayer) {
-                       $im_base = imagecreatetruecolor(imagesx($im), imagesy($im)); // Make true color image
-                       imagecopyresized($im_base, $im, 0, 0, 0, 0, imagesx($im), imagesy($im), imagesx($im), imagesy($im)); // Copy the source image onto that
-                       imagecopyresized($im_base, $cpImg, $Xstart, $Ystart, $cpImgCutX, $cpImgCutY, $w, $h, $w, $h); // Then copy the $cpImg onto that (the actual operation!)
-                       $im = $im_base; // Set pointer
+                               // Make true color image
+                       $tmpImg = imagecreatetruecolor(imagesx($dstImg), imagesy($dstImg));
+                               // Copy the source image onto that
+                       imagecopyresized($tmpImg, $dstImg, 0, 0, 0, 0, imagesx($dstImg), imagesy($dstImg), imagesx($dstImg), imagesy($dstImg));
+                               // Then copy the source image onto that (the actual operation!)
+                       imagecopyresized($tmpImg, $srcImg, $dstX, $dstY, $srcX, $srcY, $dstWidth, $dstHeight, $srcWidth, $srcHeight);
+                               // Set the destination image
+                       $dstImg = $tmpImg;
                } else {
-                       imagecopyresized($im, $cpImg, $Xstart, $Ystart, $cpImgCutX, $cpImgCutY, $w, $h, $w, $h);
+                       imagecopyresized($dstImg, $srcImg, $dstX, $dstY, $srcX, $srcY, $dstWidth, $dstHeight, $srcWidth, $srcHeight);
                }
        }
 
@@ -2930,4 +2934,4 @@ if (defined('TYPO3_MODE') && isset($GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLA
        include_once($GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLASS']['t3lib/class.t3lib_stdgraphic.php']);
 }
 
-?>
+?>
\ No newline at end of file