computeGeometry static method

ArrowGeometry computeGeometry(
  1. Offset pointer,
  2. Rect panelRect,
  3. Size overlaySize,
  4. 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);
}