kMMPath method

dynamic kMMPath(
  1. dynamic x,
  2. dynamic y,
  3. dynamic w,
  4. dynamic h,
)

Implementation

kMMPath(x, y, w, h) {
  var pathData = {};
  var linePath = [];
  var txtPath = [];
  //坐标计算
  double kMaxX = (kMaxI - kStartI + 1) * kWG + kStartX - kW / 2 + x;
  double kMaxY = Tools.priceToY(kYh, kMax, kYMin, kScale) + y;
  double kMinX = (kMinI - kStartI + 1) * kWG + kStartX - kW / 2 + x;
  double kMinY = Tools.priceToY(kYh, kMin, kYMin, kScale) + y;
  //小数位处理
  String showkMax =
      Tools.toFixed(kMax, klineState.widget.propertys['priceDigits']);
  String showkMin =
      Tools.toFixed(kMin, klineState.widget.propertys['priceDigits']);
  //宽度计算
  double maxw = Tools.getStrW(showkMax, style['kMMStyle']['font'])['width'];
  double minw = Tools.getStrW(showkMin, style['kMMStyle']['font'])['width'];
  // 距离箭头距离
  double arrowPading = 15;
  //绘制
  if (kElement['k']!['w'] - kMaxX <= maxw + arrowPading) {
    //箭头方向右
    drawMMArrow(linePath, -1, kMaxX, kMaxY);
    //最大值
    txtPath.add([
      showkMax,
      kMaxX - arrowPading - maxw,
      kMaxY,
      {'ylayout': 'center'}
    ]);
  } else {
    //箭头方向左
    drawMMArrow(linePath, 1, kMaxX, kMaxY);
    txtPath.add([
      showkMax,
      kMaxX + arrowPading,
      kMaxY,
      {'ylayout': 'center'}
    ]);
  }
  if (kElement['k']!['w'] - kMinX <= minw + arrowPading) {
    //箭头方向右
    drawMMArrow(linePath, -1, kMinX, kMinY);
    txtPath.add([
      showkMin,
      kMinX - arrowPading - minw,
      kMinY,
      {'ylayout': 'center'}
    ]);
  } else {
    //箭头方向左
    drawMMArrow(linePath, 1, kMinX, kMinY);
    txtPath.add([
      showkMin,
      kMinX + arrowPading,
      kMinY,
      {'ylayout': 'center'}
    ]);
  }
  pathData = {
    'linePath': linePath,
    'txtPath': txtPath,
  };
  return pathData;
}