/// <inheritdoc /> public string Between(string fromSize, string toSize, string minScreen = "320px", string maxScreen = "1200px") { ValueAndUnit fromSizeValueAndUnit = _helpers.GetValueAndUnit(fromSize); ValueAndUnit toSizeValueAndUnit = _helpers.GetValueAndUnit(toSize); ValueAndUnit minScreenValueAndUnit = _helpers.GetValueAndUnit(minScreen); ValueAndUnit maxScreenValueAndUnit = _helpers.GetValueAndUnit(maxScreen); if (!double.TryParse(fromSizeValueAndUnit.Value, out double fromSizeNum) || !double.TryParse(toSizeValueAndUnit.Value, out double toSizeNum) || string.IsNullOrWhiteSpace(fromSizeValueAndUnit.Unit) || string.IsNullOrWhiteSpace(toSizeValueAndUnit.Unit) || fromSizeValueAndUnit.Unit != toSizeValueAndUnit.Unit) { throw PolishedException.GetPolishedException(47); } if (!double.TryParse(minScreenValueAndUnit.Value, out double minScreenNum) || !double.TryParse(maxScreenValueAndUnit.Value, out double maxScreenNum) || string.IsNullOrWhiteSpace(minScreenValueAndUnit.Unit) || string.IsNullOrWhiteSpace(maxScreenValueAndUnit.Unit) || minScreenValueAndUnit.Unit != maxScreenValueAndUnit.Unit) { throw PolishedException.GetPolishedException(48); } double slope = (fromSizeNum - toSizeNum) / (minScreenNum - maxScreenNum); double baseNum = toSizeNum - slope * maxScreenNum; return($"calc({Math.Round(baseNum, 2)}{fromSizeValueAndUnit.Unit} + {Math.Round(100 * slope, 2)}vw)"); }