goToTimePath method
dynamic
goToTimePath(
- dynamic x,
- dynamic y,
- dynamic w,
- dynamic h,
Implementation
goToTimePath(x, y, w, h) {
var pathData = {};
var linePath = [];
var txtPath = [];
var pj = 0, j = 0;
double oy = 0, ox = 0;
for (j = kStartI; j < kStopI; j++) {
if (Tools.isInKline(chartData.klineData[j]['time'], goToTime,
klineState.widget.propertys['interval'])) {
pj = j - kStartI;
oy = Tools.priceToY(h, chartData.klineData[j]['high'], kYMin, kScale);
ox = x + kStartX + pj * kWG + kGap + kW / 2;
String xTimeStr = Tools.intervalTimeFormat(chartData.klineData[j]['time'],klineState.widget.propertys['interval']);
double pading = 10; //上下左右间距10
var xTimeStrw = Tools.getStrW(xTimeStr, style['goToTimeStyle']['font']);
double rw = xTimeStrw['width'] + pading * 2;
double rh = xTimeStrw['height'] + pading * 2;
double arrow = 8;
double oxoff = 0;
if (ox - rw / 2 < 0) {
// 边缘小于0的时候,像右偏移
oxoff = (rw / 2 - ox);//.floor();
} else if (ox + rw / 2 > w) {
// 边缘大于w的时候,像左偏移
oxoff = (w - (ox + rw / 2));//.floor();
}
//x轴刻度背景矩形块
linePath.add([
"drawRect",
[ox - rw / 2 + oxoff, y + oy - rh - arrow+2, rw, rh, style['goToTimeStyle']['property']['reactRound']]//矩形背景高度往下+2像素和箭头有一个重叠,让箭头在左右两边时可以填充矩形的圆角空白区
]);
linePath.add([
"moveTo",
[ox - arrow, y + oy - arrow]
]);
linePath.add([
"lineTo",
[ox + arrow, y + oy - arrow]
]);
linePath.add([
"lineTo",
[ox, y + oy]
]);
linePath.add([
"lineTo",
[ox - arrow, y + oy - arrow]
]);
//x轴刻度文字默认居中对齐
txtPath.add([
xTimeStr,
ox - xTimeStrw['width'] / 2 + oxoff,
y + oy - rh - arrow + pading
]);
break;
}
}
pathData = {'linePath': linePath, 'txtPath': txtPath};
return pathData;
}