Mercurial > hg > xemacs-beta
comparison src/device.c @ 284:558f606b08ae r21-0b40
Import from CVS: tag r21-0b40
author | cvs |
---|---|
date | Mon, 13 Aug 2007 10:34:13 +0200 |
parents | c42ec1d1cded |
children | 6240c7796c7a |
comparison
equal
deleted
inserted
replaced
283:fa3d41851a08 | 284:558f606b08ae |
---|---|
55 /* Device classes */ | 55 /* Device classes */ |
56 /* Qcolor defined in general.c */ | 56 /* Qcolor defined in general.c */ |
57 Lisp_Object Qgrayscale, Qmono; | 57 Lisp_Object Qgrayscale, Qmono; |
58 | 58 |
59 /* Device metrics symbols */ | 59 /* Device metrics symbols */ |
60 Lisp_Object Qcolor_default, Qcolor_select, Qcolor_balloon, Qcolor_3d_face; | 60 Lisp_Object |
61 Lisp_Object Qcolor_3d_light, Qcolor_3d_dark, Qcolor_menu, Qcolor_menu_high; | 61 Qcolor_default, Qcolor_select, Qcolor_balloon, Qcolor_3d_face, |
62 Lisp_Object Qcolor_menu_button, Qcolor_menu_unsel, Qcolor_toolbar; | 62 Qcolor_3d_light, Qcolor_3d_dark, Qcolor_menu, Qcolor_menu_highlight, |
63 Lisp_Object Qcolor_scrollbar, Qcolor_desktop, Qcolor_workspace, Qfont_default; | 63 Qcolor_menu_button, Qcolor_menu_disabled, Qcolor_toolbar, |
64 Lisp_Object Qfont_menubar, Qfont_dialog, Qsize_cursor, Qsize_scrollbar; | 64 Qcolor_scrollbar, Qcolor_desktop, Qcolor_workspace, Qfont_default, |
65 Lisp_Object Qsize_menu, Qsize_toolbar, Qsize_tbbutton, Qsize_tbborder, Qsize_icon; | 65 Qfont_menubar, Qfont_dialog, Qsize_cursor, Qsize_scrollbar, |
66 Lisp_Object Qsize_icon_small, Qsize_device, Qsize_workspace, Qsize_device_mm; | 66 Qsize_menu, Qsize_toolbar, Qsize_toolbar_button, |
67 Lisp_Object Qdevice_dpi, Qmouse_buttons, Qswap_buttons; | 67 Qsize_toolbar_border, Qsize_icon, Qsize_icon_small, Qsize_device, |
68 Lisp_Object Qshow_sounds, Qslow_device, Qsecurity, Qdbcs, Qime, Qmid_east; | 68 Qsize_workspace, Qsize_device_mm, Qdevice_dpi, Qnum_bit_planes, |
69 Lisp_Object Qnum_bit_planes, Qnum_color_cells; | 69 Qnum_color_cells, Qmouse_buttons, Qswap_buttons, Qshow_sounds, |
70 Qslow_device, Qsecurity; | |
70 | 71 |
71 Lisp_Object Qdevicep, Qdevice_live_p; | 72 Lisp_Object Qdevicep, Qdevice_live_p; |
72 Lisp_Object Qdelete_device; | 73 Lisp_Object Qdelete_device; |
73 Lisp_Object Qcreate_device_hook; | 74 Lisp_Object Qcreate_device_hook; |
74 Lisp_Object Qdelete_device_hook; | 75 Lisp_Object Qdelete_device_hook; |
903 (device)) | 904 (device)) |
904 { | 905 { |
905 return make_int (DEVICE_BAUD_RATE (decode_device (device))); | 906 return make_int (DEVICE_BAUD_RATE (decode_device (device))); |
906 } | 907 } |
907 | 908 |
908 DEFUN ("device-system-metrics", Fdevice_system_metrics, 2, 2, 0, /* | 909 DEFUN ("device-system-metric", Fdevice_system_metric, 1, 3, 0, /* |
909 Get metrics for DEVICE as provided by the system. | 910 Get a metric for DEVICE as provided by the system. |
910 | 911 |
911 METRIC must be a symbol specifying requested metric. Note that | 912 METRIC must be a symbol specifying requested metric. Note that the metrics |
912 the metrics returned are these provided by the system internally, | 913 returned are these provided by the system internally, not read from resources, |
913 not read from resources, so obtained from the mostly internal level. | 914 so obtained from the most internal level. |
914 | 915 |
915 If a metric is not provided by the system, return value is nil. | 916 If a metric is not provided by the system, then DEFAULT is returned. |
916 Boolean values are returned as zero and non-zero integers. | 917 |
918 When DEVICE is nil, selected device is assumed | |
917 | 919 |
918 Metrics, by group, are: | 920 Metrics, by group, are: |
919 | 921 |
920 COLORS. Colors are returned as valid color instantiators. No other | 922 COLORS. Colors are returned as valid color instantiators. No other assumption |
921 assumption on the returned valie should be made (i.e. it can be a | 923 on the returned valie should be made (i.e. it can be a string on one system but |
922 string on one system but a color instance on another). For colors, | 924 a color instance on another). For colors, returned value is a cons of |
923 returned value is a cons of foreground and background colors. Note | 925 foreground and background colors. Note that if the system provides only one |
924 that if the system provides only one color of the pair, the second | 926 color of the pair, the second one may be nil. |
925 one may be nil. | 927 |
926 | 928 color-default Standard window text foreground and background. |
927 'color-default Standard window text foreground and background. | 929 color-select Selection highligh text and backgroun colors. |
928 'color-select Selection highligh text and backgroun colors. | 930 color-balloon Ballon popup text and background colors. |
929 'color-balloon Ballon popup text and background colors. | 931 color-3d-face 3-D object (button, modeline) text and surface colors. |
930 'color-3d-face 3-D object (button, modeline) text and surface colors. | 932 color-3d-light Fore and back colors for 3-D edges facing light source. |
931 'color-3d-light Fore and back colors for 3-D edges facing light source. | 933 color-3d-dark Fore and back colors for 3-D edges facing away from |
932 'color-3d-dark Fore and back colors for 3-D edges facing away from | 934 light source. |
933 light source. | 935 color-menu Text and background for menus |
934 'color-menu Text and background for menus | 936 color-menu-highlight Selected menu item colors |
935 'color-menu-high Selected menu item colors | 937 color-menu-button Menu button colors |
936 'color-menu-button Menu button colors | 938 color-menu-disabled Unselectable menu item colors |
937 'color-menu-unsel Unselectable menu item colors | 939 color-toolbar Toolbar foreground and background colors |
938 'color-toolbar Toolbar foreground and background colors | 940 color-scrollbar Scrollbar foreground and background colors |
939 'color-scrollbar Scrollbar foreground and background colors | 941 color-desktop Desktop window colors |
940 'color-desktop Desktop window colors | 942 color-workspace Workspace window colors |
941 'color-workspace Workspace window colors | 943 |
942 | 944 FONTS. Fonts are returned as valid font instantiators. No other assumption on |
943 FONTS. Fonts are returned as valid font instantiators. No other | 945 the returned value should be made (i.e. it can be a string on one system but |
944 assumption on the returned value should be made (i.e. it can be a | 946 font instance on another). |
945 string on one system but font instance on another). | 947 |
946 | 948 font-default Default fixed width font. |
947 'font-default Default fixed width font. | 949 font-menubar Menubar font |
948 'font-menubar Menubar font | 950 font-dialog Dialog boxes font |
949 'font-dialog Dialog boxes font | 951 |
950 | 952 GEOMETRY. These metrics are returned as conses of (X . Y). As with colors, |
951 GEOMETRY. These metrics are returned as conses of (X . Y). As with colors, | |
952 either car or cdr of the cons may be nil if the system does not provide one | 953 either car or cdr of the cons may be nil if the system does not provide one |
953 of corresponding dimensions. | 954 of corresponding dimensions. |
954 'size-cursor Mouse cursor size. | 955 |
955 'size-scrollbar Scrollbars (WIDTH . HEIGHT) | 956 size-cursor Mouse cursor size. |
956 'size-menu Menubar height, as (nil . HEIGHT) | 957 size-scrollbar Scrollbars (WIDTH . HEIGHT) |
957 'size-toolbar Toolbar width and height. | 958 size-menu Menubar height, as (nil . HEIGHT) |
958 'size-tbbutton Toolbar button size. | 959 size-toolbar Toolbar width and height. |
959 'size-tbborder Toolbar border width and height. | 960 size-toolbar-button Toolbar button size. |
960 'size-icon Icon dimensions. | 961 size-toolbar-border Toolbar border width and height. |
961 'size-icon-small Small icon dimensions. | 962 size-icon Icon dimensions. |
962 'size-device Device screen size in pixels. | 963 size-icon-small Small icon dimensions. |
963 'size-workspace Workspace size in pixels. This can be less than the above | 964 size-device Device screen size in pixels. |
964 if window manager has decorations which effectively shrink | 965 size-workspace Workspace size in pixels. This can be less than the |
965 the area remaining for application windows. | 966 above if window manager has decorations which |
966 'size-device-mm Device screen size in millimeters. | 967 effectively shrink the area remaining for application |
967 'device-dpi Device resolution, in dots per inch. | 968 windows. |
968 | 969 size-device-mm Device screen size in millimeters. |
969 'num-bit-planes Integer, number of deive bit planes. | 970 device-dpi Device resolution, in dots per inch. |
970 'num-color-cells Integer, number of device color cells. | 971 num-bit-planes Integer, number of deivce bit planes. |
971 | 972 num-color-cells Integer, number of device color cells. |
972 FEATURES. This group reports various device features. Boolean values retuned | 973 |
973 as integer 1 for true and zero for false, or nil if the feature is unknown | 974 FEATURES. This group reports various device features. If a feature is |
974 for the system. | 975 present, integer 1 (one) is returned, if it is not present, then integer |
975 | 976 0 (zero) is returned. If the system is unaware of the feature, then |
976 'mouse-buttons Number of mouse buttons, or zero if no mouse (integer). | 977 DEFAULT is returned. |
977 'swap-buttons Non-zero if left and right mouse buttons are swapped | 978 |
978 'show-sounds User preference for visual over audible bell (boolean). | 979 mouse-buttons Integer, number of mouse buttons, or zero if no mouse. |
979 'slow-device Device is slow, avoid animation (boolean). | 980 swap-buttons Non-zero if left and right mouse buttons are swapped. |
980 'security Non-zero if user environment is secure. | 981 show-sounds User preference for visual over audible bell. |
981 'dbcs Window system supports DBCS (boolean). | 982 slow-device Device is slow, avoid animation. |
982 'ime Device embeds an input method editor (boolean). | 983 security Non-zero if user environment is secure. |
983 'mid-east Non-zero if the window system is enabled for Hebrew | 984 */ |
984 and Arabic (left-to-right reading) languages. | 985 (device, metric, default_)) |
985 */ | |
986 (device, metric)) | |
987 { | 986 { |
988 struct device *d = decode_device (device); | 987 struct device *d = decode_device (device); |
989 enum device_metrics m; | 988 enum device_metrics m; |
989 Lisp_Object res; | |
990 | 990 |
991 /* Decode metric */ | 991 /* Decode metric */ |
992 if (EQ (metric, Qcolor_default)) m = color_default; | 992 #define FROB(met) \ |
993 else if (EQ (metric, Qcolor_select)) m = color_select; | 993 else if (EQ (metric, Q##met)) \ |
994 else if (EQ (metric, Qcolor_balloon)) m = color_balloon; | 994 m = DM_##met |
995 else if (EQ (metric, Qcolor_3d_face)) m = color_3d_face; | 995 |
996 else if (EQ (metric, Qcolor_3d_light)) m = color_3d_light; | 996 if (0) |
997 else if (EQ (metric, Qcolor_3d_dark)) m = color_3d_dark; | 997 ; |
998 else if (EQ (metric, Qcolor_menu)) m = color_menu; | 998 FROB (color_default); |
999 else if (EQ (metric, Qcolor_menu_high)) m = color_menu_high; | 999 FROB (color_select); |
1000 else if (EQ (metric, Qcolor_menu_button)) m = color_menu_button; | 1000 FROB (color_balloon); |
1001 else if (EQ (metric, Qcolor_menu_unsel)) m = color_menu_unsel; | 1001 FROB (color_3d_face); |
1002 else if (EQ (metric, Qcolor_toolbar)) m = color_toolbar; | 1002 FROB (color_3d_light); |
1003 else if (EQ (metric, Qcolor_scrollbar)) m = color_scrollbar; | 1003 FROB (color_3d_dark); |
1004 else if (EQ (metric, Qcolor_desktop)) m = color_desktop; | 1004 FROB (color_menu); |
1005 else if (EQ (metric, Qcolor_workspace)) m = color_workspace; | 1005 FROB (color_menu_highlight); |
1006 else if (EQ (metric, Qfont_default)) m = font_default; | 1006 FROB (color_menu_button); |
1007 else if (EQ (metric, Qfont_menubar)) m = font_menubar; | 1007 FROB (color_menu_disabled); |
1008 else if (EQ (metric, Qfont_dialog)) m = font_dialog; | 1008 FROB (color_toolbar); |
1009 else if (EQ (metric, Qsize_cursor)) m = size_cursor; | 1009 FROB (color_scrollbar); |
1010 else if (EQ (metric, Qsize_scrollbar)) m = size_scrollbar; | 1010 FROB (color_desktop); |
1011 else if (EQ (metric, Qsize_menu)) m = size_menu; | 1011 FROB (color_workspace); |
1012 else if (EQ (metric, Qsize_toolbar)) m = size_toolbar; | 1012 FROB (font_default); |
1013 else if (EQ (metric, Qsize_tbbutton)) m = size_tbbutton; | 1013 FROB (font_menubar); |
1014 else if (EQ (metric, Qsize_tbborder)) m = size_tbborder; | 1014 FROB (font_dialog); |
1015 else if (EQ (metric, Qsize_icon)) m = size_icon; | 1015 FROB (size_cursor); |
1016 else if (EQ (metric, Qsize_icon_small)) m = size_icon_small; | 1016 FROB (size_scrollbar); |
1017 else if (EQ (metric, Qsize_device)) m = size_device; | 1017 FROB (size_menu); |
1018 else if (EQ (metric, Qsize_workspace)) m = size_workspace; | 1018 FROB (size_toolbar); |
1019 else if (EQ (metric, Qsize_device_mm)) m = size_device_mm; | 1019 FROB (size_toolbar_button); |
1020 else if (EQ (metric, Qdevice_dpi)) m = device_dpi; | 1020 FROB (size_toolbar_border); |
1021 else if (EQ (metric, Qnum_bit_planes)) m = num_bit_planes; | 1021 FROB (size_icon); |
1022 else if (EQ (metric, Qnum_color_cells)) m = num_color_cells; | 1022 FROB (size_icon_small); |
1023 else if (EQ (metric, Qmouse_buttons)) m = mouse_buttons; | 1023 FROB (size_device); |
1024 else if (EQ (metric, Qswap_buttons)) m = swap_buttons; | 1024 FROB (size_workspace); |
1025 else if (EQ (metric, Qshow_sounds)) m = show_sounds; | 1025 FROB (size_device_mm); |
1026 else if (EQ (metric, Qslow_device)) m = slow_device; | 1026 FROB (device_dpi); |
1027 else if (EQ (metric, Qsecurity)) m = security; | 1027 FROB (num_bit_planes); |
1028 else if (EQ (metric, Qdbcs)) m = dbcs; | 1028 FROB (num_color_cells); |
1029 else if (EQ (metric, Qime)) m = ime; | 1029 FROB (mouse_buttons); |
1030 else if (EQ (metric, Qmid_east)) m = mid_east; | 1030 FROB (swap_buttons); |
1031 FROB (show_sounds); | |
1032 FROB (slow_device); | |
1033 FROB (security); | |
1031 else | 1034 else |
1032 signal_simple_error ("Invalid device metric symbol", metric); | 1035 signal_simple_error ("Invalid device metric symbol", metric); |
1033 | 1036 |
1034 return DEVMETH_OR_GIVEN (d, device_system_metrics, (d, m), Qnil); | 1037 res = DEVMETH_OR_GIVEN (d, device_system_metrics, (d, m), Qunbound); |
1038 return UNBOUNDP(res) ? default_ : res; | |
1039 | |
1040 #undef FROB | |
1041 } | |
1042 | |
1043 DEFUN ("device-system-metrics", Fdevice_system_metrics, 0, 1, 0, /* | |
1044 Get a property list of device metric for DEVICE. | |
1045 | |
1046 See `device-system-metric' for the description of available metrics. | |
1047 DEVICE defaults to selected device when omitted. | |
1048 */ | |
1049 (device)) | |
1050 { | |
1051 struct device *d = decode_device (device); | |
1052 Lisp_Object plist = Qnil, one_metric; | |
1053 | |
1054 #define FROB(m) \ | |
1055 if (!UNBOUNDP ((one_metric = \ | |
1056 DEVMETH_OR_GIVEN (d, device_system_metrics, \ | |
1057 (d, DM_##m), Qunbound)))) \ | |
1058 plist = Fcons (Q##m, Fcons (one_metric, plist)); | |
1059 | |
1060 FROB (color_default); | |
1061 FROB (color_select); | |
1062 FROB (color_balloon); | |
1063 FROB (color_3d_face); | |
1064 FROB (color_3d_light); | |
1065 FROB (color_3d_dark); | |
1066 FROB (color_menu); | |
1067 FROB (color_menu_highlight); | |
1068 FROB (color_menu_button); | |
1069 FROB (color_menu_disabled); | |
1070 FROB (color_toolbar); | |
1071 FROB (color_scrollbar); | |
1072 FROB (color_desktop); | |
1073 FROB (color_workspace); | |
1074 FROB (font_default); | |
1075 FROB (font_menubar); | |
1076 FROB (font_dialog); | |
1077 FROB (size_cursor); | |
1078 FROB (size_scrollbar); | |
1079 FROB (size_menu); | |
1080 FROB (size_toolbar); | |
1081 FROB (size_toolbar_button); | |
1082 FROB (size_toolbar_border); | |
1083 FROB (size_icon); | |
1084 FROB (size_icon_small); | |
1085 FROB (size_device); | |
1086 FROB (size_workspace); | |
1087 FROB (size_device_mm); | |
1088 FROB (device_dpi); | |
1089 FROB (num_bit_planes); | |
1090 FROB (num_color_cells); | |
1091 FROB (mouse_buttons); | |
1092 FROB (swap_buttons); | |
1093 FROB (show_sounds); | |
1094 FROB (slow_device); | |
1095 FROB (security); | |
1096 | |
1097 return plist; | |
1098 | |
1099 #undef FROB | |
1035 } | 1100 } |
1036 | 1101 |
1037 Lisp_Object | 1102 Lisp_Object |
1038 domain_device_type (Lisp_Object domain) | 1103 domain_device_type (Lisp_Object domain) |
1039 { | 1104 { |
1170 DEFSUBR (Fdelete_device); | 1235 DEFSUBR (Fdelete_device); |
1171 DEFSUBR (Fdevice_frame_list); | 1236 DEFSUBR (Fdevice_frame_list); |
1172 DEFSUBR (Fdevice_class); | 1237 DEFSUBR (Fdevice_class); |
1173 DEFSUBR (Fset_device_class); | 1238 DEFSUBR (Fset_device_class); |
1174 DEFSUBR (Fdevice_system_metrics); | 1239 DEFSUBR (Fdevice_system_metrics); |
1240 DEFSUBR (Fdevice_system_metric); | |
1175 DEFSUBR (Fset_device_baud_rate); | 1241 DEFSUBR (Fset_device_baud_rate); |
1176 DEFSUBR (Fdevice_baud_rate); | 1242 DEFSUBR (Fdevice_baud_rate); |
1177 DEFSUBR (Fdomain_device_type); | 1243 DEFSUBR (Fdomain_device_type); |
1178 | 1244 |
1179 defsymbol (&Qdevicep, "devicep"); | 1245 defsymbol (&Qdevicep, "devicep"); |
1193 defsymbol (&Qcolor_balloon, "color-balloon"); | 1259 defsymbol (&Qcolor_balloon, "color-balloon"); |
1194 defsymbol (&Qcolor_3d_face, "color-3d-face"); | 1260 defsymbol (&Qcolor_3d_face, "color-3d-face"); |
1195 defsymbol (&Qcolor_3d_light, "color-3d-light"); | 1261 defsymbol (&Qcolor_3d_light, "color-3d-light"); |
1196 defsymbol (&Qcolor_3d_dark, "color-3d-dark"); | 1262 defsymbol (&Qcolor_3d_dark, "color-3d-dark"); |
1197 defsymbol (&Qcolor_menu, "color-menu"); | 1263 defsymbol (&Qcolor_menu, "color-menu"); |
1198 defsymbol (&Qcolor_menu_high, "color-menu-high"); | 1264 defsymbol (&Qcolor_menu_highlight, "color-menu-highlight"); |
1199 defsymbol (&Qcolor_menu_button, "color-menu-button"); | 1265 defsymbol (&Qcolor_menu_button, "color-menu-button"); |
1200 defsymbol (&Qcolor_menu_unsel, "color-menu-unsel"); | 1266 defsymbol (&Qcolor_menu_disabled, "color-menu-disabled"); |
1201 defsymbol (&Qcolor_toolbar, "color-toolbar"); | 1267 defsymbol (&Qcolor_toolbar, "color-toolbar"); |
1202 defsymbol (&Qcolor_scrollbar, "color-scrollbar"); | 1268 defsymbol (&Qcolor_scrollbar, "color-scrollbar"); |
1203 defsymbol (&Qcolor_desktop, "color-desktop"); | 1269 defsymbol (&Qcolor_desktop, "color-desktop"); |
1204 defsymbol (&Qcolor_workspace, "color-workspace"); | 1270 defsymbol (&Qcolor_workspace, "color-workspace"); |
1205 defsymbol (&Qfont_default, "font-default"); | 1271 defsymbol (&Qfont_default, "font-default"); |
1207 defsymbol (&Qfont_dialog, "font-dialog"); | 1273 defsymbol (&Qfont_dialog, "font-dialog"); |
1208 defsymbol (&Qsize_cursor, "size-cursor"); | 1274 defsymbol (&Qsize_cursor, "size-cursor"); |
1209 defsymbol (&Qsize_scrollbar, "size-scrollbar"); | 1275 defsymbol (&Qsize_scrollbar, "size-scrollbar"); |
1210 defsymbol (&Qsize_menu, "size-menu"); | 1276 defsymbol (&Qsize_menu, "size-menu"); |
1211 defsymbol (&Qsize_toolbar, "size-toolbar"); | 1277 defsymbol (&Qsize_toolbar, "size-toolbar"); |
1212 defsymbol (&Qsize_tbbutton, "size-tbbutton"); | 1278 defsymbol (&Qsize_toolbar_button, "size-toolbar-button"); |
1213 defsymbol (&Qsize_tbborder, "size-tbborder"); | 1279 defsymbol (&Qsize_toolbar_border, "size-toolbar-border"); |
1214 defsymbol (&Qsize_icon, "size-icon"); | 1280 defsymbol (&Qsize_icon, "size-icon"); |
1215 defsymbol (&Qsize_icon_small, "size-icon-small"); | 1281 defsymbol (&Qsize_icon_small, "size-icon-small"); |
1216 defsymbol (&Qsize_device, "size-device"); | 1282 defsymbol (&Qsize_device, "size-device"); |
1217 defsymbol (&Qsize_workspace, "size-workspace"); | 1283 defsymbol (&Qsize_workspace, "size-workspace"); |
1218 defsymbol (&Qsize_device_mm, "size-device-mm"); | 1284 defsymbol (&Qsize_device_mm, "size-device-mm"); |
1222 defsymbol (&Qmouse_buttons, "mouse-buttons"); | 1288 defsymbol (&Qmouse_buttons, "mouse-buttons"); |
1223 defsymbol (&Qswap_buttons, "swap-buttons"); | 1289 defsymbol (&Qswap_buttons, "swap-buttons"); |
1224 defsymbol (&Qshow_sounds, "show-sounds"); | 1290 defsymbol (&Qshow_sounds, "show-sounds"); |
1225 defsymbol (&Qslow_device, "slow-device"); | 1291 defsymbol (&Qslow_device, "slow-device"); |
1226 defsymbol (&Qsecurity, "security"); | 1292 defsymbol (&Qsecurity, "security"); |
1227 defsymbol (&Qdbcs, "dbcs"); | |
1228 defsymbol (&Qime, "ime"); | |
1229 defsymbol (&Qmid_east, "mid-east"); | |
1230 } | 1293 } |
1231 | 1294 |
1232 void | 1295 void |
1233 vars_of_device (void) | 1296 vars_of_device (void) |
1234 { | 1297 { |