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 {