emacs-diffs
[Top][All Lists]
Advanced

[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 *,




reply via email to

[Prev in Thread] Current Thread [Next in Thread]