namespace AxibugEmuOnline.GameScreenConvert
{
    public static class ScreenConvert
    {
        /// <summary>
        /// 转换
        /// </summary>
        /// <param name="platform">
        /// enum RomPlatformType
        ///{
        ///     Invalid = 0;
        ///     Nes = 1;
        ///     Master_System = 2;
        ///	    Game_Gear = 3;
        ///	    Game_Boy = 4;
        ///	    Game_Boy_Color = 5;
        ///	    Coleco_Vision = 6;
        ///	    SC_3000 = 7;
        ///	    SG_1000 = 8;
        ///	    All = 999;
        ///}</param>
        /// <param name="srcData"></param>
        /// <param name="width"></param>
        /// <param name="height"></param>
        /// <param name="Quality">品质0~100</param>
        /// <param name="JpegData"></param>
        /// <returns></returns>
        public static bool Convert(int platform, byte[] srcData, out byte[] imageData)
        {
            IScreenConvert convert = default;
            switch (platform)
            {
                case 1://nes
                    //
                    break;
                default:
                    convert = new SampleScreenConvert();
                    break;
            }
            return convert.ScreenDataToRGBA32Data(platform, srcData, out imageData);
        }
    }

    public interface IScreenConvert
    {

        bool ScreenDataToRGBA32Data(int platform, byte[] srcData, out byte[] imageData);
    }

    public class SampleScreenConvert : IScreenConvert
    {
        public bool ScreenDataToRGBA32Data(int platform, byte[] srcData, out byte[] imageData)
        {
            imageData = null;
            //TODO 这里加上自己从原始数据中的颜色处理 比如颜色查找表
            //System.Span<T> 也是可用的
            //统一处理成RGBA32的通道顺序
            return imageData != null;
        }
    }
}