LCSlicer.h

Classes

LCSlicer -- Class to define a rectangular box of interest with strides. (full description)

class LCSlicer

Interface

Public Members
LCSlicer()
LCSlicer (const Vector<Float>& blc, const Vector<Float>& trc, Bool fractionalBlcTrc = False, RegionType::AbsRelType = RegionType::Abs)
LCSlicer (const Vector<Float>& blc, const Vector<Float>& trc, const Vector<Float>& inc, Bool fractionalBlcTrc = False, RegionType::AbsRelType = RegionType::Abs)
LCSlicer (const Vector<Float>& blc, const Vector<Float>& trc, const Vector<Float>& inc, const Vector<Bool>& fractionalBlc, const Vector<Bool>& fractionalTrc, const Vector<Bool>& fractionalInc, const Vector<Int>& absRelBlc, const Vector<Int>& absRelTrc)
LCSlicer (const Vector<Double>& blc, const Vector<Double>& trc, Bool fractionalBlcTrc = False, RegionType::AbsRelType = RegionType::Abs)
LCSlicer (const Vector<Double>& blc, const Vector<Double>& trc, const Vector<Double>& inc, Bool fractionalBlcTrc = False, RegionType::AbsRelType = RegionType::Abs)
LCSlicer (const Vector<Double>& blc, const Vector<Double>& trc, const Vector<Double>& inc, const Vector<Bool>& fractionalBlc, const Vector<Bool>& fractionalTrc, const Vector<Bool>& fractionalInc, const Vector<Int>& absRelBlc, const Vector<Int>& absRelTrc)
LCSlicer (const Slicer& slicer)
LCSlicer (const IPosition& blc, const IPosition& trc, RegionType::AbsRelType = RegionType::Abs)
LCSlicer (const IPosition& blc, const IPosition& trc, const IPosition& inc, RegionType::AbsRelType = RegionType::Abs)
LCSlicer (const IPosition& blc, const IPosition& trc, const IPosition& inc, const Vector<Int>& absRelBlc, const Vector<Int>& absRelTrc)
LCSlicer (const LCSlicer& other)
~LCSlicer()
LCSlicer& operator= (const LCSlicer& other)
Bool operator== (const LCSlicer& other) const
Bool operator!= (const LCSlicer& other) const
Bool isComplete() const
uInt ndim() const
const Vector<Float>& blc() const
const Vector<Float>& trc() const
const Vector<Float>& inc() const
Bool isFractional() const
Bool isAbsolute() const
Bool isUnspecified() const
Bool isStrided() const
static String className()
String type() const
const String& comment() const
void setComment (const String& comment)
Slicer toSlicer (const IPosition& referencePixel, const IPosition& latticeShape) const
Slicer toSlicer (const Vector<Double>& referencePixel, const IPosition& latticeShape) const
Slicer toSlicer (const Vector<Float>& referencePixel, const IPosition& newLatticeShape) const
TableRecord toRecord (const String& tableName) const
static LCSlicer* fromRecord (const TableRecord&, const String& tablename)
Private Members
void fillFlags (Bool fractional, Int absRel, uInt nrblc, uInt nrtrc, uInt nrinc)
void fillFromDouble (const Vector<Double>& blc, const Vector<Double>& trc, const Vector<Double>& inc)
void fillFromIPosition (const IPosition& blc, const IPosition& trc, const IPosition& inc)
void fill()

Description

Prerequisite

Synopsis

The LCSlicer makes it possible to define a rectangular box with strides. Note that this class is not derived from LCRegion, so it cannot be used in a compound region object like LCUnion. The reason is that strides make it impossible to use a region in a compound.
The slicer region has to be defined from an LCBox object defining the blc/trc and a vector (of the same length) containing the strides. The LCSlicer can be of any type (thus relative, fractional, unspecified), while the strides can be defined as a number or a fraction.
It is also possible to construct it directly from a Slicer object,

Example


 

To Do

Member Description

LCSlicer()

