OSDN Git Service

updated some ToString overrides for proper use in the UI
[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 override string ToString()\r
47         {\r
48             return this.m_chapterNumber.ToString();\r
49         }\r
50 \r
51         public static Chapter Parse(StreamReader output)\r
52         {\r
53             string curLine = output.ReadLine();\r
54             if (!curLine.Contains("  + audio tracks:"))\r
55             {\r
56                 Chapter thisChapter = new Chapter();\r
57                 string[] splitter = curLine.Split(new string[] { "    + ", ": cells ", ", ", " blocks, duration ", "->" }, StringSplitOptions.RemoveEmptyEntries);\r
58                 thisChapter.m_chapterNumber = int.Parse(splitter[0]);\r
59                 //thisChapter.m_cellRange = new int[2] { int.Parse(splitter[1]), int.Parse(splitter[2]) };\r
60                 //thisChapter.m_blocks = int.Parse(splitter[3]);\r
61                 thisChapter.m_duration = TimeSpan.Parse(splitter[4]);\r
62                 return thisChapter;\r
63             }\r
64             else\r
65             {\r
66                 return null;\r
67             }\r
68         }\r
69 \r
70         public static Chapter[] ParseList(StreamReader output)\r
71         {\r
72             List<Chapter> chapters = new List<Chapter>();\r
73             string curLine = output.ReadLine();\r
74             while (!curLine.Contains("  + audio tracks:"))\r
75             {\r
76                 Chapter thisChapter = Chapter.Parse(output);\r
77                 if (thisChapter != null)\r
78                 {\r
79                     chapters.Add(thisChapter);\r
80                 }\r
81                 else\r
82                 {\r
83                     break;\r
84                 }\r
85             }\r
86             return chapters.ToArray();\r
87         }\r
88     }\r
89 }\r