/// <summary> /// Make sure cluster is visible on screen. /// </summary> /// <param name="cluster">Cluster to performance.</param> public void MakeSureVisible(CostNodeCluster cluster) { if (CostNodeClusterGlyphs == null || CostNodeClusterGlyphs.Count == 0) { return; } foreach (CostNodeClusterGlyph cnc in CostNodeClusterGlyphs) { if (cnc.CostNodeCluster == cluster) { if (cnc.Rectangle.Left < this.HorizontalScroll.Value || cnc.Rectangle.Left > (this.HorizontalScroll.Value + this.Width)) { // unvisible now int locate = cnc.Rectangle.Left - (this.Width / 2); locate = Math.Max(locate, 0); if (locate != 0) { locate += cnc.Rectangle.Width; } this.HorizontalScroll.Value = Math.Min(locate, HorizontalScroll.Maximum); this.Refresh(); // this.HorizontalScroll.Value = Math.Min(locate, HorizontalScroll.Maximum); // this.Refresh(); // Application.DoEvents(); } return; } } }
/// <summary> /// Handle Tag.CandidateDump. /// </summary> /// <param name="utterance">Utterance to fill in.</param> /// <param name="line">Section starting line.</param> /// <param name="tr">Text data.</param> /// <returns>Next tag, or null for end.</returns> private static string HandleTagCandidateDump(TtsUtterance utterance, string line, TextReader tr) { Debug.Assert(ParseTag(line) == Tag.CandidateDump); while ((line = tr.ReadLine()) != null) { DO_WITH_CANDIDATE: if (string.IsNullOrEmpty(line)) { continue; } if (IsTag(line)) { return line; } if (line.StartsWith("candidate", StringComparison.Ordinal)) { CostNodeCluster cluster = new CostNodeCluster(); string[] items = line.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); cluster.Index = int.Parse(items[1], CultureInfo.InvariantCulture); cluster.TtsUnit = utterance.Script.Units[cluster.Index]; while ((line = tr.ReadLine()) != null) { if (string.IsNullOrEmpty(line)) { continue; } if (line.StartsWith("unit", StringComparison.Ordinal)) { CostNode node = ParseCostNode(line); node.ClusterIndex = cluster.Index; cluster.AddNode(node); continue; } break; } utterance.Viterbi.CostNodeClusters.Add(cluster); goto DO_WITH_CANDIDATE; } } return MoveToNextTag(tr); }