src/FingersDance.Data/DataDictionary.cs
author PAMPHILE Jonathan <pamphile@efrei.fr>
Fri, 13 Nov 2009 20:10:00 +0100
changeset 195 48b3139bb182
permissions -rw-r--r--
Dictionnaire de données
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
195
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
     1
using System;
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
     2
using System.Collections.Generic;
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
     3
using System.Linq;
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
     4
using System.Text;
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
     5
using System.Windows.Media;
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
     6
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
     7
namespace FingersDance.Data
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
     8
{
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
     9
    public class DataDictionary
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    10
    {
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    11
        Dictionary<int, List<Color>> _Data = new Dictionary<int, List<Color>>();
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    12
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    13
        public DataDictionary()
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    14
        {
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    15
            if (_Data == null)
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    16
                _Data = new Dictionary<int, List<Color>>();
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    17
        }
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    18
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    19
        public void AddAnnotation(Annotation annotation)
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    20
        {
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    21
            try
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    22
            {
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    23
                //  Recherche de l'élément qui précède le TC de début
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    24
                List<Color> temp = new List<Color>();
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    25
                int value = 0;
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    26
                for (int i = (int)annotation.TcBegin; i >= 0; i--)
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    27
                    if (_Data.ContainsKey(i))
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    28
                    {
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    29
                        value = i;
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    30
                        i = -1;
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    31
                    }
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    32
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    33
                //  Ajout des couleurs de l'élément qui précède
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    34
                if (!_Data.ContainsKey((int)annotation.TcBegin))
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    35
                {
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    36
                    if (_Data.ContainsKey(value))
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    37
                        foreach (Color elt in _Data[value])
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    38
                            temp.Add(elt);
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    39
                    _Data.Add((int)annotation.TcBegin, temp);
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    40
                }
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    41
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    42
                //  Ajout de la couleur à tous les éléments entre le début et la fin de l'annotation
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    43
                foreach (KeyValuePair<int, List<Color>> elt in _Data)
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    44
                    if (elt.Key >= (int)annotation.TcBegin && elt.Key < (int)(annotation.TcBegin + annotation.Dur) && !elt.Value.Contains(annotation.Color))
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    45
                        elt.Value.Add(annotation.Color);
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    46
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    47
                //  Vérification que début et fin correspondent à deux éléments distincts et ajout de la fin de l'annotation si nécessaire (tc de fin inexistant)
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    48
                if (((int)annotation.TcBegin) != ((int)(annotation.TcBegin + annotation.Dur)))
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    49
                {
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    50
                    temp = new List<Color>();
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    51
                    if (!_Data.ContainsKey((int)(annotation.TcBegin + annotation.Dur)))
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    52
                    {
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    53
                        for (int i = (int)(annotation.TcBegin + annotation.Dur); i >= 0; i--)
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    54
                            if (_Data.ContainsKey(i))
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    55
                            {
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    56
                                value = i;
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    57
                                i = -1;
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    58
                            }
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    59
                        if (_Data.ContainsKey(value))
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    60
                            foreach (Color elt in _Data[value])
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    61
                                temp.Add(elt);
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    62
                        temp.Remove(annotation.Color);
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    63
                        _Data.Add((int)(annotation.TcBegin + annotation.Dur), temp);
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    64
                    }
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    65
                }
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    66
                else if (!_Data.ContainsKey((int)(annotation.TcBegin + 1)))
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    67
                {
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    68
                    temp = new List<Color>();
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    69
                    foreach (Color elt in _Data[(int)annotation.TcBegin])
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    70
                        temp.Add(elt);
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    71
                    _Data.Add((int)(annotation.TcBegin + 1), temp);
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    72
                }
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    73
            }
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    74
            catch { }
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    75
        }
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    76
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    77
        public void RemoveAnnotation(Annotation annotation)
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    78
        {
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    79
            try
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    80
            {
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    81
                //  Suppression de la couleur à tous les éléments entre le début et la fin de l'annotation
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    82
                foreach (KeyValuePair<int, List<Color>> elt in _Data)
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    83
                    if (elt.Key >= (int)annotation.TcBegin && elt.Key < (int)(annotation.TcBegin + annotation.Dur) && elt.Value.Contains(annotation.Color))
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    84
                        elt.Value.Remove(annotation.Color);
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    85
            }
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    86
            catch { }
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    87
        }
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    88
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    89
        public List<Color> GetColors(int TC)
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    90
        {
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    91
            try
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    92
            {
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    93
                for (int i = TC; i >= 0; i--)
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    94
                    if (_Data.ContainsKey(i))
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    95
                        return _Data[i];
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    96
                return new List<Color>();
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    97
            }
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    98
            catch (Exception)
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
    99
            {
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
   100
                return new List<Color>();
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
   101
            }
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
   102
        }
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
   103
    }
48b3139bb182 Dictionnaire de données
PAMPHILE Jonathan <pamphile@efrei.fr>
parents:
diff changeset
   104
}