Ejemplo n.º 1
0
value ml_gtk_curve_get_vector (value curve, value vlen)
{
  int i, len = Int_val(vlen);
  gfloat* vect = g_malloc(len * sizeof(gfloat));
  value ret;
  gtk_curve_get_vector(GtkCurve_val(curve), len, vect);
  ret = caml_alloc(len*Double_wosize, Double_array_tag);
  for (i = 0; i < len; i++)
    Store_double_field(ret, i, vect[i]);
  g_free(vect);
  return ret;
}
void read ( void)
{
uint32_t g;

        gfloat sample[256];
        gtk_curve_get_vector(GTK_CURVE(WID(curve1)),256,sample);
        for(int i=0;i<256;i++)
                {
                        if(sample[i]<0) g=0;
                        else if(sample[i]>255) g=255;
                                else g=(uint32_t)sample[i];
                        scaler[i]=g;
                      //  printf("%u %u\n",i,scaler[i]);
                }
}
Ejemplo n.º 3
0
/* Returns a vector of points representing the curve. */
int
clip_GTK_CURVEGETVECTOR(ClipMachine * cm)
{
	C_widget *ccur = _fetch_cw_arg(cm);
        int     veclen = _clip_parni(cm,2);
        gfloat* vector = calloc(veclen,sizeof(gfloat));
	long n=0, i;
	ClipVar *a = RETPTR(cm);
        CHECKCWID(ccur,GTK_CURVE);
        CHECKARG(2,NUMERIC_t);
  	_clip_array(cm, a, veclen, &n);
        gtk_curve_get_vector(GTK_CURVE(ccur->widget),veclen,vector);
        for (i = 0; i < veclen; i++)
        {
        	a->a.items[i].t.type = NUMERIC_t;
        	a->a.items[i].n.d = vector[i];
        }
	return 0;
err:
	return 1;
}
Ejemplo n.º 4
0
void curve_save (gchar *filename, long int seekpos)
{
	GtkWidget *curve = lookup_widget(app,"curve");
	guint count, i;
	gfloat *vector;
	gchar *type;
	FILE *out;
	gfloat minx, maxx, miny, maxy;
	gfloat scale, f;
	guint base;

	minx = gtk_spin_button_get_value_as_float (lookup_widget(app,"minx"));
	maxx = gtk_spin_button_get_value_as_float (lookup_widget(app,"maxx"));
	miny = gtk_spin_button_get_value_as_float (lookup_widget(app,"miny"));
	maxy = gtk_spin_button_get_value_as_float (lookup_widget(app,"maxy"));

	scale = gtk_spin_button_get_value_as_float (lookup_widget(app,"scale"));
	base = gtk_spin_button_get_value_as_int (lookup_widget(app,"base"));
	count = gtk_spin_button_get_value_as_int (lookup_widget(app,"count"));
	type = gtk_entry_get_text (lookup_widget(app,"typeentry"));

	vector = g_new (gfloat,count);
	gtk_curve_get_vector (curve,count,vector);

	out = fopen(filename, "wb");
	if (out == NULL) return;

	if (seekpos) fseek (out,seekpos,0);

	if (strcmp(type,"u_char")==0)
	{
		u_char val;
		
		f = (gfloat)(scale) / (maxy - miny);
	
		for (i=0; i<count; i++)
		{
			val = base + (u_char) (vector[i] * f);
			fwrite(&val,sizeof(val),1,out);
		}
	}

	if (strcmp(type,"char")==0)
	{
		char val;
		
		f = (gfloat)(scale) / (maxy - miny);
	
		for (i=0; i<count; i++)
		{
			val = (char) (vector[i] * f);
			fwrite(&val,sizeof(val),1,out);
		}
	}

	if (strcmp(type,"u_short")==0)
	{
		u_short val;
		
		f = (gfloat)(scale) / (maxy - miny);
	
		for (i=0; i<count; i++)
		{
			val = (u_short) (vector[i] * f);
			fwrite(&val,sizeof(val),1,out);
		}
	}

	if (strcmp(type,"short")==0)
	{
		short val;
		
		f = (gfloat)(scale) / (maxy - miny);
		
		printf ("factor=%f scale=%f (%f)\n",f,scale,maxy-miny);
		
		for (i=0; i<count; i++)
		{
			val = (short) (vector[i] * f);
			fwrite(&val,sizeof(val),1,out);
		}
	}

	if (strcmp(type,"u_long")==0)
	{
		u_long val;
		
		f = (gfloat)(scale) / (maxy - miny);
	
		for (i=0; i<count; i++)
		{
			val = (u_long) (vector[i] * f);
			fwrite(&val,sizeof(val),1,out);
		}
	}

	if (strcmp(type,"long")==0)
	{
		long val;
		
		f = (gfloat)(scale) / (maxy - miny);
	
		for (i=0; i<count; i++)
		{
			val = (long) (vector[i] * f);
			fwrite(&val,sizeof(val),1,out);
		}
	}

	if (strcmp(type,"float")==0)
	{
		fwrite(vector,sizeof(gfloat),count,out);
	}

	if (strcmp(type,"double")==0)
	{
		gdouble val;
	
		for (i=0; i<count; i++)
		{
			val = (gdouble) vector[i];
			fwrite(&val,sizeof(val),1,out);
		}
	}

	if (strcmp(type,"fixed (4+12)")==0)
	{
		u_short val;
		
		f = (gfloat)(scale) / (maxy - miny);
	
		for (i=0; i<count; i++)
		{
			val = base + (u_char) (vector[i] * f);
			fwrite(&val,sizeof(val),1,out);
		}
	}
	
	fclose (out);
	
	g_free (vector);
}
Ejemplo n.º 5
0
void	get_points_from_curve( GtkWidget *curve, int len, float *vec )
{
	gtk_curve_get_vector( GTK_CURVE(curve), len, vec );
}