internal void displayColor(System.Windows.Forms.RichTextBox parolesText, int posBegin, Boolean displayCurrent) { Color color = Color.Blue; for (int i = 0; i < sylList.Count; ++i) { LyricSyl syl = sylList[i]; String syltext = syl.getDisplay(); parolesText.SelectionStart = posBegin; parolesText.SelectionLength = syltext.Length; if (i == currentSyl && displayCurrent) { parolesText.SelectionColor = Color.Green; parolesText.SelectionFont = new Font(FontFamily.GenericSerif, 26, FontStyle.Bold); } else { parolesText.SelectionColor = (i < currentSyl ? Color.Black : color); parolesText.SelectionFont = new Font(FontFamily.GenericSerif, 20, FontStyle.Regular); } color = (color == Color.Blue ? Color.Red : Color.Blue); posBegin += syltext.Length; } }
internal void Add(LyricSyl syl) { this.sylList.Add(syl); }
internal void saveManualModifs(RichTextBox frameBox) { StringSplitOptions option = StringSplitOptions.RemoveEmptyEntries; String[] lineList = frameBox.Text.Split(new String[] { "\n", Environment.NewLine }, option); //List<LyricSyl> sylList = this.getSylList(); Int32 cpt = 0; int linePos = 0; int lineNum = 0; //int lineDec = 0; int sylNum = -1; int beginAt = 0; //int sylDec = 0; String line; LyricLine lyricLine = null; LyricSyl lyricSyl = null; int backCurrentLine = this.currentLine; int backCurrentSyl = (backCurrentLine < this.lyricList.Count ? lyricList[backCurrentLine].getCurrentSyl() : 0); clearLyrics(); while (linePos < lineList.Length) { beginAt = 0; line = lineList[linePos]; if (line.Length == 0) { //todo : cas vide } else if (line.ToCharArray()[0].Equals('%')) { //TODO: cas information } else { int num; String[] parts = line.Split(new Char[] { ' ' }, 5); //recuperation de la ligne if (parts.Length == 0 || !int.TryParse(parts[0], out num)) { //creer une nouvele ligne //lineDec ++; lyricLine = new LyricLine(); lineNum = 0; lyricList.Add(lyricLine); //sylDec = 0; sylNum = 0; lyricSyl = new LyricSyl(""); lyricLine.Add(lyricSyl); } else { beginAt = 1; if (num != lineNum) { //si on a changé de ligne lyricLine = new LyricLine(); lineNum = num; lyricList.Add(lyricLine); sylNum = 0; } if (lyricLine == null) { throw (new Exception("Erreur de parsing")); } //recuperation de la syllabe if (parts.Length < 2 || !int.TryParse(parts[1], out num)) { //creer une nouvele ligne //sylDec ++; lyricSyl = new LyricSyl(""); sylNum = 0; lyricLine.Add(lyricSyl); } else { beginAt = 2; if (num != sylNum) { //si on a changé de sylabe lyricSyl = new LyricSyl(""); sylNum = num; lyricLine.Add(lyricSyl); } if (lyricSyl == null) { throw (new Exception("Erreur de parsing")); } //recuperation des frames if (parts.Length < 3 || !int.TryParse(parts[2], out num)) { lyricSyl.setBeginFrame(0); } else { beginAt = 3; //si on est sur la même syl on ne garde que la fin if (lyricSyl.getBeginFrame() <= 0) { lyricSyl.setBeginFrame(num); } if (parts.Length < 4 || !int.TryParse(parts[3], out num)) { lyricSyl.setEndFrame(0); } else { beginAt = 4; lyricSyl.setEndFrame(num); } } } } for (int i = beginAt; i < parts.Length; ++i) { //espace de fin de ligne if (parts[i].Length == 0) { parts[i] = " "; } lyricSyl.setText(lyricSyl.getText() + parts[i]); } } linePos++; } onFrameChangedEvent.Invoke(this, new EventArgs());//displayAllFrames(); this.currentLine = backCurrentLine; if (currentLine < this.lyricList.Count) { lyricList[currentLine].setCurrentSyl(backCurrentSyl); } onCurrentLineChangedEvent.Invoke(this, new EventArgs()); //displayCurrentLine(false); }
internal void saveManualModifs(RichTextBox frameBox) { StringSplitOptions option = StringSplitOptions.RemoveEmptyEntries; String[] lineList = frameBox.Text.Split(new String[] { "\n", Environment.NewLine }, option); //List<LyricSyl> sylList = this.getSylList(); Int32 cpt = 0; int linePos = 0; int lineNum = 0; //int lineDec = 0; int sylNum = -1; int beginAt = 0; //int sylDec = 0; String line; LyricLine lyricLine = null; LyricSyl lyricSyl = null; int backCurrentLine = this.currentLine; int backCurrentSyl = (backCurrentLine < this.lyricList.Count ? lyricList[backCurrentLine].getCurrentSyl() : 0); clearLyrics(); while (linePos < lineList.Length) { beginAt = 0; line = lineList[linePos]; if (line.Length == 0) { //todo : cas vide } else if (line.ToCharArray()[0].Equals('%')) { //TODO: cas information } else { int num; String[] parts = line.Split(new Char[] { ' ' }, 5); //recuperation de la ligne if (parts.Length == 0 || !int.TryParse(parts[0], out num)) { //creer une nouvele ligne //lineDec ++; lyricLine = new LyricLine(); lineNum = 0; lyricList.Add(lyricLine); //sylDec = 0; sylNum = 0; lyricSyl = new LyricSyl(""); lyricLine.Add(lyricSyl); } else { beginAt = 1; if (num != lineNum) { //si on a changé de ligne lyricLine = new LyricLine(); lineNum = num; lyricList.Add(lyricLine); sylNum = 0; } if (lyricLine == null) { throw (new Exception("Erreur de parsing")); } //recuperation de la syllabe if (parts.Length < 2 || !int.TryParse(parts[1], out num)) { //creer une nouvele ligne //sylDec ++; lyricSyl = new LyricSyl(""); sylNum = 0; lyricLine.Add(lyricSyl); } else { beginAt = 2; if (num != sylNum) { //si on a changé de sylabe lyricSyl = new LyricSyl(""); sylNum = num; lyricLine.Add(lyricSyl); } if (lyricSyl == null) { throw (new Exception("Erreur de parsing")); } //recuperation des frames if (parts.Length < 3 || !int.TryParse(parts[2], out num)) { lyricSyl.setBeginFrame(0); } else { beginAt = 3; //si on est sur la même syl on ne garde que la fin if (lyricSyl.getBeginFrame() <= 0) lyricSyl.setBeginFrame(num); if (parts.Length < 4 || !int.TryParse(parts[3], out num)) { lyricSyl.setEndFrame(0); } else { beginAt = 4; lyricSyl.setEndFrame(num); } } } } for (int i = beginAt; i < parts.Length; ++i) { //espace de fin de ligne if (parts[i].Length == 0) parts[i] = " "; lyricSyl.setText(lyricSyl.getText() + parts[i]); } } linePos++; } onFrameChangedEvent.Invoke(this, new EventArgs());//displayAllFrames(); this.currentLine = backCurrentLine; if (currentLine < this.lyricList.Count) { lyricList[currentLine].setCurrentSyl(backCurrentSyl); } onCurrentLineChangedEvent.Invoke(this, new EventArgs()); //displayCurrentLine(false); }