2 using System.Collections.Generic;
\r
4 using System.Drawing;
\r
7 namespace Handbrake.Parsing
\r
11 private List<Chapter> m_chapters;
\r
12 public List<Chapter> Chapters
\r
16 return this.m_chapters;
\r
20 private List<AudioTrack> m_audioTracks;
\r
21 public List<AudioTrack> AudioTracks
\r
25 return this.m_audioTracks;
\r
29 private List<Subtitle> m_subtitles;
\r
30 public List<Subtitle> Subtitles
\r
34 return this.m_subtitles;
\r
38 /*private int m_vts;
\r
56 private int[] m_cellRange;
\r
57 public int[] CellRange
\r
61 return this.m_cellRange;
\r
65 private int m_blockCount;
\r
66 public int BlockCount
\r
70 return this.m_blockCount;
\r
74 private int m_titleNumber;
\r
75 public int TitleNumber
\r
79 return this.m_titleNumber;
\r
83 private TimeSpan m_duration;
\r
84 public TimeSpan Duration
\r
88 return this.m_duration;
\r
92 private Size m_resolution;
\r
93 public Size Resolution
\r
97 return this.m_resolution;
\r
101 private float m_aspectRatio;
\r
102 public float AspectRatio
\r
106 return this.m_aspectRatio;
\r
110 /*private float m_fps;
\r
119 private int[] m_autoCrop;
\r
120 public int[] AutoCropDimensions
\r
124 return this.m_autoCrop;
\r
130 this.m_audioTracks = new List<AudioTrack>();
\r
131 this.m_chapters = new List<Chapter>();
\r
132 this.m_subtitles = new List<Subtitle>();
\r
133 //this.m_cellRange = new int[2];
\r
136 public override string ToString()
\r
138 return string.Format("{0} ({1:00}:{2:00}:{3:00})", this.m_titleNumber, this.m_duration.Hours,
\r
139 this.m_duration.Minutes, this.m_duration.Seconds);
\r
142 public static Title Parse(StreamReader output)
\r
144 Title thisTitle = new Title();
\r
147 * This will be converted to use Regex soon, I promise ;)
\r
148 * brianmario - 7/9/07
\r
152 string curLine = output.ReadLine();
\r
153 thisTitle.m_titleNumber = int.Parse(curLine.Substring(curLine.Length - 2, 1));
\r
154 curLine = output.ReadLine();
\r
155 string[] splitter = curLine.Split(',');
\r
156 //thisTitle.m_vts = int.Parse(splitter[0].Substring(8));
\r
157 //thisTitle.m_ttn = int.Parse(splitter[1].Substring(5));
\r
158 splitter = splitter[2].Trim().Split(' ', '(', ')');
\r
159 //thisTitle.m_blockCount = int.Parse(splitter[3]);
\r
160 splitter = splitter[1].Split('-', '>');
\r
161 //thisTitle.m_cellRange[0] = int.Parse(splitter[0]);
\r
162 //thisTitle.m_cellRange[1] = int.Parse(splitter[2]);
\r
163 curLine = output.ReadLine();
\r
164 splitter = curLine.Split(new string[] { " + duration: " }, StringSplitOptions.RemoveEmptyEntries);
\r
165 thisTitle.m_duration = TimeSpan.Parse(splitter[0]);
\r
166 curLine = output.ReadLine();
\r
167 splitter = curLine.Split(new string[] { " + size: ", "aspect: ", ", ", " fps", "x" }, StringSplitOptions.RemoveEmptyEntries);
\r
168 thisTitle.m_resolution = new Size(int.Parse(splitter[0]), int.Parse(splitter[1]));
\r
169 thisTitle.m_aspectRatio = float.Parse(splitter[2].ToString());
\r
170 //thisTitle.m_fps = float.Parse(splitter[3].ToString());
\r
171 curLine = output.ReadLine();
\r
172 splitter = curLine.Split(new string[] { " + autocrop: ", "/" }, StringSplitOptions.RemoveEmptyEntries);
\r
173 thisTitle.m_autoCrop = new int[4] { int.Parse(splitter[0]), int.Parse(splitter[1]), int.Parse(splitter[2]), int.Parse(splitter[3]) };
\r
174 thisTitle.m_chapters.AddRange(Chapter.ParseList(output));
\r
175 thisTitle.m_audioTracks.AddRange(AudioTrack.ParseList(output));
\r
176 thisTitle.m_subtitles.AddRange(Subtitle.ParseList(output));
\r
180 // hbcli crashed caused an exception here. Just threw this in to prevent a program error.
\r
181 // Can be debuged later.
\r
187 public static Title[] ParseList(StreamReader output)
\r
189 List<Title> titles = new List<Title>();
\r
190 while ((char)output.Peek() == '+')
\r
192 titles.Add(Title.Parse(output));
\r
194 return titles.ToArray();
\r