comparison src/fontset.c @ 46370:40db0673e6f0

Most uses of XSTRING combined with STRING_BYTES or indirection changed to SCHARS, SBYTES, STRING_INTERVALS, SREF, SDATA; explicit size_byte references left unchanged for now.
author Ken Raeburn <raeburn@raeburn.org>
date Mon, 15 Jul 2002 00:00:41 +0000
parents 39cdf9669519
children dd231f1390d2
comparison
equal deleted inserted replaced
46369:dd1d3b1d0053 46370:40db0673e6f0
368 font_family_registry (fontname, force) 368 font_family_registry (fontname, force)
369 Lisp_Object fontname; 369 Lisp_Object fontname;
370 int force; 370 int force;
371 { 371 {
372 Lisp_Object family, registry; 372 Lisp_Object family, registry;
373 char *p = XSTRING (fontname)->data; 373 char *p = SDATA (fontname);
374 char *sep[15]; 374 char *sep[15];
375 int i = 0; 375 int i = 0;
376 376
377 while (*p && i < 15) 377 while (*p && i < 15)
378 if (*p++ == '-') 378 if (*p++ == '-')
555 exception is a font for single byte characters. In that case, we 555 exception is a font for single byte characters. In that case, we
556 return a cons of FAMILY and REGISTRY extracted from the opened 556 return a cons of FAMILY and REGISTRY extracted from the opened
557 font name. */ 557 font name. */
558 elt = XCDR (elt); 558 elt = XCDR (elt);
559 xassert (STRINGP (elt)); 559 xassert (STRINGP (elt));
560 fontp = FS_LOAD_FONT (f, c, XSTRING (elt)->data, -1); 560 fontp = FS_LOAD_FONT (f, c, SDATA (elt), -1);
561 if (!fontp) 561 if (!fontp)
562 return Qnil; 562 return Qnil;
563 563
564 return font_family_registry (build_string (fontp->full_name), 564 return font_family_registry (build_string (fontp->full_name),
565 SINGLE_BYTE_CHAR_P (c)); 565 SINGLE_BYTE_CHAR_P (c));
614 } 614 }
615 615
616 if (!fontname && charset == CHARSET_ASCII) 616 if (!fontname && charset == CHARSET_ASCII)
617 { 617 {
618 elt = FONTSET_ASCII (fontset); 618 elt = FONTSET_ASCII (fontset);
619 fontname = XSTRING (XCDR (elt))->data; 619 fontname = SDATA (XCDR (elt));
620 } 620 }
621 } 621 }
622 622
623 if (!fontname) 623 if (!fontname)
624 /* No way to get fontname. */ 624 /* No way to get fontname. */
703 /* Cache data used by fontset_pattern_regexp. The car part is a 703 /* Cache data used by fontset_pattern_regexp. The car part is a
704 pattern string containing at least one wild card, the cdr part is 704 pattern string containing at least one wild card, the cdr part is
705 the corresponding regular expression. */ 705 the corresponding regular expression. */
706 static Lisp_Object Vcached_fontset_data; 706 static Lisp_Object Vcached_fontset_data;
707 707
708 #define CACHED_FONTSET_NAME (XSTRING (XCAR (Vcached_fontset_data))->data) 708 #define CACHED_FONTSET_NAME (SDATA (XCAR (Vcached_fontset_data)))
709 #define CACHED_FONTSET_REGEX (XCDR (Vcached_fontset_data)) 709 #define CACHED_FONTSET_REGEX (XCDR (Vcached_fontset_data))
710 710
711 /* If fontset name PATTERN contains any wild card, return regular 711 /* If fontset name PATTERN contains any wild card, return regular
712 expression corresponding to PATTERN. */ 712 expression corresponding to PATTERN. */
713 713
714 static Lisp_Object 714 static Lisp_Object
715 fontset_pattern_regexp (pattern) 715 fontset_pattern_regexp (pattern)
716 Lisp_Object pattern; 716 Lisp_Object pattern;
717 { 717 {
718 if (!index (XSTRING (pattern)->data, '*') 718 if (!index (SDATA (pattern), '*')
719 && !index (XSTRING (pattern)->data, '?')) 719 && !index (SDATA (pattern), '?'))
720 /* PATTERN does not contain any wild cards. */ 720 /* PATTERN does not contain any wild cards. */
721 return Qnil; 721 return Qnil;
722 722
723 if (!CONSP (Vcached_fontset_data) 723 if (!CONSP (Vcached_fontset_data)
724 || strcmp (XSTRING (pattern)->data, CACHED_FONTSET_NAME)) 724 || strcmp (SDATA (pattern), CACHED_FONTSET_NAME))
725 { 725 {
726 /* We must at first update the cached data. */ 726 /* We must at first update the cached data. */
727 char *regex = (char *) alloca (XSTRING (pattern)->size * 2 + 3); 727 char *regex = (char *) alloca (SCHARS (pattern) * 2 + 3);
728 char *p0, *p1 = regex; 728 char *p0, *p1 = regex;
729 729
730 /* Convert "*" to ".*", "?" to ".". */ 730 /* Convert "*" to ".*", "?" to ".". */
731 *p1++ = '^'; 731 *p1++ = '^';
732 for (p0 = (char *) XSTRING (pattern)->data; *p0; p0++) 732 for (p0 = (char *) SDATA (pattern); *p0; p0++)
733 { 733 {
734 if (*p0 == '*') 734 if (*p0 == '*')
735 { 735 {
736 *p1++ = '.'; 736 *p1++ = '.';
737 *p1++ = '*'; 737 *p1++ = '*';
742 *p1++ = *p0; 742 *p1++ = *p0;
743 } 743 }
744 *p1++ = '$'; 744 *p1++ = '$';
745 *p1++ = 0; 745 *p1++ = 0;
746 746
747 Vcached_fontset_data = Fcons (build_string (XSTRING (pattern)->data), 747 Vcached_fontset_data = Fcons (build_string (SDATA (pattern)),
748 build_string (regex)); 748 build_string (regex));
749 } 749 }
750 750
751 return CACHED_FONTSET_REGEX; 751 return CACHED_FONTSET_REGEX;
752 } 752 }
787 fontset = FONTSET_FROM_ID (i); 787 fontset = FONTSET_FROM_ID (i);
788 if (NILP (fontset) 788 if (NILP (fontset)
789 || !BASE_FONTSET_P (fontset)) 789 || !BASE_FONTSET_P (fontset))
790 continue; 790 continue;
791 791
792 this_name = XSTRING (FONTSET_NAME (fontset))->data; 792 this_name = SDATA (FONTSET_NAME (fontset));
793 if (regexpp 793 if (regexpp
794 ? fast_c_string_match_ignore_case (name, this_name) >= 0 794 ? fast_c_string_match_ignore_case (name, this_name) >= 0
795 : !strcmp (XSTRING (name)->data, this_name)) 795 : !strcmp (SDATA (name), this_name))
796 return i; 796 return i;
797 } 797 }
798 return -1; 798 return -1;
799 } 799 }
800 800
813 813
814 (*check_window_system_func) (); 814 (*check_window_system_func) ();
815 815
816 CHECK_STRING (pattern); 816 CHECK_STRING (pattern);
817 817
818 if (XSTRING (pattern)->size == 0) 818 if (SCHARS (pattern) == 0)
819 return Qnil; 819 return Qnil;
820 820
821 id = fs_query_fontset (pattern, !NILP (regexpp)); 821 id = fs_query_fontset (pattern, !NILP (regexpp));
822 if (id < 0) 822 if (id < 0)
823 return Qnil; 823 return Qnil;
852 fontset = FONTSET_FROM_ID (id); 852 fontset = FONTSET_FROM_ID (id);
853 if (NILP (fontset) 853 if (NILP (fontset)
854 || !BASE_FONTSET_P (fontset) 854 || !BASE_FONTSET_P (fontset)
855 || !EQ (frame, FONTSET_FRAME (fontset))) 855 || !EQ (frame, FONTSET_FRAME (fontset)))
856 continue; 856 continue;
857 name = XSTRING (FONTSET_NAME (fontset))->data; 857 name = SDATA (FONTSET_NAME (fontset));
858 858
859 if (!NILP (regexp) 859 if (!NILP (regexp)
860 ? (fast_c_string_match_ignore_case (regexp, name) < 0) 860 ? (fast_c_string_match_ignore_case (regexp, name) < 0)
861 : strcmp (XSTRING (pattern)->data, name)) 861 : strcmp (SDATA (pattern), name))
862 continue; 862 continue;
863 863
864 if (size) 864 if (size)
865 { 865 {
866 struct font_info *fontp; 866 struct font_info *fontp;
890 890
891 name = Fdowncase (name); 891 name = Fdowncase (name);
892 tem = Fquery_fontset (name, Qnil); 892 tem = Fquery_fontset (name, Qnil);
893 if (!NILP (tem)) 893 if (!NILP (tem))
894 error ("Fontset `%s' matches the existing fontset `%s'", 894 error ("Fontset `%s' matches the existing fontset `%s'",
895 XSTRING (name)->data, XSTRING (tem)->data); 895 SDATA (name), SDATA (tem));
896 896
897 /* Check the validity of FONTLIST while creating a template for 897 /* Check the validity of FONTLIST while creating a template for
898 fontset elements. */ 898 fontset elements. */
899 elements = ascii_font = Qnil; 899 elements = ascii_font = Qnil;
900 for (tail = fontlist; CONSP (tail); tail = XCDR (tail)) 900 for (tail = fontlist; CONSP (tail); tail = XCDR (tail))
967 return Vdefault_fontset; 967 return Vdefault_fontset;
968 968
969 CHECK_STRING (name); 969 CHECK_STRING (name);
970 id = fs_query_fontset (name, 0); 970 id = fs_query_fontset (name, 0);
971 if (id < 0) 971 if (id < 0)
972 error ("Fontset `%s' does not exist", XSTRING (name)->data); 972 error ("Fontset `%s' does not exist", SDATA (name));
973 return FONTSET_FROM_ID (id); 973 return FONTSET_FROM_ID (id);
974 } 974 }
975 975
976 DEFUN ("set-fontset-font", Fset_fontset_font, Sset_fontset_font, 3, 4, 0, 976 DEFUN ("set-fontset-font", Fset_fontset_font, Sset_fontset_font, 3, 4, 0,
977 doc: /* Modify fontset NAME to use FONTNAME for CHARACTER. 977 doc: /* Modify fontset NAME to use FONTNAME for CHARACTER.
1118 f = XFRAME (frame); 1118 f = XFRAME (frame);
1119 1119
1120 if (!query_font_func) 1120 if (!query_font_func)
1121 error ("Font query function is not supported"); 1121 error ("Font query function is not supported");
1122 1122
1123 fontp = (*query_font_func) (f, XSTRING (name)->data); 1123 fontp = (*query_font_func) (f, SDATA (name));
1124 if (!fontp) 1124 if (!fontp)
1125 return Qnil; 1125 return Qnil;
1126 1126
1127 info = Fmake_vector (make_number (7), Qnil); 1127 info = Fmake_vector (make_number (7), Qnil);
1128 1128
1336 1336
1337 elt = Fcdr (Fcdr (Fassq (CHARSET_SYMBOL (CHARSET_ASCII), val))); 1337 elt = Fcdr (Fcdr (Fassq (CHARSET_SYMBOL (CHARSET_ASCII), val)));
1338 if (CONSP (elt)) 1338 if (CONSP (elt))
1339 { 1339 {
1340 elt = XCAR (elt); 1340 elt = XCAR (elt);
1341 fontp = (*query_font_func) (f, XSTRING (elt)->data); 1341 fontp = (*query_font_func) (f, SDATA (elt));
1342 } 1342 }
1343 val = Fmake_vector (make_number (3), val); 1343 val = Fmake_vector (make_number (3), val);
1344 AREF (val, 0) = fontp ? make_number (fontp->size) : make_number (0); 1344 AREF (val, 0) = fontp ? make_number (fontp->size) : make_number (0);
1345 AREF (val, 1) = fontp ? make_number (fontp->height) : make_number (0); 1345 AREF (val, 1) = fontp ? make_number (fontp->height) : make_number (0);
1346 return val; 1346 return val;