[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/src/dispextern.h [emacs-unicode-2]
From: |
Miles Bader |
Subject: |
[Emacs-diffs] Changes to emacs/src/dispextern.h [emacs-unicode-2] |
Date: |
Mon, 28 Jun 2004 03:56:13 -0400 |
Index: emacs/src/dispextern.h
diff -c emacs/src/dispextern.h:1.153.4.3 emacs/src/dispextern.h:1.153.4.4
*** emacs/src/dispextern.h:1.153.4.3 Fri Apr 16 12:50:46 2004
--- emacs/src/dispextern.h Mon Jun 28 07:29:19 2004
***************
*** 1,5 ****
/* Interface definitions for display code.
! Copyright (C) 1985, 1993, 1994, 1997, 1998, 1999, 2000, 2001, 2002, 2003
Free Software Foundation, Inc.
This file is part of GNU Emacs.
--- 1,5 ----
/* Interface definitions for display code.
! Copyright (C) 1985,93,94,97,98,99, 2000,01,02,03, 2004
Free Software Foundation, Inc.
This file is part of GNU Emacs.
***************
*** 274,279 ****
--- 274,290 ----
};
+ /* Structure describing how to use partial glyphs (images slicing) */
+
+ struct glyph_slice
+ {
+ unsigned x : 16;
+ unsigned y : 16;
+ unsigned width : 16;
+ unsigned height : 16;
+ };
+
+
/* Glyphs.
Be extra careful when changing this structure! Esp. make sure that
***************
*** 352,357 ****
--- 363,370 ----
w32_char_font_type. Otherwise it equals FONT_TYPE_UNKNOWN. */
unsigned font_type : 3;
+ struct glyph_slice slice;
+
/* A union of sub-structures for different glyph types. */
union
{
***************
*** 390,400 ****
--- 403,422 ----
#define CHAR_GLYPH_SPACE_P(GLYPH) \
(GLYPH_FROM_CHAR_GLYPH ((GLYPH)) == SPACEGLYPH)
+ /* Are glyph slices of glyphs *X and *Y equal */
+
+ #define GLYPH_SLICE_EQUAL_P(X, Y) \
+ ((X)->slice.x == (Y)->slice.x \
+ && (X)->slice.y == (Y)->slice.y \
+ && (X)->slice.width == (Y)->slice.width \
+ && (X)->slice.height == (Y)->slice.height)
+
/* Are glyphs *X and *Y displayed equal? */
#define GLYPH_EQUAL_P(X, Y) \
((X)->type == (Y)->type \
&& (X)->u.val == (Y)->u.val \
+ && GLYPH_SLICE_EQUAL_P (X, Y) \
&& (X)->face_id == (Y)->face_id \
&& (X)->padding_p == (Y)->padding_p \
&& (X)->left_box_line_p == (Y)->left_box_line_p \
***************
*** 1143,1148 ****
--- 1165,1173 ----
/* Image, if any. */
struct image *img;
+ /* Slice */
+ struct glyph_slice slice;
+
struct glyph_string *next, *prev;
};
***************
*** 1604,1610 ****
width and height of the bitmap, DH is the height adjustment (if
bitmap is periodic). X and Y are frame coordinates of the area to
display the bitmap, DY is relative offset of the bitmap into that
! area. BX, NX, BY, NY specifies the area to clear if the bitmap
does not fill the entire area. FACE is the fringe face. */
struct draw_fringe_bitmap_params
--- 1629,1635 ----
width and height of the bitmap, DH is the height adjustment (if
bitmap is periodic). X and Y are frame coordinates of the area to
display the bitmap, DY is relative offset of the bitmap into that
! area. BX, NX, BY, NY specifies the area to clear if the bitmap
does not fill the entire area. FACE is the fringe face. */
struct draw_fringe_bitmap_params
***************
*** 1716,1721 ****
--- 1741,1755 ----
};
+ struct it_slice
+ {
+ Lisp_Object x;
+ Lisp_Object y;
+ Lisp_Object width;
+ Lisp_Object height;
+ };
+
+
struct it
{
/* The window in which we iterate over current_buffer (or a string). */
***************
*** 1828,1833 ****
--- 1862,1868 ----
unsigned multibyte_p : 1;
unsigned string_from_display_prop_p : 1;
unsigned display_ellipsis_p : 1;
+ struct it_slice slice;
Lisp_Object space_width;
short voffset;
Lisp_Object font_height;
***************
*** 1882,1887 ****
--- 1917,1926 ----
skipped due to selective display. */
unsigned face_before_selective_p : 1;
+ /* If 1, adjust current glyph so it does not increase current row
+ descent/ascent (line-height property). Reset after this glyph. */
+ unsigned constrain_row_ascent_descent_p : 1;
+
/* The ID of the default face to use. One of DEFAULT_FACE_ID,
MODE_LINE_FACE_ID, etc, depending on what we are displaying. */
int base_face_id;
***************
*** 1907,1912 ****
--- 1946,1954 ----
/* If what == IT_IMAGE, the id of the image to display. */
int image_id;
+ /* Values from `slice' property. */
+ struct it_slice slice;
+
/* Value of the `space-width' property, if any; nil if none. */
Lisp_Object space_width;
***************
*** 1945,1950 ****
--- 1987,1996 ----
only.) */
int extra_line_spacing;
+ /* Override font height information for this glyph.
+ Used if override_ascent >= 0. Cleared after this glyph. */
+ int override_ascent, override_descent, override_boff;
+
/* If non-null, glyphs are produced in glyph_row with each call to
produce_glyphs. */
struct glyph_row *glyph_row;
***************
*** 2176,2182 ****
struct charset *charset,
int *two_byte_p));
! /* Compute left and right overhang of glyph string S.
A NULL pointer if platform does not support this. */
void (*compute_glyph_string_overhangs) P_ ((struct glyph_string *s));
--- 2222,2228 ----
struct charset *charset,
int *two_byte_p));
! /* Compute left and right overhang of glyph string S.
A NULL pointer if platform does not support this. */
void (*compute_glyph_string_overhangs) P_ ((struct glyph_string *s));
***************
*** 2204,2210 ****
void (*draw_vertical_window_border) P_ ((struct window *w,
int x, int y0, int y1));
! /* Shift display of frame F to make room for inserted glyphs.
The area at pixel (X,Y) of width WIDTH and height HEIGHT is
shifted right by SHIFT_BY pixels. */
void (*shift_glyphs_for_insert) P_ ((struct frame *f,
--- 2250,2256 ----
void (*draw_vertical_window_border) P_ ((struct window *w,
int x, int y0, int y1));
! /* Shift display of frame F to make room for inserted glyphs.
The area at pixel (X,Y) of width WIDTH and height HEIGHT is
shifted right by SHIFT_BY pixels. */
void (*shift_glyphs_for_insert) P_ ((struct frame *f,
***************
*** 2518,2529 ****
extern Lisp_Object Vshow_trailing_whitespace;
extern int mode_line_in_non_selected_windows;
extern int redisplaying_p;
- extern Lisp_Object Vimage_types;
extern void add_to_log P_ ((char *, Lisp_Object, Lisp_Object));
extern int help_echo_showing_p;
extern int current_mode_line_height, current_header_line_height;
extern Lisp_Object help_echo_string, help_echo_window;
! extern Lisp_Object help_echo_object, previous_help_echo_string;
extern int help_echo_pos;
extern struct frame *last_mouse_frame;
extern int last_tool_bar_item;
--- 2564,2574 ----
extern Lisp_Object Vshow_trailing_whitespace;
extern int mode_line_in_non_selected_windows;
extern int redisplaying_p;
extern void add_to_log P_ ((char *, Lisp_Object, Lisp_Object));
extern int help_echo_showing_p;
extern int current_mode_line_height, current_header_line_height;
extern Lisp_Object help_echo_string, help_echo_window;
! extern Lisp_Object help_echo_object, previous_help_echo_string;
extern int help_echo_pos;
extern struct frame *last_mouse_frame;
extern int last_tool_bar_item;
***************
*** 2633,2638 ****
--- 2678,2685 ----
int image_background_transparent P_ ((struct image *, struct frame *,
XImagePtr_or_DC mask));
+ int image_ascent P_ ((struct image *, struct face *, struct glyph_slice *));
+
#endif
/* Defined in sysdep.c */
***************
*** 2741,2747 ****
extern Lisp_Object buffer_posn_from_coords P_ ((struct window *,
int *, int *,
struct display_pos *,
! Lisp_Object *,
int *, int *, int *, int *));
extern Lisp_Object mode_line_string P_ ((struct window *, enum window_part,
int *, int *, int *,
--- 2788,2794 ----
extern Lisp_Object buffer_posn_from_coords P_ ((struct window *,
int *, int *,
struct display_pos *,
! Lisp_Object *,
int *, int *, int *, int *));
extern Lisp_Object mode_line_string P_ ((struct window *, enum window_part,
int *, int *, int *,
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] Changes to emacs/src/dispextern.h [emacs-unicode-2],
Miles Bader <=