pointKData method

dynamic pointKData(
  1. dynamic x,
  2. dynamic y,
  3. dynamic w,
  4. dynamic h,
  5. dynamic callData,
)

Implementation

pointKData(x, y, w, h, callData) {
  var dataAry = [];
  double price = 0, oy = 0, ox = 0;
  if (callData.isNotEmpty) {
    int i = 0, il = callData.length;
    int j = 0, pj = 0;
    for (; i < il; i++) {
      var obj = callData[i];
      if (obj['codeId'] != klineState.widget.propertys['codeId']) continue;
      for (j = kStartI; j < kStopI; j++) {
        if (Tools.isInKline(chartData.klineData[j]['time'], obj['time'],
            klineState.widget.propertys['interval'])) {
          pj = j - kStartI;
          switch (obj['price']) {
            case "open":
              price = chartData.klineData[j]['open'];
              oy = Tools.priceToY(h, price, kYMin, kScale);
              break;
            case "high":
              price = chartData.klineData[j]['high'];
              oy = Tools.priceToY(h, price, kYMin, kScale);
              break;
            case "low":
              price = chartData.klineData[j]['low'];
              oy = Tools.priceToY(h, price, kYMin, kScale);
              break;
            case "close":
              price = chartData.klineData[j]['close'];
              oy = Tools.priceToY(h, price, kYMin, kScale);
              break;
            case "min":
              oy = h - obj['height'] - 5;
              break;
            case "max":
              oy = 5;
              break;
            default:
              oy = Tools.priceToY(h, obj['price'], kYMin, kScale);
              break;
          }
          ox = (x + kStartX + pj * kWG + kGap + kW / 2);//.floor();
          obj['px'] = ox; //x坐标
          obj['py'] = oy; //y坐标
          obj['kDataI'] = j; //y坐标
          obj['kData'] = chartData.klineData[j]; //所在k线数据
          dataAry.add(obj); //这里的顺序可以决定绘制的层级关系
          break;
        }
      }
    }
  }
  return dataAry;
}