A FrameSet consists of a set of one or more Frames (which describe coordinate systems), connected together by Mappings (which describe how the coordinate systems are inter-related). A FrameSet makes it possible to obtain a Mapping between any pair of these Frames (i.e. to convert between any of the coordinate systems which it describes). The individual Frames are identified within the FrameSet by an integer index, with Frames being numbered consecutively from one as they are added to the FrameSet.
Every FrameSet has a "
base"
Frame and a "
current"
Frame (which are allowed to be the
same). Any of the Frames may be nominated to hold these positions, and the choice
is determined by the values of the FrameSet’
s Base and Current attributes,
which hold the indices of the relevant Frames. By default, the first Frame
added to a FrameSet is its base Frame, and the last one added is its current
Frame.
The base Frame describes the "
native"
coordinate system of whatever the FrameSet is
used to calibrate (e.g. the pixel coordinates of an image) and the current Frame
describes the "
apparent"
coordinate system in which it should be viewed (e.g.
displayed, etc.). Any further Frames represent a library of alternative coordinate
systems, which may be selected by making them current.
When a FrameSet is used in a context that requires a Frame, (e.g. obtaining its Title value, or number of axes), the current Frame is used. A FrameSet may therefore be used in place of its current Frame in most situations.
When a FrameSet is used in a context that requires a Mapping, the Mapping used is the
one between its base Frame and its current Frame. Thus, a FrameSet may be used to
convert "
native"
coordinates into "
apparent"
ones, and vice versa. Like any
Mapping, a FrameSet may also be inverted (see astInvert), which has the effect of
interchanging its base and current Frames and hence of reversing the Mapping between
them.
Regions may be added into a FrameSet (since a Region is a type of Frame), either explicitly or as components within CmpFrames. In this case the Mapping between a pair of Frames within a FrameSet will include the effects of the clipping produced by any Regions included in the path between the Frames.
"
printf"
format specifiers identified by "
%"
symbols in
the normal way. If no initialisation is required, a zero-length string may be
supplied. "
options"
string contains "
%"
format specifiers,
then an optional list of additional arguments may follow it in order to supply
values to be substituted for these specifiers. The rules for supplying these are
identical to those for the astSet function (and for the C "
printf"
function). If a pointer to an existing FrameSet is given for the "
frame"
parameter, then the new
FrameSet will (as a special case) be initialised to contain the same Frames and
Mappings, and to have the same attribute values, as the one supplied. This process is
similar to making a copy of a FrameSet (see astCopy), except that the Frames and
Mappings contained in the original are not themselves copied, but are shared by both
FrameSets.
A null Object pointer (AST__NULL) will be returned if this function is invoked with the AST error status set, or if it should fail for any reason.