annotate oldXMenu/XCrAssoc.c @ 53879:e3771c262410

New file. Move original fringe related declarations and code from dispextern.h and xdisp.c here. Rework code to support user defined fringe bitmaps, redefining standard bitmaps, ability to overlay user defined bitmap with overlay arrow bitmap, and add faces to bitmaps. (Voverflow_newline_into_fringe): Declare here. (enum fringe_bitmap_align): New enum. (..._bits): All bitmaps are now defined without bitswapping; that is now done in init_fringe_once (if necessary). (standard_bitmaps): New array with specifications for the standard fringe bitmaps. (fringe_faces): New array. (valid_fringe_bitmap_id_p): New function. (draw_fringe_bitmap_1): Rename from draw_fringe_bitmap. (draw_fringe_bitmap): New function which draws fringe bitmap, possibly overlaying bitmap with cursor in right fringe or the overlay arrow in the left fringe. (update_window_fringes): Do not handle overlay arrow here. Compare and copy fringe bitmap faces. (init_fringe_bitmap): New function. (Fdefine_fringe_bitmap, Fdestroy_fringe_bitmap): New DEFUNs to define and destroy user defined fringe bitmaps. (Fset_fringe_bitmap_face): New DEFUN to set face for a fringe bitmap. (Ffringe_bitmaps_at_pos): New DEFUN to read current fringe bitmaps. (syms_of_fringe): New function. Defsubr new DEFUNs. DEFVAR_LISP Voverflow_newline_into_fringe. (init_fringe_once, init_fringe): New functions. (w32_init_fringe, w32_reset_fringes) [WINDOWS_NT]: New functions.
author Kim F. Storm <storm@cua.dk>
date Sun, 08 Feb 2004 23:18:16 +0000
parents 695cf19ef79e
children e8824c4f5f7e 375f2633d815
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
1 /* $XConsortium: XCrAssoc.c,v 10.17 91/01/06 12:04:57 rws Exp $ */
Dave Love <fx@gnu.org>
parents:
diff changeset
2 /* Copyright Massachusetts Institute of Technology 1985 */
Dave Love <fx@gnu.org>
parents:
diff changeset
3
Dave Love <fx@gnu.org>
parents:
diff changeset
4 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
5 Permission to use, copy, modify, distribute, and sell this software and its
Dave Love <fx@gnu.org>
parents:
diff changeset
6 documentation for any purpose is hereby granted without fee, provided that
Dave Love <fx@gnu.org>
parents:
diff changeset
7 the above copyright notice appear in all copies and that both that
Dave Love <fx@gnu.org>
parents:
diff changeset
8 copyright notice and this permission notice appear in supporting
Dave Love <fx@gnu.org>
parents:
diff changeset
9 documentation, and that the name of M.I.T. not be used in advertising or
Dave Love <fx@gnu.org>
parents:
diff changeset
10 publicity pertaining to distribution of the software without specific,
Dave Love <fx@gnu.org>
parents:
diff changeset
11 written prior permission. M.I.T. makes no representations about the
Dave Love <fx@gnu.org>
parents:
diff changeset
12 suitability of this software for any purpose. It is provided "as is"
Dave Love <fx@gnu.org>
parents:
diff changeset
13 without express or implied warranty.
Dave Love <fx@gnu.org>
parents:
diff changeset
14 */
Dave Love <fx@gnu.org>
parents:
diff changeset
15
Dave Love <fx@gnu.org>
parents:
diff changeset
16 #include <config.h>
Dave Love <fx@gnu.org>
parents:
diff changeset
17 #include <X11/Xlib.h>
Dave Love <fx@gnu.org>
parents:
diff changeset
18 #include <errno.h>
Dave Love <fx@gnu.org>
parents:
diff changeset
19 #include "X10.h"
Dave Love <fx@gnu.org>
parents:
diff changeset
20
Dave Love <fx@gnu.org>
parents:
diff changeset
21 #ifndef NULL
Dave Love <fx@gnu.org>
parents:
diff changeset
22 #define NULL 0
Dave Love <fx@gnu.org>
parents:
diff changeset
23 #endif
Dave Love <fx@gnu.org>
parents:
diff changeset
24
Dave Love <fx@gnu.org>
parents:
diff changeset
25 extern int errno;
Dave Love <fx@gnu.org>
parents:
diff changeset
26
Dave Love <fx@gnu.org>
parents:
diff changeset
27 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
28 * XCreateAssocTable - Create an XAssocTable. The size argument should be
Dave Love <fx@gnu.org>
parents:
diff changeset
29 * a power of two for efficiency reasons. Some size suggestions: use 32
Dave Love <fx@gnu.org>
parents:
diff changeset
30 * buckets per 100 objects; a reasonable maximum number of object per
Dave Love <fx@gnu.org>
parents:
diff changeset
31 * buckets is 8. If there is an error creating the XAssocTable, a NULL
Dave Love <fx@gnu.org>
parents:
diff changeset
32 * pointer is returned.
Dave Love <fx@gnu.org>
parents:
diff changeset
33 */
Dave Love <fx@gnu.org>
parents:
diff changeset
34 XAssocTable *XCreateAssocTable(size)
Dave Love <fx@gnu.org>
parents:
diff changeset
35 register int size; /* Desired size of the table. */
Dave Love <fx@gnu.org>
parents:
diff changeset
36 {
Dave Love <fx@gnu.org>
parents:
diff changeset
37 register XAssocTable *table; /* XAssocTable to be initialized. */
Dave Love <fx@gnu.org>
parents:
diff changeset
38 register XAssoc *buckets; /* Pointer to the first bucket in */
Dave Love <fx@gnu.org>
parents:
diff changeset
39 /* the bucket array. */
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 25858
diff changeset
40
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
41 /* Malloc the XAssocTable. */
Dave Love <fx@gnu.org>
parents:
diff changeset
42 if ((table = (XAssocTable *)malloc(sizeof(XAssocTable))) == NULL) {
Dave Love <fx@gnu.org>
parents:
diff changeset
43 /* malloc call failed! */
Dave Love <fx@gnu.org>
parents:
diff changeset
44 errno = ENOMEM;
Dave Love <fx@gnu.org>
parents:
diff changeset
45 return(NULL);
Dave Love <fx@gnu.org>
parents:
diff changeset
46 }
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 25858
diff changeset
47
25858
Dave Love <fx@gnu.org>
parents:
diff changeset
48 /* calloc the buckets (actually just their headers). */
Dave Love <fx@gnu.org>
parents:
diff changeset
49 buckets = (XAssoc *)calloc((unsigned)size, (unsigned)sizeof(XAssoc));
Dave Love <fx@gnu.org>
parents:
diff changeset
50 if (buckets == NULL) {
Dave Love <fx@gnu.org>
parents:
diff changeset
51 /* calloc call failed! */
Dave Love <fx@gnu.org>
parents:
diff changeset
52 errno = ENOMEM;
Dave Love <fx@gnu.org>
parents:
diff changeset
53 return(NULL);
Dave Love <fx@gnu.org>
parents:
diff changeset
54 }
Dave Love <fx@gnu.org>
parents:
diff changeset
55
Dave Love <fx@gnu.org>
parents:
diff changeset
56 /* Insert table data into the XAssocTable structure. */
Dave Love <fx@gnu.org>
parents:
diff changeset
57 table->buckets = buckets;
Dave Love <fx@gnu.org>
parents:
diff changeset
58 table->size = size;
Dave Love <fx@gnu.org>
parents:
diff changeset
59
Dave Love <fx@gnu.org>
parents:
diff changeset
60 while (--size >= 0) {
Dave Love <fx@gnu.org>
parents:
diff changeset
61 /* Initialize each bucket. */
Dave Love <fx@gnu.org>
parents:
diff changeset
62 buckets->prev = buckets;
Dave Love <fx@gnu.org>
parents:
diff changeset
63 buckets->next = buckets;
Dave Love <fx@gnu.org>
parents:
diff changeset
64 buckets++;
Dave Love <fx@gnu.org>
parents:
diff changeset
65 }
Dave Love <fx@gnu.org>
parents:
diff changeset
66
Dave Love <fx@gnu.org>
parents:
diff changeset
67 return(table);
Dave Love <fx@gnu.org>
parents:
diff changeset
68 }
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
69
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
70 /* arch-tag: 5df3237d-ada0-4345-a3ab-282cafb397aa
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
71 (do not change this comment) */