mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2025-04-15 22:01:01 +00:00
[ui] Clip rendering to canvas bounds
This causes minor problems when the window gets too small, but it will allow for scrollable regions.
This commit is contained in:
parent
00d9f039fc
commit
86326c8179
1 changed files with 7 additions and 2 deletions
|
@ -474,16 +474,20 @@ Canvas_Draw (canvas_system_t canvas_sys)
|
|||
uint32_t comp = canvas_sys.base + canvas_canvas;
|
||||
ecs_pool_t *canvas_pool = ®->comp_pools[comp];
|
||||
uint32_t count = canvas_pool->count;
|
||||
//uint32_t *entities = canvas_pool->dense;
|
||||
uint32_t *entities = canvas_pool->dense;
|
||||
__auto_type canvases = (canvas_t *) canvas_pool->data;
|
||||
|
||||
while (count-- > 0) {
|
||||
canvas_t *canvas = canvases++;
|
||||
//uint32_t ent = *entities++;
|
||||
uint32_t ent = *entities++;
|
||||
|
||||
if (!canvas->visible) {
|
||||
continue;
|
||||
}
|
||||
view_t canvas_view = Canvas_GetRootView (canvas_sys, ent);
|
||||
view_pos_t pos = View_GetAbs (canvas_view);
|
||||
view_pos_t len = View_GetLen (canvas_view);
|
||||
r_funcs->Draw_SetClip (pos.x, pos.y, len.x, len.y);
|
||||
|
||||
for (int i = 0; i < canvas_comp_count; i++) {
|
||||
if (draw_func[i]) {
|
||||
|
@ -497,6 +501,7 @@ Canvas_Draw (canvas_system_t canvas_sys)
|
|||
}
|
||||
}
|
||||
}
|
||||
r_funcs->Draw_ResetClip ();
|
||||
{
|
||||
ecs_pool_t *pool = ®->comp_pools[canvas_updateonce];
|
||||
ecs_subpool_t *subpool = ®->subpools[canvas_updateonce];
|
||||
|
|
Loading…
Reference in a new issue