pointKData method
dynamic
pointKData(
- dynamic x,
- dynamic y,
- dynamic w,
- dynamic h,
- 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;
}