resolveCoordinatesFromAnchor function
Implementation
List<double> resolveCoordinatesFromAnchor(
String anchor, double left, double top, double width, double height) {
double valueX = -1;
double valueY = -1;
switch (anchor) {
case 'UpperLeft':
valueX = left;
valueY = top;
break;
case 'UpperCenter':
valueX = left + width / 2;
valueY = top;
break;
case 'UpperRight':
valueX = left + width;
valueY = top;
break;
case 'CenterLeft':
valueX = left;
valueY = top + height / 2;
break;
case 'Center':
valueX = left + width / 2;
valueY = top + height / 2;
break;
case 'CenterRight':
valueX = left + width;
valueY = top + height / 2;
break;
case 'LowerLeft':
valueX = left;
valueY = top + height;
break;
case 'LowerCenter':
valueX = left + width / 2;
valueY = top + height;
break;
case 'LowerRight':
valueX = left + width;
valueY = top + height;
break;
default:
List<String> parts = anchor.split(';');
if (parts.length == 2) {
try {
double offsetX = double.parse(parts[0]);
double offsetY = double.parse(parts[1]);
if (offsetX > 0 && offsetX < 1 && offsetY > 0 && offsetY < 1) {
// Relative offset.
valueX = left + offsetX * width;
valueY = top + offsetY * height;
} else {
// Absolute offset.
valueX = left + offsetX;
valueY = top + offsetY;
}
} catch (e) {
print("Error parsing custom anchor offsets: $e");
}
} else {
print("Invalid custom anchor format: $anchor");
}
}
return [valueX, valueY];
}