Ejemplo n.º 1
0
 public function createReflection($percent, $reflection, $white, $border, $borderColor, &$that)
 {
     // bring stuff from the parent class into this class...
     $this->parentInstance = $that;
     $this->currentDimensions = $this->parentInstance->getCurrentDimensions();
     $this->workingImage = $this->parentInstance->getjorkingImage();
     $this->newImage = $this->parentInstance->getOldImage();
     $this->options = $this->parentInstance->getOptions();
     $width = $this->currentDimensions['width'];
     $height = $this->currentDimensions['height'];
     $reflectionHeight = intval($height * ($reflection / 100));
     $newHeight = $height + $reflectionHeight;
     $reflectedPart = $height * ($percent / 100);
     $this->workingImage = imagecreatetruecolor($width, $newHeight);
     imagealphablending($this->workingImage, true);
     $colorToPaint = imagecolorallocatealpha($this->workingImage, 255, 255, 255, 0);
     imagefilledrectangle($this->workingImage, 0, 0, $width, $newHeight, $colorToPaint);
     imagecopyresampled($this->workingImage, $this->newImage, 0, 0, 0, $reflectedPart, $width, $reflectionHeight, $width, $height - $reflectedPart);
     $this->imageFlipVertical();
     imagecopy($this->workingImage, $this->newImage, 0, 0, 0, 0, $width, $height);
     imagealphablending($this->workingImage, true);
     for ($i = 0; $i < $reflectionHeight; $i++) {
         $colorToPaint = imagecolorallocatealpha($this->workingImage, 255, 255, 255, ($i / $reflectionHeight * -1 + 1) * $white);
         imagefilledrectangle($this->workingImage, 0, $height + $i, $width, $height + $i, $colorToPaint);
     }
     if ($border == true) {
         $rgb = $this->hex2rgb($borderColor, false);
         $colorToPaint = imagecolorallocate($this->workingImage, $rgb[0], $rgb[1], $rgb[2]);
         imageline($this->workingImage, 0, 0, $width, 0, $colorToPaint);
         //top line
         imageline($this->workingImage, 0, $height, $width, $height, $colorToPaint);
         //bottom line
         imageline($this->workingImage, 0, 0, 0, $height, $colorToPaint);
         //left line
         imageline($this->workingImage, $width - 1, 0, $width - 1, $height, $colorToPaint);
         //right line
     }
     if ($this->parentInstance->getFormat() == 'PNG') {
         $colorTransparent = imagecolorallocatealpha($this->workingImage, $this->options['alphaMaskColor'][0], $this->options['alphaMaskColor'][1], $this->options['alphaMaskColor'][2], 0);
         imagefill($this->workingImage, 0, 0, $colorTransparent);
         imagesavealpha($this->workingImage, true);
     }
     $this->parentInstance->setOldImage($this->workingImage);
     $this->currentDimensions['width'] = $width;
     $this->currentDimensions['height'] = $newHeight;
     $this->parentInstance->setCurrentDimensions($this->currentDimensions);
     return $that;
 }