using System;
using UIKit;
using Shared.IOS.TBL;

namespace Shared
{

    /// <summary>
    /// 拍照或者选择图片
    /// </summary>
    public static class CropImage
    {
        ///// <summary>
        ///// 拍照或者读取图片完成时调用的动作,string==null表示用户取消了拍照或者取消选择图片,string!=null,表示图片的路径
        ///// </summary>
        //internal static Action<string> _callback;
        ///// <summary>
        ///// 文件名
        ///// </summary>
        //internal static string _fileName;
        /// <summary>
        /// 选择类型是拍照
        /// </summary>
        internal static readonly int TypeCamera = 101;
        /// <summary>
        /// 选择图片
        /// </summary>
        internal static readonly int TypePicture = 102;


        private static CropImageUtlis mCropImageUtlis;

        static CropImage()
        {
            //mCropImageUtlis = new CropImageUtlis();
        }


            /// <summary>
            /// 拍照
            /// </summary>
            /// <param name="callback">回调函数</param>
            /// <param name="fileName">文件名</param>
        public static void TakePicture(Action<string> callback, string fileName , int mRATIO_X = 1, int mRATIO_Y = 1, int OutputYSize = 200)
		{

            //_fileName = fileName;
            mCropImageUtlis = new CropImageUtlis(Application.currentVC , TypeCamera, fileName, mRATIO_X, mRATIO_Y, (obj) => {
                if (obj != null && obj.Length > 0)
                {
                    callback?.Invoke(obj);
                }
                else {
                    callback?.Invoke(null);
                }
                mCropImageUtlis = null;
            });


      
			
		}
       
        /// <summary>
        /// 选择图片
        /// </summary>
        /// <param name="callback">回调函数</param>
        /// <param name="fileName">文件名</param>
        public static void SelectPicture(Action<string> callback, string fileName, int mRATIO_X = 1, int mRATIO_Y = 1, int OutputYSize = 200)
		{
            //_fileName = fileName;
            mCropImageUtlis = new CropImageUtlis(Application.currentVC , TypePicture, fileName, mRATIO_X, mRATIO_Y, (obj) => {
                if (obj != null && obj.Length > 0)
                {
                    callback?.Invoke(obj);
                }
                else
                {
                    callback?.Invoke(null);
                }

                mCropImageUtlis = null;
            });
        }


        ///// <summary>
        ///// OnCropImageeCallback
        ///// </summary>
        //public class OnCropImageeCallback : Java.Lang.Object, IOnCropImageeCallback
        //{

        //    Action<string> mAction;
        //    public OnCropImageeCallback(Action<string> action)
        //    {
        //        mAction = action;
        //    }

        //    public void OnSaveCallback(string p0)
        //    {
        //        mAction?.Invoke(p0);
        //    }
        //}
    }
}