Index: trunk/psphot/src/psphot.h
===================================================================
--- trunk/psphot/src/psphot.h	(revision 4901)
+++ trunk/psphot/src/psphot.h	(revision 4946)
@@ -38,4 +38,10 @@
 } psLine;
 
+enum {
+    PSPHOT_MASK_INVALID   = 0x01,
+    PSPHOT_MASK_SATURATED = 0x02,
+    PSPHOT_MASK_KEEP      = 0x08,
+} MaskValues;
+
 // used by mask operations
 # define AND true
@@ -45,119 +51,108 @@
 
 // top-level psphot functions
-psImageData *setup (psMetadata *config);
-psStats *image_stats (psImageData *imdata, psMetadata *config);
-psArray *find_peaks (psImageData *imdata, psMetadata *config, psStats *sky);
-psArray *source_moments (psImageData *imdata, psMetadata *config, psArray *allpeaks);
-pmPSF *choose_psf_model (psMetadata *config, psArray *sources, psStats *sky);
-bool apply_psf_model (psImageData *imdata, psMetadata *config, psArray *sources, pmPSF *psf, psStats *sky);
-bool test_psf_scatter (psArray *sources);
-bool mark_psf_sources (psArray *sources, psMetadata *config);
-bool subtract_psf_sources (psArray *sources);
-bool fit_galaxies (psImageData *imdata, psMetadata *config, psArray *sources, psStats *skyStats);
-bool subtract_galaxies (psArray *sources, psMetadata *config);
-bool subtract_psf_source (psSource *source);
-bool mark_psf_source (psSource *source, float shapeNsigma, float minSN, float maxChi, float SATURATE);
-bool find_defects (psImage *zapmask, psArray *sources, psMetadata *config, pmPSF *psf);
-bool basic_classes (psArray *sources, psMetadata *config);
+psMetadata  *psphotArguments (int *argc, char **argv);
+psImageData *psphotSetup (psMetadata *config);
+psStats     *psphotImageStats (psImageData *imdata, psMetadata *config);
+psArray     *pmPeaksSigmaLimit (psImageData *imdata, psMetadata *config, psStats *sky);
+psArray     *psphotSourceStats (psImageData *imdata, psMetadata *config, psArray *allpeaks);
+pmPSF       *psphotChoosePSF (psMetadata *config, psArray *sources, psStats *sky);
+bool         psphotApplyPSF (psImageData *imdata, psMetadata *config, psArray *sources, pmPSF *psf, psStats *sky);
+bool         psphotFitGalaxies (psImageData *imdata, psMetadata *config, psArray *sources, psStats *skyStats);
+void         psphotOutput (psImageData *imdata, psMetadata *config, psArray *sources);
+
+bool         psphotMarkPSF (psSource *source, float shapeNsigma, float minSN, float maxChi, float SATURATE);
+bool         psphotSubtractPSF (psSource *source);
+int 	     psphotSortBySN (const void **a, const void **b);
+
+// psImageData functions
+psImageData *psImageDataAlloc (psImage *image, psImage *noise, psImage *mask, psMetadata *header);
 
 // psf utilities
-pmPSF *pmPSFAlloc (psModelType type);
-pmPSF_Test *pmPSF_TestAlloc (psArray *stars, char *modelName);
-pmPSF_Test *pmPSF_TestModel (psArray *sources, char *modelName, float radius);
-bool pmPSFFromModels (pmPSF *psf, psArray *models, psVector *mask);
-psModel *psModelFromPSF (psModel *model, pmPSF *psf);
-bool pmSourcePhotometry (float *fitMag, float *obsMag, psModel *model, psImage *image, psImage *mask);
-bool pmPSFMetricModel (pmPSF_Test *test, float RADIUS);
+pmPSF       *pmPSFAlloc (psModelType type);
+pmPSF_Test  *pmPSF_TestAlloc (psArray *stars, char *modelName);
+pmPSF_Test  *pmPSF_TestModel (psArray *sources, char *modelName, float radius);
+bool	     pmPSFFromModels (pmPSF *psf, psArray *models, psVector *mask);
+psModel	    *psModelFromPSF (psModel *model, pmPSF *psf);
+bool	     pmSourcePhotometry (float *fitMag, float *obsMag, psModel *model, psImage *image, psImage *mask);
+bool	     pmPSFMetricModel (pmPSF_Test *test, float RADIUS);
 
