<?php

declare(strict_types=1);

namespace App\Domain\Media;

/**
 * Adapter-Klasse für Abwärtskompatibilität
 * Delegiert an die konkrete Implementierung
 */
final readonly class ImageProcessor implements ImageProcessorInterface
{
    /**
     * @var ImageProcessorInterface
     */
    private ImageProcessorInterface $processor;

    /**
     * Konstruktor mit automatischer Dependency-Injection
     */
    public function __construct(?ImageProcessorInterface $processor = null)
    {
        // Wenn kein Processor übergeben wurde, Factory verwenden
        $this->processor = $processor ?? ImageProcessorFactory::create();
    }

    /**
     * @inheritDoc
     */
    public function createAllVariants(Image $image): array
    {
        return $this->processor->createAllVariants($image);
    }

    /**
     * @inheritDoc
     */
    public function createVariantsForType(Image $image, ImageVariantType $type): array
    {
        return $this->processor->createVariantsForType($image, $type);
    }
}
