///
/// This file is part of ILNumerics Community Edition.
///
/// ILNumerics Community Edition - high performance computing for applications.
/// Copyright (C) 2006 - 2012 Haymo Kutschbach, http://ilnumerics.net
///
/// ILNumerics Community Edition is free software: you can redistribute it and/or modify
/// it under the terms of the GNU General Public License version 3 as published by
/// the Free Software Foundation.
///
/// ILNumerics Community Edition is distributed in the hope that it will be useful,
/// but WITHOUT ANY WARRANTY; without even the implied warranty of
/// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
/// GNU General Public License for more details.
///
/// You should have received a copy of the GNU General Public License
/// along with ILNumerics Community Edition. See the file License.txt in the root
/// of your distribution package. If not, see .
///
/// In addition this software uses the following components and/or licenses:
///
/// =================================================================================
/// The Open Toolkit Library License
///
/// Copyright (c) 2006 - 2009 the Open Toolkit library.
///
/// Permission is hereby granted, free of charge, to any person obtaining a copy
/// of this software and associated documentation files (the "Software"), to deal
/// in the Software without restriction, including without limitation the rights to
/// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
/// the Software, and to permit persons to whom the Software is furnished to do
/// so, subject to the following conditions:
///
/// The above copyright notice and this permission notice shall be included in all
/// copies or substantial portions of the Software.
///
/// =================================================================================
///
using System;
using System.Collections.Generic;
using System.Text;
using ILNumerics.Exceptions;
using ILNumerics.Drawing;
namespace ILNumerics.Drawing.Collections {
///
/// Collection of all subfigures contained in an ILFigureControl
///
[Serializable]
public class ILSubfigureCollection {
#region attributes
private Dictionary m_subfigures;
#endregion
#region constructor
///
/// create new ILSubfigureCollection
///
public ILSubfigureCollection() {
m_subfigures = new Dictionary();
}
#endregion
#region indexer
///
/// Get / set subfigure by key
///
/// key of subfigure
/// subfigure specified by key
/// subfigure to be stored into the collection
public ILSubfigure this[int key] {
get {
if (!m_subfigures.ContainsKey(key))
throw new ILArgumentException("ILSubfigureCollection: subfigure key not found!");
return m_subfigures[key];
}
set {
if (!m_subfigures.ContainsKey(key))
m_subfigures.Add(key, value);
else
m_subfigures[key] = value;
}
}
#endregion
#region properties
///
/// number of subfigures currently stored in the collection
///
public int Count {
get {
return m_subfigures.Count;
}
}
#endregion
#region public interface
///
/// Add subfigure to subfigure collection
///
/// the key to identify the new subfigure
/// the new subfigure
/// If a subfigure with the key already exist in the collection,
/// it will be replaced by the new subfigure
public void Add(int key, ILSubfigure subfigure) {
if (!m_subfigures.ContainsKey(key))
m_subfigures.Add(key,subfigure);
else
m_subfigures[key] = subfigure;
}
///
/// get all keys for all subfigures as key collection
///
public Dictionary.KeyCollection Keys {
get {
return m_subfigures.Keys;
}
}
///
/// Get all subfigures as value collection
///
public Dictionary.ValueCollection Figures {
get {
return m_subfigures.Values;
}
}
///
/// Determine if a subfigure with the key given exist
///
/// key of subfigure
/// true if a subfigure with the given key exists, false otherwise
public bool Contains (int key) {
return m_subfigures.ContainsKey(key);
}
///
/// Reduce the number of subfigures to the given number
///
/// number of subfigures to remain
/// If more than number subfigures exist, they will be removed. Highest keys will be removed first.
public void Purge (int number) {
int[] keys = new int[m_subfigures.Count];
m_subfigures.Keys.CopyTo(keys,0);
System.Array.Sort(keys);
for (int i = number; i < keys.Length; i++) {
m_subfigures.Remove(keys[i]);
}
}
#endregion
}
}