int CopyDataSet(void *s, void *d, int count) { DataSet *src = (DataSet *)s; DataSet *dst = (DataSet *)d; int i; int j; if(count > SizeOf(src)) { return(0); } if(src->fields != dst->fields) { return(0); } while(SizeOf(dst) < count) { ExpandData((void *)dst); } for(i=0; i < count; i++) { for(j=0; j < src->fields; j++) { dst->data[j][i] = src->data[j][i]; } } dst->data_c = count; Rewind(dst); return(1); }
int WriteEntry4(void *cookie, double a, double b, double c, double d) { DataSet *ds = (DataSet *)cookie; int i; if((ds->current + 1) >= ds->space_size) { ExpandData((void *)ds); } if(ds->current < ds->data_c) { ds->current++; } ds->data[0][ds->current] = a; ds->data[1][ds->current] = b; ds->data[2][ds->current] = c; ds->data[3][ds->current] = d; if(ds->current >= ds->data_c) { ds->data_c++; } return(1); }
int WriteEntry(void *cookie, double ts, double value) { DataSet *ds = (DataSet *)cookie; int i; if((ds->current + 1) >= ds->space_size) { ExpandData((void *)ds); } /* * EOF is when current == data_c */ if(ds->current < ds->data_c) { ds->current++; } ds->data[0][ds->current] = ts; ds->data[1][ds->current] = value; if(ds->current >= ds->data_c) { ds->data_c++; } return(1); }
static bool MipMapTexture( TC_Texture_t* tc, int index_components ) { OS_ASSERT( tc ); OS_ASSERT( tc->mips == 0 ); OS_ASSERT( tc->data ); // // are we 8bit? // bool _8bit = tc->bpp==1?TRUE:FALSE; if( _8bit ) { Byte* data = ExpandData( (Byte*)tc->data, tc->width*tc->height, index_components ); OS_DeallocAPointer( tc->data ); tc->data = data; tc->bpp = 3; tc->components = GL_RGB; tc->type = GL_UNSIGNED_BYTE; } // // mipdown. // int i; int w = tc->width>>1; int h = tc->height>>1; memset( tc->mip_data, 0, sizeof(void*)*MAX_MIPMAP_LEVELS ); tc->mip_data[0] = tc->data; for( i = 1; i < MAX_MIPMAP_LEVELS; i++ ) { if( w < 1 || h < 1 ) break; tc->mip_data[i] = MipDown( (Byte*)tc->mip_data[i-1], w<<1, h<<1, tc->bpp ); w>>=1; h>>=1; } tc->mips = tc->mip_data; // // we may have to palettize it back down. // if( _8bit ) { if(PalettizeTexture( tc, index_components )) return TRUE; } return FALSE; }
int WriteEntry10(void *cookie, double a, double b, double c, double d, double e, double f, double g, double h, double i, double j) { DataSet *ds = (DataSet *)cookie; if((ds->current + 1) >= ds->space_size) { ExpandData((void *)ds); } if(ds->current < ds->data_c) { ds->current++; } ds->data[0][ds->current] = a; ds->data[1][ds->current] = b; ds->data[2][ds->current] = c; ds->data[3][ds->current] = d; ds->data[4][ds->current] = e; ds->data[5][ds->current] = f; ds->data[6][ds->current] = g; ds->data[7][ds->current] = h; ds->data[8][ds->current] = i; ds->data[9][ds->current] = j; if(ds->current >= ds->data_c) { ds->data_c++; } return(1); }
int WriteData(void *cookie, int fields, double *values) { DataSet *ds = (DataSet *)cookie; int lfields; int i; if((ds->current + 1) >= ds->space_size) { ExpandData((void *)ds); } /* * EOF is when current == data_c */ if(ds->current < ds->data_c) { ds->current++; } if(fields > ds->fields) { lfields = ds->fields; } else { lfields = fields; } for(i=0; i < lfields; i++) { ds->data[i][ds->current] = values[i]; } if(ds->current >= ds->data_c) { ds->data_c++; } return(1); }
int LoadDataSet(char *fname, void *cookie) { DataSet *ds = (DataSet *)cookie; int i; FILE *fd; char *s; char *next_s; int count; char line_buff[255]; int err; char *ferr; if(cookie == NULL) { return(0); } fd = fopen(fname,"r"); if(fd == NULL) { fprintf(stderr,"LoadDataSet could open %s for reading\n", fname); fflush(stderr); return(0); } count = 0; while(!feof(fd)) { ferr = fgets(line_buff,sizeof(line_buff),fd); if(ferr == NULL) { break; } if(line_buff[0] == '#') { continue; } if(line_buff[0] == '\n') { continue; } count++; } rewind(fd); while(count > ds->space_size) { ExpandData((void *)ds); } ds->current = 0; while(!feof(fd)) { memset(line_buff,0,sizeof(line_buff)); ferr = fgets(line_buff,sizeof(line_buff),fd); if(ferr == NULL) { break; } if(line_buff[0] == '#') { continue; } if(line_buff[0] == '\n') { continue; } count++; for(i=0; i < ds->fields; i++) { ds->data[i][ds->current] = 0.0; } s = line_buff; for(i=0; i < ds->fields; i++) { s = GetNextStr(s,&next_s); if(s == NULL) { break; } ds->data[i][ds->current] = strtod(s,NULL); free(s); s = next_s; } ds->current++; ds->data_c++; } /* * reset the current pointer */ ds->current = 0; fclose(fd); return(1); }