lsst.astshim  19.0.0-2-g6e0b8f9
Public Member Functions | Protected Member Functions | Friends | List of all members
ast::FrameDict Class Reference

#include <FrameDict.h>

Inheritance diagram for ast::FrameDict:
ast::FrameSet ast::Frame ast::Mapping ast::Object

Public Member Functions

 FrameDict (Frame const &frame, std::string const &options="")
 
 FrameDict (Frame const &baseFrame, Mapping const &mapping, Frame const &currentFrame, std::string const &options="")
 
 FrameDict (FrameSet const &frameSet)
 
virtual ~FrameDict ()
 
 FrameDict (FrameDict const &)=default
 Copy constructor: make a deep copy. More...
 
 FrameDict (FrameDict &&)=default
 
FrameDictoperator= (FrameDict const &)=delete
 
FrameDictoperator= (FrameDict &&)=default
 
std::shared_ptr< FrameDictcopy () const
 Return a deep copy of this object. More...
 
void addFrame (int iframe, Mapping const &map, Frame const &frame) override
 
void addFrame (std::string const &domain, Mapping const &map, Frame const &frame)
 
std::set< std::string > getAllDomains () const
 
std::shared_ptr< FramegetFrame (std::string const &domain, bool copy=true) const
 
std::shared_ptr< MappinggetMapping (int from, std::string const &to) const
 
std::shared_ptr< MappinggetMapping (std::string const &from, int to) const
 
std::shared_ptr< MappinggetMapping (std::string const &from, std::string const &to) const
 
int getIndex (std::string const &domain) const
 
bool hasDomain (std::string const &domain) const
 
void mirrorVariants (std::string const &domain)
 
void remapFrame (std::string const &domain, Mapping &map)
 
void removeFrame (int iframe) override
 
void removeFrame (std::string const &domain)
 
void setBase (std::string const &domain)
 
void setCurrent (std::string const &domain)
 
void setDomain (std::string const &domain) override
 
std::shared_ptr< FramegetFrame (int iframe, bool copy=true) const
 
std::shared_ptr< MappinggetMapping (int from=BASE, int to=CURRENT) const
 
void mirrorVariants (int iframe)
 
void remapFrame (int iframe, Mapping &map)
 
void setBase (int ind)
 
void setCurrent (int ind)
 
- Public Member Functions inherited from ast::FrameSet
 FrameSet (Frame const &frame, std::string const &options="")
 
 FrameSet (Frame const &baseFrame, Mapping const &mapping, Frame const &currentFrame, std::string const &options="")
 
virtual ~FrameSet ()
 
 FrameSet (FrameSet const &)=default
 Copy constructor: make a deep copy. More...
 
 FrameSet (FrameSet &&)=default
 
FrameSetoperator= (FrameSet const &)=delete
 
FrameSetoperator= (FrameSet &&)=default
 
std::shared_ptr< FrameSetcopy () const
 Return a deep copy of this object. More...
 
void addAxes (Frame const &frame)
 
void addVariant (Mapping const &map, std::string const &name)
 
std::string getAllVariants () const
 
int getBase () const
 
int getCurrent () const
 
std::shared_ptr< FramegetFrame (int iframe, bool copy=true) const
 
std::shared_ptr< MappinggetMapping (int from=BASE, int to=CURRENT) const
 
int getNFrame () const
 
std::string getVariant () const
 
void mirrorVariants (int iframe)
 
void remapFrame (int iframe, Mapping &map)
 
void renameVariant (std::string const &name)
 
void setBase (int ind)
 
void setCurrent (int ind)
 
- Public Member Functions inherited from ast::Frame
 Frame (int naxes, std::string const &options="")
 
virtual ~Frame ()
 
 Frame (Frame const &)=default
 Copy constructor: make a deep copy. More...
 
 Frame (Frame &&)=default
 
Frameoperator= (Frame const &)=delete
 
Frameoperator= (Frame &&)=default
 
std::shared_ptr< Framecopy () const
 Return a deep copy of this object. More...
 
double angle (PointD const &a, PointD const &b, PointD const &c) const
 
double axAngle (PointD const &a, PointD const &b, int axis) const
 
double axDistance (int axis, double v1, double v2) const
 
double axOffset (int axis, double v1, double dist) const
 
