Exemple #1
0
/**
 * igt_paint_test_pattern:
 * @cr: cairo drawing context
 * @width: width of the visible area
 * @height: height of the visible area
 *
 * This functions draws an entire set of test patterns for the given visible
 * area using the drawing context @cr. This is useful for manual visual
 * inspection of displayed framebuffers.
 *
 * The test patterns include
 *  - corner markers to check for over/underscan and
 *  - a set of color and b/w gradients.
 */
void igt_paint_test_pattern(cairo_t *cr, int width, int height)
{
	paint_test_patterns(cr, width, height);

	cairo_set_line_cap(cr, CAIRO_LINE_CAP_SQUARE);

	/* Paint corner markers */
	paint_marker(cr, 0, 0);
	paint_marker(cr, width, 0);
	paint_marker(cr, 0, height);
	paint_marker(cr, width, height);

	igt_assert(!cairo_status(cr));
}
Exemple #2
0
/**
	 根据共享数组,刷新显示
  */
G_MODULE_EXPORT
int paint(GtkWidget *widget, GdkEvent *event, gpointer data)
{
	cairo_t *cr;
	int i;
	double y;

	cr = gdk_cairo_create (widget->window);

	paint_bg(cr);

	//画图(蓝色)
	cairo_set_line_width(cr, 1);
	cairo_set_source_rgb(cr, 0, 0, 1);
	y = TOY(buffer[0])>500 ? 500 : TOY(buffer[0]);
	cairo_move_to(cr, 0, TOY(buffer[0]));
	for (i=1; i<512; i++) {
		//y轴分为10个div,每个div包含50个点
		//因此每1dBm对应的y坐标应该为50/ydiv
		//y = (cfg.yref+buffer[i-1]);//dBm值
		//y *= -1*50/cfg.ydiv;//坐标值
		y = power2axis(buffer[i-1]);
		cairo_line_to(cr, i-1, y>500?500:y);
	}
	cairo_stroke(cr);

	paint_marker(cr);
	cairo_destroy(cr);
	return TRUE;
}
Exemple #3
0
G_MODULE_EXPORT
void btn_save_cb(GtkButton *btn, gpointer data)
{
	cairo_t *cr;
	cairo_surface_t *surface;
	int i;
	double y;

	surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 512, 500);
	cr = cairo_create (surface);

	paint_bg(cr);
	paint_marker(cr);

	//画图(蓝色)
	cairo_set_line_width(cr, 1);
	cairo_set_source_rgb(cr, 0, 0, 1);
	y = TOY(buffer[0])>500 ? 500 : TOY(buffer[0]);
	cairo_move_to(cr, 0, TOY(buffer[0]));
	for (i=1; i<512; i++) {
		y = cfg.yref + yscale*TOY(buffer[i-1]);
		//cairo_line_to(cr, i-1, cfg.yref+yscale*TOY(buffer[i-1]));
		cairo_line_to(cr, i-1, y>500?500:y);
	}
	cairo_stroke(cr);

	cairo_surface_write_to_png(surface, "save.png");

	cairo_destroy(cr);
	cairo_surface_destroy(surface);
}
void MarkerColumn::draw(const Point& p_pos,const Size& p_size,const Rect& p_exposed) {
	
	
	Painter &p=*get_painter();
	p.draw_fill_rect(Point(),p_size,color(COLOR_GLOBAL_VIEW_BG));
	int beat_from=global_view->get_beat_at_pixel(0);
	int beat_to=global_view->get_beat_at_pixel(p_size.height);
	
	
	for (int i=beat_from;i<=beat_to;i++) {
		
		
		// DRAW MARK 
					
		if (i==inside_beat && inside) {
			
			
			int h=global_view->get_beat_pixel( i );
			p.draw_fill_rect(Point(0,h),Size(p_size.width,1),color(COLOR_GLOBAL_VIEW_MOUSE_OVER_BEAT));
			
		}
		
		int marker_idx=marker_list->get_exact_index( i );
		if (marker_idx>=0) { //marker at pos
			paint_marker(p,marker_idx,p_size.width);
			
		}
		
		
	}
	
	// Paint markers that may not be visible 
	if (marker_list->get_exact_index( beat_from )==INVALID_STREAM_INDEX && marker_list->get_prev_index( beat_from )>=0) {
		
		paint_marker(p, marker_list->get_prev_index( beat_from ),p_size.width );
		
	}
	
	int line_pos=p_size.width-1;
	p.draw_fill_rect(Point(line_pos,0),Size(1,p_size.height),color(COLOR_GLOBAL_VIEW_SEPARATOR));
}