public void SelectDisplaySet() { IDisplaySet displaySet1 = new DisplaySet(); displaySet1.PresentationImages.Add(new TestPresentationImage()); displaySet1.PresentationImages.Add(new TestPresentationImage()); displaySet1.PresentationImages.Add(new TestPresentationImage()); displaySet1.PresentationImages.Add(new TestPresentationImage()); IDisplaySet displaySet2 = new DisplaySet(); displaySet2.PresentationImages.Add(new TestPresentationImage()); displaySet2.PresentationImages.Add(new TestPresentationImage()); IImageViewer viewer = new ImageViewerComponent(); IImageBox imageBox = new ImageBox(); viewer.PhysicalWorkspace.ImageBoxes.Add(imageBox); imageBox.SetTileGrid(2, 2); imageBox.DisplaySet = displaySet1; imageBox[0, 0].Select(); Assert.IsTrue(imageBox[0, 0].Selected); Assert.IsFalse(imageBox[0, 1].Selected); imageBox[0, 1].Select(); Assert.IsFalse(imageBox[0, 0].Selected); Assert.IsTrue(imageBox[0, 1].Selected); imageBox.DisplaySet = displaySet2; Assert.IsFalse(imageBox[0, 0].Selected); Assert.IsTrue(imageBox[0, 1].Selected); }
public void TestImage() { if (ImageViewer.SelectedImageBox == null) { return; } try { var sphere = new EllipsoidPrimitive { FrontTopLeft = new Vector3D(85, 85, 85), BackBottomRight = new Vector3D(115, 115, 115), Color = Color.Yellow }; var image = new VtkTestPresentationImage(); image.OverlayGraphics3D.Add(sphere); var dset = new DisplaySet { Description = "blah", Name = "blah", Uid = Guid.NewGuid().ToString() }; dset.PresentationImages.Add(image); ImageViewer.SelectedImageBox.DisplaySet = dset; ImageViewer.SelectedImageBox.Draw(); } catch (Exception ex) { ExceptionHandler.Report(ex, Context.DesktopWindow); } }
public void SetDisplaySet() { ImageBox imageBox = new ImageBox(); IDisplaySet displaySet1 = new DisplaySet(); IDisplaySet displaySet2 = new DisplaySet(); PresentationImage image1 = new TestPresentationImage(); PresentationImage image2 = new TestPresentationImage(); displaySet1.PresentationImages.Add(image1); displaySet2.PresentationImages.Add(image2); imageBox.DisplaySet = displaySet1; Assert.IsTrue(displaySet1.Visible); Assert.AreEqual(imageBox, displaySet1.ImageBox); imageBox.DisplaySet = null; Assert.IsFalse(displaySet1.Visible); Assert.IsNull(displaySet1.ImageBox); imageBox.DisplaySet = displaySet1; Assert.IsTrue(displaySet1.Visible); Assert.AreEqual(imageBox, displaySet1.ImageBox); imageBox.DisplaySet = displaySet2; Assert.IsTrue(displaySet2.Visible); Assert.IsFalse(displaySet1.Visible); Assert.AreEqual(imageBox, displaySet2.ImageBox); Assert.IsNull(displaySet1.ImageBox); }
/// <summary> /// Process the user preferences for this scenario /// </summary> /// <param name="preferences"></param> public void SetPreferences(PopulationPrefs preferences) { // Gets the custom DIsplaySets if (preferences == null) { return; } // Add teh custom DisplaySets to the DisplaySet List foreach (DisplaySetInformation displaySet in preferences.DisplaySets) { DisplaySet.DisplaySetList.Add(displaySet); } // Assign the selected DisplaySet if (!preferences.SelectedDisplaySetName.Equals("")) { DisplaySetInformation displaySet = DisplaySet.GetDisplaySetByName(preferences.SelectedDisplaySetName); if (displaySet != null) { DisplaySet.CurrentDisplaySet = displaySet; } } Context.BlockSize = preferences.BlockSize; }
private static DisplaySet CreateFusionDisplaySet(IEnumerable <ImageSop> baseSops, IEnumerable <ImageSop> overlaySops) { var descriptor = new PETFusionDisplaySetDescriptor( GetSeriesIdentifier(CollectionUtils.FirstElement(baseSops).DataSource), GetSeriesIdentifier(CollectionUtils.FirstElement(overlaySops).DataSource), false); var displaySet = new DisplaySet(descriptor); using (var fusionOverlayData = new FusionOverlayData(GetFrames(overlaySops))) { int bitDepth = fusionOverlayData.Frames[0].ParentImageSop.DataSource[DicomTags.BitsStored].GetInt32(0, 16); foreach (var baseFrame in GetFrames(baseSops)) { using (var fusionOverlaySlice = fusionOverlayData.CreateOverlaySlice(baseFrame)) { var fus = new FusionPresentationImage(baseFrame, fusionOverlaySlice); fus.BaseVoiLutManager.InstallVoiLut(new IdentityVoiLinearLut()); fus.OverlayVoiLutManager.InstallVoiLut(new IdentityVoiLinearLut()); displaySet.PresentationImages.Add(fus); } } } return(displaySet); }
public void CreateVolume() { if (this.ImageViewer == null) { return; } if (this.ImageViewer.SelectedImageBox == null) { return; } IDisplaySet selectedDisplaySet = this.ImageViewer.SelectedImageBox.DisplaySet; VolumePresentationImage image = new VolumePresentationImage(selectedDisplaySet); AddTissueLayers(image); IDisplaySet displaySet = new DisplaySet(String.Format("{0} (3D)", selectedDisplaySet.Name), String.Format("VTK.{0}", Guid.NewGuid().ToString())); displaySet.PresentationImages.Add(image); this.ImageViewer.LogicalWorkspace.ImageSets[0].DisplaySets.Add(displaySet); IImageBox imageBox = this.ImageViewer.SelectedImageBox; imageBox.DisplaySet = displaySet; imageBox.Draw(); imageBox[0, 0].Select(); NotifyAllPropertiesChanged(); }
public void ReplaceDisplaySet() { IDisplaySet displaySet1 = new DisplaySet(); IPresentationImage image1 = new TestPresentationImage(); displaySet1.PresentationImages.Add(image1); IDisplaySet displaySet2 = new DisplaySet(); IPresentationImage image2 = new TestPresentationImage(); displaySet2.PresentationImages.Add(image2); ImageViewerComponent viewer = new ImageViewerComponent(); IImageBox imageBox1 = new ImageBox(); viewer.PhysicalWorkspace.ImageBoxes.Add(imageBox1); imageBox1.SetTileGrid(2, 2); imageBox1.DisplaySet = displaySet1; imageBox1[0, 0].Select(); Assert.IsTrue(displaySet1.Selected); Assert.IsTrue(image1.Selected); imageBox1.DisplaySet = displaySet2; Assert.IsFalse(displaySet1.Selected); Assert.IsFalse(image1.Selected); Assert.IsTrue(displaySet2.Selected); Assert.IsTrue(image2.Selected); }
private void 導入預設文件IToolStripMenuItem_Click(object sender, EventArgs e) { OpenFileDialog ImportSettingDialog = new OpenFileDialog(); ImportSettingDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\弹幕姬\\Plugins\\"; ImportSettingDialog.FileName = "setting.xml"; ImportSettingDialog.Filter = "程式設置檔文件 (*.xml)|*.xml|所有文件 (*.*)|*.*"; ImportSettingDialog.FilterIndex = 1; ImportSettingDialog.RestoreDirectory = true; if (ImportSettingDialog.ShowDialog() == DialogResult.OK) { try { DisplaySet.Clear(); DisplaySet.ReadXml(ImportSettingDialog.FileName); dataGridView1.DataSource = DisplaySet; dataGridView1.DataMember = "event"; setting_file_path = ImportSettingDialog.FileName; } catch (Exception ex) { MessageBox.Show("讀取設置檔失敗,原始錯誤檔如下: \n" + ex.Message); } } }
/// <summary> /// Creates a clone of a <see cref="IPresentationImage"/> suitable for static export. /// </summary> /// <remarks> /// Functionally, this method is similar to <see cref="IPresentationImage.Clone"/>. /// However, this method also fills the <see cref="IPresentationImage.ParentDisplaySet"/> /// property with a static <see cref="IDisplaySet"/> instance whose properties are a snapshot /// of the source image's parent display set at the time the clone was created. /// This makes the resulting images suitable for export with features like annotation overlay /// enabled, as certain items (specifically, display set description and number) depend on /// this information. /// </remarks> /// <param name="presentationImage">The source image to be cloned.</param> /// <returns>A clone of the source image.</returns> /// <exception cref="ArgumentNullException">Thrown if <paramref name="presentationImage"/> is null.</exception> public static IPresentationImage ClonePresentationImage(IPresentationImage presentationImage) { Platform.CheckForNullReference(presentationImage, "presentationImage"); var imageClone = presentationImage.Clone(); try { var parentDisplaySet = presentationImage.ParentDisplaySet; if (parentDisplaySet != null) { var descriptor = parentDisplaySet.Descriptor; if (descriptor != null) { parentDisplaySet = new DisplaySet(new BasicDisplaySetDescriptor { Description = descriptor.Description, Name = descriptor.Name, Number = descriptor.Number, Uid = descriptor.Uid }); } else { parentDisplaySet = new DisplaySet(parentDisplaySet.Name, parentDisplaySet.Uid); } parentDisplaySet.PresentationImages.Add(imageClone); } } catch (Exception ex) { Platform.Log(LogLevel.Debug, ex, "Failed to create a dummy parent display set for the cloned presentation image"); } return(imageClone); }
private void ListDisplaySet(DisplaySet ds) { Application.DocumentManager.MdiActiveDocument.Editor.WriteMessage("DisplaySet Name:" + ds.Name + "\n"); Application.DocumentManager.MdiActiveDocument.Editor.WriteMessage("DisplaySet Description:" + ds.Description + "\n"); return; }
private void 導出預設文件OToolStripMenuItem_Click(object sender, EventArgs e) { OpenFileDialog ExportSettingDialog = new OpenFileDialog(); ExportSettingDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\弹幕姬\\Plugins\\"; ExportSettingDialog.FileName = "setting.xml"; ExportSettingDialog.Filter = "程式設置檔文件 (*.xml)|*.xml|所有文件 (*.*)|*.*"; ExportSettingDialog.FilterIndex = 1; ExportSettingDialog.RestoreDirectory = true; if (ExportSettingDialog.ShowDialog() == DialogResult.OK) { try { if (DisplaySet == null) { return; } string filename = ExportSettingDialog.FileName; System.IO.FileStream stream = new System.IO.FileStream (filename, System.IO.FileMode.Create); DisplaySet.WriteXml(stream); } catch (Exception ex) { MessageBox.Show("導出設置檔失敗,原始錯誤檔如下: \n" + ex.Message); } } }
public static IDisplaySet CreateDisplaySet(string text) { var displaySet = new DisplaySet(); displaySet.PresentationImages.Add(new MessagePresentationImage(text)); return(displaySet); }
// added. list all the disp set registered. private void ListDisplaySets() { Autodesk.AutoCAD.EditorInput.Editor ed = Application.DocumentManager.MdiActiveDocument.Editor; ed.WriteMessage("===================================\n"); ed.WriteMessage(" Currently Registerd Display Set \n"); ed.WriteMessage("===================================\n"); Database db = Application.DocumentManager.MdiActiveDocument.Database; Transaction trans = db.TransactionManager.StartTransaction(); // get the dictionary. DictionaryDisplaySet dictDispSet = new DictionaryDisplaySet(db, false); ed.WriteMessage("Current # of display set = " + dictDispSet.Records.Count.ToString() + "\n"); try { // loop throught it and print out the name. foreach (ObjectId id in dictDispSet.Records) { DisplaySet dispSet = trans.GetObject(id, OpenMode.ForRead) as DisplaySet; ListDisplaySet(dispSet); } } catch (System.Exception) { trans.Abort(); } finally { trans.Dispose(); } }
public void SetDisplaySet() { ImageBox imageBox = new ImageBox(); IDisplaySet displaySet1 = new DisplaySet(); IDisplaySet displaySet2 = new DisplaySet(); PresentationImage image1 = new TestPresentationImage(); PresentationImage image2 = new TestPresentationImage(); displaySet1.PresentationImages.Add(image1); displaySet2.PresentationImages.Add(image2); imageBox.DisplaySet = displaySet1; Assert.IsTrue(displaySet1.Visible); Assert.AreEqual(imageBox, displaySet1.ImageBox); imageBox.DisplaySet = null; Assert.IsFalse(displaySet1.Visible); Assert.IsNull(displaySet1.ImageBox); imageBox.DisplaySet = displaySet1; Assert.IsTrue(displaySet1.Visible); Assert.AreEqual(imageBox, displaySet1.ImageBox); imageBox.DisplaySet = displaySet2; Assert.IsTrue(displaySet2.Visible); Assert.IsFalse(displaySet1.Visible); Assert.AreEqual(imageBox, displaySet2.ImageBox); Assert.IsNull(displaySet1.ImageBox); }
private void dispSet_Click(object sender, RoutedEventArgs e) { if (this.MapContainer == null) { return; } if (m_catalog.ActiveMapDoc != null && m_catalog.ActiveMapDoc.Display) { if (m_dispOption == null) { m_dispOption = new DisplaySet(); m_dispOption.IMSCatalog = this.IMSCatalog; } m_dispOption.ShowAsModal(); } //if (m_catalog.ActiveLayerObj != null && m_catalog.ActiveLayerObj.Display) //{ // if (m_LayerdispOption == null) // { // m_LayerdispOption = new LayerDisplaySet(); // m_LayerdispOption.IMSCatalog = this.IMSCatalog; // } // m_LayerdispOption.ShowAsModal(); //} }
public void SelectDisplaySet() { IDisplaySet displaySet1 = new DisplaySet(); displaySet1.PresentationImages.Add(new TestPresentationImage()); displaySet1.PresentationImages.Add(new TestPresentationImage()); displaySet1.PresentationImages.Add(new TestPresentationImage()); displaySet1.PresentationImages.Add(new TestPresentationImage()); IDisplaySet displaySet2 = new DisplaySet(); displaySet2.PresentationImages.Add(new TestPresentationImage()); displaySet2.PresentationImages.Add(new TestPresentationImage()); IImageViewer viewer = new ImageViewerComponent(); IImageBox imageBox = new ImageBox(); viewer.PhysicalWorkspace.ImageBoxes.Add(imageBox); imageBox.SetTileGrid(2, 2); imageBox.DisplaySet = displaySet1; imageBox[0, 0].Select(); Assert.IsTrue(imageBox[0, 0].Selected); Assert.IsFalse(imageBox[0, 1].Selected); imageBox[0, 1].Select(); Assert.IsFalse(imageBox[0, 0].Selected); Assert.IsTrue(imageBox[0, 1].Selected); imageBox.DisplaySet = displaySet2; Assert.IsFalse(imageBox[0, 0].Selected); Assert.IsTrue(imageBox[0, 1].Selected); }
public void ReplaceDisplaySet() { IDisplaySet displaySet1 = new DisplaySet(); IPresentationImage image1 = new TestPresentationImage(); displaySet1.PresentationImages.Add(image1); IDisplaySet displaySet2 = new DisplaySet(); IPresentationImage image2 = new TestPresentationImage(); displaySet2.PresentationImages.Add(image2); ImageViewerComponent viewer = new ImageViewerComponent(); IImageBox imageBox1 = new ImageBox(); viewer.PhysicalWorkspace.ImageBoxes.Add(imageBox1); imageBox1.SetTileGrid(2, 2); imageBox1.DisplaySet = displaySet1; imageBox1[0,0].Select(); Assert.IsTrue(displaySet1.Selected); Assert.IsTrue(image1.Selected); imageBox1.DisplaySet = displaySet2; Assert.IsFalse(displaySet1.Selected); Assert.IsFalse(image1.Selected); Assert.IsTrue(displaySet2.Selected); Assert.IsTrue(image2.Selected); }
//////////////////////////// //// Display Rep //// //// list all the display reps for MassElem and MassGroup for the current display config. //////////////////////////// private void DisplayReps() { Application.DocumentManager.MdiActiveDocument.Editor.WriteMessage("\n====================================================\n"); Application.DocumentManager.MdiActiveDocument.Editor.WriteMessage("Get All the AecDbMassElem/Massgroup Display Reps for the current display config\n"); Application.DocumentManager.MdiActiveDocument.Editor.WriteMessage("====================================================\n"); Database db = Application.DocumentManager.MdiActiveDocument.Database; Transaction trans = db.TransactionManager.StartTransaction(); Autodesk.AutoCAD.EditorInput.Editor ed = Application.DocumentManager.MdiActiveDocument.Editor; DisplaySet ds = new DisplaySet(); ObjectIdCollection ids = DisplayRepresentationManager.GetActiveDisplayRepresentationSets(db); ed.WriteMessage("# of active display sets = " + ids.Count + "\n"); DisplaySet acds = new DisplaySet(); try { // loop through the active disp sets (i.e., disp sets of active dis confid.) foreach (ObjectId id in ids) { acds = trans.GetObject(id, OpenMode.ForRead) as DisplaySet; foreach (ObjectId drid in acds.DisplayRepresentationIds) { DisplayRepresentation dr = trans.GetObject(drid, OpenMode.ForRead) as DisplayRepresentation; dr = trans.GetObject(drid, OpenMode.ForRead) as DisplayRepresentation; RXClass rc = dr.WorksWith; if (rc.Name == "AecDbMassElem" || rc.Name == "AecDbMassGroup") { if (ds.DisplayRepresentationIds.Contains(drid)) { continue; } else { ds.DisplayRepresentationIds.Add(drid); ListDisplayRep(dr); } } } } trans.Commit(); } catch (System.Exception) { trans.Abort(); } finally { trans.Dispose(); } return; }
public static void Create(IDesktopWindow desktopWindow, IImageViewer viewer) { IDisplaySet selectedDisplaySet = viewer.SelectedImageBox.DisplaySet; string name = String.Format("{0} - Dynamic TE", selectedDisplaySet.Name); IDisplaySet t2DisplaySet = new DisplaySet(name, ""); double currentSliceLocation = 0.0; BackgroundTask task = new BackgroundTask( delegate(IBackgroundTaskContext context) { int i = 0; foreach (IPresentationImage image in selectedDisplaySet.PresentationImages) { IImageSopProvider imageSopProvider = image as IImageSopProvider; if (imageSopProvider == null) { continue; } ImageSop imageSop = imageSopProvider.ImageSop; Frame frame = imageSopProvider.Frame; if (frame.SliceLocation != currentSliceLocation) { currentSliceLocation = frame.SliceLocation; try { DynamicTePresentationImage t2Image = CreateT2Image(imageSop, frame); t2DisplaySet.PresentationImages.Add(t2Image); } catch (Exception e) { Platform.Log(LogLevel.Error, e); desktopWindow.ShowMessageBox("Unable to create T2 series. Please check the log for details.", MessageBoxActions.Ok); break; } } string message = String.Format("Processing {0} of {1} images", i, selectedDisplaySet.PresentationImages.Count); i++; BackgroundTaskProgress progress = new BackgroundTaskProgress(i, selectedDisplaySet.PresentationImages.Count, message); context.ReportProgress(progress); } }, false); ProgressDialog.Show(task, desktopWindow, true, ProgressBarStyle.Blocks); viewer.LogicalWorkspace.ImageSets[0].DisplaySets.Add(t2DisplaySet); }
public override List <IDisplaySet> CreateDisplaySets(Series series) { List <IDisplaySet> displaySets = new List <IDisplaySet>(); if (IsValidPETFusionSeries(series)) { var fuseableBaseSeries = new List <Series>(FindFuseableBaseSeries(series)); if (fuseableBaseSeries.Count > 0) { string error; if (!CheckPETFusionSeries(series, out error)) { // if there is an error with the PET series, avoid trying to generate the volume entirely // instead, generate a placeholder series for each base series foreach (var baseSeries in fuseableBaseSeries) { displaySets.Add(CreateFusionErrorDisplaySet(baseSeries, series, error)); } return(displaySets); } var overlayFrames = GetFrames(series.Sops); using (var fusionOverlayData = new FusionOverlayData(overlayFrames)) { foreach (var baseSeries in fuseableBaseSeries) { if (!CheckBaseSeries(baseSeries, out error)) { // if there is an error with a single base series, generate a placeholder series displaySets.Add(CreateFusionErrorDisplaySet(baseSeries, series, error)); continue; } var descriptor = new PETFusionDisplaySetDescriptor(baseSeries.GetIdentifier(), series.GetIdentifier(), IsAttenuationCorrected(series.Sops[0])); var displaySet = new DisplaySet(descriptor); using (var sops = new DisposableList <Sop>(baseSeries.Sops.OfType <ImageSop>().Select(s => new ImageSop(new FusionSopDataSource(s.DataSource, _fusionType, overlayFrames))))) { foreach (var baseFrame in GetFrames(sops)) { using (var fusionOverlaySlice = fusionOverlayData.CreateOverlaySlice(baseFrame)) { var fus = new FusionPresentationImage(baseFrame, fusionOverlaySlice); displaySet.PresentationImages.Add(fus); } } } displaySet.PresentationImages.Sort(); displaySets.Add(displaySet); } } } } return(displaySets); }
public static void Create(IDesktopWindow desktopWindow, IImageViewer viewer) { IDisplaySet selectedDisplaySet = viewer.SelectedImageBox.DisplaySet; string name = String.Format("{0} - Dynamic TE", selectedDisplaySet.Name); IDisplaySet t2DisplaySet = new DisplaySet(name, ""); double currentSliceLocation = 0.0; BackgroundTask task = new BackgroundTask( delegate(IBackgroundTaskContext context) { int i = 0; foreach (IPresentationImage image in selectedDisplaySet.PresentationImages) { IImageSopProvider imageSopProvider = image as IImageSopProvider; if (imageSopProvider == null) continue; ImageSop imageSop = imageSopProvider.ImageSop; Frame frame = imageSopProvider.Frame; if (frame.SliceLocation != currentSliceLocation) { currentSliceLocation = frame.SliceLocation; try { DynamicTePresentationImage t2Image = CreateT2Image(imageSop, frame); t2DisplaySet.PresentationImages.Add(t2Image); } catch (Exception e) { Platform.Log(LogLevel.Error, e); desktopWindow.ShowMessageBox("Unable to create T2 series. Please check the log for details.", MessageBoxActions.Ok); break; } } string message = String.Format("Processing {0} of {1} images", i, selectedDisplaySet.PresentationImages.Count); i++; BackgroundTaskProgress progress = new BackgroundTaskProgress(i, selectedDisplaySet.PresentationImages.Count, message); context.ReportProgress(progress); } }, false); ProgressDialog.Show(task, desktopWindow, true, ProgressBarStyle.Blocks); viewer.LogicalWorkspace.ImageSets[0].DisplaySets.Add(t2DisplaySet); }
// create a display config with a little more information filled. private DisplayConfiguration CreateDisplayConfig() { Database db = Application.DocumentManager.MdiActiveDocument.Database; Transaction trans = db.TransactionManager.StartTransaction(); DisplayRepresentationManager drm = new DisplayRepresentationManager(db); ObjectId currentDisConfId = drm.DisplayConfigurationIdForCurrentViewport; DisplayConfiguration currentDisConf = trans.GetObject(currentDisConfId, OpenMode.ForRead) as DisplayConfiguration; DisplayConfiguration dc = new DisplayConfiguration(); try { DisplaySet ds = new DisplaySet(); ds.SetToStandard(db); ds.SubSetDatabaseDefaults(db); // top dc.ViewDependentCombinations.Add(new ViewDependentCombination(new Vector3d(0, 0, 1), DictionaryDisplaySet.GetStandardPlanId(db))); // for bottom. No DictionaryDisplaySet.GetStandardXxxId for Plan Diagnostic, so get it from the name. ObjectId id = DictionaryDisplaySet.GetStandardSet("Plan Diagnostic", db); if (id != ObjectId.Null) { dc.ViewDependentCombinations.Add(new ViewDependentCombination(new Vector3d(0, 0, -1), id)); } else // if not found, let's use Reflected. { dc.ViewDependentCombinations.Add(new ViewDependentCombination(new Vector3d(0, 0, -1), DictionaryDisplaySet.GetStandardReflectedId(db))); //buttom } dc.ViewDependentCombinations.Add(new ViewDependentCombination(new Vector3d(-1, 0, 0), DictionaryDisplaySet.GetStandardSectionElevId(db))); // left dc.ViewDependentCombinations.Add(new ViewDependentCombination(new Vector3d(1, 0, 0), DictionaryDisplaySet.GetStandardSectionElevId(db))); // right dc.ViewDependentCombinations.Add(new ViewDependentCombination(new Vector3d(0, -1, 0), DictionaryDisplaySet.GetStandardSectionElevId(db))); // front dc.ViewDependentCombinations.Add(new ViewDependentCombination(new Vector3d(0, 1, 0), DictionaryDisplaySet.GetStandardSectionElevId(db))); // back // try adding DefaultViewDependentViewSet here. dc.DefaultViewDependentViewSet = DictionaryDisplaySet.GetStandardModelId(db); DictionaryDisplayConfiguration dictDisplayConfigs = new DictionaryDisplayConfiguration(db); string newName = GetNewName(); dictDisplayConfigs.AddNewRecord(newName, dc); trans.AddNewlyCreatedDBObject(dc, true); trans.Commit(); } catch (System.Exception) { trans.Abort(); } finally { trans.Dispose(); } return(dc); }
private static DisplaySet CreateFusionErrorDisplaySet(Series baseSeries, Series fusionSeries, string error) { // create a basic descriptor that's templated from the real PET fusion display descriptor var baseDescriptor = new PETFusionDisplaySetDescriptor(baseSeries.GetIdentifier(), fusionSeries.GetIdentifier(), IsAttenuationCorrected(fusionSeries.Sops[0])); var descriptor = new BasicDisplaySetDescriptor { Description = baseDescriptor.Description, Name = baseDescriptor.Name, Number = baseDescriptor.Number, Uid = baseDescriptor.Uid }; var displaySet = new DisplaySet(descriptor); displaySet.PresentationImages.Add(new ErrorPresentationImage(SR.MessageFusionError + Environment.NewLine + string.Format(SR.FormatReason, error))); return(displaySet); }
/// <summary> /// Called to create a clipboard item representing a display set. /// </summary> /// <param name="displaySet"></param> /// <param name="selectionStrategy"></param> /// <returns></returns> public virtual ClipboardItem CreateDisplaySetItem(IDisplaySet displaySet, IImageSelectionStrategy selectionStrategy = null) { if (displaySet.PresentationImages.Count == 0) { throw new ArgumentException("DisplaySet must have at least one image."); } var presentationImage = displaySet.ImageBox != null && displaySet.ImageBox.SelectedTile != null && displaySet.ImageBox.SelectedTile.PresentationImage != null ? displaySet.ImageBox.SelectedTile.PresentationImage : displaySet.PresentationImages[displaySet.PresentationImages.Count / 2]; var clientRectangle = presentationImage.ClientRectangle; if (clientRectangle.IsEmpty) { clientRectangle = new Rectangle(new Point(), presentationImage.SceneSize); } if (selectionStrategy == null) { if (displaySet.PresentationImages.Count == 1) { // Add as a single image. return(CreatePresentationImageItem(displaySet.PresentationImages[0])); } else { return(CreateDisplaySetItem(displaySet.Clone(), clientRectangle)); } } else { List <IPresentationImage> images = new List <IPresentationImage>(selectionStrategy.GetImages(displaySet)); if (images.Count == 1) { // Add as a single image. return(CreatePresentationImageItem(images[0])); } else { string name = String.Format("{0} - {1}", selectionStrategy.Description, displaySet.Name); displaySet = new DisplaySet(name, displaySet.Uid) { Description = displaySet.Description, Number = displaySet.Number }; images.ForEach(image => displaySet.PresentationImages.Add(image.Clone())); return(CreateDisplaySetItem(displaySet, clientRectangle)); } } }
private void Setting_Load(object sender, EventArgs e) { try { DisplaySet.Clear(); DisplaySet.ReadXml(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\弹幕姬\\Plugins\\setting.xml"); dataGridView1.DataSource = DisplaySet; dataGridView1.DataMember = "event"; } catch (Exception ex) { MessageBox.Show("載入預設檔失敗,請檢查插件目錄下是否存在配置文件! 詳細錯誤信息: \n" + ex.Message); } }
/// <summary> /// 视图参数设置 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void dispSet_Click(object sender, RoutedEventArgs e) { if (this.ImsMap == null) { return; } if (catalog.ActiveMapDoc != null && catalog.ActiveMapDoc.Display) { if (dispOption == null) { dispOption = new DisplaySet(); dispOption.IMSCatalog = this.IMSCatalog; } dispOption.Show(); } }
private void TestSortingDisplaySetsBySeriesNumber(bool reverse) { DisplaySetCollection orderedCollection = new DisplaySetCollection(); DisplaySetCollection nonOrderedCollection = new DisplaySetCollection(); for (int i = 1; i <= 20; ++i) { string id = i.ToString(); DisplaySet displaySet = new DisplaySet(id, id); ImageSop sop = NewImageSop(id, id, i); IPresentationImage image = new DicomGrayscalePresentationImage(sop.Frames[1]); sop.Dispose(); IImageSopProvider sopProvider = (IImageSopProvider)image; DicomMessageSopDataSource dataSource = ((DicomMessageSopDataSource)sopProvider.ImageSop.DataSource); dataSource.SourceMessage.DataSet[DicomTags.SeriesNumber].SetInt32(0, i); displaySet.PresentationImages.Add(image); orderedCollection.Add(displaySet); } Randomize(orderedCollection, nonOrderedCollection); Debug.WriteLine("Before Sort\n------------------------\n"); CollectionUtils.ForEach(nonOrderedCollection, delegate(IDisplaySet displaySet) { Debug.WriteLine(String.Format("name: {0}", displaySet.Name)); }); nonOrderedCollection.Sort(new SeriesNumberComparer(reverse)); Debug.WriteLine("\nAfter Sort\n------------------------\n"); CollectionUtils.ForEach(nonOrderedCollection, delegate(IDisplaySet displaySet) { Debug.WriteLine(String.Format("name: {0}", displaySet.Name)); }); int j = reverse ? 20 : 1; foreach (IDisplaySet set in nonOrderedCollection) { Assert.AreEqual(j.ToString(), set.Name); j += reverse ? -1 : 1; } foreach (DisplaySet set in nonOrderedCollection) { set.Dispose(); } foreach (DisplaySet set in orderedCollection) { set.Dispose(); } }
public override List<IDisplaySet> CreateDisplaySets(Series series) { List<IDisplaySet> displaySets = new List<IDisplaySet>(); if (IsValidPETFusionSeries(series)) { var fuseableBaseSeries = new List<Series>(FindFuseableBaseSeries(series)); if (fuseableBaseSeries.Count > 0) { string error; if (!CheckPETFusionSeries(series, out error)) { // if there is an error with the PET series, avoid trying to generate the volume entirely // instead, generate a placeholder series for each base series foreach (var baseSeries in fuseableBaseSeries) displaySets.Add(CreateFusionErrorDisplaySet(baseSeries, series, error)); return displaySets; } using (var fusionOverlayData = new FusionOverlayData(GetFrames(series.Sops))) { foreach (var baseSeries in fuseableBaseSeries) { if (!CheckBaseSeries(baseSeries, out error)) { // if there is an error with a single base series, generate a placeholder series displaySets.Add(CreateFusionErrorDisplaySet(baseSeries, series, error)); continue; } var descriptor = new PETFusionDisplaySetDescriptor(baseSeries.GetIdentifier(), series.GetIdentifier(), IsAttenuationCorrected(series.Sops[0])); var displaySet = new DisplaySet(descriptor); foreach (var baseFrame in GetFrames(baseSeries.Sops)) { using (var fusionOverlaySlice = fusionOverlayData.CreateOverlaySlice(baseFrame)) { var fus = new FusionPresentationImage(baseFrame, fusionOverlaySlice); displaySet.PresentationImages.Add(fus); } } displaySet.PresentationImages.Sort(); displaySets.Add(displaySet); } } } } return displaySets; }
//////////////////////////// //// MATERIALS //////////////////////////// private void DisplayPropsMaterial() { Database db = Application.DocumentManager.MdiActiveDocument.Database; TransactionManager tm = db.TransactionManager; Transaction trans = db.TransactionManager.StartTransaction(); try { Application.DocumentManager.MdiActiveDocument.Editor.WriteMessage("=======================================\n"); Application.DocumentManager.MdiActiveDocument.Editor.WriteMessage("Get all the Display Properties and the Display components works with AecDbMaterialDef in ZAxis view\n"); Application.DocumentManager.MdiActiveDocument.Editor.WriteMessage("=======================================\n"); DisplayRepresentationManager drm = new DisplayRepresentationManager(db); Viewport vport = new Viewport(); BlockTableRecord btr = (BlockTableRecord)trans.GetObject(db.CurrentSpaceId, OpenMode.ForWrite, false); btr.AppendEntity(vport); trans.AddNewlyCreatedDBObject(vport, true); ObjectId viewportId = vport.ObjectId; Vector3d viewDirection = Vector3d.ZAxis; ObjectId setId = drm.DisplayRepresentationSet(viewportId, viewDirection); DisplaySet ds = trans.GetObject(setId, OpenMode.ForWrite) as DisplaySet; DisplayRepresentationIdCollection repIds = ds.DisplayRepresentationIds; DisplayRepresentation dr = null; foreach (ObjectId repId in repIds) { dr = trans.GetObject(repId, OpenMode.ForRead) as DisplayRepresentation; if (dr.WorksWith.Name == "AecDbMaterialDef") { ObjectId dpId = dr.DefaultDisplayPropertiesId; DisplayProperties dp = trans.GetObject(dpId, OpenMode.ForWrite) as DisplayProperties; ListDisplayProperties(dp); } } } catch (System.Exception e) { Application.DocumentManager.MdiActiveDocument.Editor.WriteMessage(e.Message + "\n"); trans.Abort(); } finally { trans.Dispose(); } return; }
private static DisplaySet CreateDisplaySet(IEnumerable <ImageSop> sops) { var descriptor = new XDisplaySetDescriptor(CollectionUtils.FirstElement(sops).DataSource); var displaySet = new DisplaySet(descriptor); foreach (var sop in sops) { foreach (var image in PresentationImageFactory.Create(sop)) { if (image is IVoiLutProvider) { ((IVoiLutProvider)image).VoiLutManager.InstallVoiLut(new IdentityVoiLinearLut()); } displaySet.PresentationImages.Add(image); } } return(displaySet); }
private IImageSet CreateImageSet(string patientId, string description) { string studyInstanceUid = DicomUid.GenerateUid().UID; string seriesInstanceUid = DicomUid.GenerateUid().UID; string sopInstanceUid = DicomUid.GenerateUid().UID; ImageSop sop = CreateImageSop(patientId, studyInstanceUid, seriesInstanceUid, sopInstanceUid); DicomGrayscalePresentationImage img = new DicomGrayscalePresentationImage(sop.Frames[1]); sop.Dispose(); DisplaySet displaySet = new DisplaySet(patientId, seriesInstanceUid); displaySet.PresentationImages.Add(img); ImageSet imageSet = new ImageSet(); imageSet.PatientInfo = description; imageSet.DisplaySets.Add(displaySet); return imageSet; }
public void LayoutImageBoxes() { IImageViewer viewer = new ImageViewerComponent(); viewer.PhysicalWorkspace.SetImageBoxGrid(2, 1); IDisplaySet displaySet1 = new DisplaySet(); IDisplaySet displaySet2 = new DisplaySet(); PresentationImage image1 = new TestPresentationImage(); PresentationImage image2 = new TestPresentationImage(); displaySet1.PresentationImages.Add(image1); displaySet2.PresentationImages.Add(image2); viewer.PhysicalWorkspace.ImageBoxes[0].DisplaySet = displaySet1; viewer.PhysicalWorkspace.ImageBoxes[1].DisplaySet = displaySet2; viewer.PhysicalWorkspace.SetImageBoxGrid(1, 1); Assert.IsFalse(displaySet1.Visible); Assert.IsFalse(displaySet2.Visible); }
public static IClipboardItem CreateDisplaySetItem(IDisplaySet displaySet, IImageSelectionStrategy selectionStrategy) { if (displaySet.ImageBox == null || displaySet.ImageBox.SelectedTile == null || displaySet.ImageBox.SelectedTile.PresentationImage == null) { throw new ArgumentException("DisplaySet must have a selected image."); } Rectangle clientRectangle = displaySet.ImageBox.SelectedTile.PresentationImage.ClientRectangle; if (selectionStrategy == null) { if (displaySet.PresentationImages.Count == 1) { // Add as a single image. return(CreatePresentationImageItem(displaySet.PresentationImages[0])); } else { return(CreateDisplaySetItem(displaySet.Clone(), clientRectangle)); } } else { List <IPresentationImage> images = new List <IPresentationImage>(selectionStrategy.GetImages(displaySet)); if (images.Count == 1) { // Add as a single image. return(CreatePresentationImageItem(images[0])); } else { string name = String.Format("{0} - {1}", selectionStrategy.Description, displaySet.Name); displaySet = new DisplaySet(name, displaySet.Uid) { Description = displaySet.Description, Number = displaySet.Number }; images.ForEach(delegate(IPresentationImage image) { displaySet.PresentationImages.Add(image.Clone()); }); return(CreateDisplaySetItem(displaySet, clientRectangle)); } } }
public void LayoutImageBoxes() { IImageViewer viewer = new ImageViewerComponent(); viewer.PhysicalWorkspace.SetImageBoxGrid(2, 1); IDisplaySet displaySet1 = new DisplaySet(); IDisplaySet displaySet2 = new DisplaySet(); PresentationImage image1 = new TestPresentationImage(); PresentationImage image2 = new TestPresentationImage(); displaySet1.PresentationImages.Add(image1); displaySet2.PresentationImages.Add(image2); viewer.PhysicalWorkspace.ImageBoxes[0].DisplaySet = displaySet1; viewer.PhysicalWorkspace.ImageBoxes[1].DisplaySet = displaySet2; viewer.PhysicalWorkspace.SetImageBoxGrid(1, 1); Assert.IsFalse(displaySet1.Visible); Assert.IsFalse(displaySet2.Visible); }
private void button1_Click(object sender, EventArgs e) { if (DisplaySet == null) { MessageBox.Show("當前數據内容爲空,無法保存!", "保存錯誤", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } try { string filename = setting_file_path; System.IO.FileStream stream = new System.IO.FileStream (filename, System.IO.FileMode.Create); DisplaySet.WriteXml(stream); this.DialogResult = DialogResult.OK; this.Close(); } catch (Exception ex) { MessageBox.Show("導出設置檔失敗,原始錯誤檔如下: \n" + ex.Message); } }
private IImageSet CreateImageSet(string patientId, string description) { string studyInstanceUid = DicomUid.GenerateUid().UID; string seriesInstanceUid = DicomUid.GenerateUid().UID; string sopInstanceUid = DicomUid.GenerateUid().UID; ImageSop sop = CreateImageSop(patientId, studyInstanceUid, seriesInstanceUid, sopInstanceUid); DicomGrayscalePresentationImage img = new DicomGrayscalePresentationImage(sop.Frames[1]); sop.Dispose(); DisplaySet displaySet = new DisplaySet(patientId, seriesInstanceUid); displaySet.PresentationImages.Add(img); ImageSet imageSet = new ImageSet(); imageSet.PatientInfo = description; imageSet.DisplaySets.Add(displaySet); return(imageSet); }
/// <summary> /// Compares two <see cref="IDisplaySet"/>s. /// </summary> public override int Compare(IDisplaySet x, IDisplaySet y) { DisplaySet displaySet1 = x as DisplaySet; DisplaySet displaySet2 = y as DisplaySet; if (ReferenceEquals(displaySet1, displaySet2)) { return(0); //same object or both are null } //at this point, at least one of x or y is non-null and they are not the same object if (displaySet1 == null) { return(-ReturnValue); // x > y (because we want x at the end for non-reverse sorting) } if (displaySet2 == null) { return(ReturnValue); // x < y (because we want y at the end for non-reverse sorting) } return(base.Compare(GetCompareValues(displaySet1), GetCompareValues(displaySet2))); }
public void TestImage() { if (ImageViewer.SelectedImageBox == null) return; try { var sphere = new EllipsoidPrimitive {FrontTopLeft = new Vector3D(85, 85, 85), BackBottomRight = new Vector3D(115, 115, 115), Color = Color.Yellow}; var image = new VtkTestPresentationImage(); image.OverlayGraphics3D.Add(sphere); var dset = new DisplaySet {Description = "blah", Name = "blah", Uid = Guid.NewGuid().ToString()}; dset.PresentationImages.Add(image); ImageViewer.SelectedImageBox.DisplaySet = dset; ImageViewer.SelectedImageBox.Draw(); } catch (Exception ex) { ExceptionHandler.Report(ex, Context.DesktopWindow); } }
private static DisplaySet CreateFusionErrorDisplaySet(Series baseSeries, Series fusionSeries, string error) { // create a basic descriptor that's templated from the real PET fusion display descriptor var baseDescriptor = new PETFusionDisplaySetDescriptor(baseSeries.GetIdentifier(), fusionSeries.GetIdentifier(), IsAttenuationCorrected(fusionSeries.Sops[0])); var descriptor = new BasicDisplaySetDescriptor {Description = baseDescriptor.Description, Name = baseDescriptor.Name, Number = baseDescriptor.Number, Uid = baseDescriptor.Uid}; var displaySet = new DisplaySet(descriptor); displaySet.PresentationImages.Add(new ErrorPresentationImage(SR.MessageFusionError + Environment.NewLine + string.Format(SR.FormatReason, error))); return displaySet; }
/// <summary> /// Creates a clone of a <see cref="IPresentationImage"/> suitable for static export. /// </summary> /// <remarks> /// Functionally, this method is similar to <see cref="IPresentationImage.Clone"/>. /// However, this method also fills the <see cref="IPresentationImage.ParentDisplaySet"/> /// property with a static <see cref="IDisplaySet"/> instance whose properties are a snapshot /// of the source image's parent display set at the time the clone was created. /// This makes the resulting images suitable for export with features like annotation overlay /// enabled, as certain items (specifically, display set description and number) depend on /// this information. /// </remarks> /// <param name="presentationImage">The source image to be cloned.</param> /// <returns>A clone of the source image.</returns> /// <exception cref="ArgumentNullException">Thrown if <paramref name="presentationImage"/> is null.</exception> public static IPresentationImage ClonePresentationImage(IPresentationImage presentationImage) { Platform.CheckForNullReference(presentationImage, "presentationImage"); var imageClone = presentationImage.Clone(); try { var parentDisplaySet = presentationImage.ParentDisplaySet; if (parentDisplaySet != null) { var descriptor = parentDisplaySet.Descriptor; if (descriptor != null) parentDisplaySet = new DisplaySet(new BasicDisplaySetDescriptor {Description = descriptor.Description, Name = descriptor.Name, Number = descriptor.Number, Uid = descriptor.Uid}); else parentDisplaySet = new DisplaySet(parentDisplaySet.Name, parentDisplaySet.Uid); parentDisplaySet.PresentationImages.Add(imageClone); } } catch (Exception ex) { Platform.Log(LogLevel.Debug, ex, "Failed to create a dummy parent display set for the cloned presentation image"); } return imageClone; }
/// <summary> /// Called to create a clipboard item representing a display set. /// </summary> /// <param name="displaySet"></param> /// <param name="selectionStrategy"></param> /// <returns></returns> public virtual ClipboardItem CreateDisplaySetItem(IDisplaySet displaySet, IImageSelectionStrategy selectionStrategy = null) { if (displaySet.PresentationImages.Count == 0) throw new ArgumentException("DisplaySet must have at least one image."); var presentationImage = displaySet.ImageBox != null && displaySet.ImageBox.SelectedTile != null && displaySet.ImageBox.SelectedTile.PresentationImage != null ? displaySet.ImageBox.SelectedTile.PresentationImage : displaySet.PresentationImages[displaySet.PresentationImages.Count/2]; var clientRectangle = presentationImage.ClientRectangle; if (clientRectangle.IsEmpty) clientRectangle = new Rectangle(new Point(), presentationImage.SceneSize); if (selectionStrategy == null) { if (displaySet.PresentationImages.Count == 1) { // Add as a single image. return CreatePresentationImageItem(displaySet.PresentationImages[0]); } else { return CreateDisplaySetItem(displaySet.Clone(), clientRectangle); } } else { List<IPresentationImage> images = new List<IPresentationImage>(selectionStrategy.GetImages(displaySet)); if (images.Count == 1) { // Add as a single image. return CreatePresentationImageItem(images[0]); } else { string name = String.Format("{0} - {1}", selectionStrategy.Description, displaySet.Name); displaySet = new DisplaySet(name, displaySet.Uid) {Description = displaySet.Description, Number = displaySet.Number}; images.ForEach(image => displaySet.PresentationImages.Add(image.Clone())); return CreateDisplaySetItem(displaySet, clientRectangle); } } }
public static void AddKeyImage(IPresentationImage image) { Platform.CheckForNullReference(image, "image"); Platform.CheckForNullReference(image.ImageViewer, "image.ImageViewer"); if (!PermissionsHelper.IsInRole(AuthorityTokens.KeyImages)) throw new PolicyException(SR.ExceptionCreateKeyImagePermissionDenied); var sopProvider = image as IImageSopProvider; if (sopProvider == null) throw new ArgumentException("The image must be an IImageSopProvider.", "image"); IDisplaySet displaySet = null; foreach (var set in image.ImageViewer.LogicalWorkspace.ImageSets) { if (set.Descriptor.Equals(image.ParentDisplaySet.ParentImageSet.Descriptor)) { foreach (var d in set.DisplaySets) { var displaySetDescriptor = d.Descriptor as KeyImageDisplaySetDescriptor; if (displaySetDescriptor != null && displaySetDescriptor.SourceStudy.StudyInstanceUid.Equals(sopProvider.Sop.StudyInstanceUid)) { displaySet = d; break; } } break; } } if (displaySet == null) { var displaySetDescriptor = new KeyImageDisplaySetDescriptor(new StudyIdentifier(sopProvider.ImageSop)); displaySet = new DisplaySet(displaySetDescriptor); bool displaySetAdded = false; foreach (var imageSet in image.ImageViewer.LogicalWorkspace.ImageSets) { if (imageSet.Descriptor.Equals(image.ParentDisplaySet.ParentImageSet.Descriptor)) { imageSet.DisplaySets.Add(displaySet); displaySetAdded = true; break; } } if (!displaySetAdded) { throw new ApplicationException(SR.MessageCreateKeyImageFailed); } } var presentationImage = image.CreateFreshCopy(); var presentationState = DicomSoftcopyPresentationState.Create(image); var basicImage = presentationImage as BasicPresentationImage; if (basicImage != null) basicImage.PresentationState = presentationState; displaySet.PresentationImages.Add(presentationImage); foreach (var imageBox in image.ImageViewer.PhysicalWorkspace.ImageBoxes) { if (imageBox.DisplaySet != null && imageBox.DisplaySet.Descriptor.Uid == displaySet.Descriptor.Uid) { var physicalImage = presentationImage.CreateFreshCopy(); presentationState = DicomSoftcopyPresentationState.Create(image); basicImage = physicalImage as BasicPresentationImage; if (basicImage != null) basicImage.PresentationState = presentationState; imageBox.DisplaySet.PresentationImages.Add(physicalImage); imageBox.Draw(); } } }