std::shared_ptr< FrameSetconvert (Frame const &to, std::string const &domainlist="")
 
double distance (PointD const &point1, PointD const &point2) const
 
std::shared_ptr< FrameSetfindFrame (Frame const &tmplt, std::string const &domainlist="")
 
std::string format (int axis, double value) const
 
bool getActiveUnit () const
 
std::string getAlignSystem () const
 
double getBottom (int axis) const
 
int getDigits () const
 
int getDigits (int axis) const
 
bool getDirection (int axis) const
 
std::string getDomain () const
 
double getDut1 () const
 
double getEpoch () const
 
std::string getFormat (int axis) const
 
std::string getInternalUnit (int axis) const
 
std::string getLabel (int axis) const
 
bool getMatchEnd () const
 
int getMaxAxes () const
 
int getMinAxes () const
 
int getNAxes () const
 
std::string getNormUnit (int axis) const
 
double getObsAlt () const
 
std::string getObsLat () const
 
std::string getObsLon () const
 
bool getPermute () const
 
bool getPreserveAxes () const
 
std::string getSymbol (int axis) const
 
std::string getSystem () const
 
std::string getTitle () const
 
double getTop (int axis) const
 
std::string getUnit (int axis) const
 
std::vector< double > intersect (std::vector< double > const &a1, std::vector< double > const &a2, std::vector< double > const &b1, std::vector< double > const &b2) const
 
std::vector< int > matchAxes (Frame const &other) const
 
CmpFrame under (Frame const &next) const
 
PointD norm (PointD value) const
 
PointD offset (PointD point1, PointD point2, double offset) const
 
DirectionPoint offset2 (PointD const &point1, double angle, double offset) const
 
void permAxes (std::vector< int > perm)
 
FrameMapping pickAxes (std::vector< int > const &axes) const
 
ResolvedPoint resolve (std::vector< double > const &point1, std::vector< double > const &point2, std::vector< double > const &point3) const
 
void setAlignSystem (std::string const &system)
 
void setBottom (int axis, double bottom)
 
void setDigits (int digits)
 
void setDigits (int axis, int digits)
 
void setDirection (bool direction, int axis)
 
void setDut1 (double dut1)
 
void setEpoch (double epoch)
 
void setEpoch (std::string const &epoch)
 
void setFormat (int axis, std::string const &format)
 
void setLabel (int axis, std::string const &label)
 
void setMatchEnd (bool match)
 
void setMaxAxes (int maxAxes)
 
void setMinAxes (int minAxes)
 
void setObsAlt (double alt)
 
void setObsLat (std::string const &lat)
 
void setObsLon (std::string const &lon)
 
void setActiveUnit (bool enable)
 
void setPermute (bool permute)
 
void setPreserveAxes (bool preserve)
 
void setSymbol (int axis, std::string const &symbol)
 
void setSystem (std::string const &system)
 
void setTitle (std::string const &title)
 
void setTop (int axis, double top)
 
void setUnit (int axis, std::string const &unit)
 
NReadValue unformat (int axis, std::string const &str) const
 
- Public Member Functions inherited from ast::Mapping
virtual ~Mapping ()
 
 Mapping (Mapping const &)=default
 Copy constructor: make a deep copy. More...
 
 Mapping (Mapping &&)=default
 
Mappingoperator= (Mapping const &)=delete
 
Mappingoperator= (Mapping &&)=default
 
std::shared_ptr< Mappingcopy () const
 Return a deep copy of this object. More...
 
int getNIn () const
 
int getNOut () const
 
bool getIsSimple () const
 
bool isInverted () const
 
bool getIsLinear () const
 
bool getReport () const
 
bool hasForward () const
 
bool hasInverse () const
 
std::shared_ptr< Mappinginverted () const
 
Array2D linearApprox (PointD const &lbnd, PointD const &ubnd, double tol) const
 
SeriesMap then (Mapping const &next) const
 
ParallelMap under (Mapping const &next) const
 
double rate (PointD const &at, int ax1, int ax2) const
 
void setReport (bool report)
 
std::shared_ptr< Mappingsimplified () const
 
void applyForward (ConstArray2D const &from, Array2D const &to) const
 
Array2D applyForward (ConstArray2D const &from) const
 
std::vector< double > applyForward (std::vector< double > const &from) const
 
void applyInverse (ConstArray2D const &from, Array2D const &to) const
 
