Mercurial > emacs
comparison src/xterm.c @ 3883:b9e5a869b33e
Separate parameter faces (those created and modified by the user)
from the computed faces (the combinations created by
compute_char_face), so that we don't waste global face id's.
* xterm.h (struct x_display): Replace the fields faces and n_faces
with fields param_faces, n_param_faces, computed_faces,
n_computed_faces, and size_computed_faces.
(FRAME_FACES, FRAME_N_FACES): Replaced by...
(FRAME_COMPUTED_FACES, FRAME_N_COMPUTED_FACES, FRAME_PARAM_FACES,
FRAME_N_PARAM_FACES): New macros.
* xfaces.c: Doc fixes.
(init_frame_faces): Call new_computed_face to create entries for
the default and mode line faces. Use the FRAME...PARAM_FACES
macros.
(free_frame_faces): Use the FRAME...PARAM_FACES and
FRAME...COMPUTED_FACES macros. Don't use the copy flag; all
parameter faces have real X resources, and all computed faces just
have copies. Free both the parameter and computed face arrays.
(new_computed_face): New function.
(intern_computed_face): Renamed from intern_frame_face; callers
changed. Call new_computed_face.
(ensure_face_ready, compute_char_face, compute_glyph_face): Use the
FRAME...PARAM_FACES macros.
(recompute_basic_faces): Use the FRAME...PARAM_FACES and
FRAME...COMPUTED_FACES macros. Produce the computed faces by
starting with the base faces and merging in the parameter faces.
(Fset_face_attribute_internal): Use the FRAME...PARAM_FACES
macros. Just call recompute_basic_faces if the default or mode
line faces have changed.
* xfns.c (Fx_list_fonts): Use the FRAME...PARAM_FACES macros.
* xterm.c (dumpglyphs): Use the FRAME...COMPUTED_FACES macros.
* dispextern.h (struct face): Remove the copy member. This is no
longer necessary; all computed faces are copies, and no parameter
faces are.
author | Jim Blandy <jimb@redhat.com> |
---|---|
date | Tue, 22 Jun 1993 07:26:44 +0000 |
parents | 3cc238ae0de5 |
children | ab295012a818 |
comparison
equal
deleted
inserted
replaced
3882:a0b9347a3973 | 3883:b9e5a869b33e |
---|---|
387 FONT is the default font to use (for glyphs whose font-code is 0). | 387 FONT is the default font to use (for glyphs whose font-code is 0). |
388 | 388 |
389 Since the display generation code is responsible for calling | 389 Since the display generation code is responsible for calling |
390 compute_char_face and compute_glyph_face on everything it puts in | 390 compute_char_face and compute_glyph_face on everything it puts in |
391 the display structure, we can assume that the face code on each | 391 the display structure, we can assume that the face code on each |
392 glyph is a valid index into FRAME_FACES (f), and the one to which | 392 glyph is a valid index into FRAME_COMPUTED_FACES (f), and the one |
393 we can actually apply intern_face. */ | 393 to which we can actually apply intern_face. */ |
394 | 394 |
395 #if 1 | 395 #if 1 |
396 /* This is the multi-face code. */ | 396 /* This is the multi-face code. */ |
397 | 397 |
398 static void | 398 static void |
449 /* First look at the face of the text itself. */ | 449 /* First look at the face of the text itself. */ |
450 if (cf != 0) | 450 if (cf != 0) |
451 { | 451 { |
452 /* The face codes on the glyphs must be valid indices into the | 452 /* The face codes on the glyphs must be valid indices into the |
453 frame's face table. */ | 453 frame's face table. */ |
454 if (cf < 0 || cf >= FRAME_N_FACES (f)) | 454 if (cf < 0 || cf >= FRAME_N_COMPUTED_FACES (f) |
455 || FRAME_COMPUTED_FACES (f) [cf] == 0) | |
455 abort (); | 456 abort (); |
456 | 457 |
457 if (cf == 1) | 458 if (cf == 1) |
458 face = FRAME_MODE_LINE_FACE (f); | 459 face = FRAME_MODE_LINE_FACE (f); |
459 else | 460 else |
460 face = intern_face (f, FRAME_FACES (f) [cf]); | 461 face = intern_face (f, FRAME_COMPUTED_FACES (f) [cf]); |
461 font = FACE_FONT (face); | 462 font = FACE_FONT (face); |
462 gc = FACE_GC (face); | 463 gc = FACE_GC (face); |
463 defaulted = 0; | 464 defaulted = 0; |
464 } | 465 } |
465 | 466 |