Mercurial > emacs
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; |