renderNode method
void
renderNode(
- RenderInfo<
Renderinstruction> renderInfo, - RenderContext renderContext,
- NodeProperties nodeProperties
Renders a symbol for a node.
Implementation
@override
void renderNode(RenderInfo renderInfo, RenderContext renderContext, NodeProperties nodeProperties) {
if (symbolImage == null) return;
if (renderContext is! UiRenderContext) throw Exception("renderContext is not UiRenderContext ${renderContext.runtimeType}");
if (renderInfo is! RenderInfoNode) throw Exception("renderInfo is not RenderInfoNode ${renderInfo.runtimeType}");
Mappoint previous = nodeProperties.getCoordinatesAbsolute();
MapRectangle boundary = symbolImage!.getBoundary();
MappointRelative relative = previous.offset(renderContext.reference).offset(0, renderinstruction.dy);
UiMatrix? matrix;
if (renderinstruction.rotate) {
// if we do not rotate theta will be 0, which is correct
double radians = renderInfo.rotateRadians;
if (radians != 0) {
matrix = UiMatrix();
matrix.rotate(radians, pivotX: boundary.left, pivotY: boundary.top);
}
}
renderContext.canvas.drawPicture(
symbolImage: symbolImage!,
matrix: matrix,
left: relative.dx + boundary.left,
top: relative.dy + boundary.top,
paint: fill,
);
// renderContext.canvas.drawCircle(relative.dx + boundary.left, relative.dy + boundary.top, 5, UiPaint.fill(color: 0xffff0000));
// renderContext.canvas.drawCircle(relative.dx, relative.dy, boundary.getWidth() / 2, UiPaint.stroke(color: 0x80ff0000));
}