drawSlice method
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++;
}
}
}
}