editLineData method
dynamic
editLineData(
- dynamic value
Implementation
editLineData(value) {
double dx = klineState.currentPosition.dx;
dx = Tools.max(0.0, dx);
dx = Tools.min(kElement['k']!['x']+kElement['k']!['w'], dx);
double dy = klineState.currentPosition.dy;
dy = Tools.max(0.0, dy);
dy = Tools.min(kElement['k']!['y']+kElement['k']!['h'], dy);
for (var line in lineData.values) {
int lineL = line.length;
for (int i = 0; i < lineL; i++) {
var lineObj = line[i];
if (lineObj.containsKey('selected') && lineObj['selected'] && !lineObj['style']['lock']) {
if (lineObj['point'] != -1) {
//点被选中
var xx =
(dx - kElement['k']!['x'] - kStartX)
.floor();
//在屏幕中的x坐标占比 给x轴不跟k线绑定的画线使用,在屏幕尺寸发生变化的时候,这些线的x坐标需要根据占比从新计算新的x坐标 xxbfb * grail.w
var xxbfb = xx / kElement['k']!['w'];
int xi = ((dx -
kElement['k']!['x'] -
kStartX) /
kWG)
.floor() +
kStartI;
//将鼠标x坐标转换成k线时间
var xt = Tools.getKTime(xi,chartData.kDataL-1,chartData.klineData,klineState.widget.propertys['interval']);
num xp = dx -
kElement['k']!['x'] -
(xi - kStartI) * kWG -
kStartX;
dynamic y = Tools.yToPrice(kYh, dy,
kYMin, kScale, klineState.widget.propertys['priceDigits']);
lineObj['p'][lineObj['point']] = {
'x': xi,
'xt':xt,
'xx': xx,
'xxbfb': xxbfb,
'xp': xp,
'y': num.parse(y)
};
} else {
//线被选中更新所有点位置
//循环改变每一个点
for (int j = 0, jl = lineObj['oldPoint'].length; j < jl; j++) {
var jobj = lineObj['oldPoint'][j]; //获取老的位置
num nx = jobj['x'] + value['md']; //计算新的位置
num ny = jobj['y'] + value['my']; //计算新的位置
var xx = (nx - kElement['k']!['x'] - kStartX).floor();
//在屏幕中的x坐标占比 给x轴不跟k线绑定的画线使用,在屏幕尺寸发生变化的时候,这些线的x坐标需要根据占比从新计算新的x坐标 xxbfb * grail.w
var xxbfb = xx / kElement['k']!['w'];
int xi = ((nx - kElement['k']!['x'] - kStartX) / kWG).floor() +
kStartI;
//将鼠标x坐标转换成k线时间
var xt = Tools.getKTime(xi,chartData.kDataL-1,chartData.klineData,klineState.widget.propertys['interval']);
num xp =
nx - kElement['k']!['x'] - (xi - kStartI) * kWG - kStartX;
dynamic y = Tools.yToPrice(kYh, ny, kYMin, kScale,
klineState.widget.propertys['priceDigits']);
lineObj['p'][j] = {
'x': xi,
'xx': xx,
'xt':xt,
'xxbfb': xxbfb,
'xp': xp,
'y': num.parse(y)
};
}
}
}
}
}
}