<?php
namespace Magento\Framework\Image;

/**
 * Interceptor class for @see \Magento\Framework\Image
 */
class Interceptor extends \Magento\Framework\Image implements \Magento\Framework\Interception\InterceptorInterface
{
    use \Magento\Framework\Interception\Interceptor;

    public function __construct(\Magento\Framework\Image\Adapter\AdapterInterface $adapter, $fileName = null)
    {
        $this->___init();
        parent::__construct($adapter, $fileName);
    }

    /**
     * {@inheritdoc}
     */
    public function open()
    {
        $pluginInfo = $this->pluginList->getNext($this->subjectType, 'open');
        return $pluginInfo ? $this->___callPlugins('open', func_get_args(), $pluginInfo) : parent::open();
    }

    /**
     * {@inheritdoc}
     */
    public function display()
    {
        $pluginInfo = $this->pluginList->getNext($this->subjectType, 'display');
        return $pluginInfo ? $this->___callPlugins('display', func_get_args(), $pluginInfo) : parent::display();
    }

    /**
     * {@inheritdoc}
     */
    public function save($destination = null, $newFileName = null)
    {
        $pluginInfo = $this->pluginList->getNext($this->subjectType, 'save');
        return $pluginInfo ? $this->___callPlugins('save', func_get_args(), $pluginInfo) : parent::save($destination, $newFileName);
    }

    /**
     * {@inheritdoc}
     */
    public function rotate($angle)
    {
        $pluginInfo = $this->pluginList->getNext($this->subjectType, 'rotate');
        return $pluginInfo ? $this->___callPlugins('rotate', func_get_args(), $pluginInfo) : parent::rotate($angle);
    }

    /**
     * {@inheritdoc}
     */
    public function crop($top = 0, $left = 0, $right = 0, $bottom = 0)
    {
        $pluginInfo = $this->pluginList->getNext($this->subjectType, 'crop');
        return $pluginInfo ? $this->___callPlugins('crop', func_get_args(), $pluginInfo) : parent::crop($top, $left, $right, $bottom);
    }

    /**
     * {@inheritdoc}
     */
    public function resize($width, $height = null)
    {
        $pluginInfo = $this->pluginList->getNext($this->subjectType, 'resize');
        return $pluginInfo ? $this->___callPlugins('resize', func_get_args(), $pluginInfo) : parent::resize($width, $height);
    }

    /**
     * {@inheritdoc}
     */
    public function keepAspectRatio($value)
    {
        $pluginInfo = $this->pluginList->getNext($this->subjectType, 'keepAspectRatio');
        return $pluginInfo ? $this->___callPlugins('keepAspectRatio', func_get_args(), $pluginInfo) : parent::keepAspectRatio($value);
    }

    /**
     * {@inheritdoc}
     */
    public function keepFrame($value)
    {
        $pluginInfo = $this->pluginList->getNext($this->subjectType, 'keepFrame');
        return $pluginInfo ? $this->___callPlugins('keepFrame', func_get_args(), $pluginInfo) : parent::keepFrame($value);
    }

    /**
     * {@inheritdoc}
     */
    public function keepTransparency($value)
    {
        $pluginInfo = $this->pluginList->getNext($this->subjectType, 'keepTransparency');
        return $pluginInfo ? $this->___callPlugins('keepTransparency', func_get_args(), $pluginInfo) : parent::keepTransparency($value);
    }

    /**
     * {@inheritdoc}
     */
    public function constrainOnly($value)
    {
        $pluginInfo = $this->pluginList->getNext($this->subjectType, 'constrainOnly');
        return $pluginInfo ? $this->___callPlugins('constrainOnly', func_get_args(), $pluginInfo) : parent::constrainOnly($value);
    }

    /**
     * {@inheritdoc}
     */
    public function backgroundColor($value)
    {
        $pluginInfo = $this->pluginList->getNext($this->subjectType, 'backgroundColor');
        return $pluginInfo ? $this->___callPlugins('backgroundColor', func_get_args(), $pluginInfo) : parent::backgroundColor($value);
    }

    /**
     * {@inheritdoc}
     */
    public function quality($value)
    {
        $pluginInfo = $this->pluginList->getNext($this->subjectType, 'quality');
        return $pluginInfo ? $this->___callPlugins('quality', func_get_args(), $pluginInfo) : parent::quality($value);
    }

