Documentation home page, Imebra home page

Imebra open source Dicom library

0.0.48

Copyright

Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009 by Paolo Brandoli.

The online version of this document can be found here: http://imebra.com/documentation/html/index.html

Introduction

Please read the License agreement first!

Imebra is an open source Dicom library. The library has been designed to handle Dicom files, but it includes also some classes that manage jpeg and other image files.

At the moment the library provides the following features:

Other features have been planned but have not been included in this release. The missed features are the following:

What Imebra does NOT do?

The library doesn't check for a Dicom stream validity; this feature will be introduced with the support for dicom objects.

Where to start

After reading the License agreement, you should read the Quick tour and the section The imebra's structure.

A guide that will help you to include Imebra in your project can be found in Adding Imebra to your project.

A detailed reference of the C++ classes that compose Imebra is included in this manual.

Changes log

Changes since version 0.0.47

Changes since version 0.0.46

Changes since version 0.0.45

Changes since version 0.0.44 (Beta)

Changes since version 0.0.41 (Alpha)

Changes since version 0.0.40 (Alpha)

Changes since version 0.0.38 (Alpha)

Changes since version 0.0.36 (Alpha)

Changes since version 0.0.35 (Alpha)

Changes since version 0.0.34 (Alpha)

Changes since version 0.0.33 (Alpha)

Changes since version 0.0.32 (Alpha)

Changes since version 0.0.31 (Alpha)

Changes since version 0.0.30 (Alpha)

Changes since version 0.0.29 (Alpha)

Changes since version 0.0.28 (Alpha)

Changes since version 0.0.27 (Alpha)

Changes since version 0.0.26 (Alpha)

Changes since version 0.0.25 (Alpha)

Changes since version 0.0.24 (Alpha)

Changes since version 0.0.22 (Alpha)

Changes since version 0.0.21 (Alpha)

New smart pointer's behaviour

Several users had difficulties in understanding the behaviour of the smart pointer implemented by the puntoexe::ptr class and the reference count mechanism in the puntoexe::baseObject. To solve the reported problems the reference counter mechanism has been changed from the version 0.0.31.

Up to the version 0.0.30 the reference counter was initialized to 1 by the constructor of puntoexe::baseObject, so a call to puntoexe::baseObject::addRef() wasn't necessary after the construction of a baseObject.

This was intended to simplify the usage of the reference counter (one less call to addRef()), but ended up adding more complications to the product. Anyway the final application shouldn't had made any call to addRef() and release() if the proper smart pointer was used.

Also, the smart pointer wasn't able to cast the objects' types when copying data from other smart pointer: in the beginning this behaviour was intentional (I wanted the end programmer to specify his intentions and use the casting operators when needed), but most of the users expected the smart pointer to take care of this.

Now the reference counter is initialized to 0 and not to 1 during the baseObject's construction: this implies that puntoexe::baseObject::addRef() has to be called immediatly after the object construction: anyway this operation is performed automatically by the smart pointer puntoexe::ptr.

This simplified the behaviour of other functions in the ptr class: for instance the function puntoexe::ptr::get() doesn't need to increase the reference counter anymore.

Also the user is now forced to use the smart pointer because more baseObject's functions have been made protected or private (addRef() and release() now are callable by the smart pointers only).

The smart pointer is now able to cast the object containing in other smart pointers during the assignment or the construction of a new pointer.

The changes shouldn't affect your old source code if you used the puntoexe::ptr class to control the puntoexe::baseObject derived objects.