-// output options
-bool DumpPeaks (psArray *sources, char *filename);
-bool DumpMoments (psArray *sources, char *filename);
-bool DumpModelFits (psArray *models, char *filename);
-bool DumpModelPSF (psArray *sources, char *filename);
-bool DumpModelFLT (psArray *sources, char *filename);
-bool DumpModelNULL (psArray *sources, char *filename);
-bool DumpImage (psImage *image, char *filename);
-bool DumpPSFTestData (pmPSF_Test *test, char *filename);
-void output (psImageData *imdata, psMetadata *config, psArray *sources);
-bool WriteSourcesText (psImageData *imdata, psMetadata *config, psArray *sources);
-bool WriteSourcesOBJ (psImageData *imdata, psMetadata *config, psArray *sources);
-bool WriteSourcesSX (psImageData *imdata, psMetadata *config, psArray *sources);
-bool WriteSourcesCMP (psImageData *imdata, psMetadata *config, psArray *sources);
-bool WriteSourcesCMF (psImageData *imdata, psMetadata *config, psArray *sources);
-bool init_line (char *line, int *Nline);
-bool add_to_line (char *line, int *Nline, char *format, ...);
+// output functions
+bool 	     pmSourcesWriteText (psImageData *imdata, char *filename, psArray *sources);
+bool 	     pmSourcesWriteOBJ (psImageData *imdata, char *filename, psArray *sources);
+bool 	     pmSourcesWriteCMP (psImageData *imdata, char *filename, psArray *sources);
+bool 	     pmSourcesWriteCMF (psImageData *imdata, char *filename, psArray *sources);
+bool 	     pmSourcesWriteSX (psImageData *imdata, char *filename, psArray *sources);
+int  	     pmSourcesDophotType (psSource *source);
+bool 	     psPeaksWriteText (psArray *sources, char *filename);
+bool 	     psMomentsWriteText (psArray *sources, char *filename);
+bool 	     psModelWritePSFs (psArray *sources, char *filename);
+bool 	     psModelWriteFLTs (psArray *sources, char *filename);
+bool 	     psModelWriteNULLs (psArray *sources, char *filename);
 
-// psphot utilities
-int usage ();
-psMetadata *load_args (int *argc, char **argv);
-int by_SN (const void **a, const void **b);
-psArray *pmPeaksSubset(psArray *peaks, psF32 maxValue, const psRegion *valid);
-psArray *SelectPSFStars (psArray *sources);
-bool pmSourceDefinePixels(psSource *mySource, const psImageData *imdata, psF32 x, psF32 y, psF32 Radius);
-bool pmSourceLocalSky_EAM (psSource *source, psStatsOptions statsOptions, psF32 Radius);
-bool pmSourceFitModel_EAM(psSource *source, psModel *model, const bool PSF);
-bool pmSourceMoments_EAM(psSource *source, psF32 radius);
-bool pmModelFitStatus (psModel *model);
-psBool p_psMinLM_GuessABP_EAM (psImage  *Alpha, psVector *Beta, psVector *Params, const psImage  *alpha, const psVector *beta, const psVector *params, const psVector *paramMask, const psVector *beta_lim, const psVector *params_min, const psVector *params_max, psF64 lambda);
-psBool psMinimizeLMChi2_EAM(psMinimization *min, psImage *covar, psVector *params, const psVector *paramMask, const psArray *x, const psVector *y, const psVector *yErr, psMinimizeLMChi2Func func);
-psF64 p_psMinLM_dLinear (const psVector *Beta, const psVector *beta, psF64 lambda);
-psImageData *psImageDataAlloc (psImage *image, psImage *noise, psImage *mask, psMetadata *header);
+// psModule extra utilities
+bool 	     pmSourceDefinePixels(psSource *mySource, const psImageData *imdata, psF32 x, psF32 y, psF32 Radius);
+bool 	     pmSourceLocalSky_EAM (psSource *source, psStatsOptions statsOptions, psF32 Radius);
+bool 	     pmSourceFitModel_EAM(psSource *source, psModel *model, const bool PSF);
+bool 	     pmSourceMoments_EAM(psSource *source, psF32 radius);
+bool 	     pmModelFitStatus (psModel *model);
+int	     pmSourceDophotType (psSource *source);
 
