Skip to content

v0.5.0

Compare
Choose a tag to compare
@Enet4 Enet4 released this 28 Apr 17:22
· 1304 commits to master since this release

This release marks yet another major milestone for the DICOM-rs project, featuring extended support for DICOM date and time values, a new library crate (dicom-pixeldata), more tools (dicom-toimage, dicom-fromimage, dicom-dump), and a multitude of improvements and bug fixes across the various crates.

Hopefully the release cycle of future versions will be shorter, so as to make each version bump less overwhelming.

Changes

  • [core] The element API has been revamped to provide more accurate support for DICOM time and date values. (#137 #139 #143 #179 #185 #196 @jmlaka) (#213 #214)
    • Instead of returning chrono instances, most methods now return custom types with awareness of partially defined dates and times (e.g. 2014 being different from 2014-01-01). Methods which return chrono dates and times are still available under different names.
    • Date and time ranges can also be retrieved from DICOM primitive values.
  • [object] The dicom_object::pixeldata module has been marked for removal. See dicom-pixeldata instead! (#133)
  • [core] to_str methods now automatically trim trailing whitespace from the inner string value (same behavior as to_clean_str, which is now deprecated). (#198 @mfreeborn)
  • [dump] The crate dcmdump is deprecated in favor of the new dicom-dump crate (#173 @charbeljc)
  • Error handling has been updated to use SNAFU version 0.7 (#202)
  • [encoding] Some APIs were changed to accommodate pixel data decoding and encoding adapters. (#152 @pevers)
  • [ul] The client association API was changed for more reliable control of presentation context handling and negotiation (#217 @natdash)
  • [parser] The parser crate was submitted to a clean-up which affected constructors and type parameters of some structs. (#239)

New

  • New crate dicom-pixeldata gives you APIs for working with pixel data, including turning them into images and multi-dimensional arrays (#112 @pevers) (#153 #220 #229)
    • Support for some encapsulated pixel data encodings is available as native implementations,
      including RLE lossless (#152 @pevers) and various kinds of JPEG (#228 @ingwinlu).
    • To extend support for other transfer syntaxes, an integration with GDCM is available via the gdcm feature (#131 #176) (#222 @yigitsoy)
    • This crate includes a LUT implementation with common pixel data transformations (#234)
  • New tool dicom-fromimage (#210)
  • New tool dicom-toimage (#203)
  • New crate dicom-dump which functions both as a tool and as a library (#173 @charbeljc) (#227)
  • Logging is now done project wide using tracing (#236)
  • [parser] A new lazy data set reader abstraction was added. This is still experimental and not yet used by the ecosystem, but will eventually play a key role in future DICOM object implementations (#126)
  • [object] New OpenFileOptions API for specifying additional options to the file opening process (#199)
  • [object] New methods for element manipulation were added,
    including element_opt, element_by_name_opt, and remove_element. (#237 #224)
  • [dump] Can now dump more than one file at a time (#207 @natdash)
  • [dump] Added option --color=(auto|always|never) (#161 @charbeljc)
  • [storescu] Can now send more than one file at a time (#211 @natdash)

Fixes and Enhancements

  • Made transfer syntax registry more flexible against UIDs with null characters (#157 @BastienVigneron)
  • dump was revamped with width adjustments and format updates (#142)
  • [object] Clarified magic code check error (invalid DICOM file) #150
  • [storescu] Fixed issues in the PData value sending routine (#158 @charbeljc)
  • [scpproxy] Fixed PDU transmission issues (#162 @charbeljc)
  • [parser] Fixed encoder padding for even length data (#159)
  • [parser] Fixed data set sequence reading routine for deeply nested data sets (#168)
  • [object] Use length property for in-memory DICOM object construction (#171)
  • [parser] Adjusted dataset writer to not trust the length reported in the file header (#172)
  • [core] Fixed signature of PrimitiveValue::new_i32 (#178 @jmlaka)
  • [parser] Updated text codec of stateful encoder (#156)
  • [ul] Solved bugs related with PDU sending and receiving (#165)
  • [object] InMemDicomObject::with_meta was fixed (#225)
  • [dictionary-builder] [dictionary-std] Updated data element dictionary and builder (#191)
  • Corrected documentation for primitive values by (#197 @mfreeborn)
  • [dump] Fixed set_virtual_terminal call on Windows (#208)
  • [dump] Removed control code in text values (#205 @aaronzs)
  • Dependendy usage was constrained for faster builds (#235)

Miscellaneous

  • [encoding] Converted doc comment and fixed doctest of SpecificCharacterSet::from_code (#223)
  • Updated inventory to 0.2 and adjusted the transfer syntax collection factory (#219)
  • Updated byteordered to v0.6 (#186)
  • Updated deprecations for 0.5.0 (#190)
  • Made piece of code more compatible (#192 @jmlaka)
  • Added association test for Store SCU/SCP (#218)
  • Cargo clippy lint fixes (#195)
  • Use patched version of dicom-test-files (#231)

Crates

Updated crates:

  • dicom 0.5.0
  • dicom-core 0.5.0
  • dicom-encoding 0.5.0
  • dicom-transfer-syntax-registry 0.5.0
  • dicom-dictionary-std 0.5.0
  • dicom-parser 0.5.0
  • dicom-object 0.5.0
  • dicom-dump 0.5.0
  • dcmdump 0.5.0 (deprecated)
  • dicom-ul 0.4.0
  • dicom-scpproxy 0.4.0
  • dicom-dictionary-builder 0.3.0
  • dicom-echoscu 0.2.0
  • dicom-storescu 0.2.0

New crates:

  • dicom-pixeldata 0.1.0
  • fromimage 0.1.0
  • toimage 0.1.0

Thanks

This major version would not have been made possible with the combined effort of several people. In this version, I would like to add a special thank you to:

  • Juráj Mlaka (@jmlaka) for bringing desirable changes to how DICOM date and time values are accessed and manipulated, including support for date-time ranges;
  • Peter Evers (@pevers) for driving the much anticipated pixeldata initiative;

Moreover, a warm gratitude to the development efforts done by the following first contributors of DICOM-rs:

Full Changelog: v0.4.0...v0.5.0