render method

  1. @override
void render(
  1. RenderState renderState
)
override

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);
}