int effect_move_r(screen_area_t* src,screen_area_t* dst) { int xstep,show_width; int i,j; screen_area_t src_scr=*src; screen_area_t dst_scr=*dst; screen_area_t fill_rect; if(init_ge2d()==-1) return -1; xstep=src->width/effect_step; show_width=xstep; src_scr.y=src->y; src_scr.height=src->height; dst_scr.y=dst->y; dst_scr.height=dst->height; for(i=xstep;i<dst->width;i+=xstep) { for(j=dst->width-xstep;j>=i-xstep;j-=xstep) { src_scr.width=xstep; src_scr.x=dst->x-xstep+j; dst_scr.width=src_scr.width; dst_scr.x=dst->x+j; fb_bitbld(&src_scr,&dst_scr); } src_scr.width=i+xstep; src_scr.x=src->x+src->width-src_scr.width; dst_scr.width=src_scr.width; dst_scr.x=dst->x; fb_bitbld(&src_scr,&dst_scr); usleep(effect_delay); } /* loop end. */ uninit_ge2d(); return 0; }
static Bool maliPrepareCopy(PixmapPtr pSrcPixmap, PixmapPtr pDstPixmap, int xdir, int ydir, int alu, Pixel planemask) { PrivPixmap *srcPrivPixmap = (PrivPixmap *)exaGetPixmapDriverPrivate(pSrcPixmap); PrivPixmap *dstPrivPixmap = (PrivPixmap *)exaGetPixmapDriverPrivate(pDstPixmap); IGNORE(pSrcPixmap); IGNORE(pDstPixmap); IGNORE(xdir); IGNORE(ydir); IGNORE(alu); IGNORE(planemask); if (srcPrivPixmap->isFrameBuffer && dstPrivPixmap->isFrameBuffer) { //if (srcPrivPixmap->frameBufferNumber != 0 || // srcPrivPixmap->frameBufferNumber != 0) //{ // ERROR_STR("%s: pSrcPixmap=%p (buffer# %d) pDstPixmap=%p (buffer# %d) xdir=%d ydir=%d alu=%x\n", // __FUNCTION__, pSrcPixmap, srcPrivPixmap->frameBufferNumber, pDstPixmap, dstPrivPixmap->frameBufferNumber, xdir, ydir, alu); //} SrcPixmap = pSrcPixmap; if (ge2d_fd < 0) { init_ge2d(); } return TRUE; } //if (srcPrivPixmap->mem_info && // dstPrivPixmap->mem_info) //{ // //if (srcPrivPixmap->mem_info->handle != UMP_INVALID_SECURE_ID && // // dstPrivPixmap->mem_info->handle != UMP_INVALID_SECURE_ID) // { // SrcPixmap = pSrcPixmap; // if (ge2d_fd < 0) // { // init_ge2d(); // } // return TRUE; // } //} return FALSE; }
static int effect_wave_l2r(screen_area_t* src,screen_area_t* dst) { int i, w, wd, dir; int wave = 0; screen_area_t src_scr=*src; screen_area_t dst_scr=*dst; screen_area_t fill_rect; if(init_ge2d()==-1) return -1; /* effect begine. */ for (i = 0; i < src->width; i+=64) { dst_scr.x=dst->x+i; dst_scr.y=dst->y+0; dst_scr.height=dst->height; dst_scr.width=64; src_scr.x =src->x+i; src_scr.y=src->y+0; src_scr.width = 64; src_scr.height=src->height; fb_bitbld(&src_scr,&dst_scr); src_scr.width = 16; dst_scr.width = 16; dir = 1; w = wd = i + 64; wave = 0; while (w < src->width) { dst_scr.x =dst->x+wd; dst_scr.y =dst->y+(wave/2); dst_scr.height = dst->height - wave; src_scr.x =src->x+w; fb_bitbld(&src_scr,&dst_scr); if (wave > 0) { fill_rect.x=dst->x+w; fill_rect.y=0; fill_rect.width=16; fill_rect.height=wave/2; fb_fillrect(&fill_rect,0); fill_rect.x=dst->x+w; fill_rect.y=dst->height - wave/2; fill_rect.width=16; fill_rect.height=wave/2; fb_fillrect(&fill_rect,0); } wd += dst_scr.width; w += src_scr.width; if (dir == 0) { wave -= 2; dst_scr.width = 16; if (wave <= 0) { dir = 1; } } else { wave += 2; dst_scr.width = 14; if (wave >= 20) { dir = 0; } } } usleep(effect_delay); } uninit_ge2d(); return 0; }