public PopupLength(double unitValue, PopupLengthUnitType unitType) { _unitValue = unitValue; UnitType = unitType; RelativeElement = null; }
public PopupLength(double unitValue, PopupLengthUnitType unitType, string relativeElement) { _unitValue = unitValue; UnitType = unitType; RelativeElement = relativeElement; }
private static void FromString(string stringValue, CultureInfo cultureInfo, out double value, out PopupLengthUnitType unit, out string relativeElement) { var normalized = stringValue.Trim().ToLowerInvariant(); // Auto if (string.Equals(normalized, "Auto", StringComparison.OrdinalIgnoreCase)) { value = 0.0; unit = PopupLengthUnitType.Auto; relativeElement = null; return; } var starPosition = normalized.IndexOf("*", StringComparison.OrdinalIgnoreCase); // Absolute if (starPosition == -1) { relativeElement = null; unit = PopupLengthUnitType.Absolute; for (var i = 0; i < PixelUnitStrings.Length; i++) { var pixelUnitString = PixelUnitStrings[i]; if (normalized.EndsWith(pixelUnitString, StringComparison.Ordinal) == false) { continue; } var valueString = normalized.Substring(0, normalized.Length - pixelUnitString.Length); value = Convert.ToDouble(valueString, cultureInfo) * PixelUnitFactors[i]; return; } { var valueString = normalized.Substring(0, normalized.Length); value = Convert.ToDouble(valueString, cultureInfo); return; } } // Relative { unit = PopupLengthUnitType.Relative; if (starPosition > 0) { var valueString = normalized.Substring(0, starPosition); value = Convert.ToDouble(valueString, cultureInfo); } else { value = 1.0; } relativeElement = starPosition + 1 < normalized.Length ? normalized.Substring(starPosition + 1, normalized.Length - starPosition - 1) : null; } }