package com.lemenzo.gallery.editor;

import android.graphics.Bitmap;

import java.util.Locale;

/** Selects an encoding that is truthful to the output file and preserves alpha when possible. */
public final class EditorOutputFormat {
    public final String mimeType;
    public final String extension;
    public final Bitmap.CompressFormat compressFormat;
    public final int quality;

    private EditorOutputFormat(String mimeType, String extension,
            Bitmap.CompressFormat compressFormat, int quality) {
        this.mimeType = mimeType;
        this.extension = extension;
        this.compressFormat = compressFormat;
        this.quality = quality;
    }

    public static EditorOutputFormat forSource(String sourceMimeType, boolean hasAlpha) {
        String mime = sourceMimeType == null ? "" : sourceMimeType.toLowerCase(Locale.ROOT);
        if (hasAlpha || "image/png".equals(mime)) {
            return new EditorOutputFormat("image/png", ".png", Bitmap.CompressFormat.PNG, 100);
        }
        if ("image/webp".equals(mime)) {
            return new EditorOutputFormat("image/webp", ".webp",
                    Bitmap.CompressFormat.WEBP_LOSSLESS, 100);
        }
        // Bitmap has no public HEIF/AVIF encoder. Never label JPEG bytes as another MIME type.
        return new EditorOutputFormat("image/jpeg", ".jpg", Bitmap.CompressFormat.JPEG, 98);
    }
}