Array2D applyInverse (ConstArray2D const &from) const
 
std::vector< double > applyInverse (std::vector< double > const &from) const
 
void tranGridForward (PointI const &lbnd, PointI const &ubnd, double tol, int maxpix, Array2D const &to) const
 
Array2D tranGridForward (PointI const &lbnd, PointI const &ubnd, double tol, int maxpix, int nPts) const
 
void tranGridInverse (PointI const &lbnd, PointI const &ubnd, double tol, int maxpix, Array2D const &to) const
 
Array2D tranGridInverse (PointI const &lbnd, PointI const &ubnd, double tol, int maxpix, int nPts) const
 
- Public Member Functions inherited from ast::Object
virtual ~Object ()
 
 Object (Object const &object)
 Copy constructor: make a deep copy. More...
 
 Object (Object &&)=default
 
Objectoperator= (Object const &)=delete
 
Objectoperator= (Object &&)=default
 
bool operator== (Object const &rhs) const
 
bool operator!= (Object const &rhs) const
 
std::shared_ptr< Objectcopy () const
 Return a deep copy of this object. More...
 
void clear (std::string const &attrib)
 
bool hasAttribute (std::string const &attrib) const
 
std::string getClassName () const
 
std::string getID () const
 Get ID: object identification string that is not copied. More...
 
std::string getIdent () const
 Get Ident: object identification string that is copied. More...
 
int getNObject () const
 
int getObjSize () const
 Get ObjSize: the in-memory size of the AST object in bytes. More...
 
int getRefCount () const
 
bool getUseDefs () const
 Get UseDefs: allow use of default values for Object attributes? More...
 
void lock (bool wait)
 
bool same (Object const &other) const
 
void setID (std::string const &id)
 Set ID: object identification string that is not copied. More...
 
void setIdent (std::string const &ident)
 Set Ident: object identification string that is copied. More...
 
void setUseDefs (bool usedefs)
 Set UseDefs: allow use of default values for Object attributes? More...
 
void show (std::ostream &os, bool showComments=true) const
 
std::string show (bool showComments=true) const
 
bool test (std::string const &attrib) const
 
void unlock (bool report=false)
 
AstObject const * getRawPtr () const
 
AstObject * getRawPtr ()
 

Protected Member Functions

virtual std::shared_ptr< ObjectcopyPolymorphic () const override
 
std::shared_ptr< FrameSetgetFrameSet () const
 
 FrameDict (AstFrameSet *rawptr)
 Construct a FrameDict from a raw AST pointer. More...
 
- Protected Member Functions inherited from ast::FrameSet
 FrameSet (AstFrameSet *rawPtr)
 
- Protected Member Functions inherited from ast::Frame
 Frame (AstFrame *rawPtr)
 
- Protected Member Functions inherited from ast::Mapping
 Mapping (AstMapping *rawMap)
 
template<typename Class >
std::shared_ptr< Class > decompose (int i, bool copy) const
 
- Protected Member Functions inherited from ast::Object
 Object (AstObject *object)
 
template<typename T , typename AstT >
std::shared_ptr< T > copyImpl () const
 
bool getB (std::string const &attrib) const
 
std::string const getC (std::string const &attrib) const
 
double getD (std::string const &attrib) const
 
float getF (std::string const &attrib) const
 
int getI (std::string const &attrib) const
 
long int getL (std::string const &attrib) const
 
void set (std::string const &setting)
 
void setB (std::string const &attrib, bool value)
 
void setC (std::string const &attrib, std::string const &value)
 
void setD (std::string const &attrib, double value)
 
void setF (std::string const &attrib, float value)
 
void setI (std::string const &attrib, int value)
 
void setL (std::string const &attrib, long int value)
 

Friends

class Object
 

Additional Inherited Members

- Public Types inherited from ast::Object
using ObjectPtr = std::unique_ptr< AstObject, Deleter >
 unique pointer holding an AST raw pointer More...
 
- Static Public Member Functions inherited from ast::Object
static std::shared_ptr< ObjectfromString (std::string const &str)
 
template<typename Class >
static std::shared_ptr< Class > fromAstObject (AstObject *rawObj, bool copy)
 
- Static Public Attributes inherited from ast::FrameSet
static constexpr int BASE = AST__BASE
 index of base frame More...
 
