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