    /**
     * {@inheritdoc}
     */
    public function watermark($watermarkImage, $positionX = 0, $positionY = 0, $watermarkImageOpacity = 30, $repeat = false)
    {
        $pluginInfo = $this->pluginList->getNext($this->subjectType, 'watermark');
        return $pluginInfo ? $this->___callPlugins('watermark', func_get_args(), $pluginInfo) : parent::watermark($watermarkImage, $positionX, $positionY, $watermarkImageOpacity, $repeat);
    }

    /**
     * {@inheritdoc}
     */
    public function getMimeType()
    {
        $pluginInfo = $this->pluginList->getNext($this->subjectType, 'getMimeType');
        return $pluginInfo ? $this->___callPlugins('getMimeType', func_get_args(), $pluginInfo) : parent::getMimeType();
    }

    /**
     * {@inheritdoc}
     */
    public function getImageType()
    {
        $pluginInfo = $this->pluginList->getNext($this->subjectType, 'getImageType');
        return $pluginInfo ? $this->___callPlugins('getImageType', func_get_args(), $pluginInfo) : parent::getImageType();
    }

    /**
     * {@inheritdoc}
     */
    public function process()
    {
        $pluginInfo = $this->pluginList->getNext($this->subjectType, 'process');
        return $pluginInfo ? $this->___callPlugins('process', func_get_args(), $pluginInfo) : parent::process();
    }

    /**
     * {@inheritdoc}
     */
    public function instruction()
    {
        $pluginInfo = $this->pluginList->getNext($this->subjectType, 'instruction');
        return $pluginInfo ? $this->___callPlugins('instruction', func_get_args(), $pluginInfo) : parent::instruction();
    }

    /**
     * {@inheritdoc}
     */
    public function setImageBackgroundColor($color)
    {
        $pluginInfo = $this->pluginList->getNext($this->subjectType, 'setImageBackgroundColor');
        return $pluginInfo ? $this->___callPlugins('setImageBackgroundColor', func_get_args(), $pluginInfo) : parent::setImageBackgroundColor($color);
    }

    /**
     * {@inheritdoc}
     */
    public function setWatermarkPosition($position)
    {
        $pluginInfo = $this->pluginList->getNext($this->subjectType, 'setWatermarkPosition');
        return $pluginInfo ? $this->___callPlugins('setWatermarkPosition', func_get_args(), $pluginInfo) : parent::setWatermarkPosition($position);
    }

    /**
     * {@inheritdoc}
     */
    public function setWatermarkImageOpacity($imageOpacity)
    {
        $pluginInfo = $this->pluginList->getNext($this->subjectType, 'setWatermarkImageOpacity');
        return $pluginInfo ? $this->___callPlugins('setWatermarkImageOpacity', func_get_args(), $pluginInfo) : parent::setWatermarkImageOpacity($imageOpacity);
    }

    /**
     * {@inheritdoc}
     */
    public function setWatermarkWidth($width)
    {
        $pluginInfo = $this->pluginList->getNext($this->subjectType, 'setWatermarkWidth');
        return $pluginInfo ? $this->___callPlugins('setWatermarkWidth', func_get_args(), $pluginInfo) : parent::setWatermarkWidth($width);
    }

    /**
     * {@inheritdoc}
     */
    public function setWatermarkHeight($height)
    {
        $pluginInfo = $this->pluginList->getNext($this->subjectType, 'setWatermarkHeight');
        return $pluginInfo ? $this->___callPlugins('setWatermarkHeight', func_get_args(), $pluginInfo) : parent::setWatermarkHeight($height);
    }

    /**
     * {@inheritdoc}
     */
    public function getOriginalWidth()
    {
        $pluginInfo = $this->pluginList->getNext($this->subjectType, 'getOriginalWidth');
        return $pluginInfo ? $this->___callPlugins('getOriginalWidth', func_get_args(), $pluginInfo) : parent::getOriginalWidth();
    }

    /**
     * {@inheritdoc}
     */
    public function getOriginalHeight()
    {
        $pluginInfo = $this->pluginList->getNext($this->subjectType, 'getOriginalHeight');
        return $pluginInfo ? $this->___callPlugins('getOriginalHeight', func_get_args(), $pluginInfo) : parent::getOriginalHeight();
    }

    /**
     * {@inheritdoc}
     */
    public function createPngFromString($text, $font = '')
    {
        $pluginInfo = $this->pluginList->getNext($this->subjectType, 'createPngFromString');
        return $pluginInfo ? $this->___callPlugins('createPngFromString', func_get_args(), $pluginInfo) : parent::createPngFromString($text, $font);
    }
}
