using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using System.Collections.Specialized;
namespace SuchSofts.OpenImage.Lib.Image
{
internal class ImageFilter
{
public string Types { get; set; }
public Size MinimumSize { get; set; }
public Size MaximumSize { get; set; }
public ImageFilter()
{
this.Types = GenerateTypesString();
this.MinimumSize = new Size(1, 1);
this.MaximumSize = new Size(int.MaxValue, int.MaxValue);
}
public ImageFilter(string types, Size minimumSize, Size maximumSize)
{
this.Types = types;
this.MinimumSize = minimumSize;
this.MaximumSize = maximumSize;
}
public ImageFilter(IList types, Size minimumSize, Size maximumSize)
{
this.Types = GenerateTypesString(types);
this.MinimumSize = minimumSize;
this.MaximumSize = maximumSize;
}
#region Static Memebers
public static readonly List AllTypes = new List { "jpg", "gif", "png", "bmp","{ALL}" };
public static string GenerateTypesString()
{
return GenerateTypesString(AllTypes);
}
public static string GenerateTypesString(IList types)
{
if (types.Count == 0)
{
return "";
}
StringBuilder typesBuilder = new StringBuilder();
for (int i = 0; i < types.Count - 1; i++)
{
typesBuilder.Append(types[i]);
typesBuilder.Append("|");
for (int j = i + 1; j < types.Count; j++)
{
if (types[j].Equals(types[i], StringComparison.OrdinalIgnoreCase))
{
types.RemoveAt(j);
}
}
}
typesBuilder.Append(types[types.Count - 1]);
return typesBuilder.ToString();
}
public static string GenerateTypesString(string[] types)
{
List typesCollection = new List();
foreach (string type in types)
{
typesCollection.Add(type);
}
return GenerateTypesString(typesCollection);
}
public static bool IsLeagalTypesString(ref string typesString)
{
string[] types = typesString.Split('|');
if (types.Length == 0)
{
return false;
}
foreach (string type in types)
{
bool notMatch = true;
foreach (string legalType in AllTypes)
{
if (type.Equals(legalType, StringComparison.OrdinalIgnoreCase))
{
notMatch = false;
break;
}
}
if (notMatch)
{
return false;
}
}
typesString = GenerateTypesString(types);
return true;
}
#endregion
}
}