Index: trunk/doc/modules/CameraImages.tex
===================================================================
--- trunk/doc/modules/CameraImages.tex	(revision 4609)
+++ trunk/doc/modules/CameraImages.tex	(revision 4696)
@@ -376,14 +376,34 @@
 extant \code{fpa}.
 
-\tbd{Functions to set the valid booleans within an fpa so that only
-certain pieces of the FITS file are read in, and not the whole thing?}
-
-We specify an additional two functions to write out a focal plane
-hierarchy to a FITS file.
-
 \begin{prototype}
-bool pmFPAMorph(pmFPA *toFPA, pmFPA *fromFPA, int chipNum, int cellNum);
+int pmFPASelectChip(pmFPA *fpa, int chipNum);
+int pmFPAExcludeChip(pmFPA *fpa, int chipNum);
+\end{prototype}
+
+These functions are provided to set the \code{valid} booleans within
+an \code{fpa} so that only certain chips within the FITS file are read
+in.  \code{pmFPASelectChip} shall set \code{valid} to \code{true} for
+the specified chip number (\code{chipNum}), and all other chips shall
+have \code{valid} set to \code{false}.  \code{pmFPAExcludeChip} shall
+set \code{valid} to \code{false} only for the specified chip number
+(\code{chipNum}).  In the event that the specified chip number does
+not exist within the \code{fpa}, the function shall generate a
+warning, and perform no action.  Both functions shall return the
+number of chips within the \code{fpa} that have \code{valid} set to
+\code{true} (should be one for \code{pmFPASelectChip}).
+
+\begin{datatype}
+typedef enum {
+    PM_FPA_MORPH_LEFTRIGHT,
+    PM_FPA_MORPH_IMAGEBIAS
+} pmFPAMorphOption;
+\end{datatype}
+
+\begin{prototype}
+bool pmFPAMorph(pmFPA *toFPA, pmFPA *fromFPA, bool positionDependent, int chipNum, int cellNum);
 bool pmFPAWrite(psFits *fits, pmFPA *fpa);
 \end{prototype}
+
+These two functions write out a focal plane hierarchy to a FITS file.
 
 \code{pmFPAMorph} shall morph the \code{fromFPA} focal plane hierarchy
@@ -395,12 +415,17 @@
 the same, these numbers are ignored.  This function shall break apart
 pixel regions or splice them together where required in order to
-satisfy the demands of the \code{toFPA}.  If the bias and trim
-sections are specified by headers in the \code{toFPA}, these shall be
-updated appropriately; otherwise, the function is permitted to fail,
-in which case it shall return \code{false}.
-
-\tbd{pmFPAMorph is a fairly involved operation, since it must cover
-several combinations.  IfA is working on a prototype --- do not
-attempt to code yet.}
+satisfy the demands of the \code{toFPA}.  How the image and overscan
+regions are spliced together depends on the value of
+\code{positionDependent}: If \code{positionDependent} is \code{true},
+then the overscan regions go to the low end of the spliced image if $i
+< N/2$, and to the high end of the spliced image if $i >= N/2$, where
+$i$ (zero-offset) is the cell number, and $N$ is the total number of
+cells; if \code{positionDependent} is \code{false}, then the overscan
+regions all go to the high end of the spliced image.  Care should be
+taken to check the \code{CELL.READDIR}, so the orientation of the
+overscan regions is known.  If the bias and trim sections are
+specified by headers in the \code{toFPA}, these shall be updated
+appropriately; otherwise, the function is permitted to fail with a
+suitable error message, in which case it shall return \code{false}.
 
 \code{pmFPAWrite} shall write the focal plane hierarchy, \code{fpa},
