summaryrefslogtreecommitdiff
path: root/app/Contracts
diff options
context:
space:
mode:
authorGreg Roach <greg@subaqua.co.uk>2020-09-09 13:28:08 +0100
committerGreg Roach <greg@subaqua.co.uk>2020-09-15 07:43:50 +0100
commit6577bfc3111b4789852b83f46e19d92c9b59921c (patch)
treebab616d47df19a9b0a6f7e770f7eec19bf4b10f7 /app/Contracts
parent2dce7b68a84a370c49b6a7aea7ec7f4a9b2b598f (diff)
downloadwebtrees-6577bfc3111b4789852b83f46e19d92c9b59921c.tar.gz
webtrees-6577bfc3111b4789852b83f46e19d92c9b59921c.tar.bz2
webtrees-6577bfc3111b4789852b83f46e19d92c9b59921c.zip
Remove league/glide. Use intervention/image directly.
Diffstat (limited to 'app/Contracts')
-rw-r--r--app/Contracts/ImageFactoryInterface.php141
1 files changed, 141 insertions, 0 deletions
diff --git a/app/Contracts/ImageFactoryInterface.php b/app/Contracts/ImageFactoryInterface.php
new file mode 100644
index 0000000000..6dae6e1851
--- /dev/null
+++ b/app/Contracts/ImageFactoryInterface.php
@@ -0,0 +1,141 @@
+<?php
+
+/**
+ * webtrees: online genealogy
+ * Copyright (C) 2019 webtrees development team
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+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;
+}