computeGeometry static method
ArrowGeometry
computeGeometry(
- Offset pointer,
- Rect panelRect,
- Size overlaySize,
- ArrowConfig config,
Implementation
static ArrowGeometry computeGeometry(
Offset pointer, Rect panelRect, Size overlaySize, ArrowConfig config) {
late final Offset baseCorner;
late final Offset baseEdgeA;
late final Offset baseEdgeB;
switch (config.corner) {
case ArrowCorner.topLeft:
baseCorner = panelRect.topLeft;
baseEdgeA = baseCorner + Offset(config.baseWidth, 0);
baseEdgeB = baseCorner + Offset(0, config.baseWidth);
break;
case ArrowCorner.topRight:
baseCorner = panelRect.topRight;
baseEdgeA = baseCorner + Offset(-config.baseWidth, 0);
baseEdgeB = baseCorner + Offset(0, config.baseWidth);
break;
case ArrowCorner.bottomLeft:
baseCorner = panelRect.bottomLeft;
baseEdgeA = baseCorner + Offset(config.baseWidth, 0);
baseEdgeB = baseCorner + Offset(0, -config.baseWidth);
break;
case ArrowCorner.bottomRight:
baseCorner = panelRect.bottomRight;
baseEdgeA = baseCorner + Offset(-config.baseWidth, 0);
baseEdgeB = baseCorner + Offset(0, -config.baseWidth);
break;
}
final Offset tip = clampTip(pointer, baseCorner, config, overlaySize);
return ArrowGeometry(
baseCorner: baseCorner,
baseEdgeA: baseEdgeA,
baseEdgeB: baseEdgeB,
tip: tip);
}