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); } } }
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; }
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)); }
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; }
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; }