setSize method

dynamic setSize(
  1. dynamic w,
  2. 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);

  }
}