static constexpr int CURRENT = AST__CURRENT
 index of current frame More...
 
static constexpr int NOFRAME = AST__NOFRAME
 an invalid frame index More...
 
- Static Protected Member Functions inherited from ast::Object
template<typename ShimT , typename AstT >
static std::shared_ptr< ShimT > makeShim (AstObject *p)
 

Detailed Description

A FrameSet whose frames can be referenced by domain name.

For every FrameSet method that takes a frame index, the same method in FrameDict may take a (case blind) domain name or a frame index.

This has several useful applications:

All contained Frames with explicitly set, non-empty domains must have unique domains (where the comparison ignores case). Use FrameSet if you want a collection of Frames that may have matching domains.

Warning
FrameDict is a convenience wrapper around FrameSet with no corresponding class in AST. As a consequence:
Note
  • AST casts all Frame domains to uppercase. This is why domain comparison and domain lookup are case blind.
  • Some AST frame classes have default domain names, e.g. SkyFrame defaults to "SKY". Such default names are ignored in order to reduce the chance of accidental collisions.

Attributes

All those of FrameSet.

Constructor & Destructor Documentation

◆ FrameDict() [1/6]

ast::FrameDict::FrameDict ( Frame const &  frame,
std::string const &  options = "" 
)
inlineexplicit

Construct a FrameDict from a single Frame

The frame is deep copied.

Parameters
[in]framethe first Frame to be inserted into the FrameDict. This initially becomes both the base and the current Frame. Further Frames may be added using addFrame
[in]optionsComma-separated list of attribute assignments.

◆ FrameDict() [2/6]

ast::FrameDict::FrameDict ( Frame const &  baseFrame,
Mapping const &  mapping,
Frame const &  currentFrame,
std::string const &  options = "" 
)
inlineexplicit

Construct a FrameDict from two frames and a mapping that connects them

Both frames and the mapping are deep copied.

Parameters
[in]baseFramebase Frame.
[in]mappingmapping connecting baseFrame to currentFrame.
[in]currentFramecurrent Frame.
[in]optionsComma-separated list of attribute assignments.
Exceptions
std::invalid_argumentif both Frames have the same non-empty domain.

◆ FrameDict() [3/6]

ast::FrameDict::FrameDict ( FrameSet const &  frameSet)
inlineexplicit

Construct a FrameDict from a FrameSet

The FrameSet is deep-copied

Exceptions
std::invalid_argumentif two Frames in the FrameSet have the same non-empty domain.

◆ ~FrameDict()

virtual ast::FrameDict::~FrameDict ( )
inlinevirtual

◆ FrameDict() [4/6]

ast::FrameDict::FrameDict ( FrameDict const &  )
default

Copy constructor: make a deep copy.

◆ FrameDict() [5/6]

ast::FrameDict::FrameDict ( FrameDict &&  )
default

◆ FrameDict() [6/6]

ast::FrameDict::FrameDict ( AstFrameSet *  rawptr)
explicitprotected

Construct a FrameDict from a raw AST pointer.

Member Function Documentation

◆ addFrame() [1/2]

void ast::FrameDict::addFrame ( int  iframe,
Mapping const &  map,
Frame const &  frame 
)
overridevirtual

Add a new Frame and an associated Mapping to this FrameSet so as to define a new coordinate system, derived from one which already exists within this FrameSet.

If frame is a Frame then it becomes the current frame and its index is the new number of frames. If frame is a FrameSet then its current frame becomes the new current frame and the indices of all its frames are increased by the number of frames originally in this FrameSet. In both cases the indices of the Frames already in this FrameSet are left unchanged.

Parameters
[in]iframeThe index of the Frame within the FrameSet which describes the coordinate system upon which the new one is to be based. This value should lie in the range from 1 to the number of frames already in this FrameSet (as given by getNFrame). A value of FrameSet::BASE or FrameSet::CURRENT may be given to specify the base Frame or the current Frame respectively. A value of AST__ALLFRAMES is not permitted; call addAllFrames instead.
[in]mapA Mapping which describes how to convert coordinates from the old coordinate system (described by the Frame with index iframe ) into coordinates in the new system. The Mapping's forward transformation should perform this conversion, and its inverse transformation should convert in the opposite direction.
[in]frameA Frame that describes the new coordinate system. Any type of Frame may be supplied (including Regions and FrameSets). This function may also be used to merge two FrameSets by supplying a pointer to a second FrameSet for this parameter (see the Notes section for details).

