⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 window.cpp

📁 足球机器人自动程序
💻 CPP
字号:
#include <qpainter.h>#include <qimage.h>#include "window.h"#include "global.h"#include "cmv.h"#include "cvt.h"extern int use_cmv;extern struct cmv_data data;extern int bb;extern unsigned char src[];extern char *filename;char s[24];int *pc;int ch = 0;int ci = 0;int point_x = -1, point_y = -1;static inline void print_th() {	int *p = data.th[ci];	fprintf(stderr, "\r%2d:  ", ci+1);	switch (ch) {		case 0:			fprintf(stderr, "Y %3d %3d  u %3d %3d  v %3d %3d", p[0], p[1], p[2], p[3], p[4], p[5]);			break;		case 1:			fprintf(stderr, "y %3d %3d  U %3d %3d  v %3d %3d", p[0], p[1], p[2], p[3], p[4], p[5]);			break;		case 2:			fprintf(stderr, "y %3d %3d  u %3d %3d  V %3d %3d", p[0], p[1], p[2], p[3], p[4], p[5]);			break;		default:			exit(-1);	}}window::window() {	setMinimumSize(W, H);	setMaximumSize(W, H);	setBackgroundMode(Qt::NoBackground);	setCaption(filename);	pRGB = new QImage(W, H, 32, 0);		if (use_cmv) {		cvtm(src, pRGB->bits(), data.map, data.remap[ci]);		pc = data.th[ci];		print_th();	}	else cvt(src, pRGB->bits());}window::~window() {	printf("\n");}void window::paintEvent(QPaintEvent *) {	QPainter p(this);	p.drawImage(0, 0, *pRGB);	if (point_x >=0 && point_y >=0) {		if (use_cmv) p.setPen(QColor(data.rgb[0][2], data.rgb[0][1], data.rgb[0][0]));		else p.setPen(QColor(0, 255, 255));		p.drawRect(point_x-1, point_y-1, 3, 3);	}	if (use_cmv == 1 && bb && ci >= 0) {		int t = data.remap[ci]-1;		if (data.clist[t] <= 0) return;		p.setPen(QColor(0, 255, 0));		struct reg_t *reg = data.cmax[t];		p.drawRect(reg->x1 << 1, reg->y1 << 1,			(reg->x2 - reg->x1) << 1,			(reg->y2 - reg->y1 + 1) << 1 );	}}void window::mousePressEvent(QMouseEvent *e) {	int x = e->x();	int y = e->y();	if (x < 0 || x >= W || y < 0 || y >= H) {		return;	}	int t;	switch (e->button()) {		case RightButton:			point_x = x;			point_y = y;			sprintf(s, "%d,%d: %d %d %d", x, y,				src[y * W + x],				src[Y_SIZE + (y>>1) * W_2 + (x>>1) ],				src[Y_SIZE + U_SIZE + (y>>1) * W_2 + (x>>1)] );			setCaption(s);			break;		case LeftButton:			if (!use_cmv || (t = data.map[(y>>1) * (W_2+1) + (x>>1)]-1) < 0 || t == ci) return;			ci = t;			pc = data.th[ci] + (ch<<1);			print_th();			cvtm(src, pRGB->bits(), data.map, data.remap[ci]);			break;		default:			return;	}	update();}void window::keyPressEvent(QKeyEvent *e) {	int t = e->ascii();	if (t == 'r' && point_x >=0 && point_y >= 0) {		point_x = point_y = -1;		setCaption(filename);		update();		return;	}	if (!use_cmv || ci < 0) return;	switch (t) {	case 'y':		if (ch == 0) return;		ch = 0;		pc = data.th[ci];		print_th();		return;	case 'u':		if (ch == 1) return;		ch = 1;		pc = data.th[ci] + 2;		print_th();		return;	case 'v':		if (ch == 2) return;		ch = 2;		pc = data.th[ci] + 4;		print_th();		return;	case '1':		if (pc[0] == 0) return;		--pc[0];		cmv_reinit(&data, ch, ci, pc[0], 1);		break;	case '2':		if (pc[0] == pc[1]) return;		cmv_reinit(&data, ch, ci, pc[0], 0);		++pc[0];		break;	case '3':		if (pc[1] == pc[0]) return;		cmv_reinit(&data, ch, ci, pc[1], 0);		--pc[1];		break;	case '4':		if (pc[1] == 255) return;		++pc[1];		cmv_reinit(&data, ch, ci, pc[1], 1);		break;	default:		return;	}	print_th();	cmv_process(&data, src);	cvtm(src, pRGB->bits(), data.map, data.remap[ci]);	update();}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -