Skip to content

Commit ffe1b17

Browse files
committed
Merge pull request #35 from JeroMiya/DisplayInterfaceParseMove
Move DisplayInterface.GetDeviceDescription code to DeviceDescription.Parse
2 parents 7989d0e + d44b1db commit ffe1b17

2 files changed

Lines changed: 113 additions & 93 deletions

File tree

OSVR-Unity/Assets/OSVRUnity/src/DeviceDescriptor.cs

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,11 @@
2323
using System.Text;
2424

2525
//a class for storing information about a device based on it's json descriptor file
26+
using Newtonsoft.Json;
27+
using System.IO;
28+
using System;
29+
30+
2631
public class DeviceDescriptor {
2732

2833
//filename
@@ -223,4 +228,106 @@ public override string ToString()
223228
.Append("rotate_180 = ").AppendLine(Rotate180.ToString());
224229
return jsonPrinter.ToString();
225230
}
231+
232+
/// <summary>
233+
/// This function will parse the device parameters from a device descriptor json file using Newstonsoft
234+
///
235+
/// Returns a DeviceDescriptor object containing stored json values.
236+
/// </summary>
237+
public static DeviceDescriptor Parse(string deviceDescriptorJson)
238+
{
239+
if (deviceDescriptorJson == null) {
240+
throw new ArgumentNullException ("deviceDescriptorJson");
241+
}
242+
243+
//create a device descriptor object for storing the parsed json in an object
244+
DeviceDescriptor deviceDescriptor;
245+
JsonTextReader reader;
246+
247+
248+
reader = new JsonTextReader(new StringReader(deviceDescriptorJson));
249+
if(reader != null)
250+
{
251+
deviceDescriptor = new DeviceDescriptor();
252+
}
253+
else
254+
{
255+
Debug.LogError("No Device Descriptor detected.");
256+
return null;
257+
}
258+
259+
//parsey
260+
while (reader.Read())
261+
{
262+
if (reader.Value != null && reader.ValueType == typeof(String))
263+
{
264+
string parsedJson = reader.Value.ToString().ToLower();
265+
switch(parsedJson)
266+
{
267+
case "vendor":
268+
deviceDescriptor.Vendor = reader.ReadAsString();
269+
break;
270+
case "model":
271+
deviceDescriptor.Model = reader.ReadAsString();
272+
break;
273+
case "version":
274+
deviceDescriptor.Version = reader.ReadAsString();
275+
break;
276+
case "note":
277+
deviceDescriptor.Note = reader.ReadAsString();
278+
break;
279+
case "monocular_horizontal":
280+
deviceDescriptor.MonocularHorizontal = float.Parse(reader.ReadAsString());
281+
break;
282+
case "monocular_vertical":
283+
deviceDescriptor.MonocularVertical = float.Parse(reader.ReadAsString());
284+
break;
285+
case "overlap_percent":
286+
deviceDescriptor.OverlapPercent = float.Parse(reader.ReadAsString());
287+
break;
288+
case "pitch_tilt":
289+
deviceDescriptor.PitchTilt = float.Parse(reader.ReadAsString());
290+
break;
291+
case "width":
292+
deviceDescriptor.Width = int.Parse(reader.ReadAsString());
293+
break;
294+
case "height":
295+
deviceDescriptor.Height = int.Parse(reader.ReadAsString());
296+
break;
297+
case "video_inputs":
298+
deviceDescriptor.VideoInputs = int.Parse(reader.ReadAsString());
299+
break;
300+
case "display_mode":
301+
deviceDescriptor.DisplayMode = reader.ReadAsString();
302+
break;
303+
case "k1_red":
304+
deviceDescriptor.K1Red = float.Parse(reader.ReadAsString());
305+
break;
306+
case "k1_green":
307+
deviceDescriptor.K1Green = float.Parse(reader.ReadAsString());
308+
break;
309+
case "k1_blue":
310+
deviceDescriptor.K1Blue = float.Parse(reader.ReadAsString());
311+
break;
312+
case "right_roll":
313+
deviceDescriptor.RightRoll = float.Parse(reader.ReadAsString());
314+
break;
315+
case "left_roll":
316+
deviceDescriptor.LeftRoll = float.Parse(reader.ReadAsString());
317+
break;
318+
case "center_proj_x":
319+
deviceDescriptor.CenterProjX = float.Parse(reader.ReadAsString());
320+
break;
321+
case "center_proj_y":
322+
deviceDescriptor.CenterProjY = float.Parse(reader.ReadAsString());
323+
break;
324+
case "rotate_180":
325+
deviceDescriptor.Rotate180 = int.Parse(reader.ReadAsString());
326+
break;
327+
}
328+
}
329+
}
330+
331+
return deviceDescriptor;
332+
}
226333
}

