Leadtools.Dicom.Common.Extensions Namespace : SaveXmlCallback Delegate |
public delegate bool SaveXmlCallback( SaveXmlData data )
'Declaration Public Delegate Function SaveXmlCallback( _ ByVal data As SaveXmlData _ ) As Boolean
'Usage Dim instance As New SaveXmlCallback(AddressOf HandlerMethod)
public delegate bool SaveXmlCallback( SaveXmlData^ data )
Imports Leadtools.Dicom Imports Leadtools.Dicom.Common Imports Leadtools.Dicom.Common.Extensions Imports Leadtools.Dicom.Common.Linq Imports Leadtools.Dicom.Common.Linq.BasicDirectory Imports Leadtools Imports Leadtools.Dicom.Common.DataTypes Public Sub SaveXmlCallbackExample() Dim dicomFileNameIn As String = Path.Combine(LEAD_VARS.ImagesDir, "IMAGE3.dcm") Dim xmlFileNameOut As String = Path.Combine(LEAD_VARS.ImagesDir, "test.xml") Dim dicomFileNameOut As String = Path.Combine(LEAD_VARS.ImagesDir, "test.dcm") ' Initialize DICOM engine DicomEngine.Startup() Dim ds As DicomDataSet = New DicomDataSet() ' Load an existing DICOM file ds.Load(dicomFileNameIn, DicomDataSetLoadFlags.None) ' Save as XML to a file with no binary data ' For the demo, keep the xml output file size small by skipping the pixel data ' Use the SaveXmlCallback delegate to customize the xml file Dim xmlFlags As DicomDataSetSaveXmlFlags = DicomDataSetSaveXmlFlags.IgnoreBinaryData Or DicomDataSetSaveXmlFlags.TrimWhiteSpace Or DicomDataSetSaveXmlFlags.TagWithCommas ds.SaveXml(xmlFileNameOut, xmlFlags, New SaveXmlCallback(AddressOf MySaveXmlCallback)) ' Use a LoadmlCallback to read the customized xml file ds.LoadXml(xmlFileNameOut, DicomDataSetLoadXmlFlags.None, New LoadXmlBeforeElementCallback(AddressOf MyLoadXmlBeforeElementCallback), New LoadXmlAfterElementCallback(AddressOf MyLoadXmlAfterElementCallback)) ' Save the result -- there will be no pixel data ds.Save(dicomFileNameOut, DicomDataSetSaveFlags.None) DicomEngine.Shutdown() End Sub Private Function MySaveXmlCallback(ByVal data As SaveXmlData) As Boolean 'string sTag = data.attributes["tag"]; 'if (sTag.StartsWith("0008")) ' return false; If data.NodeType = DicomXmlNodeType.Comment Then data.Comment = "COMMENT: customized xml file using the SaveXmlCallback" Return False End If If data.ElementName = "dataset" Then data.Attributes.Add("new_attribute", "some_value") ElseIf data.ElementName = "element" Then data.ElementName = "element_newname" Dim sTagValue As String = data.Attributes("tag") data.Attributes.Remove("tag") data.Attributes.Add("tag_newname", sTagValue) End If Return True End Function Private Function MyLoadXmlBeforeElementCallback(ByVal data As LoadXmlBeforeElementData) As Boolean Dim sTagValue As String = data.Attributes("tag_newname") Dim tag As Long = 0 sTagValue = sTagValue.Replace(",", String.Empty) If Long.TryParse(sTagValue, System.Globalization.NumberStyles.HexNumber, Nothing, tag) Then data.Tag = tag End If Return True End Function Private Sub MyLoadXmlAfterElementCallback(ByVal data As LoadXmlAfterElementData) If data.DicomElement.Tag = DicomTag.PixelData Then ' here you could call one of the following to set the pixel data ' data.DicomDataSet.SetBinaryValue ' data.DicomDataSet.SetImage() End If End Sub Public NotInheritable Class LEAD_VARS Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images" End Class
SaveXmlCallback Members
Leadtools.Dicom.Common.Extensions Namespace
LoadXml(DicomDataSet,String,DicomDataSetLoadXmlFlags,LoadXmlBeforeElementCallback,LoadXmlAfterElementCallback) Method
LoadXml(DicomDataSet,Stream,DicomDataSetLoadXmlFlags,LoadXmlBeforeElementCallback,LoadXmlAfterElementCallback) Method
LoadXml(DicomDataSet,String,DicomDataSetLoadXmlFlags) Method
LoadXml(DicomDataSet,Stream,DicomDataSetLoadXmlFlags) Method
SaveXml(DicomDataSet,String,DicomDataSetSaveXmlFlags,SaveXmlCallback) Method
SaveXml(DicomDataSet,Stream,DicomDataSetSaveXmlFlags,SaveXmlCallback) Method
SaveXml(DicomDataSet,String,DicomDataSetSaveXmlFlags) Method
SaveXml(DicomDataSet,Stream,DicomDataSetSaveXmlFlags) Method
SaveXmlCallback Delegate
LoadXmlBeforeElementCallback Delegate
LoadXmlAfterElementCallback Delegate