Index: trunk/Ohana/src/libdvo/include/dvo.h
===================================================================
--- trunk/Ohana/src/libdvo/include/dvo.h	(revision 10931)
+++ trunk/Ohana/src/libdvo/include/dvo.h	(revision 12332)
@@ -18,9 +18,40 @@
 
 /* DVO table formats */
-enum {DVO_FORMAT_UNDEF, DVO_FORMAT_INTERNAL, DVO_FORMAT_ELIXIR, DVO_FORMAT_LONEOS, DVO_FORMAT_PANSTARRS, DVO_FORMAT_PMTEST} DVOTableFormat;
+enum {DVO_FORMAT_UNDEF, 
+      DVO_FORMAT_INTERNAL, 
+      DVO_FORMAT_ELIXIR, 
+      DVO_FORMAT_LONEOS, 
+      DVO_FORMAT_PANSTARRS, 
+      DVO_FORMAT_PMTEST, 
+      DVO_FORMAT_PANSTARRS_DEV_0
+} DVOTableFormat;
 
 /* image data modes in RegImage */
 enum {T_UNDEF = -1, T_NONE, T_OBJECT, T_DARK, T_BIAS, T_FLAT, T_MASK, T_FRINGE, T_SCATTER, T_MODES, T_FRINGEPTS, T_ANY, N_TYPE};
 enum {M_UNDEF = -1, M_NONE, M_MEF, M_SPLIT, M_SINGLE, M_CUBE, M_SLICE, M_MODES, N_MODE};
+
+typedef enum {
+    PROJ_NONE, // undefined
+    PROJ_ZEA, // zenithal
+    PROJ_ZPL, // zenithal
+    PROJ_ARC, // zenithal
+    PROJ_STG, // zenithal
+    PROJ_SIN, // zenithal
+    PROJ_TAN, // zenithal
+    PROJ_DIS, // zenithal (TAN + polyterms)
+    PROJ_LIN, // cartesian
+    PROJ_PLY, // cartesian
+    PROJ_WRP, // cartesian
+    PROJ_AIT, // pseudocyl
+    PROJ_GLS, // pseudocyl
+    PROJ_PAR, // pseudocyl
+} OhanaProjection;
+
+typedef enum {
+  PROJ_MODE_NONE,
+  PROJ_MODE_CARTESIAN,
+  PROJ_MODE_ZENITHAL,
+  PROJ_MODE_PSEUDOCYL,
+} OhanaProjectionMode;
 
 /* RegImage.flag values */
@@ -39,5 +70,5 @@
 
 /* photometry code types */
-# define PHOT_PRI 0x01
+// # define PHOT_PRI 0x01
 # define PHOT_SEC 0x02
 # define PHOT_DEP 0x03
@@ -133,8 +164,9 @@
 
 typedef struct {
-  int Ncode;
-  int Nsecfilt;
-  int hashcode[0x10000];
-  int hashNsec[0x10000];
+  int Ncode;					  // number of photcodes
+  int Nsecfilt;					  // number of average magnitudes
+  int hashcode[0x10000];		  // index from photcode value to sequence
+  int hashNsec[0x10000];		  // index from photcode value to Nsec seq
+  int codeNsec[0x10000];		  // index from Nsec seq to photcode value
   PhotCode *code;
 } PhotCodeData;
@@ -191,4 +223,8 @@
 
 /* in coords.c, using libautocode/def/coords.d */
+int  XY_to_LM (double *L, double *M, double x,  double y,   Coords *coords);
+int  LM_to_XY (double *x,  double *y,   double L, double M, Coords *coords);
+int  RD_to_LM (double *L, double *M, double ra,  double dec,   Coords *coords);
+int  LM_to_RD (double *ra, double *dec,   double L, double M, Coords *coords);
 int  XY_to_RD (double *ra, double *dec, double x,  double y,   Coords *coords);
 int  RD_to_XY (double *x,  double *y,   double ra, double dec, Coords *coords);
@@ -199,4 +235,7 @@
 void RegisterMosaic (Coords *coords);
 void coords_precess (double *ra, double *dec, double in_epoch, double out_epoch);
+OhanaProjection GetProjection (char *ctype);
+int SetProjection (char *ctype, OhanaProjection proj);
+OhanaProjectionMode GetProjectionMode (OhanaProjection proj);
 
 char *libdvo_version ();
@@ -232,21 +271,17 @@
 float PhotdM (PhotCode *code, Average *average, SecFilt *secfilt);
 
