40 #define MOT_CLEF_INV 2 41 #define GRANDEUR_INV 4 233 #define MAXL 80 // Longueur maximale d'une ligne d'entete */ 234 #define N_MAX_ITEMS 30 // Nombre maximal d'items optionnels */ 235 #define L_MAX_ITEM 49 // Longueur maximale pour un item 251 "",
"byte",
"char",
"short",
"long",
"float",
"double",
"complex",
252 "double_complex",
"rgba",
"structure",
"pointer",
"list",
"int",
"uint",
254 "vec3f",
"vec3d",
"vec4f",
"vec4d",
"hfloat",
"vec9f",
"vec9d" 260 "fac_x",
"fac_y",
"fac_z",
"fac_t" 266 0,
sizeof(
Byte),
sizeof(
char),
sizeof(short),
sizeof(
long),
sizeof(float),
267 sizeof(
double), 0, 0, 0, 0,
sizeof(
void *), 0,
sizeof(
int),
sizeof(
UInt),
268 sizeof(
unsigned short),
269 3*
sizeof(float), 3*
sizeof(
double), 4*
sizeof(float), 4*
sizeof(
double),
270 sizeof(
short_float), 9*
sizeof(
float), 9*
sizeof(double)
277 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 3, 3, 4, 4, 1, 9, 9
297 is_deprecated(
char *s ) {
298 for(
unsigned int i=0; i<
sizeof(
deprecated)/
sizeof(deprecated[0]); i++ )
299 if( !strcmp( s, deprecated[i] ) )
305 #define MAKE_CONSISTENT( D ) \ 306 if( bool_dim_##D && bool_inc_##D && bool_##D ) \ 307 if( v_dim_##D != v_inc_##D * (v_##D-1) ) { \ 308 fprintf( stderr, "Adjusting dim_%s to make dimensions consistent\n", #D ); \ 309 v_dim_##D = v_inc_##D * (v_##D-1);\ 354 if (getenv(
"HEADER_QUIET")) Header_Quiet =
VRAI;
358 cerr<<
"\nERREUR: descripteur de fichier nul\n";
359 snprintf(Header_Message,
sizeof Header_Message,
"\nERREUR: descripteur de fichier nul\n");
365 cerr<<
"\nHeader_Write: type inconnu: "<< v_type;
366 snprintf(Header_Message,
sizeof Header_Message,
"\nHeader_Write: type inconnu: %d\n",
370 const char *type = Header_Type[v_type];
374 cerr <<
"\nHeader_Write: taille invalide:" << v_taille << endl;
375 snprintf(Header_Message,
sizeof Header_Message,
"\nHeader_Write: taille invalide: %d\n",
380 if (v_trame<MIN_TRAME || v_trame>
MAX_TRAME) {
382 fprintf(stderr,
"\nHeader_Write: trame inconnue: %d\n", v_trame);
383 snprintf(Header_Message,
sizeof Header_Message,
"\nHeader_Write: trame inconnue: %d\n",
396 snprintf(ligne,
sizeof ligne,
"x:%d y:%d z:%d t:%d type:%s systeme:%s ",
397 v_x, v_y, v_z, v_t, type, systemestr());
399 snprintf(ligne,
sizeof ligne,
"x:%d y:%d t:%d type:%s systeme:%s ",
400 v_x, v_y, v_t, type, systemestr());
404 snprintf(ligne,
sizeof ligne,
"x:%d y:%d z:%d type:%s systeme:%s ",
405 v_x, v_y, v_z, type, systemestr());
407 snprintf(ligne,
sizeof ligne,
"x:%d y:%d type:%s systeme:%s ",
408 v_x, v_y, type, systemestr());
411 int n_car = strlen(ligne);
422 snprintf(&items[n_items][0],
L_MAX_ITEM,
"taille:%d ", v_taille);
423 l_item[n_items] = strlen(&items[n_items][0]);
427 snprintf(&items[n_items][0],
L_MAX_ITEM,
"org_x:%g ", v_org_x);
428 l_item[n_items] = strlen(&items[n_items][0]);
432 snprintf(&items[n_items][0],
L_MAX_ITEM,
"org_y:%g ", v_org_y);
433 l_item[n_items] = strlen(&items[n_items][0]);
437 snprintf(&items[n_items][0],
L_MAX_ITEM,
"org_z:%g ", v_org_z);
438 l_item[n_items] = strlen(&items[n_items][0]);
442 snprintf(&items[n_items][0],
L_MAX_ITEM,
"org_t:%g ", v_org_t);
443 l_item[n_items] = strlen(&items[n_items][0]);
447 snprintf(&items[n_items][0],
L_MAX_ITEM,
"dim_x:%g ", v_dim_x);
448 l_item[n_items] = strlen(&items[n_items][0]);
452 snprintf(&items[n_items][0],
L_MAX_ITEM,
"dim_x:%g ", v_inc_x);
453 l_item[n_items] = strlen(&items[n_items][0]);
457 snprintf(&items[n_items][0],
L_MAX_ITEM,
"dim_y:%g ", v_dim_y);
458 l_item[n_items] = strlen(&items[n_items][0]);
462 snprintf(&items[n_items][0],
L_MAX_ITEM,
"dim_y:%g ", v_inc_y);
463 l_item[n_items] = strlen(&items[n_items][0]);
467 snprintf(&items[n_items][0],
L_MAX_ITEM,
"dim_z:%g ", v_dim_z);
468 l_item[n_items] = strlen(&items[n_items][0]);
472 snprintf(&items[n_items][0],
L_MAX_ITEM,
"dim_z:%g ", v_inc_z);
473 l_item[n_items] = strlen(&items[n_items][0]);
477 snprintf(&items[n_items][0],
L_MAX_ITEM,
"dim_t:%g ", v_dim_t);
478 l_item[n_items] = strlen(&items[n_items][0]);
482 snprintf(&items[n_items][0],
L_MAX_ITEM,
"inc_t:%g ", v_inc_t);
483 l_item[n_items] = strlen(&items[n_items][0]);
487 snprintf(&items[n_items][0],
L_MAX_ITEM,
"vect_z:1 ");
488 l_item[n_items] = strlen(&items[n_items][0]);
492 snprintf(&items[n_items][0],
L_MAX_ITEM,
"unites_x:%.40s ", v_unites_x);
493 l_item[n_items] = strlen(&items[n_items][0]);
497 snprintf(&items[n_items][0],
L_MAX_ITEM,
"unites_y:%.40s ", v_unites_y);
498 l_item[n_items] = strlen(&items[n_items][0]);
502 snprintf(&items[n_items][0],
L_MAX_ITEM,
"unites_z:%.40s ", v_unites_z);
503 l_item[n_items] = strlen(&items[n_items][0]);
507 snprintf(&items[n_items][0],
L_MAX_ITEM,
"unites_t:%.40s ", v_unites_t);
508 l_item[n_items] = strlen(&items[n_items][0]);
512 snprintf(&items[n_items][0],
L_MAX_ITEM,
"num:%d ", v_num);
513 l_item[n_items] = strlen(&items[n_items][0]);
517 snprintf(&items[n_items][0],
L_MAX_ITEM,
"bin:%d ", v_bin);
518 l_item[n_items] = strlen(&items[n_items][0]);
524 snprintf(&items[n_items][0],
L_MAX_ITEM,
"trame:c8 ");
527 snprintf(&items[n_items][0],
L_MAX_ITEM,
"trame:c4 ");
530 snprintf(&items[n_items][0],
L_MAX_ITEM,
"trame:hex ");
533 snprintf(&items[n_items][0],
L_MAX_ITEM,
"trame:hexedges ");
536 snprintf(&items[n_items][0],
L_MAX_ITEM,
"trame:hexbridges ");
539 snprintf(&items[n_items][0],
L_MAX_ITEM,
"trame:hexlines ");
542 snprintf(&items[n_items][0],
L_MAX_ITEM,
"trame:hex2 ");
545 l_item[n_items] = strlen(&items[n_items][0]);
549 snprintf(&items[n_items][0],
L_MAX_ITEM,
"lut:%d ", v_lut);
550 l_item[n_items] = strlen(&items[n_items][0]);
554 snprintf(&items[n_items][0],
L_MAX_ITEM,
"comp:%d ", v_comp);
555 l_item[n_items] = strlen(&items[n_items][0]);
559 snprintf(&items[n_items][0],
L_MAX_ITEM,
"epais:%g ", v_epais);
560 l_item[n_items] = strlen(&items[n_items][0]);
564 snprintf(&items[n_items][0],
L_MAX_ITEM,
"unites:%.40s ", v_unites);
565 l_item[n_items] = strlen(&items[n_items][0]);
569 snprintf(&items[n_items][0],
L_MAX_ITEM,
"facteur:%g ", v_facteur);
570 l_item[n_items] = strlen(&items[n_items][0]);
574 snprintf(&items[n_items][0],
L_MAX_ITEM,
"zero:%g ", v_zero);
575 l_item[n_items] = strlen(&items[n_items][0]);
578 if ( v_transparent != NULL ) {
579 char *p=(
char *)v_transparent, value[
MAXL];
581 for ( a=0; a<Data_Size[v_type]; a++ )
582 snprintf( value+a*2,
L_MAX_ITEM,
"%0.2x", *(p++) );
583 value[2*Data_Size[v_type]] =
'\0';
584 snprintf(&items[n_items][0],
L_MAX_ITEM,
"transparent:%s ", value );
585 l_item[n_items] = strlen(&items[n_items][0]);
588 if (bool_struct_desc) {
589 snprintf(&items[n_items][0],
L_MAX_ITEM,
"struct:%.40s ", v_struct_desc);
590 l_item[n_items] = strlen(&items[n_items][0]);
594 snprintf(&items[n_items][0],
L_MAX_ITEM,
"aut:%.40s ", v_aut_name);
595 l_item[n_items] = strlen(&items[n_items][0]);
603 while (*comment != NULL) {
605 n_car_total += strlen(*comment++) + 3;
612 for (
int i=0;i<n_items;i++) {
613 if (n_car+l_item[i]<71) {
614 strcat(ligne, &items[i][0]);
617 ligne[n_car++] =
'\r';
618 ligne[n_car++] =
'\n';
619 ligne[n_car] =
'\000';
620 n_car_total += n_car;
621 if (puts_fcn((
void *)file, ligne)==-1) {
623 fprintf(stderr,
"\nHeader_Write: Erreur a l'ecriture \n");
625 fprintf(stderr,
"\n");
627 snprintf(Header_Message,
sizeof Header_Message,
"\nHeader_Write: Erreur a l'ecriture \n");
630 strcpy(ligne, &items[i][0]);
639 ligne[n_car++] =
'\r';
640 ligne[n_car++] =
'\n';
641 ligne[n_car] =
'\000';
642 n_car_total += n_car;
643 if (puts_fcn((
void *)file, ligne )==-1) {
645 fprintf(stderr,
"\nHeader_Write: Erreur a l'ecriture \n");
647 fprintf(stderr,
"\n");
649 snprintf(Header_Message,
sizeof Header_Message,
"\nHeader_Write: Erreur a l'ecriture \n");
658 int n_blocs = 1 + (n_car_total-1)/1024;
659 int n_car_sup = n_blocs*1024 - n_car_total;
662 n_lig_sup = 1 + (n_car_sup-1)/72;
666 int n_car_dl = 1 + (n_car_sup-1)%72;
673 while (*comment != NULL) {
674 n_car = gzprintf((gzFile)file,
"#%.80s\r\n", *comment++);
677 fprintf(stderr,
"\nHeader_Write: Erreur a l'ecriture \n");
679 fprintf(stderr,
"\n");
681 snprintf(Header_Message,
sizeof Header_Message,
"\nHeader_Write: Erreur a l'ecriture \n");
690 for (
int i=0;i<70;i++) ligne[i] =
' ';
694 for (
int i=0;i<n_lig_sup-1;i++) {
695 if (puts_fcn((
void *)file, ligne)==-1) {
697 fprintf(stderr,
"\nHeader_Write: Erreur a l'ecriture \n");
699 fprintf(stderr,
"\n");
701 snprintf(Header_Message,
sizeof Header_Message,
"\nHeader_Write: Erreur a l'ecriture \n");
709 for (
int i=0;i<n_car_dl-2;i++) ligne[i] =
' ';
710 if (n_car_dl>2) ligne[n_car_dl-3] =
'\r';
711 if (n_car_dl>1) ligne[n_car_dl-2] =
'\n';
712 ligne[n_car_dl-1] =
FF;
713 ligne[n_car_dl] =
'\000';
714 if (puts_fcn( (
void *)file, ligne )==-1) {
716 fprintf(stderr,
"\nHeader_Write: Erreur a l'ecriture \n");
718 fprintf(stderr,
"\n");
720 snprintf(Header_Message,
sizeof Header_Message,
"\nHeader_Write: Erreur a l'ecriture \n");
724 if (n_car_total>1024) {
727 "\nHeader_Write ATTENTION: etiquette de grandeur non-standard \n");
728 snprintf(Header_Message,
sizeof Header_Message,
729 "\nHeader_Write ATTENTION: etiquette de grandeur non-standard \n");
732 snprintf(Header_Message,
sizeof Header_Message,
733 "\nHeader_Write: Entete transcrite sans problemes\n");
768 bool bool_fac_t =
false;
770 Header_Quiet = quiet;
773 for (
int s=8; (s>0 || nosup) && go; s-- ) {
777 int bytes_read = tell(file);
787 "\nERREUR ligne trop longue (>80) dans l'entete !\n" ) ;
788 snprintf(Header_Message,
sizeof Header_Message,
789 "\nERREUR ligne trop longue (>80) dans l'entete !\n" ) ;
795 in = getc( (FILE*)file ) ;
801 "\nERREUR Fin de fichier dans l'entete !\n" ) ;
802 snprintf(Header_Message,
sizeof Header_Message,
803 "\nERREUR Fin de fichier dans l'entete !\n" ) ;
808 else if ( in ==
FF ) {
815 else if ( in ==
CR ) {
817 }
else if ( in ==
LF ) {
823 else if ( in && ! isprint(in) ) {
826 "\nERREUR caract. non imprim. 0x%.2X dans " 827 "l'entete at byte number %ld\n", in, tell(file) );
828 snprintf(Header_Message,
sizeof Header_Message,
829 "\nERREUR caract. non imprim. 0x%.2X dans l'entete !\n", in );
832 str[i++] = (char) in ;
838 for (
char* pt_1=str; *pt_1; pt_1++ ) {
841 if ( *pt_1 ==
'*' || *pt_1 ==
'#') {
843 v_comment[com] = (
char *)malloc( strlen(pt_1+1) + 1 ) ;
844 strcpy( v_comment[com++], pt_1+1 ) ;
846 v_comment = (
char **)
847 realloc(v_comment, (com+
NALLOC)*
sizeof(
char *));
848 v_comment[com] = NULL ;
856 if (isupper(*pt_1)) *pt_1 = tolower( *pt_1 ) ;
862 for (
char *pt_1=strtok(str,
" ,;\t"); pt_1; pt_1=strtok(NULL,
" ,;\t") ) {
868 for ( pt_2 = pt_1; *pt_2 !=
':'; pt_2 ++ )
872 "\nERREUR de syntaxe dans l'entete (%s)\n", pt_1);
873 snprintf(Header_Message,
sizeof Header_Message,
874 "\nERREUR de syntaxe dans l'entete (%s)\n", pt_1);
881 if ( ! strcmp( pt_1,
"x" ) ) {
885 }
else if ( ! strcmp( pt_1,
"y" ) ) {
889 }
else if ( ! strcmp( pt_1,
"z" ) ) {
893 }
else if ( ! strcmp( pt_1,
"t" ) ) {
898 }
else if ( ! strcmp( pt_1,
"sup" ) ) {
902 }
else if ( ! strcmp( pt_1,
"type" ) ) {
905 if ( !strcmp( pt_2, Header_Type[htype] ) ) {
910 }
else if ( ! strcmp( pt_1,
"taille" ) ) {
911 v_taille = atoi( pt_2 ) ;
914 }
else if ( ! strcmp( pt_1,
"systeme" ) ) {
923 }
else if ( ! strcmp( pt_1,
"bin" ) ) {
924 v_bin = atoi( pt_2 ) ;
927 }
else if ( ! strcmp( pt_1,
"trame" ) ) {
929 if ( ! strcmp( pt_2,
"c8" ) ) {
931 }
else if ( ! strcmp( pt_2,
"c4" ) ) {
933 }
else if ( ! strcmp( pt_2,
"hex" ) ) {
935 }
else if ( ! strcmp( pt_2,
"hexedges" ) ) {
937 }
else if ( ! strcmp( pt_2,
"hexbridges" ) ) {
939 }
else if ( ! strcmp( pt_2,
"hexlines" ) ) {
941 }
else if ( ! strcmp( pt_2,
"hex2" ) ) {
946 }
else if ( ! strcmp( pt_1,
"num" ) ) {
947 v_num = atoi( pt_2 ) ;
950 }
else if ( ! strcmp( pt_1,
"comp" ) ) {
951 v_comp = atoi( pt_2 ) ;
954 }
else if ( ! strcmp( pt_1,
"lut" ) ) {
955 v_lut = atoi( pt_2 ) ;
958 }
else if ( ! strcmp( pt_1,
"dim_x" ) ) {
959 v_dim_x = atof( pt_2 ) ;
962 }
else if ( ! strcmp( pt_1,
"dim_y" ) ) {
963 v_dim_y = atof( pt_2 ) ;
966 }
else if ( ! strcmp( pt_1,
"dim_z" ) ) {
967 v_dim_z = atof( pt_2 ) ;
970 }
else if ( ! strcmp( pt_1,
"dim_t" ) ) {
971 v_dim_t = atof( pt_2 ) ;
974 }
else if ( ! strcmp( pt_1,
"inc_x" ) ) {
975 v_inc_x = atof( pt_2 ) ;
978 }
else if ( ! strcmp( pt_1,
"inc_y" ) ) {
979 v_inc_y = atof( pt_2 ) ;
982 }
else if ( ! strcmp( pt_1,
"inc_z" ) ) {
983 v_inc_z = atof( pt_2 ) ;
986 }
else if ( ! strcmp( pt_1,
"inc_t" ) ) {
987 v_inc_t = atof( pt_2 ) ;
990 }
else if ( ! strcmp( pt_1,
"org_x" ) ) {
991 v_org_x = atof( pt_2 ) ;
994 }
else if ( ! strcmp( pt_1,
"org_y" ) ) {
995 v_org_y = atof( pt_2 ) ;
998 }
else if ( ! strcmp( pt_1,
"org_z" ) ) {
999 v_org_z = atof( pt_2 ) ;
1002 }
else if ( ! strcmp( pt_1,
"org_t" ) ) {
1003 v_org_t = atof( pt_2 ) ;
1006 }
else if ( ! strcmp( pt_1,
"vect_z" ) ) {
1009 }
else if ( ! strcmp( pt_1,
"unites_x" ) ) {
1010 strncpy( v_unites_x, pt_2, 40 ) ;
1011 bool_unites_x =
VRAI;
1013 }
else if ( ! strcmp( pt_1,
"unites_y" ) ) {
1014 strncpy( v_unites_y, pt_2, 40 ) ;
1015 bool_unites_y =
VRAI;
1017 }
else if ( ! strcmp( pt_1,
"unites_z" ) ) {
1018 strncpy( v_unites_z, pt_2, 40 ) ;
1019 bool_unites_z =
VRAI;
1021 }
else if ( ! strcmp( pt_1,
"unites_t" ) ) {
1022 strncpy( v_unites_t, pt_2, 40 ) ;
1023 bool_unites_t =
VRAI;
1025 }
else if ( ! strcmp( pt_1,
"epais" ) ) {
1026 v_epais = atof( pt_2 ) ;
1029 }
else if ( ! strcmp( pt_1,
"unites" ) ) {
1030 strncpy( v_unites, pt_2, 40 ) ;
1033 }
else if ( ! strcmp( pt_1,
"facteur" ) ) {
1034 v_facteur = atof( pt_2 ) ;
1035 bool_facteur =
VRAI;
1037 }
else if ( ! strcmp( pt_1,
"zero" ) ) {
1038 v_zero = atof( pt_2 ) ;
1041 }
else if ( ! strcmp( pt_1,
"struct" ) ) {
1042 strncpy( v_struct_desc, pt_2, 40 ) ;
1043 bool_struct_desc =
VRAI;
1045 }
else if ( ! strcmp( pt_1,
"aut" ) ) {
1046 strncpy( v_aut_name, pt_2, 40 ) ;
1047 bool_aut_name =
VRAI;
1049 }
else if ( !strcmp( pt_1,
"transparent" ) ) {
1050 strcpy( transstr, pt_2 );
1051 bool_transparent =
VRAI;
1054 if( is_deprecated( pt_1 ) ){
1056 fprintf(stderr,
"\nATTENTION: mot-clef %s obsolete !\n", pt_1 ) ;
1057 if( !strcmp( pt_1,
"fac_t" ) ){
1058 v_fac_t = atof( pt_2 );
1063 fprintf(stderr,
"\nATTENTION: mot-clef %s non reconnu !\n", pt_1 );
1064 snprintf(Header_Message,
sizeof Header_Message,
1065 "\nATTENTION: mot-clef %s non reconnu !\n", pt_1 ) ;
1072 if ( bool_transparent ) {
1073 if ( strlen(transstr) != 2*Data_Size[v_type] ) {
1074 fprintf(stderr,
"ATTENTION: ignoring invalid transparent value !\n");
1078 v = (
char *)(v_transparent = calloc( Data_Size[v_type], 1 ));
1079 for (
int i=0; i<Data_Size[v_type]; i++ ) {
1080 s[0] = transstr[i*2];
1081 s[1] = transstr[i*2+1];
1082 v[i] = strtol( s, &p, 16 );
1088 if ( !bool_x || !bool_y || !bool_type ) {
1090 fprintf(stderr,
"\nERREUR x, y ou type non definis\n") ;
1091 snprintf(Header_Message,
sizeof Header_Message,
"\nERREUR x, y ou type non definis\n") ;
1098 float dim_x = v_inc_x * v_x ;
1099 if ( dim_x != v_dim_x ) {
1100 if (!Header_Quiet) {
1101 fprintf(stderr,
"\nATTENTION:\n") ;
1103 "conflit entre x (%d) * inc_x (%.12g) = %.12g et dim_x (%.12g)\n",
1104 v_x, v_inc_x, dim_x, v_dim_x) ;
1106 snprintf(Header_Message,
sizeof Header_Message,
1107 "conflit entre x (%d) * inc_x (%.12g) = %.12g et dim_x (%.12g)\n",
1108 v_x, v_inc_x, dim_x, v_dim_x) ;
1112 v_inc_x = v_dim_x / v_x ;
1116 v_dim_x = v_x * v_inc_x ;
1117 if ( bool_inc_x ) bool_dim_x =
VRAI;
1122 float dim_y = v_inc_y * v_y ;
1123 if ( dim_y != v_dim_y ) {
1124 if (!Header_Quiet) {
1125 fprintf(stderr,
"\nATTENTION:\n") ;
1127 "conflit entre y (%d) * inc_y (%.12g) = %.12g et dim_y (%.12g)\n",
1128 v_y, v_inc_y, dim_y, v_dim_y) ;
1130 snprintf(Header_Message,
sizeof Header_Message,
1131 "conflit entre y (%d) * inc_y (%.12g) = %.12g et dim_y (%.12g)\n",
1132 v_y, v_inc_y, dim_y, v_dim_y) ;
1136 v_inc_y = v_dim_y / v_y ;
1140 v_dim_y = v_y * v_inc_y ;
1141 if ( bool_inc_y ) bool_dim_y =
VRAI;
1146 float dim_z = v_inc_z * v_z ;
1147 if ( dim_z != v_dim_z ) {
1148 if (!Header_Quiet) {
1149 fprintf(stderr,
"\nATTENTION:\n") ;
1151 "conflit entre z (%d) * inc_z (%.12g) = %.12g et dim_z (%.12g)\n",
1152 v_z, v_inc_z, dim_z, v_dim_z) ;
1154 snprintf(Header_Message,
sizeof Header_Message,
1155 "conflit entre z (%d) * inc_z (%.12g) = %.12g et dim_z (%.12g)\n",
1156 v_z, v_inc_z, dim_z, v_dim_z) ;
1160 v_inc_z = v_dim_z / v_z ;
1164 v_dim_z = v_z * v_inc_z ;
1165 if ( bool_inc_z ) bool_dim_z =
VRAI;
1168 if( !bool_inc_t && bool_fac_t ) {
1174 float dim_t = v_inc_t * (v_t-1) ;
1175 if ( fabs(dim_t - v_dim_t) > v_inc_t ) {
1176 if (!Header_Quiet) {
1177 fprintf(stderr,
"\nATTENTION:\n") ;
1179 "conflit entre t (%d) * inc_t (%.12g) = %.12g et dim_t (%.12g)\n",
1180 v_t, v_inc_t, dim_t, v_dim_t) ;
1182 snprintf(Header_Message,
sizeof Header_Message,
1183 "conflit entre t (%d) * inc_t (%.12g) = %.12g et dim_t (%.12g)\n",
1184 v_t, v_inc_t, dim_t, v_dim_t) ;
1188 v_inc_t = v_dim_t / (v_t - 1) ;
1192 v_dim_t = (v_t-1) * v_inc_t ;
1197 if ( bool_taille ) {
1201 "\nERREUR taille redefinie pour type autre que structure\n") ;
1202 snprintf(Header_Message,
sizeof Header_Message,
1203 "\nERREUR taille redefinie pour type autre que structure\n") ;
1210 "\nERREUR taille non definie pour type structure\n") ;
1211 snprintf(Header_Message,
sizeof Header_Message,
1212 "\nERREUR taille non definie pour type structure\n") ;
1215 v_taille = Data_Size[v_type];
1219 if (tell(file)!=1024) {
1220 gzseek( (gzFile)file, 1024, SEEK_SET );
1221 if (!Header_Quiet) {
1223 "\nATTENTION: etiquette de grandeur non-standard: %ld \n", tell(file));
1225 snprintf(Header_Message,
sizeof Header_Message,
1226 "\nATTENTION: etiquette de grandeur non-standard \n");
1229 snprintf(Header_Message,
sizeof Header_Message,
1230 "\nHeader_Read: Etiquette lue sans problemes\n");
1234 v_vect_z = (
float *)malloc(v_z*
sizeof(
float));
1235 gzread((gzFile)file, v_vect_z,
sizeof(
float)*v_z);
1247 int i = 0, n_lignes = 0;
1249 if ( ligne == NULL ) {
1250 while ( v_comment[n_lignes] != NULL )
1251 free( v_comment[n_lignes++] );
1255 while (v_comment[i++]!=NULL) n_lignes++;
1256 v_comment = (
char **)realloc(v_comment, (n_lignes+2)*
sizeof(
char *));
1258 v_comment[n_lignes] = (
char *)malloc(strlen(ligne)+1) ;
1259 strcpy(v_comment[n_lignes++], ligne) ;
1260 v_comment[n_lignes] = NULL;
1261 bool_comment =
true;
1294 while ( tn<=
IGB_MAX_TYPE && strcmp(Header_Type[tn],datatype) )
1299 cerr <<
"illegal data type specified for IGB header" << endl;
1307 long IGBheader::tell(
void *f )
1310 return gztell( (gzFile)f );
1312 return ftell( (FILE*)f );
1317 int IGBheader::puts_fcn(
void* f,
char* s )
1320 gzFile gzf=(gzFile)f;
1321 return gzputs( gzf, s );
1323 FILE *fptr=(FILE *)f;
1324 return fputs( s, fptr );
1336 if ( data_size()==1 || v_type==
IGB_RGBA )
1339 unsigned char *bp = (
unsigned char *)data;
1340 int ds = data_size()/num_components();
1342 if ( nd<0 ) nd = v_x*v_y*v_z*v_t;
1344 nd *= num_components();
1348 for (
int i=0; i<nd; i++ ) {
1349 unsigned char tmpb = bp[0];
1356 for (
int i=0; i<nd; i++ ) {
1357 unsigned char tmpb = bp[0];
1367 for (
int i=0; i<nd; i++ ) {
1368 unsigned char tmpb = bp[0];
1392 *pval = (
unsigned char *)(&val);
1394 assert(
sizeof(
float) == 4 );
1396 if ( *pval == le_val[0] )
const char * Header_Systeme[]
int my_fputs(FILE *, char *)
long unsigned Header_Systeme_No[]
const char * deprecated[]
const char * Header_Type[]
unsigned short Data_Size[]