renderLoadedImage method
void
renderLoadedImage(
- JSONRender render,
- dynamic node,
- Element parent,
- ImageElement imageElement,
- ViewerElement<
List< ? perspectiveFilter,Point< >num> > - ViewerElement<
Rectangle< ? clip,num> > - ViewerElement<
List< ? rectangles,Rectangle< >num> > - ViewerElement<
List< ? points,Point< >num> > - DateTime? time,
- ValueProviderReference valueProviderRef,
Implementation
void renderLoadedImage(
JSONRender render,
dynamic node,
Element parent,
ImageElement imageElement,
ViewerElement<List<Point<num>>>? perspectiveFilter,
ViewerElement<Rectangle<num>>? clip,
ViewerElement<List<Rectangle<num>>>? rectangles,
ViewerElement<List<Point<num>>>? points,
DateTime? time,
ValueProviderReference valueProviderRef) {
var w = imageElement.naturalWidth;
var h = imageElement.naturalHeight;
var inputMode = render.isInputRenderMode;
EditionType? editionType;
if (inputMode) {
if (clip != null) {
editionType = EditionType.clip;
} else if (points != null) {
editionType = EditionType.points;
} else if (perspectiveFilter != null) {
editionType = EditionType.perspective;
}
}
var canvas = CanvasElement(width: w, height: h);
var gridSize = editionType == EditionType.perspective
? CanvasImageViewer.gridSizeViewerElement(0.05)
: null;
var canvasImageViewer = CanvasImageViewer(
canvas: canvas,
image: imageElement,
perspective: perspectiveFilter,
gridSize: gridSize,
clip: clip,
rectangles: rectangles,
points: points,
time: time,
editable: editionType);
if (editionType == EditionType.clip) {
var clipKeys = parseClipKeys(node);
if (clipKeys != null) {
valueProviderRef.valueProvider = (parent) {
var clipKey = clipKeys[0];
var xKey = clipKeys[1];
var yKey = clipKeys[2];
var wKey = clipKeys[3];
var hKey = clipKeys[4];
var clip = canvasImageViewer.clip!;
clip = Rectangle<int>(clip.left.toInt(), clip.top.toInt(),
clip.width.toInt(), clip.height.toInt());
var nodeEdited = Map.from(node);
if (xKey is num && yKey is num) {
nodeEdited[clipKey] = [
clip.left,
clip.top,
clip.width,
clip.height
];
} else {
nodeEdited[clipKey] = {
xKey: clip.left,
yKey: clip.top,
wKey: clip.width,
hKey: clip.height
};
}
return nodeEdited;
};
}
} else if (editionType == EditionType.points) {
valueProviderRef.valueProvider = (parent) {
var pointsKey = canvasImageViewer.pointsKey;
var points = canvasImageViewer.points ?? [];
var nodeEdited = Map.from(node);
var pointsCoords = points
.map((p) => [p.x, p.y])
.expand((p) => p)
.map((n) => n.toInt())
.toList();
nodeEdited[pointsKey] = pointsCoords;
return nodeEdited;
};
} else if (editionType == EditionType.perspective) {
valueProviderRef.valueProvider = (parent) {
var perspectiveKey = canvasImageViewer.perspectiveKey;
var perspective = canvasImageViewer.perspective ?? [];
var nodeEdited = Map.from(node);
var perspectiveCoords = perspective
.map((p) => [p.x, p.y])
.expand((p) => p)
.map((n) => n.toInt())
.toList();
nodeEdited[perspectiveKey] = perspectiveCoords;
return nodeEdited;
};
}
canvas.style.maxWidth = '70vw';
canvas.style.maxHeight = '40vw';
parent.children.clear();
parent.children.add(canvas);
canvasImageViewer.render();
}