OSVR-Unity/Assets/OSVRUnity/src/DisplayInterface.cs

Lines changed: 6 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -70,101 +70,14 @@ public DeviceDescriptor GetDisplayParameters(TextAsset jsonDescriptor)
7070
public DeviceDescriptor GetDeviceDescription()
7171
{
7272
//create a device descriptor object for storing the parsed json in an object
73-
DeviceDescriptor deviceDescriptor;
74-
JsonTextReader reader;
75-
76-
77-
reader = new JsonTextReader(new StringReader(_deviceDescriptorJson));
78-
if(reader != null)
79-
{
80-
deviceDescriptor = new DeviceDescriptor();
81-
}
82-
else
83-
{
84-
Debug.LogError("No Device Descriptor detected.");
85-
return null;
86-
}
87-
if(JsonDescriptorFile != null)
88-
{
89-
deviceDescriptor.FileName = JsonDescriptorFile.name;
90-
}
91-
else
92-
{
93-
deviceDescriptor.FileName = "No descriptor file has been assigned. Using parameters from /display";
94-
}
95-
96-
//parsey
97-
while (reader.Read())
98-
{
99-
if (reader.Value != null && reader.ValueType == typeof(String))
100-
{
101-
string parsedJson = reader.Value.ToString().ToLower();
102-
switch(parsedJson)
103-
{
104-
case "vendor":
105-
deviceDescriptor.Vendor = reader.ReadAsString();
106-
break;
107-
case "model":
108-
deviceDescriptor.Model = reader.ReadAsString();
109-
break;
110-
case "version":
111-
deviceDescriptor.Version = reader.ReadAsString();
112-
break;
113-
case "note":
114-
deviceDescriptor.Note = reader.ReadAsString();
115-
break;
116-
case "monocular_horizontal":
117-
deviceDescriptor.MonocularHorizontal = float.Parse(reader.ReadAsString());
118-
break;
119-
case "monocular_vertical":
120-
deviceDescriptor.MonocularVertical = float.Parse(reader.ReadAsString());
121-
break;
122-
case "overlap_percent":
123-
deviceDescriptor.OverlapPercent = float.Parse(reader.ReadAsString());
124-
break;
125-
case "pitch_tilt":
126-
deviceDescriptor.PitchTilt = float.Parse(reader.ReadAsString());
127-
break;
128-
case "width":
129-
deviceDescriptor.Width = int.Parse(reader.ReadAsString());
130-
break;
131-
case "height":
132-
deviceDescriptor.Height = int.Parse(reader.ReadAsString());
133-
break;
134-
case "video_inputs":
135-
deviceDescriptor.VideoInputs = int.Parse(reader.ReadAsString());
136-
break;
137-
case "display_mode":
138-
deviceDescriptor.DisplayMode = reader.ReadAsString();
139-
break;
140-
case "k1_red":
141-
deviceDescriptor.K1Red = float.Parse(reader.ReadAsString());
142-
break;
143-
case "k1_green":
144-
deviceDescriptor.K1Green = float.Parse(reader.ReadAsString());
145-
break;
146-
case "k1_blue":
147-
deviceDescriptor.K1Blue = float.Parse(reader.ReadAsString());
148-
break;
149-
case "right_roll":
150-
deviceDescriptor.RightRoll = float.Parse(reader.ReadAsString());
151-
break;
152-
case "left_roll":
153-
deviceDescriptor.LeftRoll = float.Parse(reader.ReadAsString());
154-
break;
155-
case "center_proj_x":
156-
deviceDescriptor.CenterProjX = float.Parse(reader.ReadAsString());
157-
break;
158-
case "center_proj_y":
159-
deviceDescriptor.CenterProjY = float.Parse(reader.ReadAsString());
160-
break;
161-
case "rotate_180":
162-
deviceDescriptor.Rotate180 = int.Parse(reader.ReadAsString());
163-
break;
164-
}
73+
DeviceDescriptor deviceDescriptor = DeviceDescriptor.Parse(_deviceDescriptorJson);
74+
if (deviceDescriptor != null) {
75+
if (JsonDescriptorFile != null) {
76+
deviceDescriptor.FileName = JsonDescriptorFile.name;
77+
} else {
78+
deviceDescriptor.FileName = "No descriptor file has been assigned. Using parameters from /display";
16579
}
16680
}
167-
16881
return deviceDescriptor;
16982
}
17083
}

0 commit comments

Comments
 (0)