void menubase_clrrect(VRAMHDL vram) { RECT_T rct; if (vram) { vram_getrect(vram, &rct); vram_fillalpha(menuvram, &rct, 1); menubase_setrect(vram, NULL); // movieredraw = 1; } }
static void vramdraw_drawvram(VRAMHDL vram, const RECT_T *rect) { DISPWIN dispwin; VRAMHDL src; RECT_T srcrect; RECT_T vramrect; dispwin = &gamecore.dispwin; if (dispwin->flag & DISPWIN_VRAM) { src = gamecore.anime.ganvram; if (src == NULL) { src = gamecore.vram[dispwin->vramnum]; } if (src != NULL) { vram_getrect(src, &srcrect); if (rect == NULL) { vram_getrect(vram, &vramrect); rect_enumout(&srcrect, &vramrect, vram, clrcb); } else { rect_enumout(&srcrect, rect, vram, clrcb); } vrammix_cpy(vram, src, rect); } else { vram_zerofill(vram, rect); } } else { vram_zerofill(vram, rect); if (gamecore.sys.version >= EXE_VER1) { return; } } vramdraw_drawupper(vram, rect); }
void vramdraw_setrect(VRAMHDL vram, const RECT_T *rect) { RECT_T rct; if (vram) { if (rect == NULL) { vram_getrect(vram, &rct); } else { rct.left = vram->posx + rect->left; rct.top = vram->posy + rect->top; rct.right = vram->posx + rect->right; rct.bottom = vram->posy + rect->bottom; } unionrect_add(&gamecore.vramrect, &rct); } }
static void getposinfo(MENUSYS *sys, MENUPOS *pos, int x, int y) { RECT_T rct; int cnt; MSYSWND wnd; MENUHDL menu; cnt = sys->depth; wnd = sys->wnd + cnt; while(cnt--) { wnd--; if (wnd->vram) { vram_getrect(wnd->vram, &rct); if (rect_in(&rct, x, y)) { x -= wnd->vram->posx; y -= wnd->vram->posy; break; } } } if (cnt >= 0) { pos->depth = cnt; pos->wnd = wnd; menu = wnd->menu; cnt = 0; while((menu) && (cnt < wnd->items)) { if (!(menu->flag & (MENU_DISABLE | MENU_SEPARATOR))) { if (rect_in(&menu->rct, x, y)) { pos->pos = cnt; pos->menu = menu; return; } } cnt++; menu = menu->next; } } else { pos->depth = -1; pos->wnd = NULL; } pos->pos = -1; pos->menu = NULL; }