-# if (0)
-short iPhotInst (Measure *measure);
-short iPhotAbs (Measure *measure);
-short iPhotCat (Measure *measure);
-short iPhotSys (Measure *measure, Average *average, SecFilt *secfilt);
-short iPhotRel (Measure *measure, Average *average, SecFilt *secfilt);
-short iPhotCal (Measure *thisone, Average *average, SecFilt *secfilt, Measure *measure, PhotCode *code);
-short iPhotAve (PhotCode *code, Average *average, SecFilt *secfilt);
-short iPhotRef (PhotCode *code, Average *average, SecFilt *secfilt, Measure *measure);
-short iPhotXm (PhotCode *code, Average *average, SecFilt *secfilt);
-short iPhotdM (PhotCode *code, Average *average, SecFilt *secfilt);
-# endif
-
-float iPhotColor (Average *average, SecFilt *secfilt, Measure *measure, PhotCode *code);
+float PhotColorForCode (Average *average, SecFilt *secfilt, Measure *measure, PhotCode *code);
 int PhotColor (Average *average, SecFilt *secfilt, Measure *measure, int c1, int c2, double *color);
 
-int LoadPhotcodes (char *filename);
+PhotCodeData *GetPhotcodeTable ();
+
+int LoadPhotcodes (char *catdir_file, char *master_file);
+int LoadPhotcodesText (char *filename);
+int LoadPhotcodesFITS (char *filename);
+int SavePhotcodesText (char *filename);
+int SavePhotcodesFITS (char *filename);
+
+void PrintPhotcodeNamebyCode (FILE *f, char *format, int code);
+
 int GetPhotcodeCodebyName (char *name);
 int GetPhotcodeEquivCodebyName (char *name);
@@ -297,40 +332,61 @@
 
 /*** conversion functions / I/O conversions ***/
-Average *ReadRawAverage (FILE *f, int Naverage, int format);
+Average *ReadRawAverage (FILE *f, int Naverage, int format, SecFilt **primary);
 Measure *ReadRawMeasure (FILE *f, int Nmeasure, int format);
 SecFilt *ReadRawSecFilt (FILE *f, int Nsecfilt, int format);
-int WriteRawAverage (FILE *f, Average *average, int Naverage, int format);
+int WriteRawAverage (FILE *f, Average *average, int Naverage, int format, SecFilt *primary);
 int WriteRawMeasure (FILE *f, Measure *measure, int Nmeasure, int format);
 int WriteRawSecFilt (FILE *f, SecFilt *secfilt, int Nsecfilt, int format);
 
-Average *FtableToAverage (FTable *ftable, int *Naverage, int *format);
-Average *AverageLoneosToInternal (AverageLoneos *in, int Nvalues);
-Average *AverageElixirToInternal (AverageElixir *in, int Nvalues);
-Average *AveragePanstarrsToInternal (AveragePanstarrs *in, int Nvalues);
-Average *AveragePMtestToInternal (AveragePMtest *in, int Nvalues);
-AverageLoneos *AverageInternalToLoneos (Average *in, int Nvalues);
-AverageElixir *AverageInternalToElixir (Average *in, int Nvalues);
-AveragePanstarrs *AverageInternalToPanstarrs (Average *in, int Nvalues);
-AveragePMtest *AverageInternalToPMtest (Average *in, int Nvalues);
-
+Average *FtableToAverage (FTable *ftable, int *Naverage, int *format, SecFilt **primary);
 Measure *FtableToMeasure (FTable *ftable, int *Nmeasure, int *format);
-Measure *MeasureLoneosToInternal (MeasureLoneos *in, int Nvalues);
-Measure *MeasureElixirToInternal (MeasureElixir *in, int Nvalues);
-Measure *MeasurePanstarrsToInternal (MeasurePanstarrs *in, int Nvalues);
-MeasureLoneos *MeasureInternalToLoneos (Measure *in, int Nvalues);
-MeasureElixir *MeasureInternalToElixir (Measure *in, int Nvalues);
-MeasurePanstarrs *MeasureInternalToPanstarrs (Measure *in, int Nvalues);
-
 SecFilt *FtableToSecFilt (FTable *ftable, int *Nsecfilt, int *format);
-SecFilt *SecFiltLoneosToInternal (SecFiltLoneos *in, int Nvalues);
-SecFilt *SecFiltElixirToInternal (SecFiltElixir *in, int Nvalues);
-SecFilt *SecFiltPanstarrsToInternal (SecFiltPanstarrs *in, int Nvalues);
-SecFiltLoneos *SecFiltInternalToLoneos (SecFilt *in, int Nvalues);
-SecFiltElixir *SecFiltInternalToElixir (SecFilt *in, int Nvalues);
-SecFiltPanstarrs *SecFiltInternalToPanstarrs (SecFilt *in, int Nvalues);
-
-int AverageToFtable (FTable *ftable, Average *average, int Naverage, int format);
+int FtableToImage (FTable *ftable, Header *theader, int *format);
+
+int AverageToFtable (FTable *ftable, Average *average, int Naverage, int format, SecFilt *primary);
 int MeasureToFtable (FTable *ftable, Measure *measure, int Nmeasure, int format);
 int SecFiltToFtable (FTable *ftable, SecFilt *secfilt, int Nsecfilt, int format);
