VidUpgrader.cs 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380
  1. using System;
  2. using System.Drawing;
  3. using System.IO;
  4. using System.Linq;
  5. namespace UpdateDataTool
  6. {
  7. class VidUpgrader
  8. {
  9. public static void Convert(string source, string dest)
  10. {
  11. if (File.Exists(source))
  12. {
  13. using (var sourceStream = new MemoryStream(File.ReadAllBytes(source)))
  14. {
  15. using (var vid1 = new Vinno.vCloud.Common.Vid.VinnoImageData(sourceStream))
  16. {
  17. using (var vid2 = new Vinno.vCloud.Common.Vid2.VinnoImageData(dest, Vinno.vCloud.Common.Vid2.OperationMode.Create))
  18. {
  19. var probe1 = vid1.Probe;
  20. var probeType = GetNewProbeType(probe1.Type);
  21. var application = GetNewApplication(probe1.Application);
  22. var probe2 = new Vinno.vCloud.Common.Vid2.VinnoProbe(probe1.Name, probeType, application, probe1.FrameRate);
  23. vid2.AddProbe(probe2);
  24. for (var i = 0; i < vid1.ImageCount; i++)
  25. {
  26. var vinnoImage1 = Vinno.vCloud.Common.Vid.VinnoImage.FromBytes(vid1.GetImage(i));
  27. var image = GetImageFromBytes(vinnoImage1.ImageData);
  28. var vinnoImage2 = new Vinno.vCloud.Common.Vid2.VinnoImage(i, image.Width, image.Height, vinnoImage1.ImageData);
  29. if (vinnoImage1 is Vinno.vCloud.Common.Vid.Vinno2DImage vinno2DImage1)
  30. {
  31. if (vinno2DImage1.AllowMeasure)
  32. {
  33. var vinno2DVisual = new Vinno.vCloud.Common.Vid2.Visuals.Vinno2DVisual();
  34. foreach (var lc in vinno2DImage1.LogicalCoordinates)
  35. {
  36. var newAreaType = GetNewVinnoVisualAreaType(lc.Key);
  37. vinno2DVisual.LogicalCoordinates.Add(newAreaType,
  38. new Vinno.vCloud.Common.Vid2.Visuals.VinnoLogicalCoordinate(lc.Value.IsFlipHorizontal,
  39. lc.Value.IsFlipVertical,
  40. GetNewRect(lc.Value.Region),
  41. GetNewUnit(lc.Value.XUnit),
  42. GetNewUnit(lc.Value.YUnit)
  43. ));
  44. }
  45. foreach (var pc in vinno2DImage1.PhysicalCoordinates)
  46. {
  47. var newAreaType = GetNewVinnoVisualAreaType(pc.Key);
  48. vinno2DVisual.PhysicalCoordinates.Add(
  49. newAreaType,
  50. GetNewPhysicalCoordinate(pc.Value));
  51. }
  52. var oldVisual = probe1.Visuals.FirstOrDefault();
  53. if (oldVisual != null)
  54. {
  55. foreach (var oldVisualMode in oldVisual.Modes)
  56. {
  57. vinno2DVisual.Modes.Add(
  58. new Vinno.vCloud.Common.Vid2.Visuals.VinnoMode(oldVisualMode.Name, oldVisualMode.DisplayName,
  59. GetNewModeType(oldVisualMode.Type)));
  60. }
  61. vinno2DVisual.ActiveModeType = GetNewModeType(oldVisual.ActiveModeType);
  62. }
  63. vinnoImage2.Visuals.Add(vinno2DVisual);
  64. }
  65. }
  66. if (vinnoImage1 is Vinno.vCloud.Common.Vid.Vinno3DPlaneImage vinno3DImage1)
  67. {
  68. if (vinno3DImage1.AllowMeasure)
  69. {
  70. var vinno3DVisual = new Vinno.vCloud.Common.Vid2.Visuals.Vinno3DVisual();
  71. foreach (var t3a in vinno3DImage1.Tissue3DAreas)
  72. {
  73. var new3DArea = new Vinno.vCloud.Common.Vid2.Visuals.VinnoTissue3DArea(
  74. GetNewRect(t3a.Bounds),
  75. t3a.CmPerPixel,
  76. GetNewPoint(t3a.GlobalOffset),
  77. GetNewIndicator(t3a.Indicator)
  78. );
  79. vinno3DVisual.Tissue3DAreas.Add(new3DArea);
  80. }
  81. var oldVisual = probe1.Visuals.FirstOrDefault();
  82. if (oldVisual != null)
  83. {
  84. foreach (var oldVisualMode in oldVisual.Modes)
  85. {
  86. vinno3DVisual.Modes.Add(
  87. new Vinno.vCloud.Common.Vid2.Visuals.VinnoMode(oldVisualMode.Name, oldVisualMode.DisplayName,
  88. GetNewModeType(oldVisualMode.Type)));
  89. }
  90. vinno3DVisual.ActiveModeType = GetNewModeType(oldVisual.ActiveModeType);
  91. }
  92. vinnoImage2.Visuals.Add(vinno3DVisual);
  93. }
  94. }
  95. vid2.AddImage(vinnoImage2);
  96. }
  97. }
  98. }
  99. }
  100. }
  101. }
  102. private static Vinno.vCloud.Common.Vid2.Visuals.VinnoVisualAreaType GetNewVinnoVisualAreaType(
  103. Vinno.vCloud.Common.Vid.VinnoVisualAreaType vinnoVisualAreaType)
  104. {
  105. switch (vinnoVisualAreaType)
  106. {
  107. case Vinno.vCloud.Common.Vid.VinnoVisualAreaType.Colorbar:
  108. return Vinno.vCloud.Common.Vid2.Visuals.VinnoVisualAreaType.Colorbar;
  109. case Vinno.vCloud.Common.Vid.VinnoVisualAreaType.Doppler:
  110. return Vinno.vCloud.Common.Vid2.Visuals.VinnoVisualAreaType.Doppler;
  111. case Vinno.vCloud.Common.Vid.VinnoVisualAreaType.Flow:
  112. return Vinno.vCloud.Common.Vid2.Visuals.VinnoVisualAreaType.Flow;
  113. case Vinno.vCloud.Common.Vid.VinnoVisualAreaType.TimeMotion:
  114. return Vinno.vCloud.Common.Vid2.Visuals.VinnoVisualAreaType.TimeMotion;
  115. case Vinno.vCloud.Common.Vid.VinnoVisualAreaType.Tissue:
  116. return Vinno.vCloud.Common.Vid2.Visuals.VinnoVisualAreaType.Tissue;
  117. case Vinno.vCloud.Common.Vid.VinnoVisualAreaType.Tissue3D:
  118. return Vinno.vCloud.Common.Vid2.Visuals.VinnoVisualAreaType.Tissue3D;
  119. case Vinno.vCloud.Common.Vid.VinnoVisualAreaType.TissueTimeMotion:
  120. return Vinno.vCloud.Common.Vid2.Visuals.VinnoVisualAreaType.TissueTimeMotion;
  121. case Vinno.vCloud.Common.Vid.VinnoVisualAreaType.Trace:
  122. return Vinno.vCloud.Common.Vid2.Visuals.VinnoVisualAreaType.Trace;
  123. default:
  124. throw new ArgumentOutOfRangeException(nameof(vinnoVisualAreaType), vinnoVisualAreaType, "Convert VinnoVisualAreaType failed.");
  125. }
  126. }
  127. private static Vinno.vCloud.Common.Vid2.VinnoProbeType GetNewProbeType(
  128. Vinno.vCloud.Common.Vid.VinnoProbeType oldProbeType)
  129. {
  130. switch (oldProbeType)
  131. {
  132. case Vinno.vCloud.Common.Vid.VinnoProbeType.Undefined:
  133. return Vinno.vCloud.Common.Vid2.VinnoProbeType.Undefined;
  134. case Vinno.vCloud.Common.Vid.VinnoProbeType.Linear:
  135. return Vinno.vCloud.Common.Vid2.VinnoProbeType.Linear;
  136. case Vinno.vCloud.Common.Vid.VinnoProbeType.Convex:
  137. return Vinno.vCloud.Common.Vid2.VinnoProbeType.Convex;
  138. case Vinno.vCloud.Common.Vid.VinnoProbeType.Sector:
  139. return Vinno.vCloud.Common.Vid2.VinnoProbeType.Sector;
  140. default:
  141. throw new ArgumentOutOfRangeException(nameof(oldProbeType), oldProbeType, null);
  142. }
  143. }
  144. private static Vinno.vCloud.Common.Vid2.VinnoApplication GetNewApplication(
  145. Vinno.vCloud.Common.Vid.VinnoApplication oldApplication)
  146. {
  147. var newApplication = new Vinno.vCloud.Common.Vid2.VinnoApplication(oldApplication.ApplicationId,
  148. oldApplication.ApplicationOriginalId, oldApplication.ApplicationName,
  149. oldApplication.ApplicationCategoryName, oldApplication.IsUserDefined);
  150. return newApplication;
  151. }
  152. private static Image GetImageFromBytes(byte[] bytes)
  153. {
  154. using (var ms = new MemoryStream(bytes))
  155. {
  156. return Image.FromStream(ms);
  157. }
  158. }
  159. private static Vinno.vCloud.Common.Vid2.Visuals.VinnoRect GetNewRect(Vinno.vCloud.Common.Vid.VinnoRect oldRect)
  160. {
  161. return new Vinno.vCloud.Common.Vid2.Visuals.VinnoRect(oldRect.Left, oldRect.Top, oldRect.Width, oldRect.Height);
  162. }
  163. private static Vinno.vCloud.Common.Vid2.Visuals.VinnoPoint GetNewPoint(Vinno.vCloud.Common.Vid.VinnoPoint oldPoint)
  164. {
  165. return new Vinno.vCloud.Common.Vid2.Visuals.VinnoPoint(oldPoint.X, oldPoint.Y);
  166. }
  167. private static Vinno.vCloud.Common.Vid2.Visuals.VinnoModeType GetNewModeType(Vinno.vCloud.Common.Vid.VinnoModeType oldModeType)
  168. {
  169. switch (oldModeType)
  170. {
  171. case Vinno.vCloud.Common.Vid.VinnoModeType.Undefined:
  172. return Vinno.vCloud.Common.Vid2.Visuals.VinnoModeType.Undefined;
  173. case Vinno.vCloud.Common.Vid.VinnoModeType.Tissue:
  174. return Vinno.vCloud.Common.Vid2.Visuals.VinnoModeType.Tissue;
  175. case Vinno.vCloud.Common.Vid.VinnoModeType.Flow:
  176. return Vinno.vCloud.Common.Vid2.Visuals.VinnoModeType.Flow;
  177. case Vinno.vCloud.Common.Vid.VinnoModeType.Doppler:
  178. return Vinno.vCloud.Common.Vid2.Visuals.VinnoModeType.Doppler;
  179. case Vinno.vCloud.Common.Vid.VinnoModeType.TissueTM:
  180. return Vinno.vCloud.Common.Vid2.Visuals.VinnoModeType.TissueTM;
  181. case Vinno.vCloud.Common.Vid.VinnoModeType.Tissue3D:
  182. return Vinno.vCloud.Common.Vid2.Visuals.VinnoModeType.Tissue3D;
  183. case Vinno.vCloud.Common.Vid.VinnoModeType.FlowM:
  184. return Vinno.vCloud.Common.Vid2.Visuals.VinnoModeType.FlowM;
  185. default:
  186. throw new ArgumentOutOfRangeException(nameof(oldModeType), oldModeType, null);
  187. }
  188. }
  189. private static Vinno.vCloud.Common.Vid2.Visuals.VinnoAreaIndicator GetNewIndicator(
  190. Vinno.vCloud.Common.Vid.AreaIndicator oldArea)
  191. {
  192. switch (oldArea)
  193. {
  194. case Vinno.vCloud.Common.Vid.AreaIndicator.Global:
  195. return Vinno.vCloud.Common.Vid2.Visuals.VinnoAreaIndicator.Global;
  196. case Vinno.vCloud.Common.Vid.AreaIndicator.A:
  197. return Vinno.vCloud.Common.Vid2.Visuals.VinnoAreaIndicator.A;
  198. case Vinno.vCloud.Common.Vid.AreaIndicator.B:
  199. return Vinno.vCloud.Common.Vid2.Visuals.VinnoAreaIndicator.B;
  200. case Vinno.vCloud.Common.Vid.AreaIndicator.C:
  201. return Vinno.vCloud.Common.Vid2.Visuals.VinnoAreaIndicator.C;
  202. case Vinno.vCloud.Common.Vid.AreaIndicator.ThreeD:
  203. return Vinno.vCloud.Common.Vid2.Visuals.VinnoAreaIndicator.ThreeD;
  204. default:
  205. throw new ArgumentOutOfRangeException(nameof(oldArea), oldArea, null);
  206. }
  207. }
  208. private static Vinno.vCloud.Common.Vid2.Visuals.VinnoUnit GetNewUnit(Vinno.vCloud.Common.Vid.VinnoUnit oldUnit)
  209. {
  210. switch (oldUnit)
  211. {
  212. case Vinno.vCloud.Common.Vid.VinnoUnit.None:
  213. return Vinno.vCloud.Common.Vid2.Visuals.VinnoUnit.None;
  214. case Vinno.vCloud.Common.Vid.VinnoUnit.percent:
  215. return Vinno.vCloud.Common.Vid2.Visuals.VinnoUnit.percent;
  216. case Vinno.vCloud.Common.Vid.VinnoUnit.cm:
  217. return Vinno.vCloud.Common.Vid2.Visuals.VinnoUnit.cm;
  218. case Vinno.vCloud.Common.Vid.VinnoUnit.mm:
  219. return Vinno.vCloud.Common.Vid2.Visuals.VinnoUnit.mm;
  220. case Vinno.vCloud.Common.Vid.VinnoUnit.inch:
  221. return Vinno.vCloud.Common.Vid2.Visuals.VinnoUnit.inch;
  222. case Vinno.vCloud.Common.Vid.VinnoUnit.ft:
  223. return Vinno.vCloud.Common.Vid2.Visuals.VinnoUnit.ft;
  224. case Vinno.vCloud.Common.Vid.VinnoUnit.s:
  225. return Vinno.vCloud.Common.Vid2.Visuals.VinnoUnit.s;
  226. case Vinno.vCloud.Common.Vid.VinnoUnit.minute:
  227. return Vinno.vCloud.Common.Vid2.Visuals.VinnoUnit.minute;
  228. case Vinno.vCloud.Common.Vid.VinnoUnit.hour:
  229. return Vinno.vCloud.Common.Vid2.Visuals.VinnoUnit.hour;
  230. case Vinno.vCloud.Common.Vid.VinnoUnit.day:
  231. return Vinno.vCloud.Common.Vid2.Visuals.VinnoUnit.day;
  232. case Vinno.vCloud.Common.Vid.VinnoUnit.week:
  233. return Vinno.vCloud.Common.Vid2.Visuals.VinnoUnit.week;
  234. case Vinno.vCloud.Common.Vid.VinnoUnit.week_day:
  235. return Vinno.vCloud.Common.Vid2.Visuals.VinnoUnit.week_day;
  236. case Vinno.vCloud.Common.Vid.VinnoUnit.Tick:
  237. return Vinno.vCloud.Common.Vid2.Visuals.VinnoUnit.Tick;
  238. case Vinno.vCloud.Common.Vid.VinnoUnit.msec:
  239. return Vinno.vCloud.Common.Vid2.Visuals.VinnoUnit.msec;
  240. case Vinno.vCloud.Common.Vid.VinnoUnit.degree:
  241. return Vinno.vCloud.Common.Vid2.Visuals.VinnoUnit.degree;
  242. case Vinno.vCloud.Common.Vid.VinnoUnit.radian:
  243. return Vinno.vCloud.Common.Vid2.Visuals.VinnoUnit.radian;
  244. case Vinno.vCloud.Common.Vid.VinnoUnit.g:
  245. return Vinno.vCloud.Common.Vid2.Visuals.VinnoUnit.g;
  246. case Vinno.vCloud.Common.Vid.VinnoUnit.mg:
  247. return Vinno.vCloud.Common.Vid2.Visuals.VinnoUnit.mg;
  248. case Vinno.vCloud.Common.Vid.VinnoUnit.ng:
  249. return Vinno.vCloud.Common.Vid2.Visuals.VinnoUnit.ng;
  250. case Vinno.vCloud.Common.Vid.VinnoUnit.kg:
  251. return Vinno.vCloud.Common.Vid2.Visuals.VinnoUnit.kg;
  252. case Vinno.vCloud.Common.Vid.VinnoUnit.oz:
  253. return Vinno.vCloud.Common.Vid2.Visuals.VinnoUnit.oz;
  254. case Vinno.vCloud.Common.Vid.VinnoUnit.lb:
  255. return Vinno.vCloud.Common.Vid2.Visuals.VinnoUnit.lb;
  256. case Vinno.vCloud.Common.Vid.VinnoUnit.cm2:
  257. return Vinno.vCloud.Common.Vid2.Visuals.VinnoUnit.cm2;
  258. case Vinno.vCloud.Common.Vid.VinnoUnit.mm2:
  259. return Vinno.vCloud.Common.Vid2.Visuals.VinnoUnit.mm2;
  260. case Vinno.vCloud.Common.Vid.VinnoUnit.m2:
  261. return Vinno.vCloud.Common.Vid2.Visuals.VinnoUnit.m2;
  262. case Vinno.vCloud.Common.Vid.VinnoUnit.cm3:
  263. return Vinno.vCloud.Common.Vid2.Visuals.VinnoUnit.cm3;
  264. case Vinno.vCloud.Common.Vid.VinnoUnit.mm3:
  265. return Vinno.vCloud.Common.Vid2.Visuals.VinnoUnit.mm3;
  266. case Vinno.vCloud.Common.Vid.VinnoUnit.ml:
  267. return Vinno.vCloud.Common.Vid2.Visuals.VinnoUnit.ml;
  268. case Vinno.vCloud.Common.Vid.VinnoUnit.L:
  269. return Vinno.vCloud.Common.Vid2.Visuals.VinnoUnit.L;
  270. case Vinno.vCloud.Common.Vid.VinnoUnit.cms:
  271. return Vinno.vCloud.Common.Vid2.Visuals.VinnoUnit.cms;
  272. case Vinno.vCloud.Common.Vid.VinnoUnit.mms:
  273. return Vinno.vCloud.Common.Vid2.Visuals.VinnoUnit.mms;
  274. case Vinno.vCloud.Common.Vid.VinnoUnit.ms:
  275. return Vinno.vCloud.Common.Vid2.Visuals.VinnoUnit.ms;
  276. case Vinno.vCloud.Common.Vid.VinnoUnit.cms2:
  277. return Vinno.vCloud.Common.Vid2.Visuals.VinnoUnit.cms2;
  278. case Vinno.vCloud.Common.Vid.VinnoUnit.mms2:
  279. return Vinno.vCloud.Common.Vid2.Visuals.VinnoUnit.mms2;
  280. case Vinno.vCloud.Common.Vid.VinnoUnit.cm3s:
  281. return Vinno.vCloud.Common.Vid2.Visuals.VinnoUnit.cm3s;
  282. case Vinno.vCloud.Common.Vid.VinnoUnit.mls:
  283. return Vinno.vCloud.Common.Vid2.Visuals.VinnoUnit.mls;
  284. case Vinno.vCloud.Common.Vid.VinnoUnit.mlmin:
  285. return Vinno.vCloud.Common.Vid2.Visuals.VinnoUnit.mlmin;
  286. case Vinno.vCloud.Common.Vid.VinnoUnit.Lmin:
  287. return Vinno.vCloud.Common.Vid2.Visuals.VinnoUnit.Lmin;
  288. case Vinno.vCloud.Common.Vid.VinnoUnit.gcm3:
  289. return Vinno.vCloud.Common.Vid2.Visuals.VinnoUnit.gcm3;
  290. case Vinno.vCloud.Common.Vid.VinnoUnit.gml:
  291. return Vinno.vCloud.Common.Vid2.Visuals.VinnoUnit.gml;
  292. case Vinno.vCloud.Common.Vid.VinnoUnit.ngml:
  293. return Vinno.vCloud.Common.Vid2.Visuals.VinnoUnit.ngml;
  294. case Vinno.vCloud.Common.Vid.VinnoUnit.mmHg:
  295. return Vinno.vCloud.Common.Vid2.Visuals.VinnoUnit.mmHg;
  296. case Vinno.vCloud.Common.Vid.VinnoUnit.mV:
  297. return Vinno.vCloud.Common.Vid2.Visuals.VinnoUnit.mV;
  298. case Vinno.vCloud.Common.Vid.VinnoUnit.Hz:
  299. return Vinno.vCloud.Common.Vid2.Visuals.VinnoUnit.Hz;
  300. case Vinno.vCloud.Common.Vid.VinnoUnit.KHz:
  301. return Vinno.vCloud.Common.Vid2.Visuals.VinnoUnit.KHz;
  302. case Vinno.vCloud.Common.Vid.VinnoUnit.HR:
  303. return Vinno.vCloud.Common.Vid2.Visuals.VinnoUnit.HR;
  304. case Vinno.vCloud.Common.Vid.VinnoUnit.cm3m2:
  305. return Vinno.vCloud.Common.Vid2.Visuals.VinnoUnit.cm3m2;
  306. case Vinno.vCloud.Common.Vid.VinnoUnit.mlm2:
  307. return Vinno.vCloud.Common.Vid2.Visuals.VinnoUnit.mlm2;
  308. case Vinno.vCloud.Common.Vid.VinnoUnit.cm3sm2:
  309. return Vinno.vCloud.Common.Vid2.Visuals.VinnoUnit.cm3sm2;
  310. case Vinno.vCloud.Common.Vid.VinnoUnit.mlsm2:
  311. return Vinno.vCloud.Common.Vid2.Visuals.VinnoUnit.mlsm2;
  312. case Vinno.vCloud.Common.Vid.VinnoUnit.cm3minm2:
  313. return Vinno.vCloud.Common.Vid2.Visuals.VinnoUnit.cm3minm2;
  314. case Vinno.vCloud.Common.Vid.VinnoUnit.mlminm2:
  315. return Vinno.vCloud.Common.Vid2.Visuals.VinnoUnit.mlminm2;
  316. case Vinno.vCloud.Common.Vid.VinnoUnit.Lminm2:
  317. return Vinno.vCloud.Common.Vid2.Visuals.VinnoUnit.Lminm2;
  318. case Vinno.vCloud.Common.Vid.VinnoUnit.circs:
  319. return Vinno.vCloud.Common.Vid2.Visuals.VinnoUnit.circs;
  320. case Vinno.vCloud.Common.Vid.VinnoUnit.mlbeat:
  321. return Vinno.vCloud.Common.Vid2.Visuals.VinnoUnit.mlbeat;
  322. default:
  323. throw new ArgumentOutOfRangeException(nameof(oldUnit), oldUnit, null);
  324. }
  325. }
  326. private static Vinno.vCloud.Common.Vid2.Visuals.VinnoPhysicalCoordinate GetNewPhysicalCoordinate(
  327. Vinno.vCloud.Common.Vid.VinnoPhysicalCoordinate oldPhysicalCoordinate)
  328. {
  329. if (oldPhysicalCoordinate is Vinno.vCloud.Common.Vid.VinnoConvexTVTissuePhysicalCoordinate cttpc)
  330. {
  331. return new Vinno.vCloud.Common.Vid2.Visuals.VinnoConvexTVTissuePhysicalCoordinate(cttpc.DepthEnd, cttpc.DepthStart, cttpc.Width, cttpc.BeamPosition, cttpc.ZeroRadius, cttpc.OriginalZeroRadius, cttpc.OriginalRocx);
  332. }
  333. if (oldPhysicalCoordinate is Vinno.vCloud.Common.Vid.VinnoLinearTVTissuePhysicalCoordinate lttpc)
  334. {
  335. return new Vinno.vCloud.Common.Vid2.Visuals.VinnoLinearTVTissuePhysicalCoordinate(lttpc.DepthEnd, lttpc.DepthStart, lttpc.Width, lttpc.BeamPosition, lttpc.ZeroRadius);
  336. }
  337. if (oldPhysicalCoordinate is Vinno.vCloud.Common.Vid.VinnoLinearTissuePhysicalCoordinate ltpc)
  338. {
  339. return new Vinno.vCloud.Common.Vid2.Visuals.VinnoLinearTissuePhysicalCoordinate(ltpc.DepthEnd, ltpc.DepthStart, ltpc.Width, ltpc.BeamPosition, ltpc.Steer);
  340. }
  341. if (oldPhysicalCoordinate is Vinno.vCloud.Common.Vid.VinnoConvexTissuePhysicalCoordinate ctpc)
  342. {
  343. return new Vinno.vCloud.Common.Vid2.Visuals.VinnoConvexTissuePhysicalCoordinate(ctpc.DepthEnd, ctpc.DepthStart, ctpc.Width, ctpc.BeamPosition, ctpc.ZeroRadius);
  344. }
  345. if (oldPhysicalCoordinate is Vinno.vCloud.Common.Vid.VinnoDopplerPhysicalCoordinate dpc)
  346. {
  347. return new Vinno.vCloud.Common.Vid2.Visuals.VinnoDopplerPhysicalCoordinate(dpc.SweepSpeed, dpc.Max, dpc.Min, dpc.BaseLine);
  348. }
  349. if (oldPhysicalCoordinate is Vinno.vCloud.Common.Vid.VinnoTissueTimeMotionPhysicalCoordinate ttpc)
  350. {
  351. return new Vinno.vCloud.Common.Vid2.Visuals.VinnoTissueTimeMotionPhysicalCoordinate(ttpc.SweepSpeed, ttpc.Max, ttpc.Min, ttpc.DepthStart, ttpc.DepthEnd);
  352. }
  353. return null;
  354. }
  355. }
  356. }