Exemplo n.º 1
0
void mouse_doing()
{
	int fd = 0;
	int click_L = 0;
	fd = open("/dev/input/mice",O_RDWR | O_NONBLOCK);
	if (fd == -1)
	{
		perror("mouse");
		exit(0);
	}
	mx = fb_v.w/2;
	my = fb_v.h/2;
	drew_cursor(mx,my);
	while(1)
	{
		if (get_mouse_info(fd,&m_f) > 0)
		{
			restore_bg(mx,my);
			mx += m_f.dx;
			my += m_f.dy;
			if (mx < 0)
			{
				mx = 0;
			}
			if (mx > fb_v.w-C_W)
			{
				mx = fb_v.w-C_W;
			}
			if (my < 0)
			{
				my = 0;
			}
			if (my > fb_v.h-C_H)
			{
				my = fb_v.h-C_H;
			}
			switch(m_f.button)
			{
				case 0 :
				if (click_L == 1)
				{
					click_L = 0;
					chess_duiqi(mx.my);
				}break;
			//	case 1 : fb_circle(mx,my,12,0x0000f0ff);break;
				case 1 : click_L = 1; break;
				case 2 : break;
				case 4 : break;
				default: break;
			}
			drew_cursor(mx,my);
			
		}
	}
}
Exemplo n.º 2
0
int mouse_do(void)
{
	int mx = fb_v.w/2;
	int my = fb_v.h/2;

	mouse_event m_e;

	int fd = open("/dev/input/mice", O_RDWR|O_NONBLOCK);
	if(fd < 0)
	{
		perror("mice");
		exit(1);
	}
	draw_cursor(mx, my);

	while(1)
	{

		if(get_mouse_info(fd, &m_e) > 0)
		{
			restore_bg(mx, my);
			mx += m_e.dx;
			my += m_e.dy;
			draw_cursor(mx, my);
			
			switch(m_e.button)
			{
				case 0 : break;
				case 1 : printf("left\n");break;
				case 2 : printf("right\n");break;
				case 4 : printf("mid\n");break;
				default : break;						 
			}

		}			
		usleep(500);
	}
	return 0;
}
Exemplo n.º 3
0
void SkFrameHolder::setAlphaAndRequiredFrame(SkFrame* frame) {
    const bool reportsAlpha = frame->reportsAlpha();
    const auto screenRect = SkIRect::MakeWH(fScreenWidth, fScreenHeight);
    const auto frameRect = frame_rect_on_screen(frame->frameRect(), screenRect);

    const int i = frame->frameId();
    if (0 == i) {
        frame->setHasAlpha(reportsAlpha || frameRect != screenRect);
        frame->setRequiredFrame(SkCodec::kNone);
        return;
    }


    const bool blendWithPrevFrame = frame->getBlend() == SkCodecAnimation::Blend::kPriorFrame;
    if ((!reportsAlpha || !blendWithPrevFrame) && frameRect == screenRect) {
        frame->setHasAlpha(reportsAlpha);
        frame->setRequiredFrame(SkCodec::kNone);
        return;
    }

    const SkFrame* prevFrame = this->getFrame(i-1);
    while (prevFrame->getDisposalMethod() == SkCodecAnimation::DisposalMethod::kRestorePrevious) {
        const int prevId = prevFrame->frameId();
        if (0 == prevId) {
            frame->setHasAlpha(true);
            frame->setRequiredFrame(SkCodec::kNone);
            return;
        }

        prevFrame = this->getFrame(prevId - 1);
    }

    const bool clearPrevFrame = restore_bg(*prevFrame);
    auto prevFrameRect = frame_rect_on_screen(prevFrame->frameRect(), screenRect);

    if (clearPrevFrame) {
        if (prevFrameRect == screenRect || independent(*prevFrame)) {
            frame->setHasAlpha(true);
            frame->setRequiredFrame(SkCodec::kNone);
            return;
        }
    }

    if (reportsAlpha && blendWithPrevFrame) {
        // Note: We could be more aggressive here. If prevFrame clears
        // to background color and covers its required frame (and that
        // frame is independent), prevFrame could be marked independent.
        // Would this extra complexity be worth it?
        frame->setRequiredFrame(prevFrame->frameId());
        frame->setHasAlpha(prevFrame->hasAlpha() || clearPrevFrame);
        return;
    }

    while (frameRect.contains(prevFrameRect)) {
        const int prevRequiredFrame = prevFrame->getRequiredFrame();
        if (prevRequiredFrame == SkCodec::kNone) {
            frame->setRequiredFrame(SkCodec::kNone);
            frame->setHasAlpha(true);
            return;
        }

        prevFrame = this->getFrame(prevRequiredFrame);
        prevFrameRect = frame_rect_on_screen(prevFrame->frameRect(), screenRect);
    }

    if (restore_bg(*prevFrame)) {
        frame->setHasAlpha(true);
        if (prevFrameRect == screenRect || independent(*prevFrame)) {
            frame->setRequiredFrame(SkCodec::kNone);
        } else {
            // Note: As above, frame could still be independent, e.g. if
            // prevFrame covers its required frame and that frame is
            // independent.
            frame->setRequiredFrame(prevFrame->frameId());
        }
        return;
    }

    SkASSERT(prevFrame->getDisposalMethod() == SkCodecAnimation::DisposalMethod::kKeep);
    frame->setRequiredFrame(prevFrame->frameId());
    frame->setHasAlpha(prevFrame->hasAlpha() || (reportsAlpha && !blendWithPrevFrame));
}
Exemplo n.º 4
0
int mouse_doing(void)
{
    int fd = 0 ;
	int button_release;
	int flag = 0;
	mouse_event m_e;

	fd = open("/dev/input/mice",O_RDWR|O_NONBLOCK);
	
	if (fd < 0)
	{
		perror("mice");
		exit(0);
	}

	mx = fb_v.w/2;
	my = fb_v.h/2;

	draw_cursor(mx,my);

	while (1)
	{
		if(get_mouse_info(fd, &m_e) > 0)
		{
			restore_bg(mx,my);
			mx += m_e.dx;
			my += m_e.dy;

            if(mx < 0)
			{
				mx = 0;
			}
			if(mx >(fb_v.w - C_W))
			{
				mx = (fb_v.w-C_W);
			}

            if(my < 0)
			{
				my = 0;
			}
			if(my >(fb_v.h - C_H))
			{
				my = (fb_v.h-C_H);
			}

			switch(m_e.button)
			{
				case 0 : if (button_release == 1)
						 {
						 	flag = chess_doing();
							button_release = 0;
						 }
						 break;
				case 1 : button_release = 1;break ;
				case 2 : break;
				case 4 : break;
				default : break;
			
			}
			draw_cursor(mx,my);
			if (flag != 0)
			{
				break;
			}
		}

	}
	usleep(1);
	printf("winner is player %d\n",flag);
	return 0;
}
Exemplo n.º 5
0
int mouse_doing(void)
{
	int fd = 0;
	mouse_event m_e;
	char press_do = 0;
	int flag = 0;
	fd = open("/dev/input/mice", O_RDWR|O_NONBLOCK);
	if(fd == -1)
	{
		perror("mice");
		exit(0);
	}

	mx = fb_v.w/2;
	my = fb_v.h/2;

	draw_cursor(mx, my);

	while(1)
	{
		if(get_mouse_info(fd, &m_e) > 0)
		{
			restore_bg(mx, my);
			mx += m_e.dx;
			my += m_e.dy;
			if (mx<0)
			{
				mx = 0;
			}
			if (mx>(fb_v.w-C_W))
			{
				mx = fb_v.w-C_W;
			}
			
			if (my<0)
			{
				my = 0;
			}
			if (my>(fb_v.h-C_H))
			{
				my = fb_v.h-C_H;
			}
			switch(m_e.button)
			{
				case 0:
				if(press_do ==1)
				{
					press_do = 0;
					flag = chess_doing();
				}
				break;
				case 1:press_do=1;break;
				case 2:break;
				case 4:break;
				default :break;
			}
			draw_cursor(mx, my);
			if(flag>0)
			{
				printf("winner is %d!\n",flag);
				getchar();
				flag=0;
				reinit();
			}
		}
		usleep(500);
	}
	close(fd);
	return 0;
}