Mercurial > hg > xemacs-beta
comparison src/redisplay-output.c @ 388:aabb7f5b1c81 r21-2-9
Import from CVS: tag r21-2-9
author | cvs |
---|---|
date | Mon, 13 Aug 2007 11:09:42 +0200 |
parents | bbff43aa5eb7 |
children | 74fd4e045ea6 |
comparison
equal
deleted
inserted
replaced
387:f892a9d0bb8d | 388:aabb7f5b1c81 |
---|---|
39 | 39 |
40 static int compare_runes (struct window *w, struct rune *crb, | 40 static int compare_runes (struct window *w, struct rune *crb, |
41 struct rune *drb); | 41 struct rune *drb); |
42 static void redraw_cursor_in_window (struct window *w, | 42 static void redraw_cursor_in_window (struct window *w, |
43 int run_end_begin_glyphs); | 43 int run_end_begin_glyphs); |
44 static void redisplay_output_display_block (struct window *w, struct display_line *dl, | |
45 int block, int start, int end, int start_pixpos, | |
46 int cursor_start, int cursor_width, | |
47 int cursor_height); | |
44 | 48 |
45 /***************************************************************************** | 49 /***************************************************************************** |
46 sync_rune_structs | 50 sync_rune_structs |
47 | 51 |
48 Synchronize the given rune blocks. | 52 Synchronize the given rune blocks. |
300 struct display_line *ddl, int c_block, int d_block, | 304 struct display_line *ddl, int c_block, int d_block, |
301 int start_pixpos, int cursor_start, int cursor_width, | 305 int start_pixpos, int cursor_start, int cursor_width, |
302 int cursor_height) | 306 int cursor_height) |
303 { | 307 { |
304 struct frame *f = XFRAME (w->frame); | 308 struct frame *f = XFRAME (w->frame); |
305 struct device *d = XDEVICE (f->device); | |
306 | |
307 struct display_block *cdb, *ddb; | 309 struct display_block *cdb, *ddb; |
308 int start_pos; | 310 int start_pos; |
309 int stop_pos; | 311 int stop_pos; |
310 int force = 0; | 312 int force = 0; |
311 int block_end; | 313 int block_end; |
411 elt--; | 413 elt--; |
412 } | 414 } |
413 stop_pos = elt + 1; | 415 stop_pos = elt + 1; |
414 } | 416 } |
415 | 417 |
416 DEVMETH (d, output_display_block, (w, ddl, d_block, start_pos, | 418 redisplay_output_display_block (w, ddl, d_block, start_pos, |
417 stop_pos, start_pixpos, | 419 stop_pos, start_pixpos, |
418 cursor_start, cursor_width, | 420 cursor_start, cursor_width, |
419 cursor_height)); | 421 cursor_height); |
420 return 1; | 422 return 1; |
421 } | 423 } |
422 | 424 |
423 return 0; | 425 return 0; |
424 } | 426 } |
469 display_line_dynarr *ddla, int line, int force_start, | 471 display_line_dynarr *ddla, int line, int force_start, |
470 int force_end) | 472 int force_end) |
471 | 473 |
472 { | 474 { |
473 struct frame *f = XFRAME (w->frame); | 475 struct frame *f = XFRAME (w->frame); |
474 struct device *d = XDEVICE (f->device); | |
475 struct buffer *b = XBUFFER (w->buffer); | 476 struct buffer *b = XBUFFER (w->buffer); |
476 struct buffer *old_b = window_display_buffer (w); | 477 struct buffer *old_b = window_display_buffer (w); |
477 struct display_line *cdl, *ddl; | 478 struct display_line *cdl, *ddl; |
478 display_block_dynarr *cdba, *ddba; | 479 display_block_dynarr *cdba, *ddba; |
479 int start_pixpos, end_pixpos; | 480 int start_pixpos, end_pixpos; |
540 must_sync |= compare_display_blocks (w, cdl, ddl, 0, 0, | 541 must_sync |= compare_display_blocks (w, cdl, ddl, 0, 0, |
541 start_pixpos, 0, 0, 0); | 542 start_pixpos, 0, 0, 0); |
542 } | 543 } |
543 else | 544 else |
544 { | 545 { |
545 DEVMETH (d, output_display_block, (w, ddl, 0, 0, -1, start_pixpos, | 546 redisplay_output_display_block (w, ddl, 0, 0, -1, start_pixpos, |
546 0, 0, 0)); | 547 0, 0, 0); |
547 must_sync = 1; | 548 must_sync = 1; |
548 } | 549 } |
549 | 550 |
550 if (must_sync) | 551 if (must_sync) |
551 clear_border = 1; | 552 clear_border = 1; |
677 break; | 678 break; |
678 } | 679 } |
679 } | 680 } |
680 | 681 |
681 must_sync = 1; | 682 must_sync = 1; |
682 DEVMETH (d, output_display_block, (w, ddl, block, first_elt, | 683 redisplay_output_display_block (w, ddl, block, first_elt, |
683 last_elt, | 684 last_elt, |
684 start_pixpos, | 685 start_pixpos, |
685 cursor_start, cursor_width, | 686 cursor_start, cursor_width, |
686 cursor_height)); | 687 cursor_height); |
687 } | 688 } |
688 | 689 |
689 start_pixpos = next_start_pixpos; | 690 start_pixpos = next_start_pixpos; |
690 } | 691 } |
691 } | 692 } |
692 | 693 |
693 /* Clear the internal border if we are next to it and the window | 694 /* Clear the internal border if we are next to it and the window |
980 | 981 |
981 redraw_cursor_in_window (XWINDOW (window), run_end_begin_meths); | 982 redraw_cursor_in_window (XWINDOW (window), run_end_begin_meths); |
982 } | 983 } |
983 | 984 |
984 /**************************************************************************** | 985 /**************************************************************************** |
986 redisplay_output_display_block | |
987 | |
988 Given a display line, a block number for that start line, output all | |
989 runes between start and end in the specified display block. | |
990 ****************************************************************************/ | |
991 static void | |
992 redisplay_output_display_block (struct window *w, struct display_line *dl, int block, | |
993 int start, int end, int start_pixpos, int cursor_start, | |
994 int cursor_width, int cursor_height) | |
995 { | |
996 struct frame *f = XFRAME (w->frame); | |
997 struct device *d = XDEVICE (f->device); | |
998 | |
999 DEVMETH (d, output_display_block, (w, dl, block, start, | |
1000 end, start_pixpos, | |
1001 cursor_start, cursor_width, | |
1002 cursor_height)); | |
1003 } | |
1004 | |
1005 /**************************************************************************** | |
985 redisplay_unmap_subwindows | 1006 redisplay_unmap_subwindows |
986 | 1007 |
987 Remove subwindows from the area in the box defined by the given | 1008 Remove subwindows from the area in the box defined by the given |
988 parameters. | 1009 parameters. |
989 ****************************************************************************/ | 1010 ****************************************************************************/ |
1002 && | 1023 && |
1003 cachel->y + cachel->height > y && cachel->y < y + height) | 1024 cachel->y + cachel->height > y && cachel->y < y + height) |
1004 { | 1025 { |
1005 unmap_subwindow (cachel->subwindow); | 1026 unmap_subwindow (cachel->subwindow); |
1006 } | 1027 } |
1028 } | |
1029 } | |
1030 | |
1031 /**************************************************************************** | |
1032 redisplay_unmap_subwindows_maybe | |
1033 | |
1034 Potentially subwindows from the area in the box defined by the given | |
1035 parameters. | |
1036 ****************************************************************************/ | |
1037 void redisplay_unmap_subwindows_maybe (struct frame* f, int x, int y, int width, int height) | |
1038 { | |
1039 if (Dynarr_length (FRAME_SUBWINDOW_CACHE (f))) | |
1040 { | |
1041 redisplay_unmap_subwindows (f, x, y, width, height); | |
1007 } | 1042 } |
1008 } | 1043 } |
1009 | 1044 |
1010 /**************************************************************************** | 1045 /**************************************************************************** |
1011 redisplay_output_subwindow | 1046 redisplay_output_subwindow |