parseDimension function
Parses dimension strings (e.g., "1cm", "10pt", "-5mm")
Implementation
double parseDimension(String dimension, RenderContext context) {
final dim = dimension.trim();
if (dim.isEmpty) return 0.0;
int numEnd = 0;
while (numEnd < dim.length && (dim[numEnd].contains(RegExp(r'[0-9.\-]')))) {
numEnd++;
}
final value = double.tryParse(dim.substring(0, numEnd)) ?? 0.0;
final unit = dim.substring(numEnd).trim().toLowerCase();
switch (unit) {
case "pt":
return value;
case "px":
return value;
case "mm":
return value * 3.78;
case "cm":
return value * 37.8;
case "in":
return value * 96.0;
case "em":
return context.fontSize * value;
case "ex":
return context.fontSize * 0.5 * value;
case "mu":
return context.fontSize * value / 18.0;
case "bp":
return value * 1.00375;
case "pc":
return value * 12.0;
case "dd":
return value * 1.07;
case "cc":
return value * 12.84;
case "sp":
return value / 65536.0;
default:
return value;
}
}