]> code.delx.au - gnu-emacs/blobdiff - src/dispextern.h
* dispextern.h (struct face): New field - `copy', to help us with
[gnu-emacs] / src / dispextern.h
index 1957e3b7e7ea62b554141c30ad4f2959659036a3..dfdae70b3d050cc5fbae7d70427c2352ed93ed11 100644 (file)
@@ -1,5 +1,5 @@
 /* Interface definitions for display code.
-   Copyright (C) 1985, 1992 Free Software Foundation, Inc.
+   Copyright (C) 1985, 1993 Free Software Foundation, Inc.
 
 This file is part of GNU Emacs.
 
@@ -17,10 +17,6 @@ You should have received a copy of the GNU General Public License
 along with GNU Emacs; see the file COPYING.  If not, write to
 the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
 
-/* Nonzero means don't assume anything about current
-   contents of actual terminal frame */
-extern int frame_garbaged;
-
 /* Nonzero means last display completed and cursor is really at
    cursX, cursY.  Zero means it was preempted. */
 extern int display_completed;
@@ -31,28 +27,48 @@ extern int display_completed;
 struct face
   {
     /* If this is non-zero, it is a GC we can use without modification
-       to represent this face. */
+       to represent this face.  */
     GC gc;
+
+    /* If we have ever called get_cached_face on this face structure,
+       here is the index in face_vector of the face it returned.  It
+       might not be valid any more, but it's a good place to start
+       looking; get_cached_face tries to use this to avoid searching
+       all of face_vector.  */
+    int cached_index;
   
-    /* Pixel value for foreground color. */
+    /* Pixel value for foreground color.  */
     int foreground;
   
-    /* Pixel value for background color. */
+    /* Pixel value for background color.  */
     int background;
   
-    /* Font used for this face */
-    XFontStruct font;
+    /* Font used for this face */
+    XFontStruct *font;
   
-    /* Background stipple or bitmap used for this face. */
+    /* Background stipple or bitmap used for this face.  */
     Pixmap stipple;
+
+    /* Pixmap_depth.  */
+    unsigned int pixmap_w, pixmap_h;
   
-    /* Whether or not to underline text in this face. */
+    /* Whether or not to underline text in this face.  */
     char underline;
+
+    /* Does this face own its resources?  (color, font, etcetera)
+       If this is a face which we computed by combining other faces,
+       then this is true, and we shouldn't free any of the resources
+       it refers to; the faces from which it was constructed own it.
+       On the other hand, if this is a face the user created and
+       filled in directly, then this is false, and we should free the
+       resources when we free it.  */
+    char copy;
   };
 
+/* Let's stop using this and get rid of it.  */
 typedef struct face *FACE;
 
-#define NORMAL_FACE ((FACE *) 0)
+#define NORMAL_FACE ((struct face *) 0)
 
 #define FACE_HAS_GC(f) ((f)->gc)
 #define FACE_GC(f) ((f)->gc)
@@ -80,12 +96,12 @@ typedef int FACE;
 
    There are two instantiations of it:  the glyphs currently displayed,
    and the glyphs we desire to display.  The latter object is generated
-   from buffers being displayed. */
+   from buffers being displayed.  */
 
 struct frame_glyphs
   {
 #ifdef MULTI_FRAME
-    struct  frame *frame;      /* Frame these glyphs belong to. */
+    struct  frame *frame;      /* Frame these glyphs belong to.  */
 #endif /* MULTI_FRAME */
     int height;
     int width;
@@ -112,21 +128,21 @@ struct frame_glyphs
     /* highlight[n] != 0 iff line n is highlighted.  */
     char *highlight;
 
-    /* Buffer offset of this line's first char. */
+    /* Buffer offset of this line's first char.  */
     int   *bufp;
 
 #ifdef HAVE_X_WINDOWS
-    /* Pixel position of top left corner of line. */
+    /* Pixel position of top left corner of line.  */
     short *top_left_x;
     short *top_left_y;
 
-    /* Pixel width of line. */
+    /* Pixel width of line.  */
     short *pix_width;
 
-    /* Pixel height of line. */
+    /* Pixel height of line.  */
     short *pix_height;
 
-    /* Largest font ascent on this line. */
+    /* Largest font ascent on this line.  */
     short *max_ascent;
 #endif /* HAVE_X_WINDOWS */
   };