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 int[] m_cellRange;\r
20         public int[] CellRange\r
21         {\r
22             get\r
23             {\r
24                 return this.m_cellRange;\r
25             }\r
26         }\r
27 \r
28         private int m_blocks;\r
29         public int BlockCount\r
30         {\r
31             get\r
32             {\r
33                 return this.m_blocks;\r
34             }\r
35         }*/\r
36 \r
37         private TimeSpan m_duration;\r
38         public TimeSpan Duration\r
39         {\r
40             get\r
41             {\r
42                 return this.m_duration;\r
43             }\r
44         }\r
45 \r
46         public static Chapter Parse(StreamReader output)\r
47         {\r
48             string curLine = output.ReadLine();\r
49             if (!curLine.Contains("  + audio tracks:"))\r
50             {\r
51                 Chapter thisChapter = new Chapter();\r
52                 string[] splitter = curLine.Split(new string[] { "    + ", ": cells ", ", ", " blocks, duration ", "->" }, StringSplitOptions.RemoveEmptyEntries);\r
53                 thisChapter.m_chapterNumber = int.Parse(splitter[0]);\r
54                 //thisChapter.m_cellRange = new int[2] { int.Parse(splitter[1]), int.Parse(splitter[2]) };\r
55                 //thisChapter.m_blocks = int.Parse(splitter[3]);\r
56                 thisChapter.m_duration = TimeSpan.Parse(splitter[4]);\r
57                 return thisChapter;\r
58             }\r
59             else\r
60             {\r
61                 return null;\r
62             }\r
63         }\r
64 \r
65         public static Chapter[] ParseList(StreamReader output)\r
66         {\r
67             List<Chapter> chapters = new List<Chapter>();\r
68             string curLine = output.ReadLine();\r
69             while (!curLine.Contains("  + audio tracks:"))\r
70             {\r
71                 Chapter thisChapter = Chapter.Parse(output);\r
72                 if (thisChapter != null)\r
73                 {\r
74                     chapters.Add(thisChapter);\r
75                 }\r
76                 else\r
77                 {\r
78                     break;\r
79                 }\r
80             }\r
81             return chapters.ToArray();\r
82         }\r
83     }\r
84 }\r