render method
Renders this display object with the given renderState
.
The display object is rendered without its filters.
Implementation
@override
void render(RenderState renderState) {
// We could use renderState.renderTextureMesh, it would work great with
// the WebGL renderer but not so good with the Canvas2D renderer.
// If first slice set, all the rest should be too
if (_slices.first == null) return;
final globalMatrix = renderState.globalMatrix;
final renderContext = renderState.renderContext;
final tempMatrix = globalMatrix.clone();
final w0 = _slices[0]!.targetWidth;
final h0 = _slices[0]!.targetHeight;
final w1 = _slices[4]!.targetWidth;
final h1 = _slices[4]!.targetHeight;
final w2 = _slices[8]!.targetWidth;
final h2 = _slices[8]!.targetHeight;
for (var j = 0; j < 3; j++) {
final sh = j == 0
? h0
: j == 2
? h2
: h1;
final th = j == 0
? h0
: j == 2
? h2
: height - h0 - h2;
final ty = j == 0
? 0
: j == 1
? h0
: height - h2;
for (var i = 0; i < 3; i++) {
final sw = i == 0
? w0
: i == 2
? w2
: w1;
final tw = i == 0
? w0
: i == 2
? w2
: width - w0 - w2;
final tx = i == 0
? 0
: i == 1
? w0
: width - w2;
globalMatrix.setTo(tw / sw, 0, 0, th / sh, tx, ty);
globalMatrix.concat(tempMatrix);
renderContext.renderTextureQuad(renderState, _slices[i + j * 3]!);
}
}
globalMatrix.copyFrom(tempMatrix);
}