Mercurial > hg > xemacs-beta
comparison src/glyphs.h @ 404:2f8bb876ab1d r21-2-32
Import from CVS: tag r21-2-32
author | cvs |
---|---|
date | Mon, 13 Aug 2007 11:16:07 +0200 |
parents | 74fd4e045ea6 |
children | b8cc9ab3f761 |
comparison
equal
deleted
inserted
replaced
403:9f011ab08d48 | 404:2f8bb876ab1d |
---|---|
267 entry.meths = console##_console_methods; \ | 267 entry.meths = console##_console_methods; \ |
268 Dynarr_add (format##_image_instantiator_methods->consoles, \ | 268 Dynarr_add (format##_image_instantiator_methods->consoles, \ |
269 entry); \ | 269 entry); \ |
270 } while (0) | 270 } while (0) |
271 | 271 |
272 #define IIFORMAT_VALID_CONSOLE2(con1, con2, format) \ | |
273 IIFORMAT_VALID_CONSOLE (con1, format); \ | |
274 IIFORMAT_VALID_CONSOLE (con2, format); | |
275 | |
272 #define DEFINE_DEVICE_IIFORMAT(type, format) \ | 276 #define DEFINE_DEVICE_IIFORMAT(type, format) \ |
273 DECLARE_IMAGE_INSTANTIATOR_FORMAT(format); \ | 277 DECLARE_IMAGE_INSTANTIATOR_FORMAT(format); \ |
274 struct image_instantiator_methods *type##_##format##_image_instantiator_methods | 278 struct image_instantiator_methods *type##_##format##_image_instantiator_methods |
275 | 279 |
276 #define INITIALIZE_DEVICE_IIFORMAT(type, format) \ | 280 #define INITIALIZE_DEVICE_IIFORMAT(type, format) \ |
292 initialization routines */ | 296 initialization routines */ |
293 #define IIFORMAT_HAS_DEVMETHOD(type, format, m) \ | 297 #define IIFORMAT_HAS_DEVMETHOD(type, format, m) \ |
294 (type##_##format##_image_instantiator_methods->m##_method = type##_##format##_##m) | 298 (type##_##format##_image_instantiator_methods->m##_method = type##_##format##_##m) |
295 #define IIFORMAT_HAS_SHARED_DEVMETHOD(type, format, m, fromformat) \ | 299 #define IIFORMAT_HAS_SHARED_DEVMETHOD(type, format, m, fromformat) \ |
296 (type##_##format##_image_instantiator_methods->m##_method = type##_##fromformat##_##m) | 300 (type##_##format##_image_instantiator_methods->m##_method = type##_##fromformat##_##m) |
301 | |
302 #define IIFORMAT_INHERITS_DEVMETHOD(type, from, format, m) \ | |
303 (type##_##format##_image_instantiator_methods->m##_method = from##_##format##_##m) | |
304 #define IIFORMAT_INHERITS_SHARED_DEVMETHOD(type, from, format, m, fromformat) \ | |
305 (type##_##format##_image_instantiator_methods->m##_method = from##_##fromformat##_##m) | |
297 | 306 |
298 struct image_instantiator_methods * | 307 struct image_instantiator_methods * |
299 decode_device_ii_format (Lisp_Object device, Lisp_Object format, | 308 decode_device_ii_format (Lisp_Object device, Lisp_Object format, |
300 Error_behavior errb); | 309 Error_behavior errb); |
301 struct image_instantiator_methods * | 310 struct image_instantiator_methods * |
486 reference. */ | 495 reference. */ |
487 Lisp_Object parent; | 496 Lisp_Object parent; |
488 enum image_instance_type type; | 497 enum image_instance_type type; |
489 unsigned int x_offset, y_offset; /* for layout purposes */ | 498 unsigned int x_offset, y_offset; /* for layout purposes */ |
490 unsigned int width, height; | 499 unsigned int width, height; |
500 unsigned long display_hash; /* Hash value representing the structure | |
501 of the image_instance when it was | |
502 last displayed. */ | |
491 unsigned int dirty : 1; | 503 unsigned int dirty : 1; |
492 unsigned int size_changed : 1; | 504 unsigned int size_changed : 1; |
493 unsigned int text_changed : 1; | 505 unsigned int text_changed : 1; |
494 unsigned int layout_changed : 1; | 506 unsigned int layout_changed : 1; |
507 unsigned int optimize_output : 1; /* For outputting layouts. */ | |
495 | 508 |
496 union | 509 union |
497 { | 510 { |
498 struct | 511 struct |
499 { | 512 { |
529 general. */ | 542 general. */ |
530 Lisp_Object face; | 543 Lisp_Object face; |
531 Lisp_Object type; | 544 Lisp_Object type; |
532 Lisp_Object props; /* properties or border*/ | 545 Lisp_Object props; /* properties or border*/ |
533 Lisp_Object items; /* a list of gui_items or children */ | 546 Lisp_Object items; /* a list of gui_items or children */ |
547 Lisp_Object pending_items; /* gui_items that should be displayed */ | |
548 Lisp_Object width; /* dynamic width spec. */ | |
549 Lisp_Object height; /* dynamic height spec. */ | |
534 /* Change flags to augment dirty. */ | 550 /* Change flags to augment dirty. */ |
535 unsigned int face_changed : 1; | 551 unsigned int face_changed : 1; |
536 unsigned int items_changed : 1; | 552 unsigned int items_changed : 1; |
537 unsigned int percent_changed : 1; | 553 unsigned int percent_changed : 1; |
538 } subwindow; | 554 } subwindow; |
547 #define LAYOUT_VERTICAL 1 | 563 #define LAYOUT_VERTICAL 1 |
548 | 564 |
549 #define LAYOUT_JUSTIFY_LEFT 0 | 565 #define LAYOUT_JUSTIFY_LEFT 0 |
550 #define LAYOUT_JUSTIFY_RIGHT 1 | 566 #define LAYOUT_JUSTIFY_RIGHT 1 |
551 #define LAYOUT_JUSTIFY_CENTER 2 | 567 #define LAYOUT_JUSTIFY_CENTER 2 |
568 | |
569 #define IMAGE_INSTANCE_HASH_DEPTH -2 | |
552 | 570 |
553 /* Accessor macros. */ | 571 /* Accessor macros. */ |
554 #define IMAGE_INSTANCE_DEVICE(i) ((i)->device) | 572 #define IMAGE_INSTANCE_DEVICE(i) ((i)->device) |
555 #define IMAGE_INSTANCE_NAME(i) ((i)->name) | 573 #define IMAGE_INSTANCE_NAME(i) ((i)->name) |
556 #define IMAGE_INSTANCE_PARENT(i) ((i)->parent) | 574 #define IMAGE_INSTANCE_PARENT(i) ((i)->parent) |
558 #define IMAGE_INSTANCE_TYPE(i) ((i)->type) | 576 #define IMAGE_INSTANCE_TYPE(i) ((i)->type) |
559 #define IMAGE_INSTANCE_XOFFSET(i) ((i)->x_offset) | 577 #define IMAGE_INSTANCE_XOFFSET(i) ((i)->x_offset) |
560 #define IMAGE_INSTANCE_YOFFSET(i) ((i)->y_offset) | 578 #define IMAGE_INSTANCE_YOFFSET(i) ((i)->y_offset) |
561 #define IMAGE_INSTANCE_WIDTH(i) ((i)->width) | 579 #define IMAGE_INSTANCE_WIDTH(i) ((i)->width) |
562 #define IMAGE_INSTANCE_HEIGHT(i) ((i)->height) | 580 #define IMAGE_INSTANCE_HEIGHT(i) ((i)->height) |
581 #define IMAGE_INSTANCE_DISPLAY_HASH(i) ((i)->display_hash) | |
563 #define IMAGE_INSTANCE_PIXMAP_TYPE_P(i) \ | 582 #define IMAGE_INSTANCE_PIXMAP_TYPE_P(i) \ |
564 ((IMAGE_INSTANCE_TYPE (i) == IMAGE_MONO_PIXMAP) \ | 583 ((IMAGE_INSTANCE_TYPE (i) == IMAGE_MONO_PIXMAP) \ |
565 || (IMAGE_INSTANCE_TYPE (i) == IMAGE_COLOR_PIXMAP)) | 584 || (IMAGE_INSTANCE_TYPE (i) == IMAGE_COLOR_PIXMAP)) |
566 #define IMAGE_INSTANCE_DIRTYP(i) ((i)->dirty) | 585 #define IMAGE_INSTANCE_DIRTYP(i) ((i)->dirty) |
567 #define IMAGE_INSTANCE_NEEDS_LAYOUT(i) \ | 586 #define IMAGE_INSTANCE_NEEDS_LAYOUT(i) \ |
568 (IMAGE_INSTANCE_DIRTYP (i) && IMAGE_INSTANCE_LAYOUT_CHANGED (i)) | 587 (IMAGE_INSTANCE_DIRTYP (i) && IMAGE_INSTANCE_LAYOUT_CHANGED (i)) |
569 #define IMAGE_INSTANCE_FACE(i) \ | 588 #define IMAGE_INSTANCE_FACE(i) \ |
570 XGLYPH_FACE (IMAGE_INSTANCE_GLYPH (i)) | 589 (GLYPHP (IMAGE_INSTANCE_GLYPH (i)) ? \ |
590 XGLYPH_FACE (IMAGE_INSTANCE_GLYPH (i)) : Qnil) | |
571 | 591 |
572 /* Changed flags */ | 592 /* Changed flags */ |
573 #define IMAGE_INSTANCE_TEXT_CHANGED(i) ((i)->text_changed) | 593 #define IMAGE_INSTANCE_TEXT_CHANGED(i) ((i)->text_changed) |
574 #define IMAGE_INSTANCE_SIZE_CHANGED(i) ((i)->size_changed) | 594 #define IMAGE_INSTANCE_SIZE_CHANGED(i) ((i)->size_changed) |
575 #define IMAGE_INSTANCE_WIDGET_FACE_CHANGED(i) \ | 595 #define IMAGE_INSTANCE_WIDGET_FACE_CHANGED(i) \ |
576 ((i)->u.subwindow.face_changed) | 596 ((i)->u.subwindow.face_changed) |
577 #define IMAGE_INSTANCE_WIDGET_ITEMS_CHANGED(i) \ | 597 #define IMAGE_INSTANCE_WIDGET_ITEMS_CHANGED(i) \ |
578 ((i)->u.subwindow.items_changed) | 598 ((i)->u.subwindow.items_changed) |
579 #define IMAGE_INSTANCE_WIDGET_PERCENT_CHANGED(i) \ | 599 #define IMAGE_INSTANCE_WIDGET_PERCENT_CHANGED(i) \ |
580 ((i)->u.subwindow.percent_changed) | 600 ((i)->u.subwindow.percent_changed) |
581 #define IMAGE_INSTANCE_LAYOUT_CHANGED(i) \ | 601 #define IMAGE_INSTANCE_LAYOUT_CHANGED(i) ((i)->layout_changed) |
582 ((i)->layout_changed) | 602 #define IMAGE_INSTANCE_OPTIMIZE_OUTPUT(i) ((i)->optimize_output) |
583 | 603 |
584 /* Text properties */ | 604 /* Text properties */ |
585 #define IMAGE_INSTANCE_TEXT_STRING(i) ((i)->u.text.string) | 605 #define IMAGE_INSTANCE_TEXT_STRING(i) ((i)->u.text.string) |
586 #define IMAGE_INSTANCE_TEXT_WIDTH(i) \ | 606 #define IMAGE_INSTANCE_TEXT_WIDTH(i) \ |
587 IMAGE_INSTANCE_WIDTH(i) | 607 IMAGE_INSTANCE_WIDTH(i) |
630 /* Widget properties */ | 650 /* Widget properties */ |
631 #define IMAGE_INSTANCE_WIDGET_WIDTH(i) \ | 651 #define IMAGE_INSTANCE_WIDGET_WIDTH(i) \ |
632 IMAGE_INSTANCE_WIDTH(i) | 652 IMAGE_INSTANCE_WIDTH(i) |
633 #define IMAGE_INSTANCE_WIDGET_HEIGHT(i) \ | 653 #define IMAGE_INSTANCE_WIDGET_HEIGHT(i) \ |
634 IMAGE_INSTANCE_HEIGHT(i) | 654 IMAGE_INSTANCE_HEIGHT(i) |
655 #define IMAGE_INSTANCE_WIDGET_WIDTH_SUBR(i) ((i)->u.subwindow.width) | |
656 #define IMAGE_INSTANCE_WIDGET_HEIGHT_SUBR(i) ((i)->u.subwindow.height) | |
635 #define IMAGE_INSTANCE_WIDGET_TYPE(i) ((i)->u.subwindow.type) | 657 #define IMAGE_INSTANCE_WIDGET_TYPE(i) ((i)->u.subwindow.type) |
636 #define IMAGE_INSTANCE_WIDGET_PROPS(i) ((i)->u.subwindow.props) | 658 #define IMAGE_INSTANCE_WIDGET_PROPS(i) ((i)->u.subwindow.props) |
637 #define SET_IMAGE_INSTANCE_WIDGET_FACE(i,f) \ | 659 #define SET_IMAGE_INSTANCE_WIDGET_FACE(i,f) \ |
638 ((i)->u.subwindow.face = f) | 660 ((i)->u.subwindow.face = f) |
639 #define IMAGE_INSTANCE_WIDGET_FACE(i) \ | 661 #define IMAGE_INSTANCE_WIDGET_FACE(i) \ |
640 (!NILP ((i)->u.subwindow.face) ? (i)->u.subwindow.face : \ | 662 (!NILP ((i)->u.subwindow.face) ? (i)->u.subwindow.face : \ |
641 !NILP (IMAGE_INSTANCE_FACE (i)) ? IMAGE_INSTANCE_FACE (i) : \ | 663 !NILP (IMAGE_INSTANCE_FACE (i)) ? IMAGE_INSTANCE_FACE (i) : \ |
642 Vwidget_face) | 664 Vwidget_face) |
643 #define IMAGE_INSTANCE_WIDGET_ITEMS(i) ((i)->u.subwindow.items) | 665 #define IMAGE_INSTANCE_WIDGET_ITEMS(i) ((i)->u.subwindow.items) |
666 #define IMAGE_INSTANCE_WIDGET_PENDING_ITEMS(i) \ | |
667 ((i)->u.subwindow.pending_items) | |
644 #define IMAGE_INSTANCE_WIDGET_ITEM(i) \ | 668 #define IMAGE_INSTANCE_WIDGET_ITEM(i) \ |
645 (CONSP (IMAGE_INSTANCE_WIDGET_ITEMS (i)) ? \ | 669 (CONSP (IMAGE_INSTANCE_WIDGET_ITEMS (i)) ? \ |
646 XCAR (IMAGE_INSTANCE_WIDGET_ITEMS (i)) : \ | 670 XCAR (IMAGE_INSTANCE_WIDGET_ITEMS (i)) : \ |
647 IMAGE_INSTANCE_WIDGET_ITEMS (i)) | 671 IMAGE_INSTANCE_WIDGET_ITEMS (i)) |
648 #define IMAGE_INSTANCE_WIDGET_TEXT(i) XGUI_ITEM (IMAGE_INSTANCE_WIDGET_ITEM (i))->name | 672 #define IMAGE_INSTANCE_WIDGET_TEXT(i) XGUI_ITEM (IMAGE_INSTANCE_WIDGET_ITEM (i))->name |
659 IMAGE_INSTANCE_GLYPH (XIMAGE_INSTANCE (i)) | 683 IMAGE_INSTANCE_GLYPH (XIMAGE_INSTANCE (i)) |
660 #define XIMAGE_INSTANCE_PARENT(i) \ | 684 #define XIMAGE_INSTANCE_PARENT(i) \ |
661 IMAGE_INSTANCE_PARENT (XIMAGE_INSTANCE (i)) | 685 IMAGE_INSTANCE_PARENT (XIMAGE_INSTANCE (i)) |
662 #define XIMAGE_INSTANCE_TYPE(i) \ | 686 #define XIMAGE_INSTANCE_TYPE(i) \ |
663 IMAGE_INSTANCE_TYPE (XIMAGE_INSTANCE (i)) | 687 IMAGE_INSTANCE_TYPE (XIMAGE_INSTANCE (i)) |
688 #define XIMAGE_INSTANCE_DISPLAY_HASH(i) \ | |
689 IMAGE_INSTANCE_DISPLAY_HASH (XIMAGE_INSTANCE (i)) | |
664 #define XIMAGE_INSTANCE_XOFFSET(i) \ | 690 #define XIMAGE_INSTANCE_XOFFSET(i) \ |
665 IMAGE_INSTANCE_XOFFSET (XIMAGE_INSTANCE (i)) | 691 IMAGE_INSTANCE_XOFFSET (XIMAGE_INSTANCE (i)) |
666 #define XIMAGE_INSTANCE_YOFFSET(i) \ | 692 #define XIMAGE_INSTANCE_YOFFSET(i) \ |
667 IMAGE_INSTANCE_YOFFSET (XIMAGE_INSTANCE (i)) | 693 IMAGE_INSTANCE_YOFFSET (XIMAGE_INSTANCE (i)) |
668 #define XIMAGE_INSTANCE_DIRTYP(i) \ | 694 #define XIMAGE_INSTANCE_DIRTYP(i) \ |
716 | 742 |
717 #define XIMAGE_INSTANCE_WIDGET_WIDTH(i) \ | 743 #define XIMAGE_INSTANCE_WIDGET_WIDTH(i) \ |
718 IMAGE_INSTANCE_WIDGET_WIDTH (XIMAGE_INSTANCE (i)) | 744 IMAGE_INSTANCE_WIDGET_WIDTH (XIMAGE_INSTANCE (i)) |
719 #define XIMAGE_INSTANCE_WIDGET_HEIGHT(i) \ | 745 #define XIMAGE_INSTANCE_WIDGET_HEIGHT(i) \ |
720 IMAGE_INSTANCE_WIDGET_HEIGHT (XIMAGE_INSTANCE (i)) | 746 IMAGE_INSTANCE_WIDGET_HEIGHT (XIMAGE_INSTANCE (i)) |
747 #define XIMAGE_INSTANCE_WIDGET_WIDTH_SUBR(i) \ | |
748 IMAGE_INSTANCE_WIDGET_WIDTH_SUBR (XIMAGE_INSTANCE (i)) | |
749 #define XIMAGE_INSTANCE_WIDGET_HEIGHT_SUBR(i) \ | |
750 IMAGE_INSTANCE_WIDGET_HEIGHT_SUBR (XIMAGE_INSTANCE (i)) | |
721 #define XIMAGE_INSTANCE_WIDGET_TYPE(i) \ | 751 #define XIMAGE_INSTANCE_WIDGET_TYPE(i) \ |
722 IMAGE_INSTANCE_WIDGET_TYPE (XIMAGE_INSTANCE (i)) | 752 IMAGE_INSTANCE_WIDGET_TYPE (XIMAGE_INSTANCE (i)) |
723 #define XIMAGE_INSTANCE_WIDGET_PROPS(i) \ | 753 #define XIMAGE_INSTANCE_WIDGET_PROPS(i) \ |
724 IMAGE_INSTANCE_WIDGET_PROPS (XIMAGE_INSTANCE (i)) | 754 IMAGE_INSTANCE_WIDGET_PROPS (XIMAGE_INSTANCE (i)) |
725 #define XIMAGE_INSTANCE_WIDGET_FACE(i) \ | 755 #define XIMAGE_INSTANCE_WIDGET_FACE(i) \ |
728 SET_IMAGE_INSTANCE_WIDGET_FACE (XIMAGE_INSTANCE (i)) | 758 SET_IMAGE_INSTANCE_WIDGET_FACE (XIMAGE_INSTANCE (i)) |
729 #define XIMAGE_INSTANCE_WIDGET_ITEM(i) \ | 759 #define XIMAGE_INSTANCE_WIDGET_ITEM(i) \ |
730 IMAGE_INSTANCE_WIDGET_ITEM (XIMAGE_INSTANCE (i)) | 760 IMAGE_INSTANCE_WIDGET_ITEM (XIMAGE_INSTANCE (i)) |
731 #define XIMAGE_INSTANCE_WIDGET_ITEMS(i) \ | 761 #define XIMAGE_INSTANCE_WIDGET_ITEMS(i) \ |
732 IMAGE_INSTANCE_WIDGET_ITEMS (XIMAGE_INSTANCE (i)) | 762 IMAGE_INSTANCE_WIDGET_ITEMS (XIMAGE_INSTANCE (i)) |
763 #define XIMAGE_INSTANCE_WIDGET_PENDING_ITEMS(i) \ | |
764 IMAGE_INSTANCE_WIDGET_PENDING_ITEMS (XIMAGE_INSTANCE (i)) | |
733 #define XIMAGE_INSTANCE_WIDGET_TEXT(i) \ | 765 #define XIMAGE_INSTANCE_WIDGET_TEXT(i) \ |
734 IMAGE_INSTANCE_WIDGET_TEXT (XIMAGE_INSTANCE (i)) | 766 IMAGE_INSTANCE_WIDGET_TEXT (XIMAGE_INSTANCE (i)) |
735 | 767 |
736 #define XIMAGE_INSTANCE_LAYOUT_CHILDREN(i) \ | 768 #define XIMAGE_INSTANCE_LAYOUT_CHILDREN(i) \ |
737 IMAGE_INSTANCE_LAYOUT_CHILDREN (XIMAGE_INSTANCE (i)) | 769 IMAGE_INSTANCE_LAYOUT_CHILDREN (XIMAGE_INSTANCE (i)) |
852 extern Lisp_Object Qtree_view, Qtab_control, Qprogress_gauge, Q_border; | 884 extern Lisp_Object Qtree_view, Qtab_control, Qprogress_gauge, Q_border; |
853 extern Lisp_Object Q_mask_file, Q_mask_data, Q_hotspot_x, Q_hotspot_y; | 885 extern Lisp_Object Q_mask_file, Q_mask_data, Q_hotspot_x, Q_hotspot_y; |
854 extern Lisp_Object Q_foreground, Q_background, Q_face, Q_descriptor, Q_group; | 886 extern Lisp_Object Q_foreground, Q_background, Q_face, Q_descriptor, Q_group; |
855 extern Lisp_Object Q_width, Q_height, Q_pixel_width, Q_pixel_height, Q_text; | 887 extern Lisp_Object Q_width, Q_height, Q_pixel_width, Q_pixel_height, Q_text; |
856 extern Lisp_Object Q_items, Q_properties, Q_image, Q_percent, Qimage_conversion_error; | 888 extern Lisp_Object Q_items, Q_properties, Q_image, Q_percent, Qimage_conversion_error; |
857 extern Lisp_Object Q_orientation; | 889 extern Lisp_Object Q_orientation, Qupdate_widget_instances; |
858 extern Lisp_Object Vcontinuation_glyph, Vcontrol_arrow_glyph, Vhscroll_glyph; | 890 extern Lisp_Object Vcontinuation_glyph, Vcontrol_arrow_glyph, Vhscroll_glyph; |
859 extern Lisp_Object Vinvisible_text_glyph, Voctal_escape_glyph, Vtruncation_glyph; | 891 extern Lisp_Object Vinvisible_text_glyph, Voctal_escape_glyph, Vtruncation_glyph; |
860 extern Lisp_Object Vxemacs_logo; | 892 extern Lisp_Object Vxemacs_logo; |
861 | 893 |
862 unsigned short glyph_width (Lisp_Object glyph, Lisp_Object domain); | 894 unsigned short glyph_width (Lisp_Object glyph, Lisp_Object domain); |
975 void mark_subwindow_cachels_as_not_updated (struct frame *f); | 1007 void mark_subwindow_cachels_as_not_updated (struct frame *f); |
976 void reset_subwindow_cachels (struct frame *f); | 1008 void reset_subwindow_cachels (struct frame *f); |
977 void unmap_subwindow (Lisp_Object subwindow); | 1009 void unmap_subwindow (Lisp_Object subwindow); |
978 void map_subwindow (Lisp_Object subwindow, int x, int y, | 1010 void map_subwindow (Lisp_Object subwindow, int x, int y, |
979 struct display_glyph_area *dga); | 1011 struct display_glyph_area *dga); |
980 void update_frame_subwindows (struct frame *f); | |
981 int find_matching_subwindow (struct frame* f, int x, int y, int width, int height); | 1012 int find_matching_subwindow (struct frame* f, int x, int y, int width, int height); |
982 void update_widget (Lisp_Object widget); | 1013 void update_widget (Lisp_Object widget); |
983 void update_subwindow (Lisp_Object subwindow); | 1014 void update_subwindow (Lisp_Object subwindow); |
984 Lisp_Object image_instance_parent_glyph (struct Lisp_Image_Instance*); | 1015 Lisp_Object image_instance_parent_glyph (struct Lisp_Image_Instance*); |
985 | 1016 |