private static ArrayList<GraphicLayer> readXmlModel(ViewCanvas<DicomImageElement> view, GraphicModel graphicModel) { ArrayList<GraphicLayer> layers = new ArrayList<>(); int k = 0; for (GraphicLayer layer : graphicModel.getLayers()) { layer.setName(Optional.ofNullable(layer.getName()).orElseGet(layer.getType()::getDefaultName) + " [DICOM]"); //$NON-NLS-1$ layer.setLocked(true); layer.setSerializable(false); layer.setLevel(270 + k++); layers.add(layer); } for (Graphic g : graphicModel.getModels()) { AbstractGraphicModel.addGraphicToModel(view, g.getLayer(), g); } return layers; }
@Override public void deleteNonSerializableGraphics() { if (models.isEmpty()) { return; } synchronized (models) { for (Graphic g : models) { if (!g.getLayer().getSerializable()) { g.removeAllPropertyChangeListener(); } } models.removeIf(g -> !g.getLayer().getSerializable()); layers.removeIf(l -> !l.getSerializable()); } }
GraphicLayer layer = null; for (GraphicLayer l : modelList.getLayers()) { if (layerName.equals(l.getName())) { layer = l; break; layer.setName(layerName); layer.setSerializable(false); layer.setLocked(true); layer.setSelectable(false); layer.setLevel(305);
@Override public void setLayer(GraphicLayer layer) { Objects.requireNonNull(layer, NULL_MSG); this.layer = layer; // Adapt the default layerType setLayerType(layer.getType()); }
private static void writeGraphics(GraphicModel model, Attributes attributes) { List<GraphicLayer> layers = model.getLayers(); Sequence annotationSeq = attributes.newSequence(Tag.GraphicAnnotationSequence, layers.size()); Sequence layerSeq = attributes.newSequence(Tag.GraphicLayerSequence, layers.size()); for (int i = 0; i < layers.size(); i++) { GraphicLayer layer = layers.get(i); if (layer.getSerializable()) { String layerName = layer.getType().name(); List<Graphic> graphics = getGraphicsByLayer(model, layer.getUuid()); Attributes l = new Attributes(2); l.setString(Tag.GraphicLayer, VR.CS, layerName); l.setInt(Tag.GraphicLayerOrder, VR.IS, i); float[] lab = PresentationStateReader .colorToLAB(Optional.ofNullable(MeasureTool.viewSetting.getLineColor()).orElse(Color.YELLOW)); if (lab != null) { l.setInt(Tag.GraphicLayerRecommendedDisplayCIELabValue, VR.US, CIELab.convertToDicomLab(lab)); } l.setString(Tag.GraphicLayerDescription, VR.LO, layer.toString()); layerSeq.add(l); Attributes a = new Attributes(2); a.setString(Tag.GraphicLayer, VR.CS, layerName); Sequence graphicSeq = a.newSequence(Tag.GraphicObjectSequence, graphics.size()); Sequence textSeq = a.newSequence(Tag.TextObjectSequence, graphics.size()); for (Graphic graphic : graphics) { buildDicomGraphic(graphic, graphicSeq, textSeq); } annotationSeq.add(a); } } }
private static void readPresentation(XMLStreamReader xmler, ReaderParams params) throws XMLStreamException { GraphicModel model = XmlSerializer.readPresentation(xmler); if (model != null) { model.getLayers().forEach(l -> l.setSerializable(Boolean.TRUE)); for (ReferencedSeries refSeries : model.getReferencedSeries()) { LoadSeries series = params.getSeriesMap().get(refSeries.getUuid());
layer.setName(graphicLayerName + " [DICOM]"); //$NON-NLS-1$ layer.setSerializable(false); layer.setLocked(true); layer.setSelectable(false); layer.setLevel(310 + glm.getInt(Tag.GraphicLayerOrder, 0)); layers.add(layer);
@Override public void deleteByLayerType(LayerType type) { Objects.requireNonNull(type); if (models.isEmpty()) { return; } synchronized (models) { for (Graphic g : models) { if (g.getLayer().getType().equals(type)) { g.removeAllPropertyChangeListener(); } } models.removeIf(g -> Objects.equals(g.getLayer().getType(), type)); layers.removeIf(l -> Objects.equals(l.getType(), type)); } }
@Override public List<GraphicLayer> groupLayerByType() { if (models.isEmpty()) { return Collections.emptyList(); } ArrayList<GraphicLayer> layerType = new ArrayList<>(); synchronized (models) { for (Graphic g : models) { LayerType type = g.getLayer().getType(); boolean notInGroup = true; for (GraphicLayer glayer : layerType) { if (Objects.equals(glayer.getType(), type)) { notInGroup = false; break; } } if (notInGroup) { layerType.add(g.getLayer()); } } } return layerType; }
@Override public boolean hasSerializableGraphics() { if (models.isEmpty()) { return false; } synchronized (models) { for (Graphic g : models) { /* * Exclude non serializable layer and graphics without points like NonEditableGraphic (not strictly the * jaxb serialization process that use the annotations from getModels()) */ if (g.getLayer().getSerializable() && !g.getPts().isEmpty()) { return true; } } } return false; }
@Override public void applyNextValues() { ViewCanvas<ImageElement> view = getView(); if (view != null) { AcquireImageInfo imageInfo = getImageInfo(); int rotation = (imageInfo.getNextValues().getFullRotation() + 360) % 360; RectangleGraphic cropGraphic = rectifyAction.getCurrentCropArea(); if (cropGraphic != null) { GraphicModel graphicManager = view.getGraphicManager(); graphicManager.getModels().removeIf(g -> g.getLayer().getType() == cropGraphic.getLayerType()); } if (rotation % 90 != 0) { GraphicHelper.newGridLayer(view); } view.setActionsInView(ActionW.ROTATION.cmd(), rotation); } } }
public static GraphicModel getModelForSerialization(GraphicModel model, Point2D offset) { // Remove non serializable graphics XmlGraphicModel xmlModel = new XmlGraphicModel(); xmlModel.setReferencedSeries(model.getReferencedSeries()); for (Graphic g : model.getModels()) { if (g.getLayer().getSerializable() && !g.getPts().isEmpty()) { if (offset != null) { Graphic graphic = g.copy(); for (Point2D.Double p : graphic.getPts()) { p.x -= offset.getX(); p.y -= offset.getY(); } GraphicLabel label = g.getGraphicLabel(); graphic.buildShape(); if (label != null) { graphic.setLabel(label); } xmlModel.addGraphic(graphic); } else { xmlModel.addGraphic(g); } } } return xmlModel; }
@Override public void applyNextValues() { ViewCanvas<ImageElement> view = getView(); if (view != null) { AcquireImageInfo imageInfo = getImageInfo(); int rotation = (imageInfo.getNextValues().getFullRotation() + 360) % 360; RectangleGraphic cropGraphic = rectifyAction.getCurrentCropArea(); if (cropGraphic != null) { GraphicModel graphicManager = view.getGraphicManager(); graphicManager.getModels().removeIf(g -> g.getLayer().getType() == cropGraphic.getLayerType()); } if (rotation % 90 != 0) { GraphicHelper.newGridLayer(view); } view.setActionsInView(ActionW.ROTATION.cmd(), rotation); } } }
ViewCanvas<ImageElement> view = AcquireObject.getView(); GraphicModel graphicManager = view.getGraphicManager(); if (graphicManager.getModels().removeIf(g -> g.getLayer().getType() == getLayerType() && g != this)) { graphicManager.fireChanged();