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