-// fitsource utilities
-bool onesource (psImageData *imdata, psMetadata *config, char *modelName, float x, float y);
-psMetadata *fs_args (int *argc, char **argv);
-int fs_usage ();
+// minimize 
+psBool 	     p_psMinLM_GuessABP_EAM (psImage  *Alpha, psVector *Beta, psVector *Params, const psImage  *alpha, const psVector *beta, const psVector *params, const psVector *paramMask, const psVector *beta_lim, const psVector *params_min, const psVector *params_max, psF64 lambda);
+psBool 	     psMinimizeLMChi2_EAM(psMinimization *min, psImage *covar, psVector *params, const psVector *paramMask, const psArray *x, const psVector *y, const psVector *yErr, psMinimizeLMChi2Func func);
+psF64        p_psMinLM_dLinear (const psVector *Beta, const psVector *beta, psF64 lambda);
 
-// image mask functions
-void psImageMaskRegion (psImage *image, psRegion *region, bool logical_and, int maskValue);
-void psImageKeepRegion (psImage *image, psRegion *region, bool logical_and, int maskValue);
-void psImageMaskCircle (psImage *image, double x, double y, double radius, bool logical_and, int maskValue);
-void psImageKeepCircle (psImage *image, double x, double y, double radius, bool logical_and, int maskValue);
+// psLib extra utilities
+bool 	     psTimerStart (char *name);
+void 	     psTimerFree ();
+bool 	     psTimerClear (char *name);
+psF64 	     psTimerMark (char *name);
+psS32 	     psLogArguments (int *argc, char **argv);
+psS32 	     psTraceArguments (int *argc, char **argv);
+int	     psArgumentGet (int argc, char **argv, char *arg);
+int	     psArgumentRemove (int N, int *argc, char **argv);
+psF32        pmConfigLookupF32 (bool *status, psMetadata *config, psMetadata *header, char *name);
+psVector    *psVectorCreate (double lower, double upper, double delta, psElemType type);
+void 	     psImageMaskRegion (psImage *image, psRegion *region, bool logical_and, int maskValue);
+void 	     psImageKeepRegion (psImage *image, psRegion *region, bool logical_and, int maskValue);
+void 	     psImageMaskCircle (psImage *image, double x, double y, double radius, bool logical_and, int maskValue);
+void 	     psImageKeepCircle (psImage *image, double x, double y, double radius, bool logical_and, int maskValue);
+psVector    *psGetRowVectorFromImage(psImage *image, psU32 row);
 
 // basic image functions
-bool psImageInit (psImage *image,...);
-void psImageSmooth (psImage *image, float sigma, float Nsigma);
-psRegion *psRegionForImage (psRegion *out, psImage *image, psRegion *in);
-psRegion *psRegionSquare (psF32 x, psF32 y, psF32 radius);
-
-// misc global functions
-psVector *p_psGetRowVectorFromImage(psImage *image, psU32 row);
-psVector *psGetRowVectorFromImage(psImage *image, psU32 row);
-
-// utilities
-bool psTimerStart (char *name);
-void psTimerFree ();
-bool psTimerClear (char *name);
-psF64 psTimerMark (char *name);
-psS32 psLogArguments (int *argc, char **argv);
-psS32 psTraceArguments (int *argc, char **argv);
-int get_argument (int argc, char **argv, char *arg);
-int remove_argument (int N, int *argc, char **argv);
-psF32 pmConfigLookupF32 (bool *status, psMetadata *config, psMetadata *header, char *name);
-psVector *psVectorCreate (double lower, double upper, double delta, psElemType type);
+bool         psImageInit (psImage *image,...);
+void	     psImageSmooth (psImage *image, float sigma, float Nsigma);
+psRegion    *psRegionForImage (psRegion *out, psImage *image, psRegion *in);
+psRegion    *psRegionSquare (psF32 x, psF32 y, psF32 radius);
+int          psphotSaveImage (psMetadata *header, psImage *image, char *filename);
 
 // psLine functions
-psLine *psLineAlloc (int Nline);
-bool psLineInit (psLine *line);
-bool psLineAdd (psLine *line, char *format, ...);
+psLine      *psLineAlloc (int Nline);
+bool	     psLineInit (psLine *line);
+bool	     psLineAdd (psLine *line, char *format, ...);
 
 // polynomial functions