Notes

  • Deep copies of the supplied map and frame are stored within the modified FrameSet. So any changes made to the FrameSet after calling this method will have no effect on the supplied Mapping and Frame objects.
  • This function sets the value of the Current attribute for the FrameSet so that the new Frame subsequently becomes the current Frame.
  • The number of input coordinate values accepted by the supplied map (its NIn attribute) must match the number of axes in the Frame identified by the iframe parameter. Similarly, the number of output coordinate values generated by map (its NOut attribute) must match the number of axes in frame.
  • As a special case, if a pointer to a FrameSet is given for the frame parameter, this is treated as a request to merge frame into this FrameSet. This is done by appending all the new Frames in the frame FrameSet to this FrameSet, while preserving their order and retaining all the inter-relationships (i.e. Mappings) between them. The two sets of Frames are inter-related within the merged FrameSet by using the Mapping supplied. This should convert between the Frame identified by the iframe parameter (in this FrameSet) and the current Frame of the frame FrameSet. This latter Frame becomes the current Frame in this FrameSet.
Exceptions
std::invalid_argumentif frame has a non-empty domain and this FrameDict already contains a Frame with that domain

Reimplemented from ast::FrameSet.

◆ addFrame() [2/2]

void ast::FrameDict::addFrame ( std::string const &  domain,
Mapping const &  map,
Frame const &  frame 
)

Variant of addFrame(int, ...) where the initial frame is specified by domain.

◆ copy()

std::shared_ptr<FrameDict> ast::FrameDict::copy ( ) const
inline

Return a deep copy of this object.

◆ copyPolymorphic()

virtual std::shared_ptr<Object> ast::FrameDict::copyPolymorphic ( ) const
inlineoverrideprotectedvirtual

Return a deep copy of this object. This is called by copy.

Each subclass must override this method. The standard implementation is:

return copyImpl<astshim_class, ast_class>();

for example Frame implements this as:

return copyImpl<Frame, AstFrame>();

Reimplemented from ast::FrameSet.

◆ getAllDomains()

std::set< std::string > ast::FrameDict::getAllDomains ( ) const

Get the domain names for all contained Frames (excluding frames with empty or defaulted domain names).

◆ getFrame() [1/2]

std::shared_ptr<Frame> ast::FrameSet::getFrame
inline

Obtain a deep copy of the specified Frame

Parameters
[in]iframeThe index of the required Frame within this FrameSet. This value should lie in the range 1 to the number of frames already in this FrameSet (as given by getNFrame). A value of FrameSet::Base or FrameSet::CURRENT may be given to specify the base Frame or the current Frame, respectively.
[in]copyIf true return a deep copy, else a shallow copy.
Warning
: to permute axes of a frame in a FrameSet, such that the connecting mappings are updated: set the current frame to the frame in question and call permAxes directly on the FrameSet. Do not call permAxes on a shallow copy of the frame (retrieved by getFrame) as this will not affect the connected mappings.

◆ getFrame() [2/2]

std::shared_ptr<Frame> ast::FrameDict::getFrame ( std::string const &  domain,
bool  copy = true 
) const
inline

Variant of getFrame(int, bool) where the frame is specified by domain name.

Exceptions
std::out_of_rangeif no frame found with the specified domain

◆ getFrameSet()

std::shared_ptr<FrameSet> ast::FrameDict::getFrameSet ( ) const
inlineprotected

Return a deep copy as a FrameSet

This is used internally for operations that modify the contents:

  • Retrieve a copy as a FrameSet
  • Modify the copy
  • Call _update to construct a new domain:index dict from the copy and swap in the new data

This could be a public member function, but wait until a need is identified.

Warning: this must return a FrameSet, not a FrameDict in order to avoid an infinite loop.

◆ getIndex()

int ast::FrameDict::getIndex ( std::string const &  domain) const
inline

Get the index of a frame specified by domain

Exceptions
std::out_of_rangeif no frame found with the specified domain

◆ getMapping() [1/4]

std::shared_ptr<Mapping> ast::FrameDict::getMapping ( int  from,
std::string const &  to 
) const
inline

