IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 35756


Ignore:
Timestamp:
Jul 3, 2013, 2:08:28 PM (13 years ago)
Author:
eugene
Message:

add some init functions for tables and matrices

Location:
trunk/Ohana/src/libfits
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Ohana/src/libfits/header/F_init_H.c

    r15487 r35756  
    1818  header[0].Naxes  = 0;
    1919  header[0].buffer = NULL;
    20   for (i = 0; i < FT_MAX_NAXES; i++)
    21     header[0].Naxis[i] = 0;
     20  for (i = 0; i < FT_MAX_NAXES; i++) header[0].Naxis[i] = 0;
     21  header[0].datasize = 0;
    2222
    2323  return (TRUE);
  • trunk/Ohana/src/libfits/include/gfitsio.h

    r35162 r35756  
    2626# define FT_LINE_LENGTH          80  /* FITS header line length */
    2727# define FT_RECORD_SIZE        2880  /* FITS block size */
     28
     29# define FT_BZERO_INT16 1.0*0x8000       
     30# define FT_BZERO_INT32 1.0*0x80000000
    2831
    2932/* this structure defines the buffer which contains a header
     
    137140/******************************* Matrix functions *************/
    138141
     142int     gfits_init_matrix              PROTO((Matrix *matrix));
    139143void    gfits_add_matrix_value         PROTO((Matrix *matrix, off_t x, off_t y, double value));
    140144int     gfits_convert_format           PROTO((Header *header, Matrix *matrix, int outBitpix, double outScale, double outZero, int inBlank, int outUnsign));
     
    165169
    166170/******************************* Table functions *************/
     171
     172int     gfits_init_table               PROTO((FTable *table));
     173int     gfits_init_vtable              PROTO((VTable *table));
    167174
    168175char   *gfits_table_print              PROTO((FTable *ftable,...));
  • trunk/Ohana/src/libfits/matrix/F_create_M.c

    r27435 r35756  
    2525}
    2626
     27/*********************** fits create matrix *******************************/
     28int gfits_init_matrix (Matrix *matrix) {
     29
     30  int i;
     31
     32  matrix[0].bitpix = 8;
     33  matrix[0].unsign = FALSE;
     34  matrix[0].bscale = 1.0;
     35  matrix[0].bzero  = 0.0;
     36  matrix[0].Naxes  = 0;
     37  for (i = 0; i < FT_MAX_NAXES; i++) matrix[0].Naxis[i] = 0;
     38
     39  matrix[0].buffer = NULL;
     40  matrix[0].datasize = 0;
     41  return (TRUE);
     42
     43}
     44
    2745// XXX free buffer if non-null: need to double check for existing frees
  • trunk/Ohana/src/libfits/table/F_create_T.c

    r27435 r35756  
    11# include <ohana.h>
    22# include <gfitsio.h>
     3
     4/*********************** fits init table *******************************/
     5int gfits_init_table (FTable *table) {
     6  table[0].header = NULL;
     7  table[0].buffer = NULL;
     8  table[0].datasize = 0;
     9  table[0].validsize = 0;
     10  return (TRUE);
     11
     12}
     13
     14/*********************** fits init table *******************************/
     15int gfits_init_vtable (VTable *table) {
     16
     17  table[0].header   = NULL;
     18  table[0].buffer   = NULL;
     19  table[0].row      = NULL;
     20  table[0].Nrow     = 0;
     21  table[0].datasize = 0;
     22  table[0].pad      = 0;
     23  return (TRUE);
     24}
    325
    426/*********************** fits create table *******************************/
  • trunk/Ohana/src/libfits/table/F_define_column.c

    r33648 r35756  
    11# include <ohana.h>
    22# include <gfitsio.h>
     3
     4# if (0)
     5/*** special version of this function to define unsigned int columns (special values for BZERO, BSCALE) ********************/
     6int gfits_define_bintable_column_unsigned_int (Header *header, char *format, char *label, char *comment, char *unit, int inttype) {
     7
     8  assert (label);
     9  assert (format);
     10
     11  off_t Naxis1;
     12  int Nfields, Nbytes, Nval;
     13  char type[16], field[16];
     14 
     15  if (!gfits_bintable_format (format, type, &Nval, &Nbytes)) return (FALSE);
     16 
     17  Nfields = 0;
     18  gfits_scan (header, "TFIELDS", "%d", 1, &Nfields);
     19  gfits_scan (header, "NAXIS1",  OFF_T_FMT, 1,  &Naxis1);
     20  Nfields ++;
     21  Naxis1 += Nbytes*Nval;
     22
     23  sprintf (field, "TTYPE%d", Nfields);
     24  gfits_modify (header, field, "%s", 1, label);
     25  gfits_modify_alt (header, field, "%C", 1, comment);
     26  sprintf (field, "TUNIT%d", Nfields);
     27  gfits_modify (header, field, "%s", 1, unit);
     28  sprintf (field, "TFORM%d", Nfields);
     29  gfits_modify (header, field, "%s", 1, format);
     30
     31  // add scaling parameters unless they amount to a noop
     32  if ((bscale != 1.0) || (bzero != 0.0)) {
     33      sprintf (field, "TSCAL%d", Nfields);
     34      gfits_modify (header, field, "%lf", 1, bscale);
     35      sprintf (field, "TZERO%d", Nfields);
     36      gfits_modify (header, field, "%lf", 1, bzero);
     37  }
     38
     39  /* update TFIELDS & NAXIS1 */
     40  gfits_modify (header, "TFIELDS", "%d", 1, Nfields);
     41  gfits_modify (header, "NAXIS1",  OFF_T_FMT, 1,  Naxis1);
     42  header[0].Naxis[0] = Naxis1;
     43
     44  return (TRUE);
     45}
     46# endif
    347
    448/***********************/
Note: See TracChangeset for help on using the changeset viewer.