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);
}
Beispiel #4
0
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);
}