public Shift CalcShift(Reading reading) { return(new Shift( FrontSide.CalcPercDiff(reading.FrontSide) , RearSide.CalcPercDiff(reading.RearSide) , RightSide.CalcPercDiff(reading.RightSide) , LeftSide.CalcPercDiff(reading.LeftSide) )); }
/// <summary> /// Tap on back of card to turn. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private async void BackSide_OnTapped(object sender, EventArgs e) { await Task.WhenAll( BackSide.RotateYTo(40, 300) ); BackSide.IsVisible = false; FrontSide.IsVisible = true; FrontSide.RotationY = -90; await Task.WhenAll( FrontSide.RotateYTo(0, 500) ); }
public static void WriteToFile(SpineStorage storage, string filename) { var keys = storage.Keys; var sp_keys = storage.SpinousProcessKeys; logger.Info("Create XML for storage file - {0}", filename); XDocument doc = new XDocument(); doc.Add(new XElement("storage")); var root = doc.Element("storage"); #region Window Parameters var window = new XElement("window"); window.Add(new XAttribute("center", storage.windowCenter)); window.Add(new XAttribute("width", storage.windowWidth)); root.Add(window); logger.Info("Add window parameters for file - {0}", filename); #endregion #region Direction Parameters var direction = new XElement("direction"); direction.Add(new XAttribute("value", storage.direction)); root.Add(direction); logger.Info("Add direction parameter for file - {0}", filename); var imageDirection = new XElement("imageDirection"); imageDirection.Add(new XAttribute("value", storage.imageDirection)); root.Add(imageDirection); logger.Info("Add image direction parameter for file - {0}", filename); #endregion #region Angle Parameters var angle = new XElement("angle"); angle.Add(new XAttribute("value", storage.GetRotatingAngle())); root.Add(angle); logger.Info("Add angle parameter for file - {0}", filename); #endregion #region Marker Points var markers = new XElement("markers"); if (storage.GetMarkersCount() != 0) { for (int i = 0; i < 4; i++) { var point = storage.GetMarkerPoint(i); var p = new XElement("point"); p.Add(new XAttribute("x", point.X)); p.Add(new XAttribute("y", point.Y)); markers.Add(p); } } root.Add(markers); logger.Info("Add markers parameter for file - {0}", filename); #endregion #region Marker Line var markerLine = storage.MarkerLine; if (markerLine != null) { XElement marker = new XElement("markerline"); marker.Add(new XAttribute("size", storage.MarkerSize)); marker.Add(new XAttribute("length", storage.MarkerLength)); XElement point_first = new XElement("point_first"); XElement point_second = new XElement("point_second"); point_first.Add(new XAttribute("first", markerLine.Item1.Item1)); point_first.Add(new XAttribute("second", markerLine.Item1.Item2)); point_first.Add(new XAttribute("third", markerLine.Item1.Item3)); marker.Add(point_first); point_second.Add(new XAttribute("first", markerLine.Item2.Item1)); point_second.Add(new XAttribute("second", markerLine.Item2.Item2)); point_second.Add(new XAttribute("third", markerLine.Item2.Item3)); marker.Add(point_second); root.Add(marker); } #endregion logger.Info("Add pixel parameters for file - {0}", filename); foreach (var key in keys) { var state = storage.GetDescription(key); var element = new XElement("spine"); var attr = new XAttribute("key", key); element.Add(attr); var points_element = new XElement("points"); var upleft_el = new XElement("point"); upleft_el.SetAttributeValue("x", state.UpLeft.X); upleft_el.SetAttributeValue("y", state.UpLeft.Y); var downleft_el = new XElement("point"); downleft_el.SetAttributeValue("x", state.DownLeft.X); downleft_el.SetAttributeValue("y", state.DownLeft.Y); var downright_el = new XElement("point"); downright_el.SetAttributeValue("x", state.DownRight.X); downright_el.SetAttributeValue("y", state.DownRight.Y); var upright_el = new XElement("point"); upright_el.SetAttributeValue("x", state.UpRight.X); upright_el.SetAttributeValue("y", state.UpRight.Y); points_element.Add(upleft_el); points_element.Add(downleft_el); points_element.Add(downright_el); points_element.Add(upright_el); element.Add(points_element); var geom_element = new XElement("geometry"); IDescriptionCalculator <SpineDescription> calc = null; if (storage.direction == 0) { calc = new RightSide(state); } else if (storage.direction == 1) { calc = new LeftSide(state); } else if (storage.direction == 2) { calc = new FrontSide(state); } else if (storage.direction == 3) { calc = new BackSide(state); } var ks = calc.Keys; foreach (var key_param in ks) { var geom_node = new XElement("param"); attr = new XAttribute("key", key_param); geom_node.Add(attr); attr = new XAttribute("value", calc.GetParameter(key_param)); geom_node.Add(attr); geom_element.Add(geom_node); } element.Add(geom_element); root.Add(element); logger.Info("Add spine {0} parameters for file - {1}", key, filename); } foreach (var key in sp_keys) { var state = storage.GetSpinousProcessDescription(key); var element = new XElement("process"); var attr = new XAttribute("key", key); element.Add(attr); var points_element = new XElement("points"); var uptp_el = new XElement("point"); uptp_el.SetAttributeValue("x", state.UpPoint.X); uptp_el.SetAttributeValue("y", state.UpPoint.Y); var vertp_el = new XElement("point"); vertp_el.SetAttributeValue("x", state.VertexPoint.X); vertp_el.SetAttributeValue("y", state.VertexPoint.Y); var downtp_el = new XElement("point"); downtp_el.SetAttributeValue("x", state.DownPoint.X); downtp_el.SetAttributeValue("y", state.DownPoint.Y); points_element.Add(uptp_el); points_element.Add(vertp_el); points_element.Add(downtp_el); element.Add(points_element); var geom_element = new XElement("geometry"); IDescriptionCalculator <SpinousProcessDescription> calc1 = null; if (storage.direction == 0) { calc1 = new DescriptionCalculators.SpinousProcess.RightSide(state); } else if (storage.direction == 1) { calc1 = new DescriptionCalculators.SpinousProcess.LeftSide(state); } var ks = calc1.Keys; foreach (var key_param in ks) { var geom_node = new XElement("param"); attr = new XAttribute("key", key_param); geom_node.Add(attr); attr = new XAttribute("value", calc1.GetParameter(key_param)); geom_node.Add(attr); geom_element.Add(geom_node); } element.Add(geom_element); root.Add(element); logger.Info("Add process {0} parameters for file - {1}", key, filename); } doc.Save(filename); logger.Info("Storage file has been saved - {0}", filename); }