+int ImageToFtable (FTable *ftable, Header *theader, int format);
+int ImageToVtable (VTable *vtable, Header *theader, int format);
+
+Image 		       *ImageElixirToInternal (ImageElixir *in, int Nvalues);
+Image 		       *ImageLoneosToInternal (ImageLoneos *in, int Nvalues);
+Image 		       *ImagePanstarrsToInternal (ImagePanstarrs *in, int Nvalues);
+Image 		       *ImagePanstarrs_DEV_0_ToInternal (ImagePanstarrs_DEV_0 *in, int Nvalues);
+
+ImageElixir 	       *ImageInternalToElixir (Image *in, int Nvalues);
+ImageLoneos 	       *ImageInternalToLoneos (Image *in, int Nvalues);
+ImagePanstarrs         *ImageInternalToPanstarrs (Image *in, int Nvalues);
+ImagePanstarrs_DEV_0   *ImageInternalToPanstarrs_DEV_0 (Image *in, int Nvalues);
+
+Average                *AverageLoneosToInternal (AverageLoneos *in, int Nvalues, SecFilt **primary);
+Average 	       *AverageElixirToInternal (AverageElixir *in, int Nvalues, SecFilt **primary);
+Average 	       *AveragePanstarrsToInternal (AveragePanstarrs *in, int Nvalues);
+Average 	       *AveragePanstarrs_DEV_0_ToInternal (AveragePanstarrs_DEV_0 *in, int Nvalues);
+
+AverageLoneos 	       *AverageInternalToLoneos (Average *in, int Nvalues, SecFilt *primary);
+AverageElixir 	       *AverageInternalToElixir (Average *in, int Nvalues, SecFilt *primary);
+AveragePanstarrs       *AverageInternalToPanstarrs (Average *in, int Nvalues);
+AveragePanstarrs_DEV_0 *AverageInternalToPanstarrs_DEV_0 (Average *in, int Nvalues);
+
+Measure                *MeasureLoneosToInternal (MeasureLoneos *in, int Nvalues);
+Measure 	       *MeasureElixirToInternal (MeasureElixir *in, int Nvalues);
+Measure 	       *MeasurePanstarrsToInternal (MeasurePanstarrs *in, int Nvalues);
+Measure 	       *MeasurePanstarrs_DEV_0_ToInternal (MeasurePanstarrs_DEV_0 *in, int Nvalues);
+
+MeasureLoneos 	       *MeasureInternalToLoneos (Measure *in, int Nvalues);
+MeasureElixir 	       *MeasureInternalToElixir (Measure *in, int Nvalues);
+MeasurePanstarrs       *MeasureInternalToPanstarrs (Measure *in, int Nvalues);
+MeasurePanstarrs_DEV_0 *MeasureInternalToPanstarrs_DEV_0 (Measure *in, int Nvalues);
+
+SecFilt 	       *SecFiltLoneosToInternal (SecFiltLoneos *in, int Nvalues);
+SecFilt 	       *SecFiltElixirToInternal (SecFiltElixir *in, int Nvalues);
+SecFilt 	       *SecFiltPanstarrsToInternal (SecFiltPanstarrs *in, int Nvalues);
+SecFilt 	       *SecFiltPanstarrs_DEV_0_ToInternal (SecFiltPanstarrs_DEV_0 *in, int Nvalues);
+
+SecFiltLoneos 	       *SecFiltInternalToLoneos (SecFilt *in, int Nvalues);
+SecFiltElixir 	       *SecFiltInternalToElixir (SecFilt *in, int Nvalues);
+SecFiltPanstarrs       *SecFiltInternalToPanstarrs (SecFilt *in, int Nvalues);
+SecFiltPanstarrs_DEV_0 *SecFiltInternalToPanstarrs_DEV_0 (SecFilt *in, int Nvalues);
 
 /*** DVO image db I/O Functions ***/
@@ -345,14 +401,4 @@
 int dvo_image_addrows (FITS_DB *db, Image *new, int Nnew);
 void dvo_image_create (FITS_DB *db, double ZeroPoint);
-
-int FtableToImage (FTable *ftable, Header *theader, int *format);
-int ImageToFtable (FTable *ftable, Header *theader, int format);
-int ImageToVtable (VTable *vtable, Header *theader, int format);
-Image *ImageElixirToInternal (ImageElixir *in, int Nvalues);
-ImageElixir *ImageInternalToElixir (Image *in, int Nvalues);
-Image *ImageLoneosToInternal (ImageLoneos *in, int Nvalues);
-ImageLoneos *ImageInternalToLoneos (Image *in, int Nvalues);
-Image *ImagePanstarrsToInternal (ImagePanstarrs *in, int Nvalues);
-ImagePanstarrs *ImageInternalToPanstarrs (Image *in, int Nvalues);
 
 /* skyregion APIs */
