static void set_font_frame_param (Lisp_Object, Lisp_Object);
static int get_lface_attributes (struct frame *, Lisp_Object, Lisp_Object *,
int, struct named_merge_point *);
-static int load_pixmap (struct frame *, Lisp_Object, unsigned *, unsigned *);
+static ptrdiff_t load_pixmap (struct frame *, Lisp_Object,
+ unsigned *, unsigned *);
static struct frame *frame_or_selected_frame (Lisp_Object, int);
static void load_face_colors (struct frame *, struct face *, Lisp_Object *);
static void free_face_colors (struct frame *, struct face *);
/* Register color PIXEL as allocated. */
void
-register_color (pixel)
- unsigned long pixel;
+register_color (unsigned long pixel)
{
xassert (pixel < 256);
++color_count[pixel];
/* Register color PIXEL as deallocated. */
void
-unregister_color (pixel)
- unsigned long pixel;
+unregister_color (unsigned long pixel)
{
xassert (pixel < 256);
if (color_count[pixel] > 0)
/* Register N colors from PIXELS as deallocated. */
void
-unregister_colors (pixels, n)
- unsigned long *pixels;
- int n;
+unregister_colors (unsigned long *pixels, int n)
{
int i;
for (i = 0; i < n; ++i)
zero. Store the bitmap width in *W_PTR and its height in *H_PTR,
if these pointers are not null. */
-static int
+static ptrdiff_t
load_pixmap (FRAME_PTR f, Lisp_Object name, unsigned int *w_ptr, unsigned int *h_ptr)
{
- int bitmap_id;
+ ptrdiff_t bitmap_id;
if (NILP (name))
return 0;
/* Check consistency of Lisp face attribute vector ATTRS. */
static void
-check_lface_attrs (attrs)
- Lisp_Object *attrs;
+check_lface_attrs (Lisp_Object *attrs)
{
xassert (UNSPECIFIEDP (attrs[LFACE_FAMILY_INDEX])
|| IGNORE_DEFFACE_P (attrs[LFACE_FAMILY_INDEX])
|| IGNORE_DEFFACE_P (attrs[LFACE_FONT_INDEX])
|| FONTP (attrs[LFACE_FONT_INDEX]));
xassert (UNSPECIFIEDP (attrs[LFACE_FONTSET_INDEX])
- || STRINGP (attrs[LFACE_FONTSET_INDEX]));
+ || STRINGP (attrs[LFACE_FONTSET_INDEX])
+ || NILP (attrs[LFACE_FONTSET_INDEX]));
#endif
}
/* Check consistency of attributes of Lisp face LFACE (a Lisp vector). */
static void
-check_lface (lface)
- Lisp_Object lface;
+check_lface (Lisp_Object lface)
{
if (!NILP (lface))
{
}
\f
-
-#if 0 /* Seems to be unused. */
-static Lisp_Object
-internal_resolve_face_name (nargs, args)
- int nargs;
- Lisp_Object *args;
-{
- return Fget (args[0], args[1]);
-}
-
-static Lisp_Object
-resolve_face_name_error (ignore)
- Lisp_Object ignore;
-{
- return Qnil;
-}
-#endif
-
/* Resolve face name FACE_NAME. If FACE_NAME is a string, intern it
to make it a symbol. If FACE_NAME is an alias for another face,
return that face's name.
Fmodify_frame_parameters (frame, Fcons (Fcons (Qfont, name),
Qnil));
}
+
+ if (STRINGP (gvec[LFACE_FOREGROUND_INDEX]))
+ Fmodify_frame_parameters (frame,
+ Fcons (Fcons (Qforeground_color,
+ gvec[LFACE_FOREGROUND_INDEX]),
+ Qnil));
+
+ if (STRINGP (gvec[LFACE_BACKGROUND_INDEX]))
+ Fmodify_frame_parameters (frame,
+ Fcons (Fcons (Qbackground_color,
+ gvec[LFACE_BACKGROUND_INDEX]),
+ Qnil));
}
}
break;
face->id = i;
+#if GLYPH_DEBUG
+ /* Check that FACE got a unique id. */
+ {
+ int j, n;
+ struct face *face1;
+
+ for (j = n = 0; j < FACE_CACHE_BUCKETS_SIZE; ++j)
+ for (face1 = c->buckets[j]; face1; face1 = face1->next)
+ if (face1->id == i)
+ ++n;
+
+ xassert (n == 1);
+ }
+#endif /* GLYPH_DEBUG */
+
/* Maybe enlarge C->faces_by_id. */
if (i == c->used)
{
c->used++;
}
-#if GLYPH_DEBUG
- /* Check that FACE got a unique id. */
- {
- int j, n;
- struct face *face;
-
- for (j = n = 0; j < FACE_CACHE_BUCKETS_SIZE; ++j)
- for (face = c->buckets[j]; face; face = face->next)
- if (face->id == i)
- ++n;
-
- xassert (n == 1);
- }
-#endif /* GLYPH_DEBUG */
-
c->faces_by_id[i] = face;
}
struct frame *f = XFRAME (w->frame);
Lisp_Object attrs[LFACE_VECTOR_SIZE];
Lisp_Object prop, position;
- int i, noverlays;
+ ptrdiff_t i, noverlays;
Lisp_Object *overlay_vec;
Lisp_Object frame;
EMACS_INT endpos;
*/
int
-merge_faces (struct frame *f, Lisp_Object face_name, int face_id, int base_face_id)
+merge_faces (struct frame *f, Lisp_Object face_name, EMACS_INT face_id,
+ int base_face_id)
{
Lisp_Object attrs[LFACE_VECTOR_SIZE];
struct face *base_face;
/* Print the contents of the realized face FACE to stderr. */
static void
-dump_realized_face (face)
- struct face *face;
+dump_realized_face (struct face *face)
{
fprintf (stderr, "ID: %d\n", face->id);
#ifdef HAVE_X_WINDOWS
void
syms_of_xfaces (void)
{
- Qface = intern_c_string ("face");
- staticpro (&Qface);
- Qface_no_inherit = intern_c_string ("face-no-inherit");
- staticpro (&Qface_no_inherit);
- Qbitmap_spec_p = intern_c_string ("bitmap-spec-p");
- staticpro (&Qbitmap_spec_p);
- Qframe_set_background_mode = intern_c_string ("frame-set-background-mode");
- staticpro (&Qframe_set_background_mode);
+ DEFSYM (Qface, "face");
+ DEFSYM (Qface_no_inherit, "face-no-inherit");
+ DEFSYM (Qbitmap_spec_p, "bitmap-spec-p");
+ DEFSYM (Qframe_set_background_mode, "frame-set-background-mode");
/* Lisp face attribute keywords. */
- QCfamily = intern_c_string (":family");
- staticpro (&QCfamily);
- QCheight = intern_c_string (":height");
- staticpro (&QCheight);
- QCweight = intern_c_string (":weight");
- staticpro (&QCweight);
- QCslant = intern_c_string (":slant");
- staticpro (&QCslant);
- QCunderline = intern_c_string (":underline");
- staticpro (&QCunderline);
- QCinverse_video = intern_c_string (":inverse-video");
- staticpro (&QCinverse_video);
- QCreverse_video = intern_c_string (":reverse-video");
- staticpro (&QCreverse_video);
- QCforeground = intern_c_string (":foreground");
- staticpro (&QCforeground);
- QCbackground = intern_c_string (":background");
- staticpro (&QCbackground);
- QCstipple = intern_c_string (":stipple");
- staticpro (&QCstipple);
- QCwidth = intern_c_string (":width");
- staticpro (&QCwidth);
- QCfont = intern_c_string (":font");
- staticpro (&QCfont);
- QCfontset = intern_c_string (":fontset");
- staticpro (&QCfontset);
- QCbold = intern_c_string (":bold");
- staticpro (&QCbold);
- QCitalic = intern_c_string (":italic");
- staticpro (&QCitalic);
- QCoverline = intern_c_string (":overline");
- staticpro (&QCoverline);
- QCstrike_through = intern_c_string (":strike-through");
- staticpro (&QCstrike_through);
- QCbox = intern_c_string (":box");
- staticpro (&QCbox);
- QCinherit = intern_c_string (":inherit");
- staticpro (&QCinherit);
+ DEFSYM (QCfamily, ":family");
+ DEFSYM (QCheight, ":height");
+ DEFSYM (QCweight, ":weight");
+ DEFSYM (QCslant, ":slant");
+ DEFSYM (QCunderline, ":underline");
+ DEFSYM (QCinverse_video, ":inverse-video");
+ DEFSYM (QCreverse_video, ":reverse-video");
+ DEFSYM (QCforeground, ":foreground");
+ DEFSYM (QCbackground, ":background");
+ DEFSYM (QCstipple, ":stipple");
+ DEFSYM (QCwidth, ":width");
+ DEFSYM (QCfont, ":font");
+ DEFSYM (QCfontset, ":fontset");
+ DEFSYM (QCbold, ":bold");
+ DEFSYM (QCitalic, ":italic");
+ DEFSYM (QCoverline, ":overline");
+ DEFSYM (QCstrike_through, ":strike-through");
+ DEFSYM (QCbox, ":box");
+ DEFSYM (QCinherit, ":inherit");
/* Symbols used for Lisp face attribute values. */
- QCcolor = intern_c_string (":color");
- staticpro (&QCcolor);
- QCline_width = intern_c_string (":line-width");
- staticpro (&QCline_width);
- QCstyle = intern_c_string (":style");
- staticpro (&QCstyle);
- Qreleased_button = intern_c_string ("released-button");
- staticpro (&Qreleased_button);
- Qpressed_button = intern_c_string ("pressed-button");
- staticpro (&Qpressed_button);
- Qnormal = intern_c_string ("normal");
- staticpro (&Qnormal);
- Qultra_light = intern_c_string ("ultra-light");
- staticpro (&Qultra_light);
- Qextra_light = intern_c_string ("extra-light");
- staticpro (&Qextra_light);
- Qlight = intern_c_string ("light");
- staticpro (&Qlight);
- Qsemi_light = intern_c_string ("semi-light");
- staticpro (&Qsemi_light);
- Qsemi_bold = intern_c_string ("semi-bold");
- staticpro (&Qsemi_bold);
- Qbold = intern_c_string ("bold");
- staticpro (&Qbold);
- Qextra_bold = intern_c_string ("extra-bold");
- staticpro (&Qextra_bold);
- Qultra_bold = intern_c_string ("ultra-bold");
- staticpro (&Qultra_bold);
- Qoblique = intern_c_string ("oblique");
- staticpro (&Qoblique);
- Qitalic = intern_c_string ("italic");
- staticpro (&Qitalic);
- Qreverse_oblique = intern_c_string ("reverse-oblique");
- staticpro (&Qreverse_oblique);
- Qreverse_italic = intern_c_string ("reverse-italic");
- staticpro (&Qreverse_italic);
- Qultra_condensed = intern_c_string ("ultra-condensed");
- staticpro (&Qultra_condensed);
- Qextra_condensed = intern_c_string ("extra-condensed");
- staticpro (&Qextra_condensed);
- Qcondensed = intern_c_string ("condensed");
- staticpro (&Qcondensed);
- Qsemi_condensed = intern_c_string ("semi-condensed");
- staticpro (&Qsemi_condensed);
- Qsemi_expanded = intern_c_string ("semi-expanded");
- staticpro (&Qsemi_expanded);
- Qexpanded = intern_c_string ("expanded");
- staticpro (&Qexpanded);
- Qextra_expanded = intern_c_string ("extra-expanded");
- staticpro (&Qextra_expanded);
- Qultra_expanded = intern_c_string ("ultra-expanded");
- staticpro (&Qultra_expanded);
- Qbackground_color = intern_c_string ("background-color");
- staticpro (&Qbackground_color);
- Qforeground_color = intern_c_string ("foreground-color");
- staticpro (&Qforeground_color);
- Qunspecified = intern_c_string ("unspecified");
- staticpro (&Qunspecified);
- Qignore_defface = intern_c_string (":ignore-defface");
- staticpro (&Qignore_defface);
-
- Qface_alias = intern_c_string ("face-alias");
- staticpro (&Qface_alias);
- Qdefault = intern_c_string ("default");
- staticpro (&Qdefault);
- Qtool_bar = intern_c_string ("tool-bar");
- staticpro (&Qtool_bar);
- Qregion = intern_c_string ("region");
- staticpro (&Qregion);
- Qfringe = intern_c_string ("fringe");
- staticpro (&Qfringe);
- Qheader_line = intern_c_string ("header-line");
- staticpro (&Qheader_line);
- Qscroll_bar = intern_c_string ("scroll-bar");
- staticpro (&Qscroll_bar);
- Qmenu = intern_c_string ("menu");
- staticpro (&Qmenu);
- Qcursor = intern_c_string ("cursor");
- staticpro (&Qcursor);
- Qborder = intern_c_string ("border");
- staticpro (&Qborder);
- Qmouse = intern_c_string ("mouse");
- staticpro (&Qmouse);
- Qmode_line_inactive = intern_c_string ("mode-line-inactive");
- staticpro (&Qmode_line_inactive);
- Qvertical_border = intern_c_string ("vertical-border");
- staticpro (&Qvertical_border);
- Qtty_color_desc = intern_c_string ("tty-color-desc");
- staticpro (&Qtty_color_desc);
- Qtty_color_standard_values = intern_c_string ("tty-color-standard-values");
- staticpro (&Qtty_color_standard_values);
- Qtty_color_by_index = intern_c_string ("tty-color-by-index");
- staticpro (&Qtty_color_by_index);
- Qtty_color_alist = intern_c_string ("tty-color-alist");
- staticpro (&Qtty_color_alist);
- Qscalable_fonts_allowed = intern_c_string ("scalable-fonts-allowed");
- staticpro (&Qscalable_fonts_allowed);
+ DEFSYM (QCcolor, ":color");
+ DEFSYM (QCline_width, ":line-width");
+ DEFSYM (QCstyle, ":style");
+ DEFSYM (Qreleased_button, "released-button");
+ DEFSYM (Qpressed_button, "pressed-button");
+ DEFSYM (Qnormal, "normal");
+ DEFSYM (Qultra_light, "ultra-light");
+ DEFSYM (Qextra_light, "extra-light");
+ DEFSYM (Qlight, "light");
+ DEFSYM (Qsemi_light, "semi-light");
+ DEFSYM (Qsemi_bold, "semi-bold");
+ DEFSYM (Qbold, "bold");
+ DEFSYM (Qextra_bold, "extra-bold");
+ DEFSYM (Qultra_bold, "ultra-bold");
+ DEFSYM (Qoblique, "oblique");
+ DEFSYM (Qitalic, "italic");
+ DEFSYM (Qreverse_oblique, "reverse-oblique");
+ DEFSYM (Qreverse_italic, "reverse-italic");
+ DEFSYM (Qultra_condensed, "ultra-condensed");
+ DEFSYM (Qextra_condensed, "extra-condensed");
+ DEFSYM (Qcondensed, "condensed");
+ DEFSYM (Qsemi_condensed, "semi-condensed");
+ DEFSYM (Qsemi_expanded, "semi-expanded");
+ DEFSYM (Qexpanded, "expanded");
+ DEFSYM (Qextra_expanded, "extra-expanded");
+ DEFSYM (Qultra_expanded, "ultra-expanded");
+ DEFSYM (Qbackground_color, "background-color");
+ DEFSYM (Qforeground_color, "foreground-color");
+ DEFSYM (Qunspecified, "unspecified");
+ DEFSYM (Qignore_defface, ":ignore-defface");
+
+ DEFSYM (Qface_alias, "face-alias");
+ DEFSYM (Qdefault, "default");
+ DEFSYM (Qtool_bar, "tool-bar");
+ DEFSYM (Qregion, "region");
+ DEFSYM (Qfringe, "fringe");
+ DEFSYM (Qheader_line, "header-line");
+ DEFSYM (Qscroll_bar, "scroll-bar");
+ DEFSYM (Qmenu, "menu");
+ DEFSYM (Qcursor, "cursor");
+ DEFSYM (Qborder, "border");
+ DEFSYM (Qmouse, "mouse");
+ DEFSYM (Qmode_line_inactive, "mode-line-inactive");
+ DEFSYM (Qvertical_border, "vertical-border");
+ DEFSYM (Qtty_color_desc, "tty-color-desc");
+ DEFSYM (Qtty_color_standard_values, "tty-color-standard-values");
+ DEFSYM (Qtty_color_by_index, "tty-color-by-index");
+ DEFSYM (Qtty_color_alist, "tty-color-alist");
+ DEFSYM (Qscalable_fonts_allowed, "scalable-fonts-allowed");
Vparam_value_alist = Fcons (Fcons (Qnil, Qnil), Qnil);
staticpro (&Vparam_value_alist);