IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 15929


Ignore:
Timestamp:
Dec 26, 2007, 4:06:59 PM (18 years ago)
Author:
eugene
Message:

indenting

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/psModules/src/camera/pmFPAfile.c

    r15665 r15929  
    2121static void pmFPAfileFree(pmFPAfile *file)
    2222{
    23     if (!file) {
    24         return;
    25     }
    26 
    27     psTrace ("pmFPAfileFree", 5, "freeing %s\n", file->name);
    28     psFree (file->fpa);
    29     psFree (file->src);
    30     psFree (file->readout);
    31     psFree (file->names);
    32 
    33     psFree (file->camera);
    34     psFree (file->cameraName);
    35     psFree (file->format);
    36     psFree (file->formatName);
    37     psFree (file->name);
    38 
    39     if (file->fits != NULL) {
    40         psFitsClose (file->fits);
    41     }
    42     psFree(file->compression);
    43 
    44     psFree (file->filerule);
    45 
    46     psFree (file->filesrc);
    47     psFree (file->detrend);
    48 
    49     psFree (file->filename);
    50     psFree (file->extname);
    51 
     23  if (!file) {
    5224    return;
     25  }
     26
     27  psTrace ("pmFPAfileFree", 5, "freeing %s\n", file->name);
     28  psFree (file->fpa);
     29  psFree (file->src);
     30  psFree (file->readout);
     31  psFree (file->names);
     32
     33  psFree (file->camera);
     34  psFree (file->cameraName);
     35  psFree (file->format);
     36  psFree (file->formatName);
     37  psFree (file->name);
     38
     39  if (file->fits != NULL) {
     40    psFitsClose (file->fits);
     41  }
     42  psFree(file->compression);
     43
     44  psFree (file->filerule);
     45
     46  psFree (file->filesrc);
     47  psFree (file->detrend);
     48
     49  psFree (file->filename);
     50  psFree (file->extname);
     51
     52  return;
    5353}
    5454
    5555pmFPAfile *pmFPAfileAlloc()
    5656{
    57     pmFPAfile *file = psAlloc(sizeof(pmFPAfile));
    58     psMemSetDeallocator(file, (psFreeFunc) pmFPAfileFree);
    59 
    60     file->wrote_phu = false;
    61     file->readout = NULL;
    62     file->header = NULL;
    63 
    64     file->fileLevel = PM_FPA_LEVEL_NONE;
    65     file->dataLevel = PM_FPA_LEVEL_NONE;
    66     file->freeLevel = PM_FPA_LEVEL_NONE;
    67     file->mosaicLevel = PM_FPA_LEVEL_NONE;
    68 
    69     file->type = PM_FPA_FILE_NONE;
    70     file->mode = PM_FPA_MODE_NONE;
    71     file->state = PM_FPA_STATE_CLOSED;
    72 
    73     file->fpa = NULL;
    74     file->fits = NULL;
    75     file->compression = NULL;
    76     file->bitpix = 0;
    77     file->floatType = PS_FITS_FLOAT_NONE;
    78     file->names = psMetadataAlloc();
    79 
    80     file->camera = NULL;
    81     file->cameraName = NULL;
    82     file->format = NULL;
    83     file->formatName = NULL;
    84     file->name = NULL;
    85 
    86     file->filerule = NULL;
    87 
    88     file->filename = NULL;
    89     file->extname  = NULL;
    90 
    91     file->filesrc = NULL;
    92     file->detrend = NULL;
    93 
    94     file->xBin = 1;
    95     file->yBin = 1;
    96     file->src = NULL;
    97 
    98     file->save = false;
    99 
    100     return file;
     57  pmFPAfile *file = psAlloc(sizeof(pmFPAfile));
     58  psMemSetDeallocator(file, (psFreeFunc) pmFPAfileFree);
     59
     60  file->wrote_phu = false;
     61  file->readout = NULL;
     62  file->header = NULL;
     63
     64  file->fileLevel = PM_FPA_LEVEL_NONE;
     65  file->dataLevel = PM_FPA_LEVEL_NONE;
     66  file->freeLevel = PM_FPA_LEVEL_NONE;
     67  file->mosaicLevel = PM_FPA_LEVEL_NONE;
     68
     69  file->type = PM_FPA_FILE_NONE;
     70  file->mode = PM_FPA_MODE_NONE;
     71  file->state = PM_FPA_STATE_CLOSED;
     72
     73  file->fpa = NULL;
     74  file->fits = NULL;
     75  file->compression = NULL;
     76  file->bitpix = 0;
     77  file->floatType = PS_FITS_FLOAT_NONE;
     78  file->names = psMetadataAlloc();
     79
     80  file->camera = NULL;
     81  file->cameraName = NULL;
     82  file->format = NULL;
     83  file->formatName = NULL;
     84  file->name = NULL;
     85
     86  file->filerule = NULL;
     87
     88  file->filename = NULL;
     89  file->extname  = NULL;
     90
     91  file->filesrc = NULL;
     92  file->detrend = NULL;
     93
     94  file->xBin = 1;
     95  file->yBin = 1;
     96  file->src = NULL;
     97
     98  file->save = false;
     99
     100  return file;
    101101}
    102102
     
    104104pmReadout *pmFPAfileThisReadout (psMetadata *files, const pmFPAview *view, const char *name)
    105105{
    106     PS_ASSERT_PTR_NON_NULL(files, false);
    107     PS_ASSERT_PTR_NON_NULL(view, false);
    108     PS_ASSERT_PTR_NON_NULL(name, false);
    109     PS_ASSERT_INT_POSITIVE(strlen(name), false);
    110 
    111     bool status;
    112 
    113     pmFPAfile *file = psMetadataLookupPtr (&status, files, name);
    114     if (file == NULL) {
    115         return NULL;
    116     }
    117 
    118     // internal files have the readout as a separate element:
    119     if (file->mode == PM_FPA_MODE_INTERNAL) {
    120         return file->readout;
    121     }
    122 
    123     pmReadout *readout = pmFPAviewThisReadout (view, file->fpa);
    124     return readout;
     106  PS_ASSERT_PTR_NON_NULL(files, false);
     107  PS_ASSERT_PTR_NON_NULL(view, false);
     108  PS_ASSERT_PTR_NON_NULL(name, false);
     109  PS_ASSERT_INT_POSITIVE(strlen(name), false);
     110
     111  bool status;
     112
     113  pmFPAfile *file = psMetadataLookupPtr (&status, files, name);
     114  if (file == NULL) {
     115    return NULL;
     116  }
     117
     118  // internal files have the readout as a separate element:
     119  if (file->mode == PM_FPA_MODE_INTERNAL) {
     120    return file->readout;
     121  }
     122
     123  pmReadout *readout = pmFPAviewThisReadout (view, file->fpa);
     124  return readout;
    125125}
    126126
     
    128128pmCell *pmFPAfileThisCell (psMetadata *files, const pmFPAview *view, const char *name)
    129129{
    130     PS_ASSERT_PTR_NON_NULL(files, false);
    131     PS_ASSERT_PTR_NON_NULL(view, false);
    132     PS_ASSERT_PTR_NON_NULL(name, false);
    133     PS_ASSERT_INT_POSITIVE(strlen(name), false);
    134 
    135     bool status;
    136 
    137     pmFPAfile *file = psMetadataLookupPtr (&status, files, name);
    138     if (file == NULL) {
    139         return NULL;
    140     }
    141 
    142     // internal files have the readout as a separate element:
    143     if (file->mode == PM_FPA_MODE_INTERNAL) {
    144         return NULL;
    145     }
    146 
    147     pmCell *cell = pmFPAviewThisCell(view, file->fpa);
    148     return cell;
     130  PS_ASSERT_PTR_NON_NULL(files, false);
     131  PS_ASSERT_PTR_NON_NULL(view, false);
     132  PS_ASSERT_PTR_NON_NULL(name, false);
     133  PS_ASSERT_INT_POSITIVE(strlen(name), false);
     134
     135  bool status;
     136
     137  pmFPAfile *file = psMetadataLookupPtr (&status, files, name);
     138  if (file == NULL) {
     139    return NULL;
     140  }
     141
     142  // internal files have the readout as a separate element:
     143  if (file->mode == PM_FPA_MODE_INTERNAL) {
     144    return NULL;
     145  }
     146
     147  pmCell *cell = pmFPAviewThisCell(view, file->fpa);
     148  return cell;
    149149}
    150150
     
    152152pmChip *pmFPAfileThisChip (psMetadata *files, const pmFPAview *view, const char *name)
    153153{
    154     PS_ASSERT_PTR_NON_NULL(files, false);
    155     PS_ASSERT_PTR_NON_NULL(view, false);
    156     PS_ASSERT_PTR_NON_NULL(name, false);
    157     PS_ASSERT_INT_POSITIVE(strlen(name), false);
    158 
    159     bool status;
    160 
    161     pmFPAfile *file = psMetadataLookupPtr (&status, files, name);
    162     if (file == NULL) {
    163         return NULL;
    164     }
    165 
    166     // internal files have the readout as a separate element:
    167     if (file->mode == PM_FPA_MODE_INTERNAL) {
    168         return NULL;
    169     }
    170 
    171     pmChip *chip = pmFPAviewThisChip (view, file->fpa);
    172     return chip;
     154  PS_ASSERT_PTR_NON_NULL(files, false);
     155  PS_ASSERT_PTR_NON_NULL(view, false);
     156  PS_ASSERT_PTR_NON_NULL(name, false);
     157  PS_ASSERT_INT_POSITIVE(strlen(name), false);
     158
     159  bool status;
     160
     161  pmFPAfile *file = psMetadataLookupPtr (&status, files, name);
     162  if (file == NULL) {
     163    return NULL;
     164  }
     165
     166  // internal files have the readout as a separate element:
     167  if (file->mode == PM_FPA_MODE_INTERNAL) {
     168    return NULL;
     169  }
     170
     171  pmChip *chip = pmFPAviewThisChip (view, file->fpa);
     172  return chip;
    173173}
    174174
    175175psString pmFPANameFromRule(const char *rule, const pmFPA *fpa, const pmFPAview *view)
    176176{
    177     PS_ASSERT_STRING_NON_EMPTY(rule, NULL);
    178     PS_ASSERT_PTR_NON_NULL(view, NULL);
    179 
    180     psString newName = NULL;            // New name, to be returned
    181     newName = psStringCopy(rule);
    182 
    183     if (strstr (newName, "{FPA.NAME}") != NULL) {
    184         char *name = psMetadataLookupStr (NULL, fpa->concepts, "FPA.NAME");
    185         if (name != NULL) {
    186             psStringSubstitute(&newName, "fpa", "{FPA.NAME}");
    187         }
    188     }
    189     if (strstr (newName, "{CHIP.NAME}") != NULL) {
    190         pmChip *chip = pmFPAviewThisChip (view, fpa);
    191         if (chip != NULL) {
    192             char *name = psMetadataLookupStr (NULL, chip->concepts, "CHIP.NAME");
    193             if (name != NULL) {
    194                 psStringSubstitute(&newName, name, "{CHIP.NAME}");
    195             }
    196         }
    197     }
    198     if (strstr (newName, "{CHIP.ID}") != NULL) {
    199         pmChip *chip = pmFPAviewThisChip (view, fpa);
    200         if (chip != NULL) {
    201             char *name = psMetadataLookupStr (NULL, chip->concepts, "CHIP.ID");
    202             if (name != NULL) {
    203                 psStringSubstitute(&newName, name, "{CHIP.ID}");
    204             }
    205         }
    206     }
    207     if (strstr (newName, "{CHIP.N}") != NULL) {
    208         char *name = NULL;
    209         if (view->chip < 0) {
    210             psStringAppend (&name, "XX");
    211         } else {
    212             psStringAppend (&name, "%02d", view->chip);
    213         }
    214         psStringSubstitute(&newName, name, "{CHIP.N}");
    215         psFree (name);
    216     }
    217     if (strstr (newName, "{CELL.NAME}") != NULL) {
    218         pmCell *cell = pmFPAviewThisCell (view, fpa);
    219         if (cell != NULL) {
    220             char *name = psMetadataLookupStr (NULL, cell->concepts, "CELL.NAME");
    221             if (name != NULL) {
    222                 psStringSubstitute(&newName, name, "{CELL.NAME}");
    223             }
    224         }
    225     }
    226     if (strstr (newName, "{CELL.N}") != NULL) {
    227         char *name = NULL;
    228         if (view->cell < 0) {
    229             psStringAppend (&name, "XX");
    230         } else {
    231             psStringAppend (&name, "%02d", view->cell);
    232         }
    233         psStringSubstitute(&newName, name, "{CELL.N}");
    234     }
    235     if (strstr (newName, "{EXTNAME}") != NULL) {
    236         pmHDU *hdu = pmFPAviewThisHDU (view, fpa);
    237         if (hdu->extname && *hdu->extname) {
    238             psStringSubstitute(&newName, hdu->extname, "{EXTNAME}");
    239         }
    240     }
    241     if (strstr (newName, "{FILTER}") != NULL) {
    242         if (fpa != NULL) {
    243             char *name = psMetadataLookupStr (NULL, fpa->concepts, "FPA.FILTER");
    244             if (name && *name) {
    245                 psStringSubstitute(&newName, name, "{FILTER}");
    246             }
    247         }
    248     }
    249     if (strstr (newName, "{FILTER.ID}") != NULL) {
    250         if (fpa != NULL) {
    251             char *name = psMetadataLookupStr (NULL, fpa->concepts, "FPA.FILTERID");
    252             if (name && *name) {
    253                 psStringSubstitute(&newName, name, "{FILTER.ID}");
    254             }
    255         }
    256     }
    257     if (strstr (newName, "{CAMERA}") != NULL) {
    258         if (fpa != NULL) {
    259             char *name = psMetadataLookupStr (NULL, fpa->concepts, "FPA.INSTRUMENT");
    260             if (name && *name) {
    261                 psStringSubstitute(&newName, name, "{CAMERA}");
    262             }
    263         }
    264     }
    265     if (strstr (newName, "{INSTRUMENT}") != NULL) {
    266         if (fpa != NULL) {
    267             char *name = psMetadataLookupStr (NULL, fpa->concepts, "FPA.INSTRUMENT");
    268             if (name && *name) {
    269                 psStringSubstitute(&newName, name, "{INSTRUMENT}");
    270             }
    271         }
    272     }
    273     if (strstr (newName, "{DETECTOR}") != NULL) {
    274         if (fpa != NULL) {
    275             char *name = psMetadataLookupStr (NULL, fpa->concepts, "FPA.DETECTOR");
    276             if (name && *name) {
    277                 psStringSubstitute(&newName, name, "{DETECTOR}");
    278             }
    279         }
    280     }
    281     if (strstr (newName, "{TELESCOPE}") != NULL) {
    282         if (fpa != NULL) {
    283             char *name = psMetadataLookupStr (NULL, fpa->concepts, "FPA.TELESCOPE");
    284             if (name && *name) {
    285                 psStringSubstitute(&newName, name, "{TELESCOPE}");
    286             }
    287         }
    288     }
    289     return newName;
     177  PS_ASSERT_STRING_NON_EMPTY(rule, NULL);
     178  PS_ASSERT_PTR_NON_NULL(view, NULL);
     179
     180  psString newName = NULL;            // New name, to be returned
     181  newName = psStringCopy(rule);
     182
     183  if (strstr (newName, "{FPA.NAME}") != NULL) {
     184    char *name = psMetadataLookupStr (NULL, fpa->concepts, "FPA.NAME");
     185    if (name != NULL) {
     186      psStringSubstitute(&newName, "fpa", "{FPA.NAME}");
     187    }
     188  }
     189  if (strstr (newName, "{CHIP.NAME}") != NULL) {
     190    pmChip *chip = pmFPAviewThisChip (view, fpa);
     191    if (chip != NULL) {
     192      char *name = psMetadataLookupStr (NULL, chip->concepts, "CHIP.NAME");
     193      if (name != NULL) {
     194        psStringSubstitute(&newName, name, "{CHIP.NAME}");
     195      }
     196    }
     197  }
     198  if (strstr (newName, "{CHIP.ID}") != NULL) {
     199    pmChip *chip = pmFPAviewThisChip (view, fpa);
     200    if (chip != NULL) {
     201      char *name = psMetadataLookupStr (NULL, chip->concepts, "CHIP.ID");
     202      if (name != NULL) {
     203        psStringSubstitute(&newName, name, "{CHIP.ID}");
     204      }
     205    }
     206  }
     207  if (strstr (newName, "{CHIP.N}") != NULL) {
     208    char *name = NULL;
     209    if (view->chip < 0) {
     210      psStringAppend (&name, "XX");
     211    } else {
     212      psStringAppend (&name, "%02d", view->chip);
     213    }
     214    psStringSubstitute(&newName, name, "{CHIP.N}");
     215    psFree (name);
     216  }
     217  if (strstr (newName, "{CELL.NAME}") != NULL) {
     218    pmCell *cell = pmFPAviewThisCell (view, fpa);
     219    if (cell != NULL) {
     220      char *name = psMetadataLookupStr (NULL, cell->concepts, "CELL.NAME");
     221      if (name != NULL) {
     222        psStringSubstitute(&newName, name, "{CELL.NAME}");
     223      }
     224    }
     225  }
     226  if (strstr (newName, "{CELL.N}") != NULL) {
     227    char *name = NULL;
     228    if (view->cell < 0) {
     229      psStringAppend (&name, "XX");
     230    } else {
     231      psStringAppend (&name, "%02d", view->cell);
     232    }
     233    psStringSubstitute(&newName, name, "{CELL.N}");
     234  }
     235  if (strstr (newName, "{EXTNAME}") != NULL) {
     236    pmHDU *hdu = pmFPAviewThisHDU (view, fpa);
     237    if (hdu->extname && *hdu->extname) {
     238      psStringSubstitute(&newName, hdu->extname, "{EXTNAME}");
     239    }
     240  }
     241  if (strstr (newName, "{FILTER}") != NULL) {
     242    if (fpa != NULL) {
     243      char *name = psMetadataLookupStr (NULL, fpa->concepts, "FPA.FILTER");
     244      if (name && *name) {
     245        psStringSubstitute(&newName, name, "{FILTER}");
     246      }
     247    }
     248  }
     249  if (strstr (newName, "{FILTER.ID}") != NULL) {
     250    if (fpa != NULL) {
     251      char *name = psMetadataLookupStr (NULL, fpa->concepts, "FPA.FILTERID");
     252      if (name && *name) {
     253        psStringSubstitute(&newName, name, "{FILTER.ID}");
     254      }
     255    }
     256  }
     257  if (strstr (newName, "{CAMERA}") != NULL) {
     258    if (fpa != NULL) {
     259      char *name = psMetadataLookupStr (NULL, fpa->concepts, "FPA.INSTRUMENT");
     260      if (name && *name) {
     261        psStringSubstitute(&newName, name, "{CAMERA}");
     262      }
     263    }
     264  }
     265  if (strstr (newName, "{INSTRUMENT}") != NULL) {
     266    if (fpa != NULL) {
     267      char *name = psMetadataLookupStr (NULL, fpa->concepts, "FPA.INSTRUMENT");
     268      if (name && *name) {
     269        psStringSubstitute(&newName, name, "{INSTRUMENT}");
     270      }
     271    }
     272  }
     273  if (strstr (newName, "{DETECTOR}") != NULL) {
     274    if (fpa != NULL) {
     275      char *name = psMetadataLookupStr (NULL, fpa->concepts, "FPA.DETECTOR");
     276      if (name && *name) {
     277        psStringSubstitute(&newName, name, "{DETECTOR}");
     278      }
     279    }
     280  }
     281  if (strstr (newName, "{TELESCOPE}") != NULL) {
     282    if (fpa != NULL) {
     283      char *name = psMetadataLookupStr (NULL, fpa->concepts, "FPA.TELESCOPE");
     284      if (name && *name) {
     285        psStringSubstitute(&newName, name, "{TELESCOPE}");
     286      }
     287    }
     288  }
     289  return newName;
    290290}
    291291
     
    293293psString pmFPAfileNameFromRule(const char *rule, const pmFPAfile *file, const pmFPAview *view)
    294294{
    295     PS_ASSERT_PTR_NON_NULL(rule, NULL);
    296     PS_ASSERT_INT_POSITIVE(strlen(rule), NULL);
    297     PS_ASSERT_PTR_NON_NULL(file, NULL);
    298     PS_ASSERT_PTR_NON_NULL(view, NULL);
    299 
    300     psString newRule = NULL;            // Rule to pass on to pmFPANameFromRule
    301     newRule = psStringCopy(rule);
    302 
    303     if (strstr(newRule, "{OUTPUT}") != NULL) {
    304         char *name = psMetadataLookupStr(NULL, file->names, "OUTPUT");
    305         if (name) {
    306             psStringSubstitute(&newRule, name, "{OUTPUT}");
    307         }
    308     }
    309 
    310     psString newName = pmFPANameFromRule(newRule, file->fpa, view); // New name, to be returned
    311     psFree(newRule);
    312 
    313     return newName;
     295  PS_ASSERT_PTR_NON_NULL(rule, NULL);
     296  PS_ASSERT_INT_POSITIVE(strlen(rule), NULL);
     297  PS_ASSERT_PTR_NON_NULL(file, NULL);
     298  PS_ASSERT_PTR_NON_NULL(view, NULL);
     299
     300  psString newRule = NULL;            // Rule to pass on to pmFPANameFromRule
     301  newRule = psStringCopy(rule);
     302
     303  if (strstr(newRule, "{OUTPUT}") != NULL) {
     304    char *name = psMetadataLookupStr(NULL, file->names, "OUTPUT");
     305    if (name) {
     306      psStringSubstitute(&newRule, name, "{OUTPUT}");
     307    }
     308  }
     309
     310  psString newName = pmFPANameFromRule(newRule, file->fpa, view); // New name, to be returned
     311  psFree(newRule);
     312
     313  return newName;
    314314}
    315315
     
    318318bool pmFPAfileCopyView (pmFPA *out, pmFPA *in, const pmFPAview *view)
    319319{
    320     PS_ASSERT_PTR_NON_NULL(out, false);
    321     PS_ASSERT_PTR_NON_NULL(in, false);
    322     PS_ASSERT_PTR_NON_NULL(view, false);
    323 
    324     // pmFPAWrite takes care of all PHUs as needed
    325     if (view->chip == -1) {
    326         pmFPACopy (out, in);
    327         return true;
    328     }
    329     if (view->chip >= in->chips->n) {
    330         psError(PS_ERR_IO, true, "Requested chip == %d >= in->chips->n == %ld", view->chip, in->chips->n);
    331         return false;
    332     }
    333     pmChip *inChip = in->chips->data[view->chip];
    334     pmChip *outChip = out->chips->data[view->chip];
    335 
    336     if (view->cell == -1) {
    337         pmChipCopy (outChip, inChip);
    338         return true;
    339     }
    340     if (view->cell >= inChip->cells->n) {
    341         psError(PS_ERR_IO, true, "Requested cell == %d>= inChip->cells->n == %ld",
    342                 view->cell, inChip->cells->n);
    343         return false;
    344     }
    345     pmCell *inCell = inChip->cells->data[view->cell];
    346     pmCell *outCell = outChip->cells->data[view->cell];
    347 
    348     if (view->readout == -1) {
    349         pmCellCopy (outCell, inCell);
    350         return true;
    351     }
    352     psError(PS_ERR_UNKNOWN, true, "Returning false");
     320  PS_ASSERT_PTR_NON_NULL(out, false);
     321  PS_ASSERT_PTR_NON_NULL(in, false);
     322  PS_ASSERT_PTR_NON_NULL(view, false);
     323
     324  // pmFPAWrite takes care of all PHUs as needed
     325  if (view->chip == -1) {
     326    pmFPACopy (out, in);
     327    return true;
     328  }
     329  if (view->chip >= in->chips->n) {
     330    psError(PS_ERR_IO, true, "Requested chip == %d >= in->chips->n == %ld", view->chip, in->chips->n);
    353331    return false;
    354 
    355     // XXX add readout / segment equivalents
     332  }
     333  pmChip *inChip = in->chips->data[view->chip];
     334  pmChip *outChip = out->chips->data[view->chip];
     335
     336  if (view->cell == -1) {
     337    pmChipCopy (outChip, inChip);
     338    return true;
     339  }
     340  if (view->cell >= inChip->cells->n) {
     341    psError(PS_ERR_IO, true, "Requested cell == %d>= inChip->cells->n == %ld",
     342            view->cell, inChip->cells->n);
     343    return false;
     344  }
     345  pmCell *inCell = inChip->cells->data[view->cell];
     346  pmCell *outCell = outChip->cells->data[view->cell];
     347
     348  if (view->readout == -1) {
     349    pmCellCopy (outCell, inCell);
     350    return true;
     351  }
     352  psError(PS_ERR_UNKNOWN, true, "Returning false");
     353  return false;
     354
     355  // XXX add readout / segment equivalents
    356356}
    357357
    358358// given an already-opened fits file, write the components corresponding
    359359// to the specified view
    360 bool pmFPAfileCopyStructureView (pmFPA *out, pmFPA *in, int xBin, int yBin, const pmFPAview *view)
    361 {
    362     bool status;
    363     PS_ASSERT_PTR_NON_NULL(out, false);
    364     PS_ASSERT_PTR_NON_NULL(in, false);
    365     PS_ASSERT_PTR_NON_NULL(view, false);
    366 
    367     // XXX this should be smarter (ie, only copy concepts from the current chips)
    368     // but such a call is needed, so re-copy stuff rather than no copy
    369     pmFPACopyConcepts (out, in);
    370 
    371     // pmFPAWrite takes care of all PHUs as needed
    372     if (view->chip == -1) {
    373         status = pmFPACopyStructure (out, in, xBin, yBin);
    374         return status;
    375     }
    376     if (view->chip >= in->chips->n) {
    377         psError(PS_ERR_IO, true, "Requested chip == %d >= in->chips->n == %ld", view->chip, in->chips->n);
    378         return false;
    379     }
    380     pmChip *inChip = in->chips->data[view->chip];
    381     pmChip *outChip = out->chips->data[view->chip];
    382 
    383     if (view->cell == -1) {
    384         status = pmChipCopyStructure (outChip, inChip, xBin, yBin);
    385         return status;
    386     }
    387     if (view->cell >= inChip->cells->n) {
    388         psError(PS_ERR_IO, true, "Requested cell == %d>= inChip->cells->n == %ld",
    389                 view->cell, inChip->cells->n);
    390         return false;
    391     }
    392     pmCell *inCell = inChip->cells->data[view->cell];
    393     pmCell *outCell = outChip->cells->data[view->cell];
    394 
    395     status = pmCellCopyStructure (outCell, inCell, xBin, yBin);
     360bool pmFPAfileCopyStructureView (pmFPA *out, const pmFPA *in, int xBin, int yBin, const pmFPAview *view)
     361{
     362  bool status;
     363  PS_ASSERT_PTR_NON_NULL(out, false);
     364  PS_ASSERT_PTR_NON_NULL(in, false);
     365  PS_ASSERT_PTR_NON_NULL(view, false);
     366
     367  // XXX this should be smarter (ie, only copy concepts from the current chips)
     368  // but such a call is needed, so re-copy stuff rather than no copy
     369  pmFPACopyConcepts (out, in);
     370
     371  // pmFPAWrite takes care of all PHUs as needed
     372  if (view->chip == -1) {
     373    status = pmFPACopyStructure (out, in, xBin, yBin);
    396374    return status;
     375  }
     376  if (view->chip >= in->chips->n) {
     377    psError(PS_ERR_IO, true, "Requested chip == %d >= in->chips->n == %ld", view->chip, in->chips->n);
     378    return false;
     379  }
     380  pmChip *inChip = in->chips->data[view->chip];
     381  pmChip *outChip = out->chips->data[view->chip];
     382
     383  if (view->cell == -1) {
     384    status = pmChipCopyStructure (outChip, inChip, xBin, yBin);
     385    return status;
     386  }
     387  if (view->cell >= inChip->cells->n) {
     388    psError(PS_ERR_IO, true, "Requested cell == %d>= inChip->cells->n == %ld",
     389            view->cell, inChip->cells->n);
     390    return false;
     391  }
     392  pmCell *inCell = inChip->cells->data[view->cell];
     393  pmCell *outCell = outChip->cells->data[view->cell];
     394
     395  status = pmCellCopyStructure (outCell, inCell, xBin, yBin);
     396  return status;
    397397}
    398398
    399399pmFPAfileType pmFPAfileTypeFromString(const char *type)
    400400{
    401     PS_ASSERT_STRING_NON_EMPTY(type, PM_FPA_FILE_NONE);
    402 
    403     if (!strcasecmp (type, "SX"))     {
    404         return PM_FPA_FILE_SX;
    405     }
    406     if (!strcasecmp (type, "OBJ"))     {
    407         return PM_FPA_FILE_OBJ;
    408     }
    409     if (!strcasecmp (type, "CMP"))     {
    410         return PM_FPA_FILE_CMP;
    411     }
    412     if (!strcasecmp (type, "CMF"))     {
    413         return PM_FPA_FILE_CMF;
    414     }
    415     if (!strcasecmp (type, "RAW"))     {
    416         return PM_FPA_FILE_RAW;
    417     }
    418     if (!strcasecmp (type, "IMAGE"))     {
    419         return PM_FPA_FILE_IMAGE;
    420     }
    421     if (!strcasecmp (type, "PSF"))     {
    422         return PM_FPA_FILE_PSF;
    423     }
    424     if (!strcasecmp (type, "JPEG"))     {
    425         return PM_FPA_FILE_JPEG;
    426     }
    427     if (!strcasecmp (type, "KAPA"))     {
    428         return PM_FPA_FILE_KAPA;
    429     }
    430     if (!strcasecmp (type, "MASK"))     {
    431         return PM_FPA_FILE_MASK;
    432     }
    433     if (!strcasecmp (type, "WEIGHT"))     {
    434         return PM_FPA_FILE_WEIGHT;
    435     }
    436     if (!strcasecmp (type, "FRINGE")) {
    437         return PM_FPA_FILE_FRINGE;
    438     }
    439     if (!strcasecmp (type, "HEADER"))     {
    440         return PM_FPA_FILE_HEADER;
    441     }
    442     if (!strcasecmp (type, "ASTROM"))     {
    443         return PM_FPA_FILE_ASTROM;
    444     }
    445 
    446     return PM_FPA_FILE_NONE;
     401  PS_ASSERT_STRING_NON_EMPTY(type, PM_FPA_FILE_NONE);
     402
     403  if (!strcasecmp (type, "SX"))     {
     404    return PM_FPA_FILE_SX;
     405  }
     406  if (!strcasecmp (type, "OBJ"))     {
     407    return PM_FPA_FILE_OBJ;
     408  }
     409  if (!strcasecmp (type, "CMP"))     {
     410    return PM_FPA_FILE_CMP;
     411  }
     412  if (!strcasecmp (type, "CMF"))     {
     413    return PM_FPA_FILE_CMF;
     414  }
     415  if (!strcasecmp (type, "RAW"))     {
     416    return PM_FPA_FILE_RAW;
     417  }
     418  if (!strcasecmp (type, "IMAGE"))     {
     419    return PM_FPA_FILE_IMAGE;
     420  }
     421  if (!strcasecmp (type, "PSF"))     {
     422    return PM_FPA_FILE_PSF;
     423  }
     424  if (!strcasecmp (type, "JPEG"))     {
     425    return PM_FPA_FILE_JPEG;
     426  }
     427  if (!strcasecmp (type, "KAPA"))     {
     428    return PM_FPA_FILE_KAPA;
     429  }
     430  if (!strcasecmp (type, "MASK"))     {
     431    return PM_FPA_FILE_MASK;
     432  }
     433  if (!strcasecmp (type, "WEIGHT"))     {
     434    return PM_FPA_FILE_WEIGHT;
     435  }
     436  if (!strcasecmp (type, "FRINGE")) {
     437    return PM_FPA_FILE_FRINGE;
     438  }
     439  if (!strcasecmp (type, "HEADER"))     {
     440    return PM_FPA_FILE_HEADER;
     441  }
     442  if (!strcasecmp (type, "ASTROM"))     {
     443    return PM_FPA_FILE_ASTROM;
     444  }
     445
     446  return PM_FPA_FILE_NONE;
    447447}
    448448
    449449char *pmFPAfileStringFromType(pmFPAfileType type)
    450450{
    451     switch (type) {
    452       case PM_FPA_FILE_SX:
    453         return ("SX");
    454       case PM_FPA_FILE_OBJ:
    455         return ("OBJ");
    456       case PM_FPA_FILE_CMP:
    457         return ("CMP");
    458       case PM_FPA_FILE_CMF:
    459         return ("CMF");
    460       case PM_FPA_FILE_RAW:
    461         return ("RAW");
    462       case PM_FPA_FILE_IMAGE:
    463         return ("IMAGE");
    464       case PM_FPA_FILE_PSF:
    465         return ("PSF");
    466       case PM_FPA_FILE_JPEG:
    467         return ("JPEG");
    468       case PM_FPA_FILE_KAPA:
    469         return ("KAPA");
    470       case PM_FPA_FILE_MASK:
    471         return ("MASK");
    472       case PM_FPA_FILE_WEIGHT:
    473         return ("WEIGHT");
    474       case PM_FPA_FILE_FRINGE:
    475         return ("FRINGE");
    476       case PM_FPA_FILE_HEADER:
    477         return ("HEADER");
    478       case PM_FPA_FILE_ASTROM:
    479         return ("ASTROM");
    480       default:
    481         return ("NONE");
    482     }
    483     return ("NONE");
    484 }
     451  switch (type) {
     452    case PM_FPA_FILE_SX:
     453      return ("SX");
     454    case PM_FPA_FILE_OBJ:
     455      return ("OBJ");
     456    case PM_FPA_FILE_CMP:
     457      return ("CMP");
     458    case PM_FPA_FILE_CMF:
     459      return ("CMF");
     460    case PM_FPA_FILE_RAW:
     461      return ("RAW");
     462    case PM_FPA_FILE_IMAGE:
     463      return ("IMAGE");
     464    case PM_FPA_FILE_PSF:
     465      return ("PSF");
     466    case PM_FPA_FILE_JPEG:
     467      return ("JPEG");
     468    case PM_FPA_FILE_KAPA:
     469      return ("KAPA");
     470    case PM_FPA_FILE_MASK:
     471      return ("MASK");
     472    case PM_FPA_FILE_WEIGHT:
     473      return ("WEIGHT");
     474    case PM_FPA_FILE_FRINGE:
     475      return ("FRINGE");
     476    case PM_FPA_FILE_HEADER:
     477      return ("HEADER");
     478    case PM_FPA_FILE_ASTROM:
     479      return ("ASTROM");
     480    default:
     481      return ("NONE");
     482  }
     483  return ("NONE");
     484}
Note: See TracChangeset for help on using the changeset viewer.