drawSlice method

Future drawSlice(
  1. NodeContext context,
  2. Rectangle<double> bb
)

Implementation

Future drawSlice(ui.NodeContext context, Rectangle<double> bb) async {
  if (texture != nullptr) {
    var src =
        srcrect ?? RectangleEx.fromLTWH(Point(0, 0), texture.getSize()!);
    var size = src.size;
    var sliceX = (size.x / 3).ceil().toDouble();
    var sliceY = (size.y / 3).ceil().toDouble();
    var dstrectList = [
      RectangleEx.fromLTWH(bb.topLeft + Point(0, 0), Point(sliceX, sliceY)),
      RectangleEx.fromLTWH(bb.topLeft + Point(sliceX, 0),
          Point(bb.width - sliceX * 2, sliceY)),
      RectangleEx.fromLTWH(
          bb.topLeft + Point(bb.width - sliceX, 0), Point(sliceX, sliceY)),
      RectangleEx.fromLTWH(bb.topLeft + Point(0, sliceY),
          Point(sliceX, bb.height - sliceY * 2)),
      RectangleEx.fromLTWH(bb.topLeft + Point(sliceX, sliceY),
          Point(bb.width - sliceX * 2, bb.height - sliceY * 2)),
      RectangleEx.fromLTWH(bb.topLeft + Point(bb.width - sliceX, sliceY),
          Point(sliceX, bb.height - sliceY * 2)),
      RectangleEx.fromLTWH(
          bb.topLeft + Point(0, bb.height - sliceY), Point(sliceX, sliceY)),
      RectangleEx.fromLTWH(bb.topLeft + Point(sliceX, bb.height - sliceY),
          Point(bb.width - sliceX * 2, sliceY)),
      RectangleEx.fromLTWH(
          bb.topLeft + Point(bb.width - sliceX, bb.height - sliceY),
          Point(sliceX, sliceY)),
    ];
    var index = 0;
    for (var y = 0; y < 3; y++) {
      for (var x = 0; x < 3; x++) {
        var dstrect = dstrectList[index];
        context.renderer.copy(texture,
            dstrect: dstrect,
            srcrect: RectangleEx.fromLTWH(
                Point(src.left + sliceX * x, src.top + sliceY * y),
                Point(sliceX, sliceY)));
        index++;
      }
    }
  }
}