private List <Syllabe> FiltrarSilabas(List <string> elementos) { var silabas = new List <Syllabe>(); for (var i = 0; i < elementos.Count; i++) { var elementoActual = elementos[i]; var silaba = new Syllabe(); if (AssFilter.IsTagGroup(elementoActual)) { // Si es grupo {}. silaba.TagGroup = new TagGroup(elementoActual); } else { // Si es texto. if (elementoActual == string.Empty) { goto Salida; } if (i == 0) { // Si el primer elemento es un texto, es una sílaba sin tags. silaba.Text = elementoActual; } else { // Si no es el primero, sí o sí tiene un grupo antes, // por tanto el texto corresponde a esa sílaba. silabas[silabas.Count - 1].Text = elementoActual; goto Salida; } } silabas.Add(silaba); Salida: continue; } return(silabas); }
/// <summary> /// Inicializa una nueva instancia de la clase <see cref="Syllabe"/> en base a la duración, texto, tipo de karaoke y grupo de tags indicados. /// </summary> /// <param name="duracion">Duración de la sílaba.</param> /// <param name="texto">Texto de la sílaba.</param> /// <param name="tipoKaraoke">Tipo de karaoke de la sílaba.</param> /// <param name="grupoTag">Grupo de tags de la sílaba.</param> public Syllabe(int tiempo, string texto, KaraokeType tipoKaraoke, TagGroup grupoTag) { var sil = new Syllabe() { Length = tiempo, Text = texto, TagGroup = grupoTag }; switch (tipoKaraoke) { case KaraokeType.K: sil.TagGroup.TagK = new TagK(tiempo); break; case KaraokeType.Kf: sil.TagGroup.TagKf = new TagKf(tiempo); break; case KaraokeType.Ko: sil.TagGroup.TagKo = new TagKo(tiempo); break; } }
/// <summary> /// Inicializa una nueva instancia de la clase <see cref="Syllabe"/>, copiando las propiedades de otra instancia. /// </summary> /// <param name="silaba">Silaba a copiar.</param> public Syllabe(Syllabe silaba) { TagGroup = silaba.TagGroup; Text = silaba.Text; Type = silaba.Type; }
/// <summary> /// Instancia una <see cref="Syllabe"/> y la agrega al karaoke. /// </summary> /// <param name="duracion">Duración de la sílaba.</param> /// <param name="texto">Texto de la sílaba.</param> /// <param name="tipoKaraoke">Tipo de karaoke de la sílaba.</param> /// <param name="grupoTag">Grupo de tags de la sílaba.</param> public void AgregarSilaba(int tiempo, string texto, KaraokeType tipoKaraoke, TagGroup grupoTag) { var sil = new Syllabe(tiempo, texto, tipoKaraoke, grupoTag); Syllabes.Add(sil); }
/// <summary> /// Instancia una <see cref="Syllabe"/> y la agrega al karaoke. /// </summary> /// <param name="duracion">Duración de la sílaba.</param> /// <param name="texto">Texto de la sílaba.</param> /// <param name="tipoKaraoke">Tipo de karaoke de la sílaba.</param> public void AgregarSilaba(int duracion, string texto, KaraokeType tipoKaraoke) { var sil = new Syllabe(duracion, texto, tipoKaraoke); Syllabes.Add(sil); }