Mercurial > hg > xemacs-beta
diff src/console.h @ 412:697ef44129c6 r21-2-14
Import from CVS: tag r21-2-14
author | cvs |
---|---|
date | Mon, 13 Aug 2007 11:20:41 +0200 |
parents | de805c49cfc1 |
children | da8ed4261e83 |
line wrap: on
line diff
--- a/src/console.h Mon Aug 13 11:19:22 2007 +0200 +++ b/src/console.h Mon Aug 13 11:20:41 2007 +0200 @@ -22,8 +22,8 @@ /* Written by Ben Wing. */ -#ifndef INCLUDED_console_h_ -#define INCLUDED_console_h_ +#ifndef _XEMACS_CONSOLE_H_ +#define _XEMACS_CONSOLE_H_ /* Devices and consoles are similar entities. The idea is that a console represents a physical keyboard/mouse/other-input-source @@ -55,23 +55,20 @@ DM_font_menubar, DM_font_dialog, DM_size_cursor, DM_size_scrollbar, DM_size_menu, DM_size_toolbar, DM_size_toolbar_button, DM_size_toolbar_border, DM_size_icon, DM_size_icon_small, DM_size_device, - DM_size_workspace, DM_offset_workspace, DM_size_device_mm, DM_device_dpi, - DM_num_bit_planes, DM_num_color_cells, DM_mouse_buttons, DM_swap_buttons, - DM_show_sounds, DM_slow_device, DM_security + DM_size_workspace, DM_size_device_mm, DM_device_dpi, DM_num_bit_planes, + DM_num_color_cells, DM_mouse_buttons, DM_swap_buttons, DM_show_sounds, + DM_slow_device, DM_security }; -extern const struct struct_description cted_description; -extern const struct struct_description console_methods_description; - struct console_methods { - const char *name; /* Used by print_console, print_device, print_frame */ + CONST char *name; /* Used by print_console, print_device, print_frame */ Lisp_Object symbol; Lisp_Object predicate_symbol; /* console methods */ void (*init_console_method) (struct console *, Lisp_Object props); - void (*mark_console_method) (struct console *); + void (*mark_console_method) (struct console *, void (*)(Lisp_Object)); int (*initially_selected_for_input_method) (struct console *); void (*delete_console_method) (struct console *); Lisp_Object (*semi_canonicalize_console_connection_method) @@ -89,24 +86,10 @@ void (*init_device_method) (struct device *, Lisp_Object props); void (*finish_init_device_method) (struct device *, Lisp_Object props); void (*delete_device_method) (struct device *); - void (*mark_device_method) (struct device *); + void (*mark_device_method) (struct device *, void (*)(Lisp_Object)); void (*asynch_device_change_method) (void); - Lisp_Object (*device_system_metrics_method) (struct device *, - enum device_metrics); + Lisp_Object (*device_system_metrics_method) (struct device *, enum device_metrics); unsigned int (*device_implementation_flags_method) (void); - Lisp_Object (*own_selection_method)(Lisp_Object selection_name, - Lisp_Object selection_value, - Lisp_Object how_to_add, - Lisp_Object selection_type); - void (*disown_selection_method)(Lisp_Object selection_name, - Lisp_Object timeval); - Lisp_Object (*get_foreign_selection_method) (Lisp_Object selection_symbol, - Lisp_Object target_type); - Lisp_Object (*selection_exists_p_method)(Lisp_Object selection_name, - Lisp_Object selection_type); - Lisp_Object (*available_selection_types_method)(Lisp_Object selection_name); - Lisp_Object (*register_selection_data_type_method)(Lisp_Object type_name); - Lisp_Object (*selection_data_type_name_method)(Lisp_Object type); /* frame methods */ Lisp_Object *device_specific_frame_props; @@ -115,7 +98,7 @@ void (*init_frame_3_method) (struct frame *); void (*after_init_frame_method) (struct frame *, int first_on_device, int first_on_console); - void (*mark_frame_method) (struct frame *); + void (*mark_frame_method) (struct frame *, void (*)(Lisp_Object)); void (*delete_frame_method) (struct frame *); void (*focus_on_frame_method) (struct frame *); void (*raise_frame_method) (struct frame *); @@ -144,13 +127,12 @@ Lisp_Object (*get_frame_parent_method) (struct frame *f); void (*update_frame_external_traits_method) (struct frame *f, Lisp_Object name); int (*frame_size_fixed_p_method) (struct frame *f); - void (*eject_page_method) (struct frame *f); /* redisplay methods */ int (*left_margin_width_method) (struct window *); int (*right_margin_width_method) (struct window *); int (*text_width_method) (struct frame *f, struct face_cachel *cachel, - const Emchar *str, Charcount len); + CONST Emchar *str, Charcount len); void (*output_display_block_method) (struct window *, struct display_line *, int, int, int, int, int, int, int); int (*divider_height_method) (void); @@ -161,57 +143,48 @@ int, int, int, int, Lisp_Object, Lisp_Object, Lisp_Object); void (*clear_frame_method) (struct frame *); - void (*window_output_begin_method) (struct window *); - void (*frame_output_begin_method) (struct frame *); - void (*window_output_end_method) (struct window *); - void (*frame_output_end_method) (struct frame *); + void (*output_begin_method) (struct device *); + void (*output_end_method) (struct device *); int (*flash_method) (struct device *); void (*ring_bell_method) (struct device *, int volume, int pitch, int duration); void (*frame_redraw_cursor_method) (struct frame *f); void (*set_final_cursor_coords_method) (struct frame *, int, int); - void (*bevel_area_method) (struct window *, face_index, int, int, int, int, int, - int, enum edge_style); - void (*output_pixmap_method) (struct window *w, Lisp_Object image_instance, - struct display_box *db, struct display_glyph_area *dga, - face_index findex, int cursor_start, int cursor_width, - int cursor_height, int offset_bitmap); - void (*output_string_method) (struct window *w, struct display_line *dl, - Emchar_dynarr *buf, int xpos, int xoffset, - int start_pixpos, int width, face_index findex, - int cursor, int cursor_start, int cursor_width, - int cursor_height); + /* color methods */ - int (*initialize_color_instance_method) (Lisp_Color_Instance *, + int (*initialize_color_instance_method) (struct Lisp_Color_Instance *, Lisp_Object name, Lisp_Object device, Error_behavior errb); - void (*mark_color_instance_method) (Lisp_Color_Instance *); - void (*print_color_instance_method) (Lisp_Color_Instance *, + void (*mark_color_instance_method) (struct Lisp_Color_Instance *, + void (*)(Lisp_Object)); + void (*print_color_instance_method) (struct Lisp_Color_Instance *, Lisp_Object printcharfun, int escapeflag); - void (*finalize_color_instance_method) (Lisp_Color_Instance *); - int (*color_instance_equal_method) (Lisp_Color_Instance *, - Lisp_Color_Instance *, + void (*finalize_color_instance_method) (struct Lisp_Color_Instance *); + int (*color_instance_equal_method) (struct Lisp_Color_Instance *, + struct Lisp_Color_Instance *, int depth); - unsigned long (*color_instance_hash_method) (Lisp_Color_Instance *, + unsigned long (*color_instance_hash_method) (struct Lisp_Color_Instance *, int depth); - Lisp_Object (*color_instance_rgb_components_method) (Lisp_Color_Instance *); + Lisp_Object (*color_instance_rgb_components_method) + (struct Lisp_Color_Instance *); int (*valid_color_name_p_method) (struct device *, Lisp_Object color); /* font methods */ - int (*initialize_font_instance_method) (Lisp_Font_Instance *, + int (*initialize_font_instance_method) (struct Lisp_Font_Instance *, Lisp_Object name, Lisp_Object device, Error_behavior errb); - void (*mark_font_instance_method) (Lisp_Font_Instance *); - void (*print_font_instance_method) (Lisp_Font_Instance *, + void (*mark_font_instance_method) (struct Lisp_Font_Instance *, + void (*)(Lisp_Object)); + void (*print_font_instance_method) (struct Lisp_Font_Instance *, Lisp_Object printcharfun, int escapeflag); - void (*finalize_font_instance_method) (Lisp_Font_Instance *); - Lisp_Object (*font_instance_truename_method) (Lisp_Font_Instance *, + void (*finalize_font_instance_method) (struct Lisp_Font_Instance *); + Lisp_Object (*font_instance_truename_method) (struct Lisp_Font_Instance *, Error_behavior errb); - Lisp_Object (*font_instance_properties_method) (Lisp_Font_Instance *); + Lisp_Object (*font_instance_properties_method) (struct Lisp_Font_Instance *); Lisp_Object (*list_fonts_method) (Lisp_Object pattern, Lisp_Object device); Lisp_Object (*find_charset_font_method) (Lisp_Object device, @@ -219,31 +192,29 @@ Lisp_Object charset); int (*font_spec_matches_charset_method) (struct device *d, Lisp_Object charset, - const Bufbyte *nonreloc, + CONST Bufbyte *nonreloc, Lisp_Object reloc, Bytecount offset, Bytecount length); /* image methods */ - void (*mark_image_instance_method) (Lisp_Image_Instance *); - void (*print_image_instance_method) (Lisp_Image_Instance *, + void (*mark_image_instance_method) (struct Lisp_Image_Instance *, + void (*)(Lisp_Object)); + void (*print_image_instance_method) (struct Lisp_Image_Instance *, Lisp_Object printcharfun, int escapeflag); - void (*finalize_image_instance_method) (Lisp_Image_Instance *); - void (*unmap_subwindow_method) (Lisp_Image_Instance *); - void (*map_subwindow_method) (Lisp_Image_Instance *, int x, int y, - struct display_glyph_area* dga); - void (*resize_subwindow_method) (Lisp_Image_Instance *, int w, int h); - void (*update_subwindow_method) (Lisp_Image_Instance *); - void (*update_widget_method) (Lisp_Image_Instance *); - int (*image_instance_equal_method) (Lisp_Image_Instance *, - Lisp_Image_Instance *, + void (*finalize_image_instance_method) (struct Lisp_Image_Instance *); + void (*unmap_subwindow_method) (struct Lisp_Image_Instance *); + void (*map_subwindow_method) (struct Lisp_Image_Instance *, int x, int y); + void (*resize_subwindow_method) (struct Lisp_Image_Instance *, int w, int h); + void (*update_subwindow_method) (struct Lisp_Image_Instance *); + int (*image_instance_equal_method) (struct Lisp_Image_Instance *, + struct Lisp_Image_Instance *, int depth); - unsigned long (*image_instance_hash_method) (Lisp_Image_Instance *, + unsigned long (*image_instance_hash_method) (struct Lisp_Image_Instance *, int depth); - void (*init_image_instance_from_eimage_method) (Lisp_Image_Instance *ii, + void (*init_image_instance_from_eimage_method) (struct Lisp_Image_Instance *ii, int width, int height, - int slices, unsigned char *eimage, int dest_mask, Lisp_Object instantiator, @@ -301,18 +272,8 @@ /* * Constants returned by device_implementation_flags_method */ - /* Set when device uses pixel-based geometry */ -#define XDEVIMPF_PIXEL_GEOMETRY 0x00000001L - -/* Indicates that the device is a printer */ -#define XDEVIMPF_IS_A_PRINTER 0x00000002L - -/* Do not automatically redisplay this device */ -#define XDEVIMPF_NO_AUTO_REDISPLAY 0x00000004L - -/* Do not delete the device when last frame's gone */ -#define XDEVIMPF_FRAMELESS_OK 0x00000008L +#define XDEVIMPF_PIXEL_GEOMETRY 0x00000001L #define CONSOLE_TYPE_NAME(c) ((c)->conmeths->name) @@ -379,29 +340,17 @@ type##_console_methods = xnew_and_zero (struct console_methods); \ type##_console_methods->name = obj_name; \ type##_console_methods->symbol = Q##type; \ - defsymbol_nodump (&type##_console_methods->predicate_symbol, pred_sym); \ + defsymbol (&type##_console_methods->predicate_symbol, pred_sym); \ add_entry_to_console_type_list (Q##type, type##_console_methods); \ type##_console_methods->image_conversion_list = Qnil; \ - staticpro_nodump (&type##_console_methods->image_conversion_list); \ - dumpstruct (&type##_console_methods, &console_methods_description); \ + staticpro (&type##_console_methods->image_conversion_list); \ } while (0) -#define REINITIALIZE_CONSOLE_TYPE(type) do { \ - staticpro_nodump (&type##_console_methods->predicate_symbol); \ - staticpro_nodump (&type##_console_methods->image_conversion_list); \ -} while (0) - - /* Declare that console-type TYPE has method M; used in initialization routines */ #define CONSOLE_HAS_METHOD(type, m) \ (type##_console_methods->m##_method = type##_##m) -/* Declare that console-type TYPE inherits method M - implementation from console-type FROMTYPE */ -#define CONSOLE_INHERITS_METHOD(type, fromtype, m) \ - (type##_console_methods->m##_method = fromtype##_##m) - struct console { struct lcrecord_header header; @@ -447,6 +396,7 @@ #define XCONSOLE(x) XRECORD (x, console, struct console) #define XSETCONSOLE(x, p) XSETRECORD (x, p, console) #define CONSOLEP(x) RECORDP (x, console) +#define GC_CONSOLEP(x) GC_RECORDP (x, console) #define CHECK_CONSOLE(x) CHECK_RECORD (x, console) #define CONCHECK_CONSOLE(x) CONCHECK_RECORD (x, console) @@ -464,9 +414,9 @@ #define CONSOLE_TYPE_P(con, type) EQ (CONSOLE_TYPE (con), Q##type) #ifdef ERROR_CHECK_TYPECHECK -INLINE_HEADER struct console * +INLINE struct console * error_check_console_type (struct console *con, Lisp_Object sym); -INLINE_HEADER struct console * +INLINE struct console * error_check_console_type (struct console *con, Lisp_Object sym) { assert (EQ (CONSOLE_TYPE (con), sym)); @@ -603,4 +553,4 @@ void set_console_last_nonminibuf_frame (struct console *con, Lisp_Object frame); -#endif /* INCLUDED_console_h_ */ +#endif /* _XEMACS_CONSOLE_H_ */