Loading core/lib/Drupal/Core/ImageToolkit/Attribute/ImageToolkitOperation.php 0 → 100644 +71 −0 Original line number Diff line number Diff line <?php declare(strict_types=1); namespace Drupal\Core\ImageToolkit\Attribute; use Drupal\Component\Plugin\Attribute\Plugin; use Drupal\Core\StringTranslation\TranslatableMarkup; /** * Defines a Plugin attribute for the image toolkit plugin. * * An image toolkit operation plugin provides a self-contained image * manipulation routine, for a specific image toolkit. Examples of image * toolkit operations are scaling, cropping, rotating, etc. * * Plugin namespace: Plugin\ImageToolkit\Operation * * For a working example, see * \Drupal\system\Plugin\ImageToolkit\Operation\gd\Crop * * @see \Drupal\Core\ImageToolkit\Annotation\ImageToolkit * @see \Drupal\image\Annotation\ImageEffect * @see \Drupal\Core\ImageToolkit\ImageToolkitOperationInterface * @see \Drupal\Core\ImageToolkit\ImageToolkitOperationBase * @see \Drupal\Core\ImageToolkit\ImageToolkitOperationManager * @see plugin_api * * @Annotation */ #[\Attribute(\Attribute::TARGET_CLASS)] class ImageToolkitOperation extends Plugin { /** * Constructs a new ImageToolkitOperation instance. * * @param string $id * The plugin ID. * There are no strict requirements as to the string to be used to identify * the plugin, since discovery of the appropriate operation plugin to be * used to apply an operation is based on the values of the 'toolkit' and * the 'operation' annotation values. * However, it is recommended that the following patterns be used: * - '{toolkit}_{operation}' for the first implementation of an operation * by a toolkit. * - '{module}_{toolkit}_{operation}' for overrides of existing * implementations supplied by an alternative module, and for new * module-supplied operations. * @param string $toolkit * The id of the image toolkit plugin for which the operation is * implemented. * @param string $operation * The machine name of the image toolkit operation implemented * (e.g. "crop"). * @param \Drupal\Core\StringTranslation\TranslatableMarkup $label * The human-readable name of the image toolkit operation. * @param \Drupal\Core\StringTranslation\TranslatableMarkup|null $description * (optional) The description of the image toolkit operation. * @param string|null $deriver * (optional) The deriver class for the image toolkit operation. */ public function __construct( public readonly string $id, public readonly string $toolkit, public readonly string $operation, public readonly TranslatableMarkup $label, public readonly ?TranslatableMarkup $description = NULL, public readonly ?string $deriver = NULL, ) {} } core/lib/Drupal/Core/ImageToolkit/ImageToolkitOperationManager.php +12 −4 Original line number Diff line number Diff line Loading @@ -2,12 +2,13 @@ namespace Drupal\Core\ImageToolkit; use Drupal\Core\Cache\CacheBackendInterface; use Drupal\Core\Extension\ModuleHandlerInterface; use Drupal\Core\Plugin\DefaultPluginManager; use Drupal\Component\Plugin\Exception\PluginNotFoundException; use Drupal\Component\Plugin\Factory\DefaultFactory; use Drupal\Component\Render\FormattableMarkup; use Drupal\Core\Cache\CacheBackendInterface; use Drupal\Core\Extension\ModuleHandlerInterface; use Drupal\Core\ImageToolkit\Attribute\ImageToolkitOperation; use Drupal\Core\Plugin\DefaultPluginManager; use Psr\Log\LoggerInterface; /** Loading Loading @@ -50,7 +51,14 @@ class ImageToolkitOperationManager extends DefaultPluginManager implements Image * The image toolkit manager. */ public function __construct(\Traversable $namespaces, CacheBackendInterface $cache_backend, ModuleHandlerInterface $module_handler, LoggerInterface $logger, ImageToolkitManager $toolkit_manager) { parent::__construct('Plugin/ImageToolkit/Operation', $namespaces, $module_handler, 'Drupal\Core\ImageToolkit\ImageToolkitOperationInterface', 'Drupal\Core\ImageToolkit\Annotation\ImageToolkitOperation'); parent::__construct( 'Plugin/ImageToolkit/Operation', $namespaces, $module_handler, ImageToolkitOperationInterface::class, ImageToolkitOperation::class, 'Drupal\Core\ImageToolkit\Annotation\ImageToolkitOperation', ); $this->alterInfo('image_toolkit_operation'); $this->setCacheBackend($cache_backend, 'image_toolkit_operation_plugins'); Loading core/modules/system/src/Plugin/ImageToolkit/Operation/gd/Convert.php +10 −8 Original line number Diff line number Diff line Loading @@ -2,17 +2,19 @@ namespace Drupal\system\Plugin\ImageToolkit\Operation\gd; use Drupal\Core\ImageToolkit\Attribute\ImageToolkitOperation; use Drupal\Core\StringTranslation\TranslatableMarkup; /** * Defines GD2 convert operation. * * @ImageToolkitOperation( * id = "gd_convert", * toolkit = "gd", * operation = "convert", * label = @Translation("Convert"), * description = @Translation("Instructs the toolkit to save the image with a specified extension.") * ) */ #[ImageToolkitOperation( id: "gd_convert", toolkit: "gd", operation: "convert", label: new TranslatableMarkup("Convert"), description: new TranslatableMarkup("Instructs the toolkit to save the image with a specified extension.") )] class Convert extends GDImageToolkitOperationBase { /** Loading core/modules/system/src/Plugin/ImageToolkit/Operation/gd/CreateNew.php +9 −8 Original line number Diff line number Diff line Loading @@ -3,18 +3,19 @@ namespace Drupal\system\Plugin\ImageToolkit\Operation\gd; use Drupal\Component\Utility\Color; use Drupal\Core\ImageToolkit\Attribute\ImageToolkitOperation; use Drupal\Core\StringTranslation\TranslatableMarkup; /** * Defines GD2 create_new image operation. * * @ImageToolkitOperation( * id = "gd_create_new", * toolkit = "gd", * operation = "create_new", * label = @Translation("Set a new image"), * description = @Translation("Creates a new transparent object and sets it for the image.") * ) */ #[ImageToolkitOperation( id: "gd_create_new", toolkit: "gd", operation: "create_new", label: new TranslatableMarkup("Set a new image"), description: new TranslatableMarkup("Creates a new transparent object and sets it for the image.") )] class CreateNew extends GDImageToolkitOperationBase { /** Loading core/modules/system/src/Plugin/ImageToolkit/Operation/gd/Crop.php +10 −8 Original line number Diff line number Diff line Loading @@ -2,17 +2,19 @@ namespace Drupal\system\Plugin\ImageToolkit\Operation\gd; use Drupal\Core\ImageToolkit\Attribute\ImageToolkitOperation; use Drupal\Core\StringTranslation\TranslatableMarkup; /** * Defines GD2 Crop operation. * * @ImageToolkitOperation( * id = "gd_crop", * toolkit = "gd", * operation = "crop", * label = @Translation("Crop"), * description = @Translation("Crops an image to a rectangle specified by the given dimensions.") * ) */ #[ImageToolkitOperation( id: "gd_crop", toolkit: "gd", operation: "crop", label: new TranslatableMarkup("Crop"), description: new TranslatableMarkup("Crops an image to a rectangle specified by the given dimensions.") )] class Crop extends GDImageToolkitOperationBase { /** Loading Loading
core/lib/Drupal/Core/ImageToolkit/Attribute/ImageToolkitOperation.php 0 → 100644 +71 −0 Original line number Diff line number Diff line <?php declare(strict_types=1); namespace Drupal\Core\ImageToolkit\Attribute; use Drupal\Component\Plugin\Attribute\Plugin; use Drupal\Core\StringTranslation\TranslatableMarkup; /** * Defines a Plugin attribute for the image toolkit plugin. * * An image toolkit operation plugin provides a self-contained image * manipulation routine, for a specific image toolkit. Examples of image * toolkit operations are scaling, cropping, rotating, etc. * * Plugin namespace: Plugin\ImageToolkit\Operation * * For a working example, see * \Drupal\system\Plugin\ImageToolkit\Operation\gd\Crop * * @see \Drupal\Core\ImageToolkit\Annotation\ImageToolkit * @see \Drupal\image\Annotation\ImageEffect * @see \Drupal\Core\ImageToolkit\ImageToolkitOperationInterface * @see \Drupal\Core\ImageToolkit\ImageToolkitOperationBase * @see \Drupal\Core\ImageToolkit\ImageToolkitOperationManager * @see plugin_api * * @Annotation */ #[\Attribute(\Attribute::TARGET_CLASS)] class ImageToolkitOperation extends Plugin { /** * Constructs a new ImageToolkitOperation instance. * * @param string $id * The plugin ID. * There are no strict requirements as to the string to be used to identify * the plugin, since discovery of the appropriate operation plugin to be * used to apply an operation is based on the values of the 'toolkit' and * the 'operation' annotation values. * However, it is recommended that the following patterns be used: * - '{toolkit}_{operation}' for the first implementation of an operation * by a toolkit. * - '{module}_{toolkit}_{operation}' for overrides of existing * implementations supplied by an alternative module, and for new * module-supplied operations. * @param string $toolkit * The id of the image toolkit plugin for which the operation is * implemented. * @param string $operation * The machine name of the image toolkit operation implemented * (e.g. "crop"). * @param \Drupal\Core\StringTranslation\TranslatableMarkup $label * The human-readable name of the image toolkit operation. * @param \Drupal\Core\StringTranslation\TranslatableMarkup|null $description * (optional) The description of the image toolkit operation. * @param string|null $deriver * (optional) The deriver class for the image toolkit operation. */ public function __construct( public readonly string $id, public readonly string $toolkit, public readonly string $operation, public readonly TranslatableMarkup $label, public readonly ?TranslatableMarkup $description = NULL, public readonly ?string $deriver = NULL, ) {} }
core/lib/Drupal/Core/ImageToolkit/ImageToolkitOperationManager.php +12 −4 Original line number Diff line number Diff line Loading @@ -2,12 +2,13 @@ namespace Drupal\Core\ImageToolkit; use Drupal\Core\Cache\CacheBackendInterface; use Drupal\Core\Extension\ModuleHandlerInterface; use Drupal\Core\Plugin\DefaultPluginManager; use Drupal\Component\Plugin\Exception\PluginNotFoundException; use Drupal\Component\Plugin\Factory\DefaultFactory; use Drupal\Component\Render\FormattableMarkup; use Drupal\Core\Cache\CacheBackendInterface; use Drupal\Core\Extension\ModuleHandlerInterface; use Drupal\Core\ImageToolkit\Attribute\ImageToolkitOperation; use Drupal\Core\Plugin\DefaultPluginManager; use Psr\Log\LoggerInterface; /** Loading Loading @@ -50,7 +51,14 @@ class ImageToolkitOperationManager extends DefaultPluginManager implements Image * The image toolkit manager. */ public function __construct(\Traversable $namespaces, CacheBackendInterface $cache_backend, ModuleHandlerInterface $module_handler, LoggerInterface $logger, ImageToolkitManager $toolkit_manager) { parent::__construct('Plugin/ImageToolkit/Operation', $namespaces, $module_handler, 'Drupal\Core\ImageToolkit\ImageToolkitOperationInterface', 'Drupal\Core\ImageToolkit\Annotation\ImageToolkitOperation'); parent::__construct( 'Plugin/ImageToolkit/Operation', $namespaces, $module_handler, ImageToolkitOperationInterface::class, ImageToolkitOperation::class, 'Drupal\Core\ImageToolkit\Annotation\ImageToolkitOperation', ); $this->alterInfo('image_toolkit_operation'); $this->setCacheBackend($cache_backend, 'image_toolkit_operation_plugins'); Loading
core/modules/system/src/Plugin/ImageToolkit/Operation/gd/Convert.php +10 −8 Original line number Diff line number Diff line Loading @@ -2,17 +2,19 @@ namespace Drupal\system\Plugin\ImageToolkit\Operation\gd; use Drupal\Core\ImageToolkit\Attribute\ImageToolkitOperation; use Drupal\Core\StringTranslation\TranslatableMarkup; /** * Defines GD2 convert operation. * * @ImageToolkitOperation( * id = "gd_convert", * toolkit = "gd", * operation = "convert", * label = @Translation("Convert"), * description = @Translation("Instructs the toolkit to save the image with a specified extension.") * ) */ #[ImageToolkitOperation( id: "gd_convert", toolkit: "gd", operation: "convert", label: new TranslatableMarkup("Convert"), description: new TranslatableMarkup("Instructs the toolkit to save the image with a specified extension.") )] class Convert extends GDImageToolkitOperationBase { /** Loading
core/modules/system/src/Plugin/ImageToolkit/Operation/gd/CreateNew.php +9 −8 Original line number Diff line number Diff line Loading @@ -3,18 +3,19 @@ namespace Drupal\system\Plugin\ImageToolkit\Operation\gd; use Drupal\Component\Utility\Color; use Drupal\Core\ImageToolkit\Attribute\ImageToolkitOperation; use Drupal\Core\StringTranslation\TranslatableMarkup; /** * Defines GD2 create_new image operation. * * @ImageToolkitOperation( * id = "gd_create_new", * toolkit = "gd", * operation = "create_new", * label = @Translation("Set a new image"), * description = @Translation("Creates a new transparent object and sets it for the image.") * ) */ #[ImageToolkitOperation( id: "gd_create_new", toolkit: "gd", operation: "create_new", label: new TranslatableMarkup("Set a new image"), description: new TranslatableMarkup("Creates a new transparent object and sets it for the image.") )] class CreateNew extends GDImageToolkitOperationBase { /** Loading
core/modules/system/src/Plugin/ImageToolkit/Operation/gd/Crop.php +10 −8 Original line number Diff line number Diff line Loading @@ -2,17 +2,19 @@ namespace Drupal\system\Plugin\ImageToolkit\Operation\gd; use Drupal\Core\ImageToolkit\Attribute\ImageToolkitOperation; use Drupal\Core\StringTranslation\TranslatableMarkup; /** * Defines GD2 Crop operation. * * @ImageToolkitOperation( * id = "gd_crop", * toolkit = "gd", * operation = "crop", * label = @Translation("Crop"), * description = @Translation("Crops an image to a rectangle specified by the given dimensions.") * ) */ #[ImageToolkitOperation( id: "gd_crop", toolkit: "gd", operation: "crop", label: new TranslatableMarkup("Crop"), description: new TranslatableMarkup("Crops an image to a rectangle specified by the given dimensions.") )] class Crop extends GDImageToolkitOperationBase { /** Loading