Lines Matching refs:rect

6 #include "rect.h"
104 static void damagerect(VTermScreen *screen, VTermRect rect)
111 emit = rect;
117 if(rect.end_row > rect.start_row + 1) {
120 emit = rect;
124 screen->damaged = rect;
127 else if(rect.start_row == screen->damaged.start_row) {
129 if(screen->damaged.start_col > rect.start_col)
130 screen->damaged.start_col = rect.start_col;
131 if(screen->damaged.end_col < rect.end_col)
132 screen->damaged.end_col = rect.end_col;
138 screen->damaged = rect;
146 screen->damaged = rect;
148 rect_expand(&screen->damaged, &rect);
163 VTermRect rect = {
170 damagerect(screen, rect);
178 VTermRect rect;
193 rect.start_row = pos.row;
194 rect.end_row = pos.row+1;
195 rect.start_col = pos.col;
196 rect.end_col = pos.col+info->width;
202 damagerect(screen, rect);
266 static int erase_internal(VTermRect rect, int selective, void *user)
271 for(row = rect.start_row; row < rect.end_row; row++) {
274 for(col = rect.start_col; col < rect.end_col; col++) {
290 static int erase_user(VTermRect rect, int selective, void *user)
294 damagerect(screen, rect);
299 static int erase(VTermRect rect, int selective, void *user)
301 erase_internal(rect, selective, user);
302 return erase_user(rect, 0, user);
305 static int scrollrect(VTermRect rect, int downward, int rightward, void *user)
309 vterm_scroll_rect(rect, downward, rightward,
315 vterm_scroll_rect(rect, downward, rightward,
322 !rect_intersects(&rect, &screen->damaged)) {
327 screen->pending_scrollrect = rect;
331 else if(rect_equal(&screen->pending_scrollrect, &rect) &&
340 screen->pending_scrollrect = rect;
348 if(rect_contains(&rect, &screen->damaged)) {
350 rect_clip(&screen->damaged, &rect);
357 else if(rect.start_col <= screen->damaged.start_col &&
358 rect.end_col >= screen->damaged.end_col &&
360 if(screen->damaged.start_row >= rect.start_row &&
361 screen->damaged.start_row < rect.end_row) {
363 if(screen->damaged.start_row < rect.start_row)
364 screen->damaged.start_row = rect.start_row;
365 if(screen->damaged.start_row > rect.end_row)
366 screen->damaged.start_row = rect.end_row;
368 if(screen->damaged.end_row >= rect.start_row &&
369 screen->damaged.end_row < rect.end_row) {
371 if(screen->damaged.end_row < rect.start_row)
372 screen->damaged.end_row = rect.start_row;
373 if(screen->damaged.end_row > rect.end_row)
374 screen->damaged.end_row = rect.end_row;
378 fprintf(stderr, "TODO: Just flush and redo damaged=" STRFrect " rect=" STRFrect "\n",
379 ARGSrect(screen->damaged), ARGSrect(rect));
491 VTermRect rect;
503 VTermRect rect = {
509 scrollrect(rect, first_blank_row - new_rows, 0, user);
531 VTermRect rect = {
537 damagerect(screen, rect);
544 VTermRect rect = {
555 scrollrect(rect, -1, 0, user);
560 rect.end_row = 1;
561 damagerect(screen, rect);
570 rect.start_row = old_rows;
571 rect.end_row = new_rows;
572 rect.start_col = 0;
573 rect.end_col = new_cols;
574 damagerect(screen, rect);
589 VTermRect rect;
597 rect.start_row = row;
598 rect.end_row = row + 1;
599 rect.start_col = 0;
600 rect.end_col = newinfo->doublewidth ? screen->cols / 2 : screen->cols;
601 damagerect(screen, rect);
604 rect.start_col = screen->cols / 2;
605 rect.end_col = screen->cols;
607 erase_internal(rect, 0, user);
680 static size_t _get_chars(const VTermScreen *screen, const int utf8, void *buffer, size_t len, const VTermRect rect)
701 for(row = rect.start_row; row < rect.end_row; row++) {
702 for(col = rect.start_col; col < rect.end_col; col++) {
723 if(row < rect.end_row - 1) {
732 size_t vterm_screen_get_chars(const VTermScreen *screen, uint32_t *chars, size_t len, const VTermRect rect)
734 return _get_chars(screen, 0, chars, len, rect);
737 size_t vterm_screen_get_text(const VTermScreen *screen, char *str, size_t len, const VTermRect rect)
739 return _get_chars(screen, 1, str, len, rect);