OSDN Git Service

LinGui: enable libdvdnav by default
[handbrake-jp/handbrake-jp-git.git] / win / C# / Presets / Import.cs
1 using System;\r
2 using System.IO;\r
3 using System.Xml;\r
4 using System.Windows.Forms;\r
5 using System.Collections;\r
6 using Handbrake.Functions;\r
7 \r
8 namespace Handbrake.Presets\r
9 {\r
10     class Import\r
11     {\r
12         public QueryParser importMacPreset(string filename)\r
13         {\r
14             if (!File.Exists(filename))\r
15                 return null;\r
16 \r
17             StreamReader sr = File.OpenText(filename);\r
18             string fromfile = string.Empty;\r
19             int fileChar;\r
20             while ((fileChar = sr.Read()) != -1)\r
21                 fromfile += Convert.ToChar(fileChar);\r
22 \r
23             XmlDocument doc = new XmlDocument();\r
24             doc.LoadXml(fromfile);\r
25 \r
26             XmlNode root = doc;\r
27             if (!root.HasChildNodes)\r
28             {\r
29                 MessageBox.Show(\r
30                     "The Preset file you selected appears to be invlaid or from an older version of HandBrake", "Error",\r
31                     MessageBoxButtons.OK, MessageBoxIcon.Error);\r
32                 return null;\r
33             }\r
34 \r
35             // We'll query a query parser object and use it's public var structures to store all the data.\r
36             // This will allow the preset loader logic to be used instead of writing custom logic just for this file.\r
37             QueryParser queryParsed = new QueryParser();\r
38 \r
39             /***** Get the Audio Tracks *****/\r
40             XmlNode audioListDict = root.ChildNodes[2].ChildNodes[0].FirstChild.ChildNodes[1];\r
41             ArrayList AudioInfo = new ArrayList();\r
42             for (int i = 0; i < audioListDict.ChildNodes.Count; i++)\r
43             {\r
44                 XmlNode audioChannel = audioListDict.ChildNodes[i];\r
45                 AudioTrack track = new AudioTrack();\r
46 \r
47                 for (int subi = 0; subi < audioChannel.ChildNodes.Count; subi += 2)\r
48                 {\r
49                     // Audio Channel Information is here.\r
50                     string key = audioChannel.ChildNodes[subi].InnerText;\r
51                     string value = audioChannel.ChildNodes[subi + 1].InnerText;\r
52                     switch (key)\r
53                     {\r
54                         case "AudioBitrate":\r
55                             track.Bitrate = value;\r
56                             break;\r
57                         case "AudioEncoder":\r
58                             track.Encoder = value.Replace("AAC (CoreAudio)", "AAC (faac)");\r
59                             break;\r
60                         case "AudioMixdown":\r
61                             track.MixDown = value;\r
62                             break;\r
63                         case "AudioSamplerate":\r
64                             track.SampleRate = value;\r
65                             break;\r
66                         case "AudioTrack":\r
67                             track.Track = value;\r
68                             break;\r
69                         case "AudioTrackDRCSlider":\r
70                             track.DRC = value;\r
71                             break;\r
72                     }\r
73                 }\r
74                AudioInfo.Add(track);\r
75             }\r
76             queryParsed.AudioInformation = AudioInfo;\r
77 \r
78             /***** Get the rest of the settings. *****/\r
79             XmlNode presetSettings = root.ChildNodes[2].ChildNodes[0].FirstChild;\r
80             for (int i = 2; i < presetSettings.ChildNodes.Count; i += 2) // Start from 2 to avoid the audio settings which we don't need.\r
81             {\r
82                 string key = presetSettings.ChildNodes[i].InnerText;\r
83                 string value = presetSettings.ChildNodes[i + 1].InnerText;\r
84 \r
85                 switch (key)\r
86                 {\r
87                     // Output Settings\r
88                     case "FileFormat":\r
89                         queryParsed.Format = value;\r
90                         break;\r
91                     case "Mp4HttpOptimize":\r
92                         queryParsed.OptimizeMP4 = value == "1";\r
93                         break;\r
94                     case "Mp4LargeFile":\r
95                         queryParsed.LargeMP4 = value == "1";\r
96                         break;\r
97                     case "Mp4iPodCompatible":\r
98                         queryParsed.IpodAtom = value == "1";\r
99                         break;\r
100 \r
101                     // Picture Settings\r
102                     case "PictureAutoCrop":\r
103                         break;\r
104                     case "PictureTopCrop":\r
105                         queryParsed.CropTop = value;\r
106                         break;\r
107                     case "PictureBottomCrop":\r
108                         queryParsed.CropBottom = value;\r
109                         break;\r
110                     case "PictureLeftCrop":\r
111                         queryParsed.CropLeft = value;\r
112                         break;\r
113                     case "PictureRightCrop":\r
114                         queryParsed.CropRight = value;\r
115                         break;\r
116                     case "PictureHeight":\r
117                         queryParsed.Height = int.Parse(value);\r
118                         break;\r
119                     case "PictureWidth":\r
120                         queryParsed.Width = int.Parse(value);\r
121                         break;\r
122                     case "PictureKeepRatio":\r
123                         queryParsed.keepDisplayAsect = value == "1";\r
124                         break;\r
125                     case "PicturePAR":\r
126                         queryParsed.AnamorphicMode = int.Parse(value);\r
127                         break;\r
128 \r
129 \r
130                     // Filters\r
131                     case "PictureDeblock":\r
132                         queryParsed.DeBlock = int.Parse(value);\r
133                         break;\r
134                     case "PictureDecomb":\r
135                         queryParsed.Decomb = "Off";\r
136                         if (value == "2") queryParsed.Decomb = "Default";\r
137                         break;\r
138                     case "PictureDecombCustom":\r
139                         if (value != "")\r
140                             queryParsed.Decomb = value;\r
141                         break;\r
142                     case "PictureDecombDeinterlace":\r
143                         // Not Used\r
144                         break;\r
145                     case "PictureDeinterlace":\r
146                         switch (value)\r
147                         {\r
148                             case "0":\r
149                                 queryParsed.DeInterlace = "Off";\r
150                                 break;\r
151                             case "2":\r
152                                 queryParsed.DeInterlace = "Fast";\r
153                                 break;\r
154                             case "3":\r
155                                 queryParsed.DeInterlace = "Slow";\r
156                                 break;\r
157                             case "4":\r
158                                 queryParsed.DeInterlace = "Slowest";\r
159                                 break;\r
160                         }\r
161                         break;\r
162                     case "PictureDeinterlaceCustom":\r
163                         if (value != "")\r
164                             queryParsed.DeInterlace = value;\r
165                         break;\r
166                     case "PictureDenoise":\r
167                         switch (value)\r
168                         {\r
169                             case "0":\r
170                                 queryParsed.DeNoise = "Off";\r
171                                 break;\r
172                             case "2":\r
173                                 queryParsed.DeNoise = "Weak";\r
174                                 break;\r
175                             case "3":\r
176                                 queryParsed.DeNoise = "Medium";\r
177                                 break;\r
178                             case "4":\r
179                                 queryParsed.DeNoise = "Strong";\r
180                                 break;\r
181                         }\r
182 \r
183                         break;\r
184                     case "PictureDenoiseCustom":\r
185                         if (value != "")\r
186                             queryParsed.DeNoise = value;\r
187                         break;\r
188                     case "PictureDetelecine":\r
189                         queryParsed.DeTelecine = "Off";\r
190                         if (value == "1") queryParsed.DeTelecine = "Default";\r
191                         break;\r
192                     case "PictureDetelecineCustom":\r
193                         if (value != "")\r
194                             queryParsed.DeTelecine = value;\r
195                         break;\r
196 \r
197                     // Video Tab\r
198                     case "VideoAvgBitrate":\r
199                         queryParsed.Width = int.Parse(value);\r
200                         break;\r
201                     case "VideoEncoder":\r
202                         queryParsed.VideoEncoder = value;\r
203                         break;\r
204                     case "VideoFramerate":\r
205                         queryParsed.VideoFramerate = value;\r
206                         break;\r
207                     case "VideoGrayScale":\r
208                         queryParsed.Grayscale = value == "1";\r
209                         break;\r
210                     case "VideoQualitySlider":\r
211                         queryParsed.VideoQuality = float.Parse(value);\r
212                         break;\r
213                     case "VideoQualityType":\r
214                         break;\r
215                     case "VideoTargetSize":\r
216                         queryParsed.VideoTargetSize = value;\r
217                         break;\r
218                     case "VideoTurboTwoPass":\r
219                         queryParsed.TurboFirstPass = value == "1";\r
220                         break;\r
221                     case "VideoTwoPass":\r
222                         queryParsed.TwoPass = value == "1";\r
223                         break;\r
224 \r
225                     // Chapter Markers Tab\r
226                     case "ChapterMarkers":\r
227                         queryParsed.ChapterMarkers = value == "1";\r
228                         break;\r
229 \r
230                     // Advanced x264 tab\r
231                     case "x264Option":\r
232                         queryParsed.H264Query = value;\r
233                         break;\r
234 \r
235                     // Preset Information\r
236                     case "PresetBuildNumber":\r
237                         queryParsed.PresetBuildNumber = int.Parse(value);\r
238                         break;\r
239                     case "PresetDescription":\r
240                         queryParsed.PresetDescription = value;\r
241                         break;\r
242                     case "PresetName":\r
243                         queryParsed.PresetName = value;\r
244                         break;\r
245                     case "Type":\r
246                         queryParsed.Type = value;\r
247                         break;\r
248                     case "UsesMaxPictureSettings":\r
249                         queryParsed.UsesMaxPictureSettings = value == "1";\r
250                         break;\r
251                     case "UsesPictureFilters":\r
252                         queryParsed.UsesPictureFilters = value == "1";\r
253                         break;\r
254                     case "UsesPictureSettings":\r
255                         queryParsed.UsesPictureSettings = value == "1";\r
256                         break;\r
257                 }\r
258             }\r
259             return queryParsed;\r
260         }\r
261 \r
262         // --- It's the end of the road\r
263     }\r
264 }