Limit size of windows and don't print outside screen region

This commit is contained in:
shikhin 2023-03-23 07:52:03 +05:30
parent 69e80e9ec5
commit b2697f2bff
1 changed files with 13 additions and 5 deletions

View File

@ -148,17 +148,21 @@ paint:
mov bp, [si + window.y]
mov si, [si + window.data]
add dx, bp
cmp dx, ROWS
jle .no_clipping_height
mov dx, ROWS
.no_clipping_height:
sub dx, bp
mov cx, bx
add cx, di
cmp cx, COLUMNS
jle .no_clipping
jle .no_clipping_width
mov cx, COLUMNS
.no_clipping_width:
sub cx, di
jmp .clipping_done
.no_clipping:
mov cx, bx
.clipping_done:
call PONYDOS_SEG:SYS_DRAW_RECT
ret
@ -253,6 +257,8 @@ resize:
jc .x
cmp dx, WINDOW_MIN_HEIGHT
jl .x
cmp dx, ROWS
jg .x
mov [si + window.y], bx
mov [si + window.height], dx
@ -263,6 +269,8 @@ resize:
jc .done
cmp dx, WINDOW_MIN_WIDTH
jl .done
cmp dx, COLUMNS
jg .done
mov [si + window.x], cx
mov [si + window.width], dx