// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.

using System.ComponentModel;
using System.Drawing;
using System.Drawing.Design;
using System.Drawing.Imaging;

namespace System.Windows.Forms.Design;

[Editor(typeof(ImageListImageEditor), typeof(UITypeEditor))]
internal class ImageListImage
{
    private string? _name;

    public ImageListImage(Image image)
    {
        Image = image;
    }

    public ImageListImage(Image image, string? name)
    {
        Image = image;
        Name = name;
    }

    [AllowNull]
    public string Name
    {
        get => _name ?? string.Empty;
        set => _name = value;
    }

    [Browsable(false)]
    public Image Image { get; set; }

    // Add properties to make this object "look" like Image in the Collection editor
    public float HorizontalResolution => Image.HorizontalResolution;

    public float VerticalResolution => Image.VerticalResolution;

    public PixelFormat PixelFormat => Image.PixelFormat;

    public ImageFormat RawFormat => Image.RawFormat;

    public Size Size => Image.Size;

    public SizeF PhysicalDimension => Image.Size;

    public static ImageListImage ImageListImageFromStream(Stream stream, bool imageIsIcon)
    {
        if (imageIsIcon)
        {
            return new ImageListImage((new Icon(stream)).ToBitmap());
        }

        return new ImageListImage((Bitmap)Image.FromStream(stream));
    }
}