LCSlicer (const Vector<Float>& blc, const Vector<Float>& trc, Bool fractionalBlcTrc = False, RegionType::AbsRelType = RegionType::Abs)
LCSlicer (const Vector<Float>& blc, const Vector<Float>& trc, const Vector<Float>& inc, Bool fractionalBlcTrc = False, RegionType::AbsRelType = RegionType::Abs)
LCSlicer (const Vector<Float>& blc, const Vector<Float>& trc, const Vector<Float>& inc, const Vector<Bool>& fractionalBlc, const Vector<Bool>& fractionalTrc, const Vector<Bool>& fractionalInc, const Vector<Int>& absRelBlc, const Vector<Int>& absRelTrc)
LCSlicer (const Vector<Double>& blc, const Vector<Double>& trc, Bool fractionalBlcTrc = False, RegionType::AbsRelType = RegionType::Abs)
LCSlicer (const Vector<Double>& blc, const Vector<Double>& trc, const Vector<Double>& inc, Bool fractionalBlcTrc = False, RegionType::AbsRelType = RegionType::Abs)
LCSlicer (const Vector<Double>& blc, const Vector<Double>& trc, const Vector<Double>& inc, const Vector<Bool>& fractionalBlc, const Vector<Bool>& fractionalTrc, const Vector<Bool>& fractionalInc, const Vector<Int>& absRelBlc, const Vector<Int>& absRelTrc)
LCSlicer (const Slicer& slicer)
LCSlicer (const IPosition& blc, const IPosition& trc, RegionType::AbsRelType = RegionType::Abs)
LCSlicer (const IPosition& blc, const IPosition& trc, const IPosition& inc, RegionType::AbsRelType = RegionType::Abs)
LCSlicer (const IPosition& blc, const IPosition& trc, const IPosition& inc, const Vector<Int>& absRelBlc, const Vector<Int>& absRelTrc)

Construct a slicer from the blc, trc, and stride (default 1). The vectors can be different in lengths. The longest determines the dimensionality of the region. The shorter ones get padded with default values.

LCSlicer (const LCSlicer& other)

Copy constructor (reference semantics).

~LCSlicer()

LCSlicer& operator= (const LCSlicer& other)

Assignment (copy semantics).

Bool operator== (const LCSlicer& other) const
Bool operator!= (const LCSlicer& other) const

Test for equality. True is returned when the given region is a slicer with exactly the same specification as this slicer. It does not compare the comment.

Bool isComplete() const

The region is completely specified if it is absolute, not fractional, and has no unspecified values.

uInt ndim() const

Get the dimensionality of the region.

const Vector<Float>& blc() const
const Vector<Float>& trc() const
const Vector<Float>& inc() const
Bool isFractional() const
Bool isAbsolute() const
Bool isUnspecified() const
Bool isStrided() const

Simple accessor functions.

static String className()

Get the class name (to store in the record).

String type() const

Get the region type. Returns className().

const String& comment() const
void setComment (const String& comment)

Get or set the comment.

Slicer toSlicer (const IPosition& referencePixel, const IPosition& latticeShape) const
Slicer toSlicer (const Vector<Double>& referencePixel, const IPosition& latticeShape) const
Slicer toSlicer (const Vector<Float>& referencePixel, const IPosition& newLatticeShape) const

Make the region complete using the given reference pixel and shape. It returns a new region where the relative regions are made absolute by translating them with respect to the reference pixel. Furthermore unspecified values are filled in and fractional values are turned into absolute ones.

TableRecord toRecord (const String& tableName) const

Convert the object to a record.

static LCSlicer* fromRecord (const TableRecord&, const String& tablename)

Convert to correct object from a record.

void fillFlags (Bool fractional, Int absRel, uInt nrblc, uInt nrtrc, uInt nrinc)

Fill the pixel based flags from the general ones.

void fillFromDouble (const Vector<Double>& blc, const Vector<Double>& trc, const Vector<Double>& inc)

Fill the vectors from the values given as doubles.

void fillFromIPosition (const IPosition& blc, const IPosition& trc, const IPosition& inc)

Fill the vectors from the values given as IPositions..

void fill()

Fill the remaining variables. It also adjust the lengths of the vectors if they are different. Check if everything is given correctly.