import 'package:platform_image_converter/src/output_format.dart';

/// Base exception for image conversion errors.
class ImageConversionException implements Exception {
  /// Creates an [ImageConversionException] with the given [message].
  const ImageConversionException(this.message);

  /// Error message describing the exception.
  final String message;

  @override
  String toString() => 'ImageConversionException: $message';
}

/// Thrown when the input image data cannot be decoded.
class ImageDecodingException extends ImageConversionException {
  /// Creates an [ImageDecodingException] with the given [message].
  const ImageDecodingException([
    super.message = 'Failed to decode image data.',
  ]);
}

/// Thrown when the image cannot be encoded to the target format.
class ImageEncodingException extends ImageConversionException {
  /// Creates an [ImageEncodingException] with the given [message].
  ImageEncodingException(this.format, [String? message])
    : super(message ?? 'Failed to encode image to ${format.name}');

  final OutputFormat format;
}
