3 This file is part of the HandBrake source code.
\r
4 Homepage: <http://handbrake.fr>.
\r
5 It may be used under the terms of the GNU General Public License. */
\r
8 using System.Collections.Generic;
\r
10 using System.Text.RegularExpressions;
\r
12 namespace Handbrake.Parsing
\r
15 /// An object representing a Chapter aosciated with a Title, in a DVD
\r
17 public class Chapter
\r
19 private int m_chapterNumber;
\r
21 /// The number of this Chapter, in regards to it's parent Title
\r
23 public int ChapterNumber
\r
27 return this.m_chapterNumber;
\r
31 private TimeSpan m_duration;
\r
33 /// The length in time this Chapter spans
\r
35 public TimeSpan Duration
\r
39 return this.m_duration;
\r
44 /// Override of the ToString method to make this object easier to use in the UI
\r
46 /// <returns>A string formatted as: {chapter #}</returns>
\r
47 public override string ToString()
\r
49 return this.m_chapterNumber.ToString();
\r
52 public static Chapter Parse(StringReader output)
\r
54 Match m = Regex.Match(output.ReadLine(), @"^ \+ ([0-9]*): cells ([0-9]*)->([0-9]*), ([0-9]*) blocks, duration ([0-9]{2}:[0-9]{2}:[0-9]{2})");
\r
57 Chapter thisChapter = new Chapter();
\r
58 thisChapter.m_chapterNumber = int.Parse(m.Groups[1].Value.Trim().ToString());
\r
59 thisChapter.m_duration = TimeSpan.Parse(m.Groups[5].Value);
\r
66 public static Chapter[] ParseList(StringReader output)
\r
68 List<Chapter> chapters = new List<Chapter>();
\r
70 // this is to read the " + chapters:" line from the buffer
\r
71 // so we can start reading the chapters themselvs
\r
76 // Start of the chapter list for this Title
\r
77 Chapter thisChapter = Chapter.Parse(output);
\r
79 if (thisChapter != null)
\r
80 chapters.Add(thisChapter);
\r
84 return chapters.ToArray();
\r