int GGI_directfb_drawbox(ggi_visual *vis, int x, int y, int w, int h) { if (w > 0 && h > 0) { /* 0 width is not OK! */ struct directfb_priv *priv = DIRECTFB_PRIV(vis); int yadd = vis->w_frame_num * LIBGGI_VIRTY(vis); DFBRectangle dfbobj; y += yadd; directfb_gcupdate(vis, priv, LIBGGI_MODE(vis), LIBGGI_GC(vis), LIBGGI_VIRTX(vis), yadd, DFXL_FILLRECTANGLE); dfbobj.x = x; dfbobj.y = y; dfbobj.h = h; dfbobj.w = w; priv->device.funcs.FillRectangle(priv->device.driver_data, priv->device.device_data, &dfbobj); vis->accelactive = 1; } return 0; }
int GGI_directfb_copybox(struct ggi_visual *vis, int x, int y, int w, int h, int dstx, int dsty) { struct directfb_priv *priv = DIRECTFB_PRIV(vis); int virtx = LIBGGI_VIRTX(vis); int yadd = vis->w_frame_num * LIBGGI_VIRTY(vis); DFBRectangle dfbobj; directfb_gcupdate(vis, priv, LIBGGI_MODE(vis), LIBGGI_GC(vis), LIBGGI_VIRTX(vis), yadd, DFXL_BLIT); dfbobj.x = x; dfbobj.y = y; dfbobj.h = h; dfbobj.w = w; priv->device.funcs.Blit(priv->device.driver_data, priv->device.device_data, &dfbobj, dstx, dsty); vis->accelactive = 1; return 0; }
int GGI_directfb_fillscreen(ggi_visual *vis) { struct directfb_priv *priv = DIRECTFB_PRIV(vis); int virtx = LIBGGI_VIRTX(vis); int virty = LIBGGI_VIRTY(vis); int yadd = vis->w_frame_num * LIBGGI_VIRTY(vis); DFBRectangle dfbobj; directfb_gcupdate(vis, priv, LIBGGI_MODE(vis), LIBGGI_GC(vis), LIBGGI_VIRTX(vis), yadd, DFXL_FILLRECTANGLE); dfbobj.x = 0; dfbobj.y = 0; dfbobj.h = virty; dfbobj.w = virtx; priv->device.funcs.FillRectangle(priv->device.driver_data, priv->device.device_data, &dfbobj); vis->accelactive = 1; return 0; }
int GGI_directfb_drawhline(struct ggi_visual *vis, int x, int y, int w) { struct directfb_priv *priv = DIRECTFB_PRIV(vis); int yadd = vis->w_frame_num * LIBGGI_VIRTY(vis); DFBRectangle dfbobj; y += yadd; directfb_gcupdate(vis, priv, LIBGGI_MODE(vis), LIBGGI_GC(vis), LIBGGI_VIRTX(vis), yadd, DFXL_FILLRECTANGLE); dfbobj.x = x; dfbobj.y = y; dfbobj.w = w; dfbobj.h = 1; priv->device.funcs.FillRectangle(priv->device.driver_data, priv->device.device_data, &dfbobj); vis->accelactive = 1; return 0; }