Version 2.15 - Apr 06, 2022
Added: vararg in PersonName(String) constructor. Now accepting less than 5 elements in component groups. Added: allow parsing of decimal string using locale rules instead of standard rules to accomodate some non-conform datasets. Added: find(Identifier, FindListener), an asynchronous overload of find(Identifier) for QueryRetrieveSCU, BasicWorklistManagementSCU and HangingProtocolQueryRetrieveSCU, in order to be notified each time a response is received. Added: DataElement.getName and getKeyword. Updated: to DICOM 2022a.
Version 2.14 - Feb 06, 2021
Added: TemporalRange.equals Changed: Default implementation version name changed from "DeCaMino 2.14" to "DECAMINO_2_14" to conform to standard. Changed: When a date without time components is encoded in a data element with VR DT (DateTime), returned value is now a LocalDate instead of LocalDateTime or ZonedDateTime. Changed: Reading an erroneous file without a SOP class or without a SOP instance now only raise a warning and not an exception. Fixed: Person names were limited to 64 characters when writing, irrespectively of the number of names or name components. Fixed: Now ignore leading and trailing spaces within person name components. Fixed: When using multi-byte character set, apply correctly the length limit of data element values. Fixed: DateTime value without a day or without a day and a month now parsed correctly. Fixed: DataSet.getTemporals and DataSet.getPersonNames could throw ClassCastException. Updated: to DICOM 2021a.
Version 2.13 - May 04, 2020
Improved: Reading of multiframe datasets encoded with the Deflated Explicit VR Little Endian transfer syntax is faster. Added: Support for reading non-conform datasets encapsulating JP2 files instead of JPEG2000 codestreams. Fixed: Values of data elements of VR UC didn't honor the specific character set. Updated: to DICOM 2020b.
Version 2.12 - Dec 04, 2019
Improved: DataSet.getString now returns a concatenated string when the data element has multiple values. Improved: Support for very large files. Added: A PersonName constructor accepting the 3 component groups. Added: Dictionary.getUIDName, Dictionary.learnUID. Added: Plugin.getVersion. Fixed: Encoding of person names without alphabetic component group. Fixed: VOIWindowLinearExactColorModelDouble had wrong transfer type. Fixed: NullPointerException when instantiating a QueryRetrieveSCU without specifying a list of accepted SOP classes. Fixed: Calling QueryRetrieveSCU.getSupportedBySCP when the association was refused blocked indefinitely. Fixed: In example code QuerySCU, get was reported to be not supported when it was. Fixed: In example code WorklistManageSCU, add the missing procedure step start time in the query. Fixed: Moved Identifier.set(int, TemporalRange) to DataSet to allow for specifying a range in a sub-dataset of an identifier. Updated: to DICOM 2019e.
Version 2.11 - Mar 19, 2019
Changed: the VOI Presentation LUT is now handled by color models, and not color spaces anymore. The constructors of subclasses of VOIColorModel were changed accordingly, with a new argument implementing the interface Presentation. Improved: decamino.jar is now an explicit JPMS (Java 9) module Improved: DicomReadParam.setDestination is now always honored. Added: Experimental AlphaGenerator class to support image blending easily. Added: setWindow in the various VOI colormodel. Added: VOI*ColorModel.color for changing color spaces or alpha channel. Added: Tag.isPrivate. Added: DataElement.getVR and Dictionary.getVR. Added: DataSet.getFunctionGroupMacroSequence. Added: DicomReader.getSampleModel, DicomReadParam.setDestinationRaster and DicomReadParam.getDestinationRaster. Added: DicomReaderSpi.getInstance, DicomWriterSpi.getInstance. Added: DicomColorSpace.SingleComponent. Clarified DicomColorSpace javadoc. Added: DicomReadParam.getReadRealWorldValues et setReadRealWorldValues. Fixed: A bug introduced in 2.10 causing FileSet.add to throw a NPE. Fixed: When reading data set with float pixel data, some elements were read as unsigned integer instead of signed. Fixed: Data element whose VR depends on PixelRepresentation could be wrong if data element in a sequence. Fixed: DataElements.equals threw NPE for values of type Number when some elements are null. Fixed: NumberOfFrames now automatically set when using writeToSequence. Updated: DICOM dictionary to 2018e.
Version 2.10 - Oct 23, 2018
Changed: DeCaMino shipped as a single jar instead of two. The native library is now called decamino instead of jjjni. Changed: Sequences of data sets are now modeled as List
instead of Collection . Changed: ExceptionListener.exceptionOccured now correctly spelled exceptionOccurred. Changed: Error code ProtocoleViolation now correctly spelled ProtocolViolation. Improved: DeCaMino can now be used without the native library if needed. Encoding and decoding of JPEG-LS, 12-bits JPEG and JPEG 2000 pixel data are disabled if the native library cannot be loaded. Added: DataSet.getStream. Added: DicomReader.canDecodePixelData. Added: Support for the new TLS profiles (see SecureTransport javadoc). Added: ReceivedObject.getDicomMetadata. Added: DataSet.equals. Added: BufferedFileImageOutputStream and BufferedFileImageInputStream. Added: Outputs of type File are now accepted by DicomWriter. Added: Inputs of type File are now accepted by DicomReader (see DicomReader javadoc). Added: DataSet.getShorts and DataSet.getShort. Added: DicomColorSpace constants for built-in color spaces. Added: When writing Multi-frame Secondary Capture, if pixel data needs a modality LUT to fit the pixel format, and none is provided in the data set, DeCaMino computes an automatic modality LUT (rescale and intercept). Added: Convenient methods in DataSet: getPersonName, getPersonNames, getLocalDates, getTemporals, getLocalDateTimes, getZonedDateTimes, getLocalTimes. Added: QueryRetrieveSCU.discardReceivedData(). Fixed: Calling QueryRetrieveSCU.getSupportedBySCP or QueryRetrieveSCU.moveSupportedBySCP now blocks instead of returning false if called before negotiation completes. Fixed: Connecting using one of the DICOM profile could throw "Unsupported ciphersuite TLSv1". Fixed: DicomMetadata.isVideoEncoded always returned false. Fixed: DicomReader.getImageTypes could throw an exception if the object contained a VOI LUT. Fixed: Empty components in person names are now always null and not empty strings. Updated: DICOM dictionary to 2018c.
Version 2.09 - Jun 29, 2018
Changed: more compliant processing of UN VR, DicomMetaData.removeUnwritableElements behavior changed and deprecated, removal of class UnknownValue. Improved: allow decoding of data elements encoded with VR UN but which tag is in dictionary. Added: float and double pixel data. Added: 32-bit Int pixel data. Added: 1-bit pixel data. Added: helper methods in DataSet to read and write overlays. Applications that decode pixel data from the raw byte array value of OverlayData won't work anymore. Added: DataSet.canBeEncodedWith. Added: DataElement.isPrivate, canBeWritten, hasUnknownVR, getTag, getValue. Added: DicomMetadata.removePrivateElements and DataSet.removePrivateElements. Added: support for GE-private transfer syntax 1.2.840.113619.5.2. Added: support for non-standard file using implicit transfer syntax for file metadata. Added: DicomMetadata.getVOIViewExplanation. Added: helper methods DataSet.getStrings and DataSet.getLongs. Added: GSDF support, DicomColorSpace, DicomColorSpace.Gray. Added: Tag entries for repeating groups. Added: DicomMetaData.setWordPixelData, setFloatPixelData and setDoublePixelData. Fixed: unsupported DataType when writing float image without rescale/slope. Fixed: reading pixel data with bitsStored <=8 and bitsAllocated = 16. Fixed: now accept undefined length for VR UN. Updated: example classes Display.java (display DICOM only, read overlays), Dump.java (comments), Gateway.java (removed removeUnwritableElements), Transcode.java (updated comments and overlay processing added), QuerySCP (removed removeUnwritableElements), StoreSCP (removed removeUnwritableElements). Updated: DICOM dictionary to 2018a.