X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/af42d485b476c420b985977345196faaa0dbebc5..5180cc015e2cca6f8cb635044ac4643cf83276cb:/src/dispextern.h diff --git a/src/dispextern.h b/src/dispextern.h index 6cd033745d..102ae84a6e 100644 --- a/src/dispextern.h +++ b/src/dispextern.h @@ -635,10 +635,6 @@ struct glyph_row screen. */ unsigned enabled_p : 1; - /* Display this line in inverse video? Used for the mode line and - menu bar lines. */ - unsigned inverse_p : 1; - /* 1 means row displays a text line that is truncated on the left or right side. */ unsigned truncated_on_left_p : 1; @@ -672,7 +668,7 @@ struct glyph_row unsigned contains_overlapping_glyphs_p : 1; /* 1 means this row is a wide as the window it is displayed in, including - scroll bars, bitmap areas, and internal borders. This also + scroll bars, fringes, and internal borders. This also implies that the row doesn't have marginal areas. */ unsigned full_width_p : 1; @@ -698,6 +694,9 @@ struct glyph_row /* 1 means some glyphs in this row are displayed in mouse-face. */ unsigned mouse_face_p : 1; + /* 1 means this row was ended by a newline from a string. */ + unsigned ends_in_newline_from_string_p : 1; + /* Continuation lines width at the start of the row. */ int continuation_lines_width; }; @@ -969,12 +968,12 @@ extern struct glyph_row scratch_glyph_row; /* Width of display region of window W. For terminal frames, this equals the width of W since there are no vertical scroll bars. For window system frames, the value has to be corrected by the pixel - width of vertical scroll bars, and bitmap areas. */ + width of vertical scroll bars, and fringes. */ #define WINDOW_DISPLAY_PIXEL_WIDTH(W) \ (((XFASTINT ((W)->width) \ - FRAME_SCROLL_BAR_WIDTH (XFRAME (WINDOW_FRAME ((W)))) \ - - FRAME_FLAGS_AREA_COLS (XFRAME (WINDOW_FRAME ((W))))) \ + - FRAME_FRINGE_COLS (XFRAME (WINDOW_FRAME ((W))))) \ * CANON_X_UNIT (XFRAME (WINDOW_FRAME ((W)))))) /* Height of the display region of W, including a mode line, if any. */ @@ -1018,7 +1017,7 @@ extern struct glyph_row scratch_glyph_row; (FRAME_INTERNAL_BORDER_WIDTH_SAFE (XFRAME (WINDOW_FRAME ((W)))) \ + (WINDOW_LEFT_MARGIN ((W)) \ * CANON_X_UNIT (XFRAME (WINDOW_FRAME ((W))))) \ - + FRAME_LEFT_FLAGS_AREA_WIDTH (XFRAME (WINDOW_FRAME ((W))))) + + FRAME_LEFT_FRINGE_WIDTH (XFRAME (WINDOW_FRAME ((W))))) /* Right edge of window W in pixels, relative to its frame. */ @@ -1293,7 +1292,7 @@ struct face unsigned background_defaulted_p : 1; /* 1 means that either no color is specified for underlining or that - the the specified color couldn't be loaded. Use the foreground + the specified color couldn't be loaded. Use the foreground color when drawing in that case. */ unsigned underline_defaulted_p : 1; @@ -1314,6 +1313,11 @@ struct face unsigned tty_reverse_p : 1; unsigned tty_blinking_p : 1; + /* 1 means that colors of this face may not be freed because they + have been copied bitwise from a base face (see + realize_x_face). */ + unsigned colors_copied_bitwise_p : 1; + /* Next and previous face in hash collision list of face cache. */ struct face *next, *prev; @@ -1348,7 +1352,7 @@ enum face_id DEFAULT_FACE_ID, MODE_LINE_FACE_ID, TOOL_BAR_FACE_ID, - BITMAP_AREA_FACE_ID, + FRINGE_FACE_ID, HEADER_LINE_FACE_ID, SCROLL_BAR_FACE_ID, BORDER_FACE_ID, @@ -1375,6 +1379,10 @@ struct face_cache /* The allocated size, and number of used slots of faces_by_id. */ int size, used; + + /* Flag indicating that attributes of the `menu' face have been + changed. */ + unsigned menu_face_changed_p : 1; }; @@ -1982,6 +1990,22 @@ struct image unsigned long *colors; int ncolors; + /* A single `background color' for this image, for the use of anyone that + cares about such a thing. Only valid if the `background_valid' field + is true. This should generally be accessed by calling the accessor + macro `IMAGE_BACKGROUND', which will heuristically calculate a value + if necessary. */ + unsigned long background; + + /* True if this image has a `transparent' background -- that is, is + uses an image mask. The accessor macro for this is + `IMAGE_BACKGROUND_TRANSPARENT'. */ + unsigned background_transparent : 1; + + /* True if the `background' and `background_transparent' fields are + valid, respectively. */ + unsigned background_valid : 1, background_transparent_valid : 1; + /* Width and height of the image. */ int width, height; @@ -2153,6 +2177,9 @@ extern int tool_bar_button_relief; /* Defined in xdisp.c */ +struct glyph_row *row_containing_pos P_ ((struct window *, int, + struct glyph_row *, + struct glyph_row *, int)); int string_buffer_position P_ ((struct window *, Lisp_Object, int)); int line_bottom_y P_ ((struct it *)); int display_prop_intangible_p P_ ((Lisp_Object)); @@ -2262,6 +2289,14 @@ void forall_images_in_image_cache P_ ((struct frame *, int valid_image_p P_ ((Lisp_Object)); void prepare_image_for_display P_ ((struct frame *, struct image *)); int lookup_image P_ ((struct frame *, Lisp_Object)); + +#ifdef HAVE_X_WINDOWS +unsigned long image_background P_ ((struct image *, struct frame *, + XImage *ximg)); +int image_background_transparent P_ ((struct image *, struct frame *, + XImage *mask)); +#endif /* HAVE_X_WINDOWS */ + extern Lisp_Object tip_frame; extern Window tip_window; EXFUN (Fx_show_tip, 6); @@ -2270,6 +2305,24 @@ extern void start_hourglass P_ ((void)); extern void cancel_hourglass P_ ((void)); extern int display_hourglass_p; +/* Returns the background color of IMG, calculating one heuristically if + necessary. If non-zero, XIMG is an existing XImage object to use for + the heuristic. */ + +#define IMAGE_BACKGROUND(img, f, ximg) \ + ((img)->background_valid \ + ? (img)->background \ + : image_background (img, f, ximg)) + +/* Returns true if IMG has a `transparent' background, using heuristics + to decide if necessary. If non-zero, MASK is an existing XImage + object to use for the heuristic. */ + +#define IMAGE_BACKGROUND_TRANSPARENT(img, f, mask) \ + ((img)->background_transparent_valid \ + ? (img)->background_transparent \ + : image_background_transparent (img, f, mask)) + #endif /* HAVE_WINDOW_SYSTEM */ @@ -2280,8 +2333,10 @@ int popup_activated P_ ((void)); /* Defined in dispnew.c */ extern int inverse_video; -int estimate_mode_line_height P_ ((struct frame *, enum face_id)); -Lisp_Object mode_line_string P_ ((struct window *, int, int, int, int *)); +extern int required_matrix_width P_ ((struct window *)); +extern int required_matrix_height P_ ((struct window *)); +extern int estimate_mode_line_height P_ ((struct frame *, enum face_id)); +extern Lisp_Object mode_line_string P_ ((struct window *, int, int, int, int *)); extern void redraw_frame P_ ((struct frame *)); extern void redraw_garbaged_frames P_ ((void)); extern void cancel_line P_ ((int, struct frame *)); @@ -2344,7 +2399,6 @@ extern void set_scroll_region P_ ((int, int)); extern void turn_off_insert P_ ((void)); extern void turn_off_highlight P_ ((void)); extern void background_highlight P_ ((void)); -extern void reassert_line_highlight P_ ((int, int)); extern void clear_frame P_ ((void)); extern void clear_end_of_line P_ ((int)); extern void clear_end_of_line_raw P_ ((int)); @@ -2356,7 +2410,6 @@ extern void calculate_costs P_ ((struct frame *)); extern void term_init P_ ((char *)); extern void fatal P_ ((/* char *, ... */)); void cursor_to P_ ((int, int)); -void change_line_highlight P_ ((int, int, int, int)); /* Defined in scroll.c */