- List<String> styles = result.first;
- List<SVGNodeAssignment> assignments = new ArrayList<>(styles.size()/3);
- for (int i = 0; i < styles.size()/3; i++)
- assignments.add(new SVGNodeAssignment(styles.get(3*i), styles.get(3*i+1), styles.get(3*i+2)));
-
- for (SVGNode p : NodeUtil.collectNodes(node, SVGNode.class)) {
- p.setAssignments(assignments);
- p.cleanDiagramCache();
+ G2DNodeModification modification = result.first;
+ if (modification.svgAssignments != null && !modification.svgAssignments.isEmpty()) {
+ for (SVGNode p : NodeUtil.collectNodes(node, SVGNode.class)) {
+ p.setAssignments(modification.svgAssignments);
+ p.cleanDiagramCache();
+ }
+ }
+ if (modification.transformAssignments != null) {
+ Map<Object,AffineTransform> trs = new HashMap<>();
+ for (TransformationAssignment ass : modification.transformAssignments)
+ trs.put(ass.key, ass.transform);
+ NodeUtil.forChildrenDeep(node, SingleElementNode.class, n -> {
+ Object key = n.getKey();
+ AffineTransform tr = trs.get(key);
+ if (tr != null) {
+ IG2DNode[] children = n.getSortedNodes();
+ if (children.length > 0)
+ children[0].setTransform(tr);
+ }
+ return null;
+ });