toLpUnder method

double toLpUnder(
  1. MathOptions options
)

Implementation

double toLpUnder(MathOptions options) {
  if (unit == Unit.lp) return value;
  if (unit.toPt != null) {
    return value * unit.toPt! / Unit.inches.toPt! * options.logicalPpi;
  }
  switch (unit) {
    case Unit.cssEm:
      return value * options.fontSize * options.sizeMultiplier;
    // `mu` units scale with scriptstyle/scriptscriptstyle.
    case Unit.mu:
      return value *
          options.fontSize *
          options.fontMetrics.cssEmPerMu *
          options.sizeMultiplier;
    // `ex` and `em` always refer to the *textstyle* font
    // in the current size.
    case Unit.ex:
      return value *
          options.fontSize *
          options.fontMetrics.xHeight *
          options.havingStyle(options.style.atLeastText()).sizeMultiplier;
    case Unit.em:
      return value *
          options.fontSize *
          options.fontMetrics.quad *
          options.havingStyle(options.style.atLeastText()).sizeMultiplier;
    default:
      throw ArgumentError("Invalid unit: '${unit.toString()}'");
  }
}