comparison src/redraw_man.c @ 1060:e415c55b4a0d

Stop using ob as acronym observer
author Thinker K.F. Li <thinker@codemud.net>
date Sun, 28 Nov 2010 12:59:05 +0800
parents 36aef79d68e4
children a8d20bc8ce40
comparison
equal deleted inserted replaced
1059:36aef79d68e4 1060:e415c55b4a0d
368 368
369 extern void sh_dummy_transform(shape_t *shape); 369 extern void sh_dummy_transform(shape_t *shape);
370 extern void sh_dummy_fill(shape_t *, mbe_t *); 370 extern void sh_dummy_fill(shape_t *, mbe_t *);
371 #endif /* UNITTEST */ 371 #endif /* UNITTEST */
372 372
373 static subject_t *ob_subject_alloc(ob_factory_t *factory); 373 static subject_t *observer_subject_alloc(observer_factory_t *factory);
374 static void ob_subject_free(ob_factory_t *factory, subject_t *subject); 374 static void observer_subject_free(observer_factory_t *factory,
375 static observer_t *ob_observer_alloc(ob_factory_t *factory); 375 subject_t *subject);
376 static void ob_observer_free(ob_factory_t *factory, observer_t *observer); 376 static observer_t *observer_observer_alloc(observer_factory_t *factory);
377 static subject_t *ob_get_parent_subject(ob_factory_t *factory, 377 static void observer_observer_free(observer_factory_t *factory,
378 subject_t *cur_subject); 378 observer_t *observer);
379 static subject_t *observer_get_parent_subject(observer_factory_t *factory,
380 subject_t *cur_subject);
379 /* Functions for children. */ 381 /* Functions for children. */
380 #define FORCHILDREN(coord, child) \ 382 #define FORCHILDREN(coord, child) \
381 for((child) = STAILQ_HEAD((coord)->children); \ 383 for((child) = STAILQ_HEAD((coord)->children); \
382 (child) != NULL; \ 384 (child) != NULL; \
383 (child) = STAILQ_NEXT(coord_t, sibling, (child))) 385 (child) = STAILQ_NEXT(coord_t, sibling, (child)))
708 if(!(rdman->geo_pool && rdman->coord_pool && rdman->shnode_pool && 710 if(!(rdman->geo_pool && rdman->coord_pool && rdman->shnode_pool &&
709 rdman->observer_pool && rdman->subject_pool && 711 rdman->observer_pool && rdman->subject_pool &&
710 rdman->paint_color_pool && rdman->coord_canvas_pool)) 712 rdman->paint_color_pool && rdman->coord_canvas_pool))
711 goto err; 713 goto err;
712 714
713 rdman->ob_factory.subject_alloc = ob_subject_alloc; 715 rdman->observer_factory.subject_alloc = observer_subject_alloc;
714 rdman->ob_factory.subject_free = ob_subject_free; 716 rdman->observer_factory.subject_free = observer_subject_free;
715 rdman->ob_factory.observer_alloc = ob_observer_alloc; 717 rdman->observer_factory.observer_alloc = observer_observer_alloc;
716 rdman->ob_factory.observer_free = ob_observer_free; 718 rdman->observer_factory.observer_free = observer_observer_free;
717 rdman->ob_factory.get_parent_subject = ob_get_parent_subject; 719 rdman->observer_factory.get_parent_subject = observer_get_parent_subject;
718 720
719 rdman->redraw = 721 rdman->redraw =
720 subject_new(&rdman->ob_factory, rdman, OBJT_RDMAN); 722 subject_new(&rdman->observer_factory, rdman, OBJT_RDMAN);
721 rdman->addrm_monitor = 723 rdman->addrm_monitor =
722 subject_new(&rdman->ob_factory, rdman, OBJT_RDMAN); 724 subject_new(&rdman->observer_factory, rdman, OBJT_RDMAN);
723 if(!(rdman->redraw && rdman->addrm_monitor)) 725 if(!(rdman->redraw && rdman->addrm_monitor))
724 goto err; 726 goto err;
725 727
726 addrm_ob = subject_add_observer(rdman->addrm_monitor, 728 addrm_ob = subject_add_observer(rdman->addrm_monitor,
727 addrm_monitor_hdlr, rdman); 729 addrm_monitor_hdlr, rdman);
734 if(rdman->root_coord == NULL) 736 if(rdman->root_coord == NULL)
735 redraw_man_destroy(rdman); 737 redraw_man_destroy(rdman);
736 rdman->n_coords = 1; 738 rdman->n_coords = 1;
737 coord_init(rdman->root_coord, NULL); 739 coord_init(rdman->root_coord, NULL);
738 mb_prop_store_init(&rdman->root_coord->obj.props, rdman->pent_pool); 740 mb_prop_store_init(&rdman->root_coord->obj.props, rdman->pent_pool);
739 rdman->root_coord->mouse_event = subject_new(&rdman->ob_factory, 741 rdman->root_coord->mouse_event = subject_new(&rdman->observer_factory,
740 rdman->root_coord, 742 rdman->root_coord,
741 OBJT_COORD); 743 OBJT_COORD);
742 coord_set_flags(rdman->root_coord, COF_OWN_CANVAS); 744 coord_set_flags(rdman->root_coord, COF_OWN_CANVAS);
743 rdman->root_coord->canvas_info = 745 rdman->root_coord->canvas_info =
744 coord_canvas_info_new(rdman, rdman->root_coord, cr); 746 coord_canvas_info_new(rdman, rdman->root_coord, cr);
884 geo = elmpool_elm_alloc(rdman->geo_pool); 886 geo = elmpool_elm_alloc(rdman->geo_pool);
885 if(geo == NULL) 887 if(geo == NULL)
886 return ERR; 888 return ERR;
887 889
888 geo_init(geo); 890 geo_init(geo);
889 geo->mouse_event = subject_new(&rdman->ob_factory, geo, OBJT_GEO); 891 geo->mouse_event = subject_new(&rdman->observer_factory, geo, OBJT_GEO);
890 subject_set_monitor(geo->mouse_event, rdman->addrm_monitor); 892 subject_set_monitor(geo->mouse_event, rdman->addrm_monitor);
891 893
892 geo_attach_coord(geo, coord); 894 geo_attach_coord(geo, coord);
893 895
894 /* New one should be dirty to recompute it when drawing. */ 896 /* New one should be dirty to recompute it when drawing. */
1032 if(coord == NULL) 1034 if(coord == NULL)
1033 return NULL; 1035 return NULL;
1034 1036
1035 coord_init(coord, parent); 1037 coord_init(coord, parent);
1036 mb_prop_store_init(&coord->obj.props, rdman->pent_pool); 1038 mb_prop_store_init(&coord->obj.props, rdman->pent_pool);
1037 coord->mouse_event = subject_new(&rdman->ob_factory, 1039 coord->mouse_event = subject_new(&rdman->observer_factory,
1038 coord, 1040 coord,
1039 OBJT_COORD); 1041 OBJT_COORD);
1040 subject_set_monitor(coord->mouse_event, rdman->addrm_monitor); 1042 subject_set_monitor(coord->mouse_event, rdman->addrm_monitor);
1041 /*! \note default opacity == 1 */ 1043 /*! \note default opacity == 1 */
1042 coord->opacity = 1; 1044 coord->opacity = 1;
2617 /* \defgroup rdman_observer Observer memory management 2619 /* \defgroup rdman_observer Observer memory management
2618 * 2620 *
2619 * Implment factory and strategy functions for observers and subjects. 2621 * Implment factory and strategy functions for observers and subjects.
2620 * @{ 2622 * @{
2621 */ 2623 */
2622 static subject_t *ob_subject_alloc(ob_factory_t *factory) { 2624 static subject_t *observer_subject_alloc(observer_factory_t *factory) {
2623 redraw_man_t *rdman; 2625 redraw_man_t *rdman;
2624 subject_t *subject; 2626 subject_t *subject;
2625 2627
2626 rdman = MEM2OBJ(factory, redraw_man_t, ob_factory); 2628 rdman = MEM2OBJ(factory, redraw_man_t, observer_factory);
2627 subject = elmpool_elm_alloc(rdman->subject_pool); 2629 subject = elmpool_elm_alloc(rdman->subject_pool);
2628 2630
2629 return subject; 2631 return subject;
2630 } 2632 }
2631 2633
2632 static void ob_subject_free(ob_factory_t *factory, subject_t *subject) { 2634 static void
2635 observer_subject_free(observer_factory_t *factory, subject_t *subject) {
2633 redraw_man_t *rdman; 2636 redraw_man_t *rdman;
2634 2637
2635 rdman = MEM2OBJ(factory, redraw_man_t, ob_factory); 2638 rdman = MEM2OBJ(factory, redraw_man_t, observer_factory);
2636 elmpool_elm_free(rdman->subject_pool, subject); 2639 elmpool_elm_free(rdman->subject_pool, subject);
2637 } 2640 }
2638 2641
2639 static observer_t *ob_observer_alloc(ob_factory_t *factory) { 2642 static observer_t *observer_observer_alloc(observer_factory_t *factory) {
2640 redraw_man_t *rdman; 2643 redraw_man_t *rdman;
2641 observer_t *observer; 2644 observer_t *observer;
2642 2645
2643 rdman = MEM2OBJ(factory, redraw_man_t, ob_factory); 2646 rdman = MEM2OBJ(factory, redraw_man_t, observer_factory);
2644 observer = elmpool_elm_alloc(rdman->observer_pool); 2647 observer = elmpool_elm_alloc(rdman->observer_pool);
2645 2648
2646 return observer; 2649 return observer;
2647 } 2650 }
2648 2651
2649 static void ob_observer_free(ob_factory_t *factory, observer_t *observer) { 2652 static void
2653 observer_observer_free(observer_factory_t *factory, observer_t *observer) {
2650 redraw_man_t *rdman; 2654 redraw_man_t *rdman;
2651 2655
2652 rdman = MEM2OBJ(factory, redraw_man_t, ob_factory); 2656 rdman = MEM2OBJ(factory, redraw_man_t, observer_factory);
2653 elmpool_elm_free(rdman->observer_pool, observer); 2657 elmpool_elm_free(rdman->observer_pool, observer);
2654 } 2658 }
2655 2659
2656 static subject_t *ob_get_parent_subject(ob_factory_t *factory, 2660 static subject_t *
2657 subject_t *cur_subject) { 2661 observer_get_parent_subject(observer_factory_t *factory,
2662 subject_t *cur_subject) {
2658 redraw_man_t *rdman; 2663 redraw_man_t *rdman;
2659 coord_t *coord, *parent_coord; 2664 coord_t *coord, *parent_coord;
2660 geo_t *geo; 2665 geo_t *geo;
2661 subject_t *parent; 2666 subject_t *parent;
2662 2667
2663 rdman = MEM2OBJ(factory, redraw_man_t, ob_factory); 2668 rdman = MEM2OBJ(factory, redraw_man_t, observer_factory);
2664 switch(cur_subject->obj_type) { 2669 switch(cur_subject->obj_type) {
2665 case OBJT_GEO: 2670 case OBJT_GEO:
2666 geo = (geo_t *)cur_subject->obj; 2671 geo = (geo_t *)cur_subject->obj;
2667 parent_coord = geo->shape->coord; 2672 parent_coord = geo->shape->coord;
2668 parent = parent_coord->mouse_event; 2673 parent = parent_coord->mouse_event;