. */ declare(strict_types=1); namespace Fisharebest\Webtrees\Contracts; use Fisharebest\Webtrees\MediaFile; use Intervention\Image\Image; use League\Flysystem\FilesystemInterface; use Psr\Http\Message\ResponseInterface; /** * Make an image (from another image). */ interface ImageFactoryInterface { /** * Send the original file - either inline or as a download. * * @param FilesystemInterface $filesystem * @param string $path * @param bool $download * * @return ResponseInterface */ public function fileResponse(FilesystemInterface $filesystem, string $path, bool $download): ResponseInterface; /** * Send the original file - either inline or as a download. * * @param FilesystemInterface $filesystem * @param string $path * @param int $width * @param int $height * @param string $fit * * @return ResponseInterface */ public function thumbnailResponse( FilesystemInterface $filesystem, string $path, int $width, int $height, string $fit ): ResponseInterface; /** * Create a full-size version of an image. * * @param MediaFile $media_file * @param bool $add_watermark * @param bool $download * * @return ResponseInterface */ public function mediaFileResponse(MediaFile $media_file, bool $add_watermark, bool $download): ResponseInterface; /** * Create a smaller version of an image. * * @param MediaFile $media_file * @param int $width * @param int $height * @param string $fit * @param bool $add_watermark * * @return ResponseInterface */ public function mediaFileThumbnailResponse( MediaFile $media_file, int $width, int $height, string $fit, bool $add_watermark ): ResponseInterface; /** * Does a full-sized image need a watermark? * * @param MediaFile $media_file * @param UserInterface $user * * @return bool */ public function fileNeedsWatermark(MediaFile $media_file, UserInterface $user): bool; /** * Does a thumbnail image need a watermark? * * @param MediaFile $media_file * @param UserInterface $user * * @return bool */ public function thumbnailNeedsWatermark(MediaFile $media_file, UserInterface $user): bool; /** * Create a watermark image, perhaps specific to a media-file. * * @param int $width * @param int $height * @param MediaFile $media_file * * @return Image */ public function createWatermark(int $width, int $height, MediaFile $media_file): Image; /** * Add a watermark to an image. * * @param Image $image * @param Image $watermark * * @return Image */ public function addWatermark(Image $image, Image $watermark): Image; /** * Send a replacement image, to replace one that could not be found or created. * * @param string $text HTTP status code or file extension * * @return ResponseInterface */ public function replacementImageResponse(string $text): ResponseInterface; }