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