using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ImageBlockz.Api;

namespace ImageBlockz.Operations
{
    public class EntryPoint : IEntryPoint
    {
        List<OperationInfo> list = new List<OperationInfo>();

        public List<OperationInfo> GetOperationInfo()
        {   
            //
            // Input Operations
            //

            list.Add(new OperationInfo(typeof(InOut.FromImage)));
            list.Add(new OperationInfo(typeof(InOut.OpenFile)));



            //
            // Filter Operations
            //

            list.Add(new OperationInfo(typeof(Edit.Rotate), "Image/Rotate", typeof(Controls.RotateControl)));
            list.Add(new OperationInfo(typeof(Edit.Resize), "Image/Resize", typeof(Controls.ResizeControl)));
            list.Add(new OperationInfo(typeof(Edit.Crop), "Image/Crop", typeof(Controls.CropControl)));
            list.Add(new OperationInfo(typeof(Edit.RadiusCrop), "Image/Crop with Radius", typeof(Controls.RadiusCropControl)));

            list.Add(new OperationInfo(typeof(Edit.NoOperation)));

            list.Add(new OperationInfo(typeof(Filters.Negative),"Filters/Negative"));
            list.Add(new OperationInfo(typeof(Filters.ColorWeight), "Filters/Color Weight", typeof(Controls.ColorWeightControl)));
            list.Add(new OperationInfo(typeof(Filters.SimpleLevels), "Filters/Contrast Stretch", typeof(Controls.SimpleLevelsControl)));
            list.Add(new OperationInfo(typeof(Filters.MidtoneLevels), "Filters/Midtone Contrast Stretch", typeof(Controls.MidtoneLevelsControl)));
            list.Add(new OperationInfo(typeof(Filters.HistogramEqualization), "Filters/Histogram Equalization"));
            list.Add(new OperationInfo(typeof(Filters.GrayScaleRGB), "Filters/GrayScale"));

            list.Add(new OperationInfo(typeof(Filters.ColorMapping), "Filters/Color Mapping", typeof(Controls.ColorMappingControl)));
            list.Add(new OperationInfo(typeof(Filters.Brightness), "Filters/Brightness", typeof(Controls.BrightnessControl)));
            list.Add(new OperationInfo(typeof(Filters.Contrast), "Filters/Contrast", typeof(Controls.ContrastControl)));
            list.Add(new OperationInfo(typeof(Filters.Saturation), "Filters/Saturation", typeof(Controls.SaturationControl)));

            list.Add(new OperationInfo(typeof(Convolutions.Sharpen), "Convolutions/Sharpen"));
            list.Add(new OperationInfo(typeof(Convolutions.Blur), "Convolutions/Blur"));
            list.Add(new OperationInfo(typeof(Convolutions.Edges), "Convolutions/Edges"));
            list.Add(new OperationInfo(typeof(Convolutions.Convolution), "Convolutions/User Defined", typeof(Controls.ConvolutionControl)));

            list.Add(new OperationInfo(typeof(Transformations.CircularProjections), "Transformations/Circular Projections", typeof(Controls.CircularProjectionsControl)));

            list.Add(new OperationInfo(typeof(Edit.TextToImage), "Image/Text to Image", typeof(Controls.TextToImageControl)));



            //
            // Output Operations
            //

            list.Add(new OperationInfo(typeof(InOut.ToImage)));
            list.Add(new OperationInfo(typeof(InOut.SaveFile)));
            list.Add(new OperationInfo(typeof(InOut.ToExport)));
            list.Add(new OperationInfo(typeof(InOut.Analyse)));



            //
            // Return List of Choosed Operations
            //

            return list;
        }




    }
}
