コード例 #1
0
ファイル: c.knob.cpp プロジェクト: rvega/CicmWrapper
void knob_paint(t_knob *x, t_object *view)
{
	t_rect rect;
    if(x->f_endless)
    {
        if(x->f_min < x->f_max)
        {
            x->f_value = fmodf(x->f_value + x->f_max - x->f_min, x->f_max - x->f_min);
        }
        else
        {
            x->f_value = fmodf(x->f_value + x->f_min - x->f_max, x->f_min - x->f_max);
        }
    }
    else
    {
        if(x->f_min < x->f_max)
            x->f_value = pd_clip_minmax(x->f_value, x->f_min, x->f_max);
        else
            x->f_value = pd_clip_minmax(x->f_value, x->f_max, x->f_min);
    }
    
	ebox_get_rect_for_view((t_ebox *)x, &rect);
    draw_background(x, view, &rect);
    draw_needle(x, view, &rect);
}
コード例 #2
0
ファイル: c.knob.cpp プロジェクト: EQ4/CreamLibrary
static void knob_paint(t_knob *x, t_object *view)
{
    t_rect rect;
    ebox_get_rect_for_view((t_ebox *)x, &rect);
    
    draw_background(x, view, &rect);
    draw_needle(x, view, &rect);
}
コード例 #3
0
/*********************************************************************
 *	電圧を毎回表示する.
 *********************************************************************
 */
void draw_AnalogInput(void)
{
	static double vavg_n=(-1);
	static double vavg_d=(-1);
	char buf[256];
	double volt;
	int vcol, vsize;

	int dl = LOWPASS_DIGITAL;
	int nl = LOWPASS_NEEDLE;

	int f = getAnalogVolt(&volt,0);

#if	1
	if(f>=0) {
		if(	vavg_n < 0) {
			vavg_n = volt;
		}else{
			vavg_n = (vavg_n * (nl-1) + volt ) / nl;
		}

		if(	vavg_d < 0) {
			vavg_d = volt;
		}else{
			vavg_d = (vavg_d * (dl-1) + volt ) / dl;
		}
	}
#endif


	if(f<0) {
		sprintf(buf,"ERROR");
	}else{
		sprintf(buf,"%6.2f   ",vavg_d);
	}

	//アナログ針で表示.
	draw_needle( (int) (vavg_n*1000) );

	vcol  = 0xaa40e040;
	vsize = 36;
	//数値で表示.
	gr_puts(AIN_CENTER_X-80,AIN_CENTER_H+12,buf   ,vcol,BKCOL2,vsize);
	gr_puts(AIN_CENTER_X+32,AIN_CENTER_H+12,"V   ",vcol,BKCOL2,vsize);

	draw_graphic((int) (volt * VOLT_SCALE));
}
コード例 #4
0
/*********************************************************************
 *	抵抗値を毎回表示する.
 *********************************************************************
 */
void draw_Registance(void)
{
	static double vavg_n=(-1);
	static double vavg_d=(-1);
	char buf[256];
	double Kohm;
	int vcol,  vsize;

	int dl = LOWPASS_DIGITAL;
	int nl = LOWPASS_NEEDLE;

	int f = getRegistance(&Kohm,0);

	int scale = reg_scaled(Kohm,0);

#if	1
	if(f>=0) {
		if( Kohm>=0 ) {
			//KΩの値を平滑.
			if(	vavg_d < 0) {
				vavg_d = Kohm;
			}else{
				vavg_d = (vavg_d * (dl-1) + Kohm ) / dl;
			}
		}else{
			vavg_d = -1;
		}
	}
#endif

	//針の位置を平滑.
	if(	vavg_n < 0) {
		vavg_n = scale;
	}else{
		vavg_n = (vavg_n * (nl-1) + scale ) / nl;
	}


	//KΩの値を表示.
	if(f<0) {
		sprintf(buf,"ERROR");
	}else{
		if(Kohm<0) {
			sprintf(buf,"  R = OPEN");
		}else{
			sprintf(buf,"%12.3f   ",vavg_d);
		}
	}


	vcol  = 0xaa40e040;
	vsize = 36;
	//数値で表示.
	gr_puts(AIN_CENTER_X-120,AIN_CENTER_H+12,buf   ,vcol,BKCOL2,vsize);
	gr_puts(AIN_CENTER_X+62 ,AIN_CENTER_H+12," KΩ",vcol,BKCOL2,vsize);

	//アナログ針を表示.
	draw_needle( vavg_n );

//	draw_graphic( reg_scaled(vavg_n) );
}