Manage shared instances of images. More...
#include <image_handle.hh>
Inherits ost::img::Data.
Public Member Functions | |
ImageHandle () | |
ImageHandle (const ImageHandle &h) | |
ImageHandle & | operator= (const ImageHandle &h) |
Vec3 | GetAbsoluteOrigin () const |
void | SetAbsoluteOrigin (const Vec3 &c) |
Vec3 | IndexToCoord (const Point &p) const |
Vec3 | CoordToIndex (const Vec3 &c) const |
Vec3 | FractionalIndexToCoord (const Vec3 &p) const |
virtual Real | GetIntpolReal (const Vec3 &v) const |
virtual Real | GetIntpolReal (const Vec2 &v) const |
virtual Real | GetIntpolReal (const Real &d) const |
virtual Complex | GetIntpolComplex (const Vec3 &v) const |
virtual Complex | GetIntpolComplex (const Vec2 &v) const |
virtual Complex | GetIntpolComplex (const Real &d) const |
ImageHandle | Copy (bool cc=true) const |
ImageHandle | Extract (const Extent &e) const |
void | Paste (const Data &d) |
void | Set (const ImageHandle &h) |
void | Swap (ImageHandle &h) |
void | Reset (const Extent &e, DataType type=REAL, DataDomain dom=SPATIAL) |
bool | IsValid () const |
long | MemSize () const |
Properties interface | |
virtual DataType | GetType () const |
virtual DataDomain | GetDomain () const |
virtual Extent | GetExtent () const |
virtual Point | GetSpatialOrigin () const |
void | SetSpatialOrigin (const Point &p) |
void | CenterSpatialOrigin () |
Value access | |
virtual Real | GetReal (const Point &p) const |
void | SetReal (const Point &p, Real r) |
virtual Complex | GetComplex (const Point &p) const |
void | SetComplex (const Point &p, const Complex &c) |
DataObserver interface | |
Allows (de)registration of a DataObserver as well as broadcasting a notification to all attached observers. | |
virtual void | Attach (DataObserver *o) const |
virtual void | Detach (DataObserver *o) const |
virtual void | Notify () const |
virtual void | Notify (const Extent &e) const |
virtual void | Notify (const Point &p) const |
DataAlgorithm interface | |
void | Apply (NonModAlgorithm &a) const |
void | ApplyIP (NonModAlgorithm &a) const |
void | ApplyIP (ModIPAlgorithm &a) |
ImageHandle | Apply (ModIPAlgorithm &a) const |
void | ApplyIP (const ConstModIPAlgorithm &a) |
ImageHandle | Apply (const ConstModIPAlgorithm &a) const |
void | ApplyIP (ModOPAlgorithm &a) |
ImageHandle | Apply (ModOPAlgorithm &a) const |
void | ApplyIP (const ConstModOPAlgorithm &a) |
ImageHandle | Apply (const ConstModOPAlgorithm &a) const |
StateVisitor interface | |
void | StateApply (ImageStateNonModVisitorBase &v) const |
void | StateApplyIP (ImageStateModIPVisitorBase &v) |
ImageHandle | StateApply (ImageStateModIPVisitorBase &v) const |
void | StateApplyIP (const ImageStateConstModIPVisitorBase &v) |
ImageHandle | StateApply (const ImageStateConstModIPVisitorBase &v) const |
void | StateApplyIP (ImageStateModOPVisitorBase &v) |
ImageHandle | StateApply (ImageStateModOPVisitorBase &v) const |
void | StateApplyIP (const ImageStateConstModOPVisitorBase &v) |
ImageHandle | StateApply (const ImageStateConstModOPVisitorBase &v) const |
void | StateApplyIP (ImageStateMorphVisitorBase &v) |
ImageHandle | StateApply (ImageStateMorphVisitorBase &v) const |
ExtentIterator | GetIterator () const |
Comparison | |
bool | operator== (const ImageHandle &ih) const |
bool | operator!= (const ImageHandle &ih) const |
Member operators | |
ImageHandle & | operator+= (Real v) |
ImageHandle & | operator+= (const Complex &v) |
ImageHandle & | operator-= (Real v) |
ImageHandle & | operator-= (const Complex &v) |
ImageHandle & | operator*= (Real v) |
ImageHandle & | operator*= (const Complex &v) |
ImageHandle & | operator/= (Real v) |
ImageHandle & | operator/= (const Complex &v) |
void | Reciproce () |
ImageHandle & | operator+= (const ConstImageHandle &h) |
ImageHandle & | operator-= (const ConstImageHandle &h) |
ImageHandle & | operator*= (const ConstImageHandle &h) |
ImageHandle & | operator/= (const ConstImageHandle &h) |
low-level access | |
ImageStateBasePtr & | ImageStatePtr () |
const ImageStateBasePtr & | ImageStatePtr () const |
Protected Member Functions | |
ImageHandle (const StatePtrPtr &spp) | |
virtual PixelSampling & | Sampling () |
virtual const PixelSampling & | Sampling () const |
Static Protected Member Functions | |
static ImageHandle | Create (const Extent &e, DataType type, DataDomain dom) |
Friends | |
class | ConstImageHandle |
ImageHandle | DoCreateImage (const Extent &e, DataType type, DataDomain dom) |
void | test_image::test_Observer () |
Manage shared instances of images.
An ImageHandle is used to access an underlying implementation of an image. ImageHandle uses reference counting, ie copy and assignement return a new handle which points to the same image. This makes it cheap to pass ImageHandle around as value. The resources allocated by the underlying image implementation will be freed as soon as the reference count drops to zero.
ImageHandle derives from Data and thus implements its interface. It extends it to include image specific functionality. ImageHandle does shared_ptr management of an ImageImpl instance. The observer functionality is implemented in parallel using shared_ptr as well, so that the set of observers is preserved among the shared ImageHandles.
Creating a new image is done with the CreateImage() function:
ImageHandle ih = CreateImage(Extent(Point(0,0),Size(10,10)));
To import and export an image from or to a file, the IOManager must be used.
All image manipulation routines are provided as algorithms, which are applied with the Apply() and ApplyIP() methods.
Definition at line 111 of file image_handle.hh.
ImageHandle | ( | ) |
Creates an empty, ie invalid handle.
The default ctor is provided for e.g. using ImageHandle in STL containers. Any attempt to use the interface of an emtpy ImageHandle will throw an InvalidImageHandle exception.
ImageHandle | ( | const ImageHandle & | h | ) |
Initialize with an existing handle.
The newly created handle will share the image with the existing one
ImageHandle | ( | const StatePtrPtr & | spp | ) | [protected] |
Initialization based on a StatePtrPtr.
ImageHandle Apply | ( | const ConstModOPAlgorithm & | a | ) | const |
Apply out-of-place const Algorithm.
The image modified by the out-of-place algorithm is returned.
ImageHandle Apply | ( | ModOPAlgorithm & | a | ) | const |
Apply out-of-place Algorithm.
The image modified by the out-of-place algorithm is returned.
ImageHandle Apply | ( | const ConstModIPAlgorithm & | a | ) | const |
Apply in-place const Algorithm, return new image with modifications.
The modifications will be done on a copy of this image, which is then returned.
ImageHandle Apply | ( | ModIPAlgorithm & | a | ) | const |
Apply in-place Algorithm, return new image with modifications.
The modifications will be done on a copy of this image, which is then returned.
void Apply | ( | NonModAlgorithm & | a | ) | const [virtual] |
Apply a const algorithm to this image.
Calls the implemented NonModAlgorithm::Visit(const ImageHandle&) method
Implements Data.
void ApplyIP | ( | const ConstModOPAlgorithm & | a | ) |
Apply out-of-place const Algorithm in-place.
The new image returned by the out-of-place algorithm will replace the current one. This replacement will of course reflect in all ImageHandle s that point to the same Image.
void ApplyIP | ( | ModOPAlgorithm & | a | ) |
Apply out-of-place Algorithm in-place.
The new image returned by the out-of-place algorithm will replace the current one. This replacement will of course reflect in all ImageHandle s that point to the same Image.
void ApplyIP | ( | const ConstModIPAlgorithm & | a | ) |
Apply in-place const Algorithm in-place.
void ApplyIP | ( | ModIPAlgorithm & | a | ) |
Apply in-place Algorithm in-place.
void ApplyIP | ( | NonModAlgorithm & | a | ) | const [virtual] |
Apply a const algorithm to this image.
This does exactly the same as ImageHandle::Apply(NonModAlgorithm &) and is provided for syntax consistency.
Implements Data.
virtual void Attach | ( | DataObserver * | o | ) | const [virtual] |
Attach observer.
Implements ConstData.
void CenterSpatialOrigin | ( | ) |
set origin in center
Vec3 CoordToIndex | ( | const Vec3 & | c | ) | const |
Convert coordinates back to (fractional) indices.
ImageHandle Copy | ( | bool | cc = true |
) | const |
return a handle that manages a new instance of the image
Similar to the Clone concept, the ImageHandle that is returned points to a duplicated image instance
static ImageHandle Create | ( | const Extent & | e, | |
DataType | type, | |||
DataDomain | dom | |||
) | [static, protected] |
used by CreateImage factory function
virtual void Detach | ( | DataObserver * | o | ) | const [virtual] |
Detach observer.
Implements ConstData.
ImageHandle Extract | ( | const Extent & | e | ) | const |
return a handle to a new image containing a partial copy
The returning domain will match the type (ie REAL or COMPLEX), but the domain will always be spatial
Vec3 FractionalIndexToCoord | ( | const Vec3 & | p | ) | const |
Index to coordinate conversion.
Vec3 GetAbsoluteOrigin | ( | ) | const |
Get absolute coordinate for the spatial origin of the image.
virtual DataDomain GetDomain | ( | ) | const [virtual] |
Return domain: SPATIAL
, FREQUENCY
or HALF_FREQUENCY
.
Implements ConstData.
virtual Extent GetExtent | ( | ) | const [virtual] |
virtual Complex GetIntpolComplex | ( | const Vec3 & | v | ) | const [virtual] |
Get interpolated complex value from 3D,2D or 1D vec.
Implements ConstData.
virtual Real GetIntpolReal | ( | const Vec3 & | v | ) | const [virtual] |
Get interpolated real value from 3D,2D or 1D vec.
Implements ConstData.
ExtentIterator GetIterator | ( | ) | const |
Get ExtentIterator.
virtual Point GetSpatialOrigin | ( | ) | const [virtual] |
return spatial origin of the image
The spatial origin is independent on the current domain. It affects the FFT operations by introducing a origin-dependent phase shift for each value in the frequency domain.
Implements ConstData.
virtual DataType GetType | ( | ) | const [virtual] |
Return data type: REAL
or COMPLEX
.
Implements ConstData.
const ImageStateBasePtr& ImageStatePtr | ( | ) | const |
ImageStateBasePtr& ImageStatePtr | ( | ) |
Vec3 IndexToCoord | ( | const Point & | p | ) | const |
Index to coordinate conversion.
bool IsValid | ( | ) | const |
Returns true if handle is valid.
long MemSize | ( | ) | const |
Returns size in bytes of allocated memory.
virtual void Notify | ( | const Point & | p | ) | const [virtual] |
virtual void Notify | ( | const Extent & | e | ) | const [virtual] |
virtual void Notify | ( | ) | const [virtual] |
Notify each observer that state has changed.
Implements ConstData.
bool operator!= | ( | const ImageHandle & | ih | ) | const |
ImageHandle& operator*= | ( | const ConstImageHandle & | h | ) |
ImageHandle& operator*= | ( | const Complex & | v | ) |
ImageHandle& operator*= | ( | Real | v | ) |
ImageHandle& operator+= | ( | const ConstImageHandle & | h | ) |
ImageHandle& operator+= | ( | const Complex & | v | ) |
ImageHandle& operator+= | ( | Real | v | ) |
ImageHandle& operator-= | ( | const ConstImageHandle & | h | ) |
ImageHandle& operator-= | ( | const Complex & | v | ) |
ImageHandle& operator-= | ( | Real | v | ) |
ImageHandle& operator/= | ( | const ConstImageHandle & | h | ) |
ImageHandle& operator/= | ( | const Complex & | v | ) |
ImageHandle& operator/= | ( | Real | v | ) |
ImageHandle& operator= | ( | const ImageHandle & | h | ) |
Assign another image based on handle.
The reference count the the previously shared images is decreased and the one of the assignee is increased
Reimplemented from Data.
bool operator== | ( | const ImageHandle & | ih | ) | const |
void Paste | ( | const Data & | d | ) |
pastes given data to this image, using data extent
Effectively replaces a part of the image with the values retrieved from the given data, either another image handle or a function. The region that is replaced in this image is given by the extent of the data.
void Reciproce | ( | ) |
void Reset | ( | const Extent & | e, | |
DataType | type = REAL , |
|||
DataDomain | dom = SPATIAL | |||
) |
Reset image state to given size, type and domain.
Essentially the same as creating a new ImageHandle with CreateImage() and assigning it to an existing handle. After a call to reset, all values are zero.
This routine exhibits only weak exception safety, as the existing state is first cleared to conserve memory usage.
virtual const PixelSampling& Sampling | ( | ) | const [protected, virtual] |
see Data::Sampling()
Implements ConstData.
virtual PixelSampling& Sampling | ( | ) | [protected, virtual] |
see Data::Sampling()
Implements ConstData.
void Set | ( | const ImageHandle & | h | ) |
sets content of image to that of the given one
In contrast to the assignement operator, which affects only the handle mechanism, the Set method assigns the content of the passwd handle to this one. Other image handle pointing to the same image content will therefore also be affected.
void SetAbsoluteOrigin | ( | const Vec3 & | c | ) |
Sets the absolute coordinate for the spatial origin of the image.
Set explicit real value
ImageHandle StateApply | ( | ImageStateMorphVisitorBase & | v | ) | const |
Applies morph visitor out-of-place.
ImageHandle StateApply | ( | const ImageStateConstModOPVisitorBase & | v | ) | const |
Applies out-of-place const visitor out-of-place.
ImageHandle StateApply | ( | ImageStateModOPVisitorBase & | v | ) | const |
Applies out-of-place visitor out-of-place.
ImageHandle StateApply | ( | const ImageStateConstModIPVisitorBase & | v | ) | const |
Applies in-place const visitor out-of-place.
ImageHandle StateApply | ( | ImageStateModIPVisitorBase & | v | ) | const |
Applies in-place visitor out-of-place.
void StateApply | ( | ImageStateNonModVisitorBase & | v | ) | const |
Apply non-modifying state visitor.
void StateApplyIP | ( | ImageStateMorphVisitorBase & | v | ) |
Applies morph visitor in-place.
void StateApplyIP | ( | const ImageStateConstModOPVisitorBase & | v | ) |
Applies out-of-place const visitor in-place.
void StateApplyIP | ( | ImageStateModOPVisitorBase & | v | ) |
Applies out-of-place visitor in-place.
void StateApplyIP | ( | const ImageStateConstModIPVisitorBase & | v | ) |
Applies in-place const visitor in-place.
void StateApplyIP | ( | ImageStateModIPVisitorBase & | v | ) |
Applies in-place visitor in-place.
void Swap | ( | ImageHandle & | h | ) |
swap guts with another handle
friend class ConstImageHandle [friend] |
Definition at line 118 of file image_handle.hh.
ImageHandle DoCreateImage | ( | const Extent & | e, | |
DataType | type, | |||
DataDomain | dom | |||
) | [friend] |
void test_image::test_Observer | ( | ) | [friend] |