]> code.delx.au - gnu-emacs/blobdiff - src/dispextern.h
Doc fixes for fclist and grep
[gnu-emacs] / src / dispextern.h
index b9db3f808b530ce8b259298fab54b1904f8d7b4a..70358724024c642a8b4bc6e896c851615f058ec7 100644 (file)
@@ -1,13 +1,13 @@
 /* Interface definitions for display code.
 
-Copyright (C) 1985, 1993-1994, 1997-2015 Free Software Foundation, Inc.
+Copyright (C) 1985, 1993-1994, 1997-2016 Free Software Foundation, Inc.
 
 This file is part of GNU Emacs.
 
 GNU Emacs is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
+the Free Software Foundation, either version 3 of the License, or (at
+your option) any later version.
 
 GNU Emacs is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -347,7 +347,10 @@ enum glyph_type
   IMAGE_GLYPH,
 
   /* Glyph is a space of fractional width and/or height.  */
-  STRETCH_GLYPH
+  STRETCH_GLYPH,
+
+  /* Glyph is an external widget drawn by the GUI toolkit.  */
+  XWIDGET_GLYPH
 };
 
 
@@ -499,6 +502,11 @@ struct glyph
     /* Image ID for image glyphs (type == IMAGE_GLYPH).  */
     int img_id;
 
+#ifdef HAVE_XWIDGETS
+    /* Xwidget reference (type == XWIDGET_GLYPH).  */
+    struct xwidget *xwidget;
+#endif
+
     /* Sub-structure for type == STRETCH_GLYPH.  */
     struct
     {
@@ -1350,6 +1358,9 @@ struct glyph_string
   /* Image, if any.  */
   struct image *img;
 
+  /* Xwidget.  */
+  struct xwidget *xwidget;
+
   /* Slice */
   struct glyph_slice slice;
 
@@ -1526,6 +1537,12 @@ struct glyph_string
       + (FRAME_LINE_HEIGHT ((F)) > FONT_HEIGHT ((FONT)))) / 2  \
    - (FONT_DESCENT (FRAME_FONT (F)) - FRAME_BASELINE_OFFSET (F)))
 
+/* A heuristic test for fonts that claim they need a preposterously
+   large vertical space.  The heuristics is in the factor of 3.  We
+   ignore the ascent and descent values reported by such fonts, and
+   instead go by the values reported for individual glyphs.  */
+#define FONT_TOO_HIGH(ft)  ((ft)->ascent + (ft)->descent > 3*(ft)->pixel_size)
+
 \f
 /***********************************************************************
                                Faces
@@ -1810,8 +1827,10 @@ struct face_cache
   ((FACE) == (FACE)->ascii_face)
 
 /* Return the id of the realized face on frame F that is like the face
-   with id ID but is suitable for displaying character CHAR.
-   This macro is only meaningful for multibyte character CHAR.  */
+   FACE, but is suitable for displaying character CHAR at buffer or
+   string position POS.  OBJECT is the string object, or nil for
+   buffer.  This macro is only meaningful for multibyte character
+   CHAR.  */
 
 #define FACE_FOR_CHAR(F, FACE, CHAR, POS, OBJECT)      \
   face_for_char ((F), (FACE), (CHAR), (POS), (OBJECT))
@@ -1954,8 +1973,8 @@ struct bidi_it {
                                   resolving weak and neutral types */
   bidi_type_t type_after_wn;   /* bidi type after overrides and Wn */
   bidi_type_t orig_type;       /* original bidi type, as found in the buffer */
-  char resolved_level;         /* final resolved level of this character */
-  char isolate_level;          /* count of isolate initiators unmatched by PDI */
+  signed char resolved_level;  /* final resolved level of this character */
+  signed char isolate_level;   /* count of isolate initiators unmatched by PDI */
   ptrdiff_t invalid_levels;    /* how many PDFs to ignore */
   ptrdiff_t invalid_isolates;  /* how many PDIs to ignore */
   struct bidi_saved_info prev; /* info about previous character */
@@ -2093,7 +2112,10 @@ enum display_element_type
   IT_TRUNCATION,
 
   /* Continuation glyphs.  See the comment for IT_TRUNCATION.  */
-  IT_CONTINUATION
+  IT_CONTINUATION,
+
+  /* Xwidget.  */
+  IT_XWIDGET
 };
 
 
@@ -2157,6 +2179,7 @@ enum it_method {
   GET_FROM_C_STRING,
   GET_FROM_IMAGE,
   GET_FROM_STRETCH,
+  GET_FROM_XWIDGET,
   NUM_IT_METHODS
 };
 
@@ -2370,14 +2393,14 @@ struct it
        struct it_slice slice;
        ptrdiff_t image_id;
       } image;
-      /* method == GET_FROM_COMPOSITION */
-      struct {
-       Lisp_Object object;
-      } comp;
       /* method == GET_FROM_STRETCH */
       struct {
        Lisp_Object object;
       } stretch;
+      /* method == GET_FROM_XWIDGET */
+      struct {
+       Lisp_Object object;
+      } xwidget;
     } u;
 
     /* Current text and display positions.  */
@@ -2502,6 +2525,9 @@ struct it
   /* If what == IT_IMAGE, the id of the image to display.  */
   ptrdiff_t image_id;
 
+  /* If what == IT_XWIDGET.  */
+  struct xwidget *xwidget;
+
   /* Values from `slice' property.  */
   struct it_slice slice;
 
@@ -2941,6 +2967,7 @@ struct image
 
 #ifdef USE_CAIRO
   void *cr_data;
+  void *cr_data2;
 #endif
 #ifdef HAVE_X_WINDOWS
   /* X images of the image, corresponding to the above Pixmaps.
@@ -3236,6 +3263,9 @@ extern ptrdiff_t compute_display_string_end (ptrdiff_t,
                                             struct bidi_string_data *);
 extern void produce_stretch_glyph (struct it *);
 extern int merge_glyphless_glyph_face (struct it *);
+extern void forget_escape_and_glyphless_faces (void);
+
+extern void get_font_ascent_descent (struct font *, int *, int *);
 
 #ifdef HAVE_WINDOW_SYSTEM
 
@@ -3362,7 +3392,6 @@ void unrequest_sigio (void);
 bool tabs_safe_p (int);
 void init_baud_rate (int);
 void init_sigio (int);
-void ignore_sigio (void);
 
 /* Defined in xfaces.c.  */