void ph_OCUpdate(_THIS, int numrects, SDL_Rect *rects) { int i; PhPoint_t zero = {0}; PhArea_t src_rect; PhArea_t dest_rect; PgSetRegion(PtWidgetRid(window)); PgSetClipping(0, NULL); PgWaitHWIdle(); for (i=0; i<numrects; ++i) { if (rects[i].w == 0) /* Clipped? */ { continue; } if (rects[i].h == 0) /* Clipped? */ { continue; } src_rect.pos.x=rects[i].x; src_rect.pos.y=rects[i].y; dest_rect.pos.x=rects[i].x; dest_rect.pos.y=rects[i].y; src_rect.size.w=rects[i].w; src_rect.size.h=rects[i].h; dest_rect.size.w=rects[i].w; dest_rect.size.h=rects[i].h; zero.x = 0; zero.y = 0; PgSetTranslation(&zero, 0); PgSetRegion(PtWidgetRid(window)); PgSetClipping(0, NULL); PgContextBlitArea(OCImage.offscreen_context, &src_rect, NULL, &dest_rect); } if (PgFlush() < 0) { SDL_SetError("ph_OCUpdate(): PgFlush failed.\n"); } }
void ph_window_refresh_screen (void) { PhArea_t sarea, darea; // fprintf(stderr,"refresh screen\n"); switch (ph_window_update_method) { case PH_NORMAL: sarea.pos.x=sarea.pos.y=darea.pos.x=darea.pos.y=0; sarea.size.w=darea.size.w=image->dim.w; sarea.size.h=darea.size.h=image->dim.h; PgSetRegion(PtWidgetRid(P_mainWindow)); PgSetClipping (0,NULL); PgContextBlitArea (image,&sarea,NULL,&darea); break; } }
INLINE void ph_window_put_image (int x, int y, int width, int height) { PhArea_t sarea, darea; switch (ph_window_update_method) { case PH_NORMAL: sarea.pos.x=x; sarea.pos.y=y; sarea.size.w=darea.size.w=width; sarea.size.h=darea.size.h=height; darea.pos.x=x+startx; darea.pos.y=y+starty; PgSetRegion(PtWidgetRid(P_mainWindow)); PgSetClipping (0,NULL); PgContextBlitArea (image,&sarea,NULL,&darea); break; } }