setSize method
dynamic
setSize(
- dynamic w,
- dynamic h
Implementation
setSize(w, h) {
width = w;
height = h;
var kw = width;
//========================价钱轴处理===================
if (!isShowY || isCoverY) {
//如果不绘制价钱轴或者覆盖k线上 则设置价钱轴计算宽度为0 不占绘制空间
kYw = 0.0;
kw = width;
} else {
//如果绘制价钱轴并且不覆盖 则设置价钱轴计算宽度为价钱轴宽度
kYw = initYW;
kw = width - kYw;
}
//========================时间轴处理===================
if (!isShowT) {
//如果不绘制时间轴 则设置时间轴计算高度为0 不占绘制空间
kXh = 0.0;
} else {
//如果绘制时间轴 则设置时间轴计算高度为时间轴高度
kXh = initKXH;
}
int hGap = ((h - kXh) / style['bgLineStyle']['property']['hCopies'])
.round(); //横线间间距
double attachedIndicatorHeight = 2.0;
if(klineState.widget.propertys.containsKey('attachedIndicatorHeight')){
attachedIndicatorHeight = klineState.widget.propertys['attachedIndicatorHeight'];
}
kFtH = hGap * attachedIndicatorHeight - zbTipH;
var fth = ftzb.length * (zbTipH + kFtH);
var kh = height - fth - kXh;
kYh = kh;
//x轴
Map xEle = kElement['x'] as Map;
xEle['x'] = 0.0;
xEle['y'] = height - kXh;
xEle['w'] = kw;
xEle['h'] = kXh;
xEle['cx'] = 0.0;
xEle['cw'] = width; //专门用来十字线检测的,检测十字线区域宽度是包含y轴区域的
//y轴
Map yEle = kElement['y'] as Map;
if (isCoverY) {
//价格轴覆盖
yEle['x'] = kw - initYW;
yEle['y'] = 0.0;
yEle['w'] = initYW;
yEle['h'] = kh;
yCall['strx'] = kw - 10; //y轴宽度多加了20的量,文字居中,所以左边间距10
yCall['yVGap'] = hGap; //采用背景线的间距就可以
} else {
//价格轴不覆盖
yEle['x'] = kw;
yEle['y'] = 0.0;
yEle['w'] = initYW;
yEle['h'] = kh;
yCall['strx'] = kw+initYW-10; //y轴宽度多加了20的量,文字居中,所以左边间距10
yCall['yVGap'] = hGap; //采用背景线的间距就可以
}
//k线
Map kEle = kElement['k'] as Map;
kEle['x'] = 0.0;
kEle['y'] = 0.0;
kEle['w'] = kw;
kEle['h'] = kh;
kEle['cx'] = 0.0;
kEle['cw'] = width; //专门用来十字线检测的,检测十字线区域宽度是包含y轴区域的
//十字线
Map crossEle = kElement['cross'] as Map;
crossEle['x'] = 0.0;
crossEle['y'] = 0.0;
crossEle['w'] = width;
crossEle['h'] = height;
ypcallary = [kEle, xEle];
//附图
Map ftEle = kElement['ft'] as Map;
for (var fti = 0; fti < ftzb.length; fti++) {
String zbName = ftzb[fti];
ftEle[zbName] = ftEle[zbName] ?? {};
ftEle[zbName]['name'] = zbName;
ftEle[zbName]['x'] = 0.0;
ftEle[zbName]['y'] = kh + fti * (zbTipH + kFtH) + zbTipH;
ftEle[zbName]['w'] = width;
ftEle[zbName]['h'] = kFtH;
ftEle[zbName]['type'] = "ft";
ftEle[zbName]['cx'] = 0.0; //专门用来十字线检测的
ftEle[zbName]['cw'] = width; //专门用来十字线检测的
ypcallary.add(ftEle[zbName]);
Map ftTip = {};
ftTip['x'] = 0.0;
ftTip['y'] = kh + fti * (zbTipH + kFtH);
ftTip['w'] = width;
ftTip['h'] = zbTipH;
ftTip['type'] = "ftTip";
ftTip['cx'] = 0.0; //专门用来十字线检测的
ftTip['cw'] = width; //专门用来十字线检测的
ypcallary.add(ftTip);
}
}