1 <?php
 2 
 3 /**
 4  * @package redaxo\media-manager
 5  */
 6 abstract class rex_effect_abstract
 7 {
 8     /**
 9      * @var rex_managed_media
10      */
11     public $media;
12 
13     public $params = []; // effekt parameter
14 
15     public function setMedia(rex_managed_media $media)
16     {
17         $this->media = $media;
18     }
19 
20     public function setParams(array $params)
21     {
22         $this->params = $params;
23     }
24 
25     abstract public function execute();
26 
27     public function getName()
28     {
29         return get_class($this);
30     }
31 
32     public function getParams()
33     {
34         // NOOP
35     }
36 
37     protected function keepTransparent($des)
38     {
39         $image = $this->media;
40         if ($image->getFormat() == 'png' || $image->getFormat() == 'webp') {
41             imagealphablending($des, false);
42             imagesavealpha($des, true);
43         } elseif ($image->getFormat() == 'gif') {
44             $gdimage = $image->getImage();
45             $colorTransparent = imagecolortransparent($gdimage);
46             imagepalettecopy($gdimage, $des);
47             if ($colorTransparent > 0) {
48                 imagefill($des, 0, 0, $colorTransparent);
49                 imagecolortransparent($des, $colorTransparent);
50             }
51             imagetruecolortopalette($des, true, 256);
52         }
53     }
54 }
55