public static List<DicomSpecialElement> getSpecialElements(MediaSeries<DicomImageElement> dicomSeries) { if (dicomSeries == null) { return Collections.emptyList(); } List<DicomSpecialElement> list = null; DataExplorerModel model = (DataExplorerModel) dicomSeries.getTagValue(TagW.ExplorerModel); if (model instanceof DicomModel) { MediaSeriesGroup patientGroup = ((DicomModel) model).getParent(dicomSeries, DicomModel.patient); if (patientGroup != null) { list = (List<DicomSpecialElement>) patientGroup.getTagValue(TagW.DicomSpecialElementList); } } return list == null ? Collections.emptyList() : list; }
public synchronized void setThumbnailSize(int thumbnailSize) { boolean update = this.thumbnailSize != thumbnailSize; if (update) { Object media = series.getMedia(mediaPosition, null, null); this.thumbnailSize = thumbnailSize; removeImageFromCache(); buildThumbnail((MediaElement) media, series.getTagValue(TagW.ExplorerModel) != null, null); } }
@Override protected void drawOverIcon(Graphics2D g2d, int x, int y, int width, int height) { if (dragPressed == null) { setBorder(series.isSelected() ? series.isFocused() ? onMouseOverBorderFocused : onMouseOverBorder : outMouseOverBorder); if (series.isOpen()) { g2d.setPaint(Color.BLACK); g2d.fillRect(x, y, 11, 11); Integer splitNb = (Integer) series.getTagValue(TagW.SplitSeriesNumber); if (splitNb != null) { String nb = "#" + splitNb; //$NON-NLS-1$ String nbImg = "[" + series.size(null) + "]"; //$NON-NLS-1$ //$NON-NLS-2$ int hbleft = y + height - 3; int w = g2d.getFontMetrics().stringWidth(nbImg); if (series.getFileSize() > 0.0) { g2d.drawString(FileUtil.humanReadableByte(series.getFileSize(), false), x + 2, hbleft - 12); SeriesImporter seriesLoader = series.getSeriesLoader(); if (seriesLoader != null) { boolean stopped = seriesLoader.isStopped();
private void closingSeries(MediaSeries<?> mediaSeries) { if (mediaSeries == null) { return; } boolean open = false; synchronized (UIManager.VIEWER_PLUGINS) { List<ViewerPlugin<?>> plugins = UIManager.VIEWER_PLUGINS; pluginList: for (final ViewerPlugin<?> plugin : plugins) { List<? extends MediaSeries<?>> openSeries = plugin.getOpenSeries(); if (openSeries != null) { for (MediaSeries<?> s : openSeries) { if (mediaSeries == s) { // The sequence is still open in another view or plugin open = true; break pluginList; } } } } } mediaSeries.setOpen(open); // TODO setSelected and setFocused must be global to all view as open mediaSeries.setSelected(false, null); mediaSeries.setFocused(false); }
String seriesID = (String) series.getTagValue(TagW.SubseriesInstanceUID); Filter filter = (Filter) view.getActionValue(ActionW.FILTERED_SERIES.cmd()); ? series.getMedia(MediaSeries.MEDIA_POSITION.FIRST, filter, SortSeriesStack.slicePosition) : series.getMedia(MediaSeries.MEDIA_POSITION.LAST, filter, SortSeriesStack.slicePosition); if (img != null && img.getMediaReader() instanceof DcmMediaReader) { GeometryOfSlice geometry = img.getDispSliceGeometry(); if (frUID == null) { frUID = UIDUtils.createUID(); series.setTag(TagD.get(Tag.FrameOfReferenceUID), frUID); uid1 = UIDUtils.createUID(); uid2 = UIDUtils.createUID(); series.setTag(SeriesReferences, new String[] { uid1, uid2 }); DataExplorerModel model = (DataExplorerModel) series.getTagValue(TagW.ExplorerModel); TreeModel treeModel = null; if (model instanceof TreeModel) { final int size = series.size(filter); final JProgressBar[] bar = new JProgressBar[2]; GuiExecutor.instance().invokeAndWait(() -> { img = series.getMedia(MediaSeries.MEDIA_POSITION.MIDDLE, filter, SortSeriesStack.slicePosition); final Attributes attributes = ((DcmMediaReader) img.getMediaReader()).getDicomObject(); Iterable<DicomImageElement> medias = series.copyOfMedias(filter,
MediaSeries<? extends MediaElement> base = seriesList.get(0); for (MediaSeries<? extends MediaElement> s : seriesList) { Integer splitNb = (Integer) s.getTagValue(TagW.SplitSeriesNumber); if (splitNb != null && min > splitNb) { min = splitNb; base.addAll((Collection) s.getMedias(null, null)); removeSeriesWithoutDisposingMedias(s); List sortedMedias = base.getSortedMedias(null); Collections.sort(sortedMedias, SortSeriesStack.instanceNumber);
private void getThickness(final JSliderW sliderThickness) { StringBuilder buf = new StringBuilder(MipView.MIP_THICKNESS.getTitle()); buf.append(StringUtil.COLON_AND_SPACE); int val = sliderThickness.getValue(); buf.append(val); MediaSeries<DicomImageElement> series = view.getSeries(); if (series != null) { int slice = frameSlider.getValue() - 1; SeriesComparator sort = (SeriesComparator) view.getActionValue(ActionW.SORTSTACK.cmd()); Boolean reverse = (Boolean) view.getActionValue(ActionW.INVERSESTACK.cmd()); Comparator sortFilter = (reverse != null && reverse) ? sort.getReversOrderComparator() : sort; Filter filter = (Filter) view.getActionValue(ActionW.FILTERED_SERIES.cmd()); int min = Math.max(0, slice - val); int max = Math.min(series.size(filter) - 1, slice + val); DicomImageElement fimg = series.getMedia(min, filter, sortFilter); DicomImageElement limg = series.getMedia(max, filter, sortFilter); if (fimg != null && limg != null) { buf.append(" ("); //$NON-NLS-1$ buf.append(DecFormater.oneDecimal(SeriesBuilder.getThickness(fimg, limg))); buf.append(" "); //$NON-NLS-1$ buf.append(fimg.getPixelSpacingUnit().getAbbreviation()); buf.append(")"); //$NON-NLS-1$ } } updateSliderProoperties(sliderThickness, buf.toString()); }
@Override public void actionPerformed(ActionEvent e) { EventManager eventManager = EventManager.getInstance(); MediaSeries<org.weasis.dicom.codec.DicomImageElement> s = eventManager.getSelectedSeries(); // Requires at least 5 images to build the MPR views if (s != null && s.size(null) >= 5) { DataExplorerModel model = (DataExplorerModel) s.getTagValue(TagW.ExplorerModel); if (model instanceof DicomModel) { ViewerPluginBuilder.openSequenceInPlugin(new MPRFactory(), s, model, false, false); } } } };
for (MediaElement media : ms) { media.setTag(TagW.get("SeriesInstanceUID"), //$NON-NLS-1$ series.getTagValue(series.getTagID())); URI uri = media.getMediaURI(); media.setTag(TagW.get("SOPInstanceUID"), //$NON-NLS-1$ uri == null ? UUID.randomUUID().toString() : uri.toString()); series.addMedia(media);
MediaSeries<MediaElement> series = t.getSeries(); if (series != null && series.size(null) > 2) { GuiExecutor.instance().execute(t::reBuildThumbnail);
Comparator sortFilter = (reverse != null && reverse) ? sort.getReversOrderComparator() : sort; Filter filter = (Filter) view.getActionValue(ActionW.FILTERED_SERIES.cmd()); Iterable<DicomImageElement> medias = series.copyOfMedias(filter, sortFilter); int maxImg = fullSeries ? series.size(filter) - extend : curImg; if (fullSeries) { taskMonitor.setMaximum(maxImg - minImg); DicomImageElement img = series.getMedia(MediaSeries.MEDIA_POSITION.MIDDLE, filter, sortFilter); final Attributes attributes = ((DcmMediaReader) img.getMediaReader()).getDicomObject(); final int[] COPIED_ATTRS = { Tag.SpecificCharacterSet, Tag.PatientID, Tag.PatientName, Tag.PatientBirthDate,
public static boolean hasSameSize(MediaSeries<DicomImageElement> series1, MediaSeries<DicomImageElement> series2) { // Test if the two series has the same size if (series1 != null && series2 != null) { DicomImageElement image1 = series1.getMedia(MEDIA_POSITION.MIDDLE, null, null); DicomImageElement image2 = series2.getMedia(MEDIA_POSITION.MIDDLE, null, null); if (image1 != null && image2 != null) { return image1.hasSameSize(image2); } } return false; }
if (tileOffset != 0) { imgElement = series.getMedia(value.getSeriesIndex() + tileOffset, (Filter<E>) actionsInView.get(ActionW.FILTERED_SERIES.cmd()), getCurrentSortComparator()); } else if (value.getMedia() instanceof ImageElement) { imgElement = series.getNearestImage(location, tileOffset, (Filter<E>) actionsInView.get(ActionW.FILTERED_SERIES.cmd()), getCurrentSortComparator()); AuditLog.LOGGER.info("synch:series nb:{}", series.getSeriesNumber()); //$NON-NLS-1$ imgElement = series.getMedia(value.getSeriesIndex() + tileOffset, (Filter<E>) actionsInView.get(ActionW.FILTERED_SERIES.cmd()), getCurrentSortComparator()); AuditLog.LOGGER.info("synch:series nb:{}", series.getSeriesNumber()); //$NON-NLS-1$
public void setSelectedImagePane(ViewCanvas<E> viewCanvas) { if (this.selectedImagePane != null && this.selectedImagePane.getSeries() != null) { this.selectedImagePane.getSeries().setSelected(false, null); this.selectedImagePane.getSeries().setFocused(false); } if (viewCanvas != null && viewCanvas.getSeries() != null) { viewCanvas.getSeries().setSelected(true, viewCanvas.getImage()); viewCanvas.getSeries().setFocused(eventManager.getSelectedView2dContainer() == this); } boolean newView = this.selectedImagePane != viewCanvas && viewCanvas != null; if (newView) { if (this.selectedImagePane != null) { this.selectedImagePane.setSelected(false); } viewCanvas.setSelected(true); this.selectedImagePane = viewCanvas; eventManager.updateComponentsListener(viewCanvas); } if (newView && viewCanvas.getSeries() instanceof Series) { eventManager.fireSeriesViewerListeners( new SeriesViewerEvent(this, selectedImagePane.getSeries(), selectedImagePane.getImage(), EVENT.SELECT)); } eventManager.fireSeriesViewerListeners( new SeriesViewerEvent(this, viewCanvas == null ? null : viewCanvas.getSeries(), null, EVENT.SELECT_VIEW)); }
if (wadoParams == null || !StringUtil.hasText(wadoParams.getBaseURL()) || !wadoParams.getBaseURL().equals(wadoParameters.getBaseURL())) { imgNotAdd += ((MediaSeries<?>) series).size(null); continue; for (MediaElement media : ((MediaSeries<MediaElement>) series).getSortedMedias(null)) { buildInstance(media, s);
public static void openSequenceInDefaultPlugin(List<? extends MediaSeries<? extends MediaElement>> series, DataExplorerModel model, boolean compareEntryToBuildNewViewer, boolean removeOldSeries) { ArrayList<String> mimes = new ArrayList<>(); for (MediaSeries<?> s : series) { String mime = s.getMimeType(); if (mime != null && !mimes.contains(mime)) { mimes.add(mime); } } for (String mime : mimes) { SeriesViewerFactory plugin = UIManager.getViewerFactory(mime); if (plugin != null) { ArrayList<MediaSeries<? extends MediaElement>> seriesList = new ArrayList<>(); for (MediaSeries<? extends MediaElement> s : series) { if (mime.equals(s.getMimeType())) { seriesList.add(s); } } openSequenceInPlugin(plugin, seriesList, model, compareEntryToBuildNewViewer, removeOldSeries); } } }