OSDN Git Service

WinGui:
[handbrake-jp/handbrake-jp-git.git] / win / C# / Parsing / Chapter.cs
1 using System;\r
2 using System.Collections.Generic;\r
3 using System.Text;\r
4 using System.IO;\r
5 \r
6 namespace Handbrake.Parsing\r
7 {\r
8     public class Chapter\r
9     {\r
10         private int m_chapterNumber;\r
11         public int ChapterNumber\r
12         {\r
13             get\r
14             {\r
15                 return this.m_chapterNumber;\r
16             }\r
17         }\r
18 \r
19         private TimeSpan m_duration;\r
20         public TimeSpan Duration\r
21         {\r
22             get\r
23             {\r
24                 return this.m_duration;\r
25             }\r
26         }\r
27 \r
28         public override string ToString()\r
29         {\r
30             return this.m_chapterNumber.ToString();\r
31         }\r
32 \r
33         public static Chapter Parse(StreamReader output)\r
34         {\r
35             string curLine = output.ReadLine();\r
36             if (!curLine.Contains("  + audio tracks:"))\r
37             {\r
38                 Chapter thisChapter = new Chapter();\r
39                 string[] splitter = curLine.Split(new string[] { "    + ", ": cells ", ", ", " blocks, duration ", "->" }, StringSplitOptions.RemoveEmptyEntries);\r
40                 thisChapter.m_chapterNumber = int.Parse(splitter[0]);\r
41                 thisChapter.m_duration = TimeSpan.Parse(splitter[4]);\r
42                 return thisChapter;\r
43             }\r
44             else\r
45             {\r
46                 return null;\r
47             }\r
48         }\r
49 \r
50         public static Chapter[] ParseList(StreamReader output)\r
51         {\r
52             List<Chapter> chapters = new List<Chapter>();\r
53             string curLine = output.ReadLine();\r
54             while (!curLine.Contains("  + audio tracks:"))\r
55             {\r
56                 Chapter thisChapter = Chapter.Parse(output);\r
57            \r
58                 if (thisChapter != null)\r
59                 {\r
60                     chapters.Add(thisChapter);\r
61                 }\r
62                 else\r
63                 {\r
64                     break;\r
65                 }\r
66             }\r
67             return chapters.ToArray();\r
68         }\r
69     }\r
70 }\r