-psF32 Polynomial2DEval(const psPolynomial2D* myPoly, psF32 x, psF32 y);
-psImage *psBuildSums2D(psImage* sums,psF64 x,psF64 y,psS32 nXterm, psS32 nYterm);
-psPolynomial2D* VectorFitPolynomial2DOrd_EAM(psPolynomial2D* myPoly, psVector* mask, const psVector* x, const psVector* y, const psVector* z, const psVector* zErr);
-psPolynomial2D* Polynomial2DAlloc(psS32 nXorder, psS32 nYorder, psPolynomialType type);
-void psPolynomial2DDump (psPolynomial2D *poly);
-psPolynomial2D* RobustFit2D_nomask(psPolynomial2D* poly, const psVector* x, const psVector* y, const psVector* z, const psVector* zErr);
-psPolynomial2D* RobustFit2D(psPolynomial2D* poly, psVector* mask, const psVector* x, const psVector* y, const psVector* z, const psVector* zErr);
-psVector *Polynomial2DEvalVector(const psPolynomial2D *myPoly, const psVector *x,const psVector *y);
+psF32	        Polynomial2DEval(const psPolynomial2D* myPoly, psF32 x, psF32 y);
+psImage	       *psBuildSums2D(psImage* sums,psF64 x,psF64 y,psS32 nXterm, psS32 nYterm);
+psPolynomial2D *VectorFitPolynomial2DOrd_EAM(psPolynomial2D* myPoly, psVector* mask, const psVector* x, const psVector* y, const psVector* z, const psVector* zErr);
+psPolynomial2D *Polynomial2DAlloc(psS32 nXorder, psS32 nYorder, psPolynomialType type);
+void	        psPolynomial2DDump (psPolynomial2D *poly);
+psPolynomial2D *RobustFit2D_nomask(psPolynomial2D* poly, const psVector* x, const psVector* y, const psVector* z, const psVector* zErr);
+psPolynomial2D *RobustFit2D(psPolynomial2D* poly, psVector* mask, const psVector* x, const psVector* y, const psVector* z, const psVector* zErr);
+psVector       *Polynomial2DEvalVector(const psPolynomial2D *myPoly, const psVector *x,const psVector *y);
+psVector       *psBuildSums1D(psVector* sums, psF64 x,psS32 nTerm);
+void	        psPolynomial1DDump (psPolynomial1D *poly);
+psF32		Polynomial1DEval_EAM(psF32 x, const psPolynomial1D* myPoly);
+psVector       *Polynomial1DEvalVector_EAM(const psPolynomial1D *myPoly, const psVector *x);
+psPolynomial1D *Polynomial1DAlloc(psS32 nOrder, psPolynomialType type);
+psPolynomial1D *VectorFitPolynomial1DOrd_EAM(psPolynomial1D* myPoly, psVector* mask, const psVector* x, const psVector* y, const psVector* yErr);
 
-psVector *psBuildSums1D(psVector* sums, psF64 x,psS32 nTerm);
-void psPolynomial1DDump (psPolynomial1D *poly);
-psF32 Polynomial1DEval_EAM(psF32 x, const psPolynomial1D* myPoly);
-psVector *Polynomial1DEvalVector_EAM(const psPolynomial1D *myPoly, const psVector *x);
-psPolynomial1D* Polynomial1DAlloc(psS32 nOrder, psPolynomialType type);
-psPolynomial1D* VectorFitPolynomial1DOrd_EAM(psPolynomial1D* myPoly, psVector* mask, const psVector* x, const psVector* y, const psVector* yErr);
+// fitsource
+bool	        onesource (psImageData *imdata, psMetadata *config, char *modelName, float x, float y);
+psMetadata     *fs_args (int *argc, char **argv);
+int             fs_usage ();
+bool		DumpImage (psImage *image, char *filename);
 
 // deprecated
-void pmSourceMaskRegion (psSource *source, psRegion *region);
-void pmSourceMaskSaturated (psSource *source, float saturate);
+// void pmSourceMaskRegion (psSource *source, psRegion *region);
+//psVector    *p_psGetRowVectorFromImage(psImage *image, psU32 row);
