public void Deserialize_V8(Stream stream, DataVersion version) { m_MaxHeartRate.Deserialize(stream, version); GarminFitnessDoubleRange gearWeightinKg = new GarminFitnessDoubleRange(Weight.Convert(m_GearWeightInPounds, Weight.Units.Pound, Weight.Units.Kilogram)); gearWeightinKg.Deserialize(stream, version); SetGearWeightInUnits(gearWeightinKg, Weight.Units.Kilogram); GarminFitnessBool HRIsInPercentMax = new GarminFitnessBool(true); HRIsInPercentMax.Deserialize(stream, version); HRZonesReferential = HRIsInPercentMax ? HRReferential.HRReferential_PercentMax : HRReferential.HRReferential_BPM; for (int i = 0; i < m_HeartRateZones.Count; ++i) { m_HeartRateZones[i].Lower.Deserialize(stream, version); m_HeartRateZones[i].Upper.Deserialize(stream, version); } m_SpeedIsInPace.Deserialize(stream, version); GarminFitnessDoubleRange lowLimit = new GarminFitnessDoubleRange(Constants.MinSpeedMetric, Constants.MinSpeedMetric, Constants.MaxSpeedMetric); GarminFitnessDoubleRange highLimit = new GarminFitnessDoubleRange(Constants.MinSpeedMetric, Constants.MinSpeedMetric, Constants.MaxSpeedMetric); for (int i = 0; i < m_SpeedZones.Count; ++i) { lowLimit.Deserialize(stream, version); m_SpeedZones[i].Low = Length.Convert(lowLimit, Length.Units.Kilometer, Length.Units.Meter) / Constants.SecondsPerHour; highLimit.Deserialize(stream, version); m_SpeedZones[i].High = Length.Convert(highLimit, Length.Units.Kilometer, Length.Units.Meter) / Constants.SecondsPerHour; m_SpeedZones[i].InternalName.Deserialize(stream, version); } }
public virtual void Deserialize(XmlNode parentNode) { bool weightRead = false; int HRZonesRead = 0; int speedZonesRead = 0; ReadMaxHR(parentNode); for (int i = 0; i < parentNode.ChildNodes.Count; ++i) { XmlNode currentChild = parentNode.ChildNodes[i]; if (currentChild.Name == Constants.RestHRBPMTCXString && currentChild.ChildNodes.Count == 1 && currentChild.FirstChild.Name == Constants.ValueTCXString) { GarminProfileManager.Instance.UserProfile.InternalRestingHeartRate.Deserialize(currentChild.FirstChild); } else if (currentChild.Name == Constants.GearWeightTCXString) { GarminFitnessDoubleRange gearWeightinKg = new GarminFitnessDoubleRange(0); gearWeightinKg.Deserialize(currentChild); SetGearWeightInUnits(gearWeightinKg, Weight.Units.Kilogram); weightRead = true; } else if (currentChild.Name == Constants.HeartRateZonesTCXString) { int zoneIndex = PeekZoneNumber(currentChild); if (zoneIndex != -1) { ReadHRZone(zoneIndex, currentChild); HRZonesRead++; } } else if (currentChild.Name == Constants.SpeedZonesTCXString) { int zoneIndex = PeekZoneNumber(currentChild); if (zoneIndex != -1) { ReadSpeedZone(zoneIndex, currentChild); speedZonesRead++; } } } // Check if all was read successfully if (!weightRead || HRZonesRead != Constants.GarminHRZoneCount || speedZonesRead != Constants.GarminSpeedZoneCount) { throw new GarminFitnessXmlDeserializationException("Missing information in activity profile XML node", parentNode); } }
public void Deserialize_V10(Stream stream, DataVersion version) { m_MaxHeartRate.Deserialize(stream, version); GarminFitnessDoubleRange gearWeightinKg = new GarminFitnessDoubleRange(Weight.Convert(m_GearWeightInPounds, Weight.Units.Pound, Weight.Units.Kilogram)); gearWeightinKg.Deserialize(stream, version); SetGearWeightInUnits(gearWeightinKg, Weight.Units.Kilogram); GarminFitnessBool HRIsInPercentMax = new GarminFitnessBool(true); HRIsInPercentMax.Deserialize(stream, version); HRZonesReferential = HRIsInPercentMax ? HRReferential.HRReferential_PercentMax : HRReferential.HRReferential_BPM; for (int i = 0; i < m_HeartRateZones.Count; ++i) { m_HeartRateZones[i].Lower.Deserialize(stream, version); m_HeartRateZones[i].Upper.Deserialize(stream, version); } m_SpeedIsInPace.Deserialize(stream, version); for (int i = 0; i < m_SpeedZones.Count; ++i) { m_SpeedZones[i].InternalLow.Deserialize(stream, version); m_SpeedZones[i].InternalHigh.Deserialize(stream, version); m_SpeedZones[i].InternalName.Deserialize(stream, version); } }
private void ReadSpeedZone(int index, XmlNode parentNode) { Debug.Assert(index >= 0 && index < Constants.GarminSpeedZoneCount); bool nameRead = false; bool viewAsRead = false; bool lowRead = false; bool highRead = false; GarminFitnessDoubleRange lowLimit = new GarminFitnessDoubleRange(0); GarminFitnessDoubleRange highLimit = new GarminFitnessDoubleRange(0); for (int i = 0; i < parentNode.ChildNodes.Count; ++i) { XmlNode currentChild = parentNode.ChildNodes[i]; if (currentChild.Name == "Name") { m_SpeedZones[index].InternalName.Deserialize(currentChild); nameRead = true; } else if (currentChild.Name == Constants.ValueTCXString) { XmlNode valueNode = currentChild; for (int j = 0; j < valueNode.ChildNodes.Count; ++j) { XmlNode valueChild = valueNode.ChildNodes[j]; if (valueChild.Name == Constants.ViewAsTCXString) { m_SpeedIsInPace.Deserialize(valueChild); viewAsRead = true; } else if (valueChild.Name == Constants.LowInMeterPerSecTCXString) { lowLimit.Deserialize(valueChild); lowRead = true; } else if (valueChild.Name == Constants.HighInMeterPerSecTCXString) { highLimit.Deserialize(valueChild); highRead = true; } } } } // Check if all was read successfully if (!nameRead || !viewAsRead || !lowRead || !highRead) { throw new GarminFitnessXmlDeserializationException("Missing information in activity profile XML node", parentNode); } m_SpeedZones[index].Low = Math.Min(lowLimit, highLimit); m_SpeedZones[index].High = Math.Max(lowLimit, highLimit); }