IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jun 12, 2015, 6:18:23 PM (11 years ago)
Author:
eugene
Message:

merge changes from EAM dev branch ohana.20150429

Location:
trunk/Ohana
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Ohana

  • trunk/Ohana/src/opihi/cmd.data

  • trunk/Ohana/src/opihi/cmd.data/wd.c

    r38062 r38441  
    1818  }
    1919
     20  char *CompressMode = NULL;
     21  if ((N = get_argument (argc, argv, "-compress-mode"))) {
     22    remove_argument (N, &argc, argv);
     23    CompressMode = strcreate(argv[N]);
     24    remove_argument (N, &argc, argv);
     25  } else if ((N = get_argument (argc, argv, "-compress"))) {
     26    remove_argument (N, &argc, argv);
     27    CompressMode = strcreate("GZIP_1");
     28  }
     29
    2030  outZero = 0;
    2131  newZero = FALSE;
     
    5464    if (outUnsign == -1) {
    5565      gprint (GP_ERR, "-unsign options: t, f, true, false\n");
     66      FREE (CompressMode);
    5667      return (FALSE);
    5768    }
     
    6273  if (argc != 3) {
    6374    gprint (GP_ERR, "USAGE: wd <buffer> <filename> [-bitpix N] [-bscale X] [-bzero X] [-extend] [-newplane]\n");
     75    FREE (CompressMode);
    6476    return (FALSE);
    6577  }
    6678
    67   if ((buf = SelectBuffer (argv[1], OLDBUFFER, TRUE)) == NULL) return (FALSE);
     79  if ((buf = SelectBuffer (argv[1], OLDBUFFER, TRUE)) == NULL) { FREE (CompressMode); return (FALSE); }
    6880
    6981  if (!newBitpix) outBitpix = buf[0].bitpix;
     
    159171    gfits_free_header (&temp_header);
    160172    gfits_free_matrix (&temp_matrix);
     173    FREE (CompressMode);
    161174    return (status);
    162175  }
    163176 
     177  // not compatible with extend
     178  if (CompressMode) {
     179    Header myHeader;
     180    Matrix myMatrix;
     181
     182    FILE *f = fopen (argv[2], "w");
     183    if (!f) {
     184      fprintf (stderr, "ERROR: cannot open image subset file for output %s\n", argv[2]);
     185      FREE (CompressMode);
     186      return FALSE;
     187    }
     188   
     189    gfits_init_header (&myHeader);
     190    myHeader.extend = TRUE;
     191    gfits_create_header (&myHeader);
     192    gfits_create_matrix (&myHeader, &myMatrix);
     193    gfits_fwrite_header  (f, &myHeader);
     194    gfits_fwrite_matrix  (f, &myMatrix);
     195    gfits_free_header (&myHeader);
     196    gfits_free_matrix (&myMatrix);
     197
     198    FTable ftable;
     199    Header theader;
     200
     201    ftable.header = &theader;
     202
     203    gfits_compress_image (&temp_header, &temp_matrix, &ftable, NULL, CompressMode);
     204    gfits_byteswap_varlength_column (&ftable, 1);
     205    gfits_fwrite_Theader (f, &theader);
     206    gfits_fwrite_table  (f, &ftable);
     207    fclose (f);
     208
     209    gfits_free_header (&theader);
     210    gfits_free_table (&ftable);
     211    FREE (CompressMode);
     212    return (TRUE);
     213  }
     214
    164215  /* the actual write-to-disk goes here */
    165216  if (!gfits_write_header (argv[2], &temp_header)) {
     
    167218    gfits_free_header (&temp_header);
    168219    gfits_free_matrix (&temp_matrix);
     220    FREE (CompressMode);
    169221    return (FALSE);
    170222  }
     
    174226    gfits_free_header (&temp_header);
    175227    gfits_free_matrix (&temp_matrix);
     228    FREE (CompressMode);
    176229    return (FALSE);
    177230  }
     
    180233  gfits_free_matrix (&temp_matrix);
    181234 
     235  FREE (CompressMode);
    182236  return (TRUE);
    183237}
Note: See TracChangeset for help on using the changeset viewer.