Variant of FrameSet::getMapping with the second frame specified by domain.

Exceptions
std::out_of_rangeif no frame found with the specified from or to domain

◆ getMapping() [2/4]

std::shared_ptr<Mapping> ast::FrameSet::getMapping
inline

Obtain a Mapping that converts between two Frames in a FrameSet

Parameters
[in]fromThe index of the first Frame in the FrameSet, the frame describing the coordinate system for the "input" end of the Mapping. This value should lie in the range 1 to the number of frames already in this FrameSet (as given by getNFrame).
[in]toThe index of the second Frame in the FrameSet, the frame describing the coordinate system for the "output" end of the Mapping. This value should lie in the range 1 to the number of frames already in this FrameSet (as given by getNFrame).
Returns
A Mapping whose forward transformation converts coordinates from the first frame to the second one, and whose inverse transformation converts coordinates in the opposite direction.

Notes

  • The returned Mapping will include the clipping effect of any Regions which occur on the path between the two supplied Frames, including the specified end frames.
  • It should always be possible to generate the Mapping requested, but this does not necessarily guarantee that it will be able to perform the required coordinate conversion. If necessary, call hasForward or hasInverse on the returned Mapping to determine if the required transformation is available.

◆ getMapping() [3/4]

std::shared_ptr<Mapping> ast::FrameDict::getMapping ( std::string const &  from,
int  to 
) const
inline

Variant of FrameSet::getMapping with the first frame specified by domain.

Exceptions
std::out_of_rangeif no frame found with the specified from or to domain

◆ getMapping() [4/4]

std::shared_ptr<Mapping> ast::FrameDict::getMapping ( std::string const &  from,
std::string const &  to 
) const
inline

Variant of FrameSet::getMapping with the both frames specified by domain.

Exceptions
std::out_of_rangeif no frame found with the specified from or to domain

◆ hasDomain()

bool ast::FrameDict::hasDomain ( std::string const &  domain) const
inline

Return True if a frame in this FrameDict has the specified domain

◆ mirrorVariants() [1/2]

void ast::FrameSet::mirrorVariants
inline

Indicates that all access to the Variant attribute of the current Frame should should be forwarded to some other nominated Frame in the FrameSet.

For instance, if a value is set subsequently for the Variant attribute of the current Frame, the current Frame will be left unchanged and the setting is instead applied to the nominated Frame. Likewise, if the value of the Variant attribute is requested, the value returned is the value stored for the nominated Frame rather than the current Frame itself.

This provides a mechanism for propagating the effects of variant Mappings around a FrameSet. If a new Frame is added to a FrameSet by connecting it to an pre-existing Frame that has two or more variant Mappings, then it may be appropriate to set the new Frame so that it mirrors the variants Mappings of the pre-existing Frame. If this is done, then it will be possible to select a specific variant Mapping using either the pre-existing Frame or the new Frame.

See also addVariant, getVariant and renameVariant.

Parameters
[in]iframeThe index of the Frame within the FrameSet which is to be mirrored by the current Frame. This value should lie in the range from 1 to the number of Frames in the FrameSet (as given by getNFrame). If AST__NOFRAME is supplied (or the current Frame is specified), then any mirroring established by a previous call to this function is disabled. A value of FrameSet::BASE may be given to specify the base frame.

Notes:

  • Mirrors can be chained. That is, if Frame B is set to be a mirror of Frame A, and Frame C is set to be a mirror of Frame B, then Frame C will act as a mirror of Frame A.
  • Variant Mappings cannot be added to the current Frame if it is mirroring another Frame. So calls to addVariant will cause an error to be reported if the current Frame is mirroring another Frame.
  • Any variant Mappings explicitly added to the current Frame using addVariant will be ignored if the current Frame is mirroring another Frame.

◆ mirrorVariants() [2/2]

void ast::FrameDict::mirrorVariants ( std::string const &  domain)
inline

Variant of mirrorVariants(int) with the frame specified by domain

Exceptions
std::out_of_rangeif no frame found with the specified domain

◆ operator=() [1/2]

FrameDict& ast::FrameDict::operator= ( FrameDict &&  )
default

◆ operator=() [2/2]

FrameDict& ast::FrameDict::operator= ( FrameDict const &  )
delete

◆ remapFrame() [1/2]

void ast::FrameSet::remapFrame
inline

