Exemplo n.º 1
0
bool MusicDecoder::open(const string_t& filename){
  reset();
  bool r=this->_open(filename);
  if (r) {
    _filename=filename;
    while (string_t_find_success(_filename.find('/')))
      _filename.erase(0,_filename.find('/')+1);
    while (string_t_find_success(_filename.find('\\')))
      _filename.erase(0,_filename.find('\\')+1);
    
    
    //detect author and name from filename
    string_t partist;
    string_t pname;
    
    #if defined(SFML_STRING_HPP) 
    if (string_t_find_success(_filename.find('-')))
    {
      partist=_filename;
      pname=_filename;
      pname.erase(0,pname.find('-')+1);
      partist.erase(partist.find('-'), string_t_size(partist));
      
      remove_file_extension(pname);
      
      //Remove useless spaces and '_'
      remove_useless_spaces_before(pname);
      remove_useless_spaces_after(pname);
      
      //Detect track number from filename 
      remove_track_number(partist);
      remove_useless_spaces_after(partist);
      
    }
    else {
      //Identifying filename as title
      pname=_filename;
      remove_file_extension(pname);
      remove_track_number(pname);
      remove_useless_spaces_after(pname);
    }
    #endif
    
    if (string_t_empty(_name))
      setName(pname);
    if (string_t_empty(_artist))
      setAuthor(partist);
  }
  else _infosreset();
  return r;
}
Exemplo n.º 2
0
void convert_datacube(char *in,char *out)
{
  E3D_file src,dst;
  SPECTRUM sig, noise, *rms, *signal;
  SPAXEL *spaxels;
  E3Dspec_desc *ptdesc;
  int i, specId, nbspax, npix=-1;
  double start = -1, end;
  char extname[lg_name+1], tablename[lg_name+1];

  if (open_E3D_file(&src,in,"I")<0) {
    print_error("Cannot open input file %s",in);
    exit_session(ERR_OPEN);
  }
  else {
    if (has_common_bounds(&src)) {
      get_common_param(&src,&npix,&start,&end);
    }
    if (create_E3D_file(&dst,out,npix,start,src.step,src.data_type,src.ident,src.cunit) < 0) {
      close_E3D_file(&src);
      print_error("Cannot create output file %s",out);
      exit_session(ERR_CREAT);
    }
    else {
      signal = NULL;
      rms = NULL;
      ptdesc = NULL;
      if (src.signal != NULL) {
        signal = &sig;
        ptdesc = src.signal;
      }
      if (src.noise != NULL) {
        rms = &noise;
        ptdesc = src.noise;
      }
      else { 
        if (src.signal == NULL) {
          close_E3D_file(&src);
          print_error("Inconsistent input file (no spectra inside)");
          exit_session(ERR_BAD_PARAM);
        }
      }

      reset_print_progress();
      for (i=0;i<src.nbspec;i++) {
        print_progress("Convert datacube: ", (int)((100*i)/src.nbspec),1);
        specId = ptdesc[i].specId;
        get_E3D_spec(&src,signal,rms,specId);
        set_quality(rms);
        put_E3D_spec(&dst,signal,rms,specId);
        nbspax = get_E3D_spaxels(&src,specId,&spaxels);
        put_E3D_spaxels(&dst,specId,nbspax,spaxels);
      }
      if (src.data_format == TIGER_FORMAT) {	/* set groups */
        set_tiger_group(&src);
      }
      put_E3D_groups(&dst,src.ngroups,src.groups);
      print_progress("Convert datacube: ", (int)100,1);
	  
      CP_non_std_desc(&src,&dst);
      close_E3D_file(&src);
      close_E3D_file(&dst);

      printf("\n");

      if (src.data_format == TIGER_FORMAT) {	/* save table in special extension */
        get_science_table_name(in,tablename);
	append_tbl_extension(out, OutputIO.basic_io);
        sprintf(extname,"%s[%s]",out,E3D_TIGER_EXT);
        convert_table(tablename,extname);
      }
      if (dst.data_format == TIGER_FORMAT) {	/* save science extension as table */
        strcpy(tablename,out);
	remove_file_extension(tablename);
        sprintf(extname,"%s[%s]",in,E3D_TIGER_EXT);
        convert_table(extname,tablename);
      }
    }
  }
}