Modify the relationship (i.e. Mapping) between a specified Frame in a FrameSet and the other Frames in that FrameSet.

Typically, this might be required if the FrameSet has been used to calibrate (say) an image, and that image is re-binned. The Frame describing the image will then have undergone a coordinate transformation, and this should be communicated to the associated FrameSet using this function.

See also addVariant, getVariant and mirrorVariants.

Parameters
[in]iframeThe index within the FrameSet of the Frame to be modified. This value should lie in the range 1 to the number of frames already in this FrameSet (as given by getNFrame). A value of FrameSet::BASE or FrameSet::CURRENT may be given to specify the base Frame or the current Frame respectively.
[in]mapA Mapping whose forward transformation converts coordinate values from the original coordinate system described by the Frame to the new one, and whose inverse transformation converts in the opposite direction.

Notes

  • The relationship between the selected Frame and any other Frame within the FrameSet will be modified by this function, but the relationship between all other Frames in the FrameSet remains unchanged.
  • The number of input and output coordinate values of the Mapping must be equal and must match the number of axes in the Frame being modified.
  • If a simple change of axis order is required, then permAxes may provide a more straightforward method of making the required changes to the FrameSet.
  • This function cannot be used to change the number of Frame axes. To achieve this, a new Frame must be added to the FrameSet (with addFrame) and the original one removed if necessary (with removeFrame).
  • Any variant Mappings associated with the remapped Frame (except for the current variant) will be lost as a consequence of calling this method (see attribute Variant).

◆ remapFrame() [2/2]

void ast::FrameDict::remapFrame ( std::string const &  domain,
Mapping map 
)
inline

Variant of remapFrame(int, Mapping&) with the frame specified by domain

Exceptions
std::out_of_rangeif no frame found with the specified domain

◆ removeFrame() [1/2]

void ast::FrameDict::removeFrame ( int  iframe)
overridevirtual

Remove a Frame from a FrameSet

Other Frame indices in the FrameSet are re-numbered as follows: Frame indices greater than iframe are decremented by one; other Frame indeces retain the same index.

Parameters
[in]iframeThe index of the required Frame within this FrameSet. This value should lie in the range 1 to the number of Frames in this FrameSet (as given by getNFrame). A value of FrameSet::BASE or FrameSet::CURRENT may be given to specify the base Frame or the current Frame, respectively.

Notes

  • Removing a Frame from a FrameSet does not affect the relationship between other Frames in this FrameSet, even if they originally depended on the Frame being removed.
  • The number of Frames in a FrameSet cannot be reduced to zero.
  • If a FrameSet's base or current Frame is removed, the Base or Current attribute (respectively) of the FrameSet will have its value cleared, so that another Frame will then assume its role by default.
  • If any other Frame is removed, the base and current Frames will remain the same. To ensure this, the Base and/or Current attributes of the FrameSet will be changed, if necessary, to reflect any change in the indices of these Frames.
Exceptions
std::runtime_errorif you attempt to remove the last frame

Reimplemented from ast::FrameSet.

◆ removeFrame() [2/2]

void ast::FrameDict::removeFrame ( std::string const &  domain)

Variant of removeFrame(int) with the frame specified by domain

Exceptions
std::out_of_rangeif no frame found with the specified domain

◆ setBase() [1/2]

void ast::FrameSet::setBase
inline

Set Base: index of base Frame

◆ setBase() [2/2]

void ast::FrameDict::setBase ( std::string const &  domain)
inline

Variant of setBase(int) with the frame specified by domain

Exceptions
std::out_of_rangeif no frame found with the specified domain

◆ setCurrent() [1/2]

void ast::FrameSet::setCurrent
inline

Set Current: index of current Frame, starting from 1

◆ setCurrent() [2/2]

void ast::FrameDict::setCurrent ( std::string const &  domain)
inline

Variant of setCurrent(int) with the frame specified by domain

Exceptions
std::out_of_rangeif no frame found with the specified domain

◆ setDomain()

void ast::FrameDict::setDomain ( std::string const &  domain)
overridevirtual

Set the domain of the current frame (and update the internal dict).

Exceptions
std::invalid_argumentif another frame already has this domain

Reimplemented from ast::Frame.

Friends And Related Function Documentation

◆ Object

friend class Object
friend

The documentation for this class was generated from the following files: