Mercurial > MadButterfly
comparison src/redraw_man.c @ 1372:0afd598a0b30
Add clone_from_subtree() for coord object of nodejs
author | Thinker K.F. Li <thinker@codemud.net> |
---|---|
date | Mon, 07 Mar 2011 09:38:09 +0800 |
parents | 36cbe73813a8 |
children | e5b3d68d0b05 |
comparison
equal
deleted
inserted
replaced
1371:36cbe73813a8 | 1372:0afd598a0b30 |
---|---|
1107 * \param parent is a coord where the cloning subtree would be hooked. | 1107 * \param parent is a coord where the cloning subtree would be hooked. |
1108 * \param src is the coord that cloned subtree is rooted. | 1108 * \param src is the coord that cloned subtree is rooted. |
1109 * \return the root of new subtree. | 1109 * \return the root of new subtree. |
1110 */ | 1110 */ |
1111 coord_t * | 1111 coord_t * |
1112 rdman_coord_clone_subtree(redraw_man_t *rdman, | 1112 rdman_coord_clone_from_subtree(redraw_man_t *rdman, |
1113 coord_t *parent, coord_t *src) { | 1113 coord_t *parent, coord_t *src) { |
1114 coord_t *cloning; | 1114 coord_t *cloning; |
1115 coord_t *child; | 1115 coord_t *child; |
1116 shape_t *member, *cloning_member; | 1116 shape_t *member, *cloning_member; |
1117 geo_t *member_geo; | 1117 geo_t *member_geo; |
1118 int member_idx, child_pos; | 1118 int member_idx, child_pos; |
1135 | 1135 |
1136 member_geo = NEXT_MEMBER(member_geo); | 1136 member_geo = NEXT_MEMBER(member_geo); |
1137 member_idx++; | 1137 member_idx++; |
1138 } | 1138 } |
1139 | 1139 |
1140 rdman_coord_clone_subtree(rdman, cloning, child); | 1140 rdman_coord_clone_from_subtree(rdman, cloning, child); |
1141 } | 1141 } |
1142 | 1142 |
1143 /* Clone remain members after last child if any */ | 1143 /* Clone remain members after last child if any */ |
1144 while(member_geo) { | 1144 while(member_geo) { |
1145 member = member_geo->shape; | 1145 member = member_geo->shape; |
3106 rdman_paint_free(rdman, paint); | 3106 rdman_paint_free(rdman, paint); |
3107 redraw_man_destroy(rdman); | 3107 redraw_man_destroy(rdman); |
3108 } | 3108 } |
3109 | 3109 |
3110 static void | 3110 static void |
3111 test_rdman_coord_clone_subtree(void) { | 3111 test_rdman_coord_clone_from_subtree(void) { |
3112 redraw_man_t _rdman; | 3112 redraw_man_t _rdman; |
3113 redraw_man_t *rdman; | 3113 redraw_man_t *rdman; |
3114 coord_t *coord1, *coord2, *coord3; | 3114 coord_t *coord1, *coord2, *coord3; |
3115 coord_t *cloning; | 3115 coord_t *cloning; |
3116 shape_t *sh1, *sh2; | 3116 shape_t *sh1, *sh2; |
3134 rdman_add_shape(rdman, (shape_t *)sh2, coord2); | 3134 rdman_add_shape(rdman, (shape_t *)sh2, coord2); |
3135 | 3135 |
3136 coord3 = rdman_coord_new(rdman, coord2); | 3136 coord3 = rdman_coord_new(rdman, coord2); |
3137 CU_ASSERT(coord3 != NULL); | 3137 CU_ASSERT(coord3 != NULL); |
3138 | 3138 |
3139 cloning = rdman_coord_clone_subtree(rdman, rdman->root_coord, coord1); | 3139 cloning = rdman_coord_clone_from_subtree(rdman, rdman->root_coord, coord1); |
3140 CU_ASSERT(NEXT_CHILD(coord1) == cloning); | 3140 CU_ASSERT(NEXT_CHILD(coord1) == cloning); |
3141 | 3141 |
3142 cloning_visit = FIRST_CHILD(cloning); | 3142 cloning_visit = FIRST_CHILD(cloning); |
3143 CU_ASSERT(cloning_visit != NULL); | 3143 CU_ASSERT(cloning_visit != NULL); |
3144 CU_ASSERT(cloning_visit->before_pmem == 1); | 3144 CU_ASSERT(cloning_visit->before_pmem == 1); |
3157 CU_ADD_TEST(suite, test_rdman_free_objs); | 3157 CU_ADD_TEST(suite, test_rdman_free_objs); |
3158 CU_ADD_TEST(suite, test_setup_canvas_info); | 3158 CU_ADD_TEST(suite, test_setup_canvas_info); |
3159 CU_ADD_TEST(suite, test_own_canvas_area); | 3159 CU_ADD_TEST(suite, test_own_canvas_area); |
3160 CU_ADD_TEST(suite, test_own_canvas); | 3160 CU_ADD_TEST(suite, test_own_canvas); |
3161 CU_ADD_TEST(suite, test_own_canvas_redraw); | 3161 CU_ADD_TEST(suite, test_own_canvas_redraw); |
3162 CU_ADD_TEST(suite, test_rdman_coord_clone_subtree); | 3162 CU_ADD_TEST(suite, test_rdman_coord_clone_from_subtree); |
3163 | 3163 |
3164 return suite; | 3164 return suite; |
3165 } | 3165 } |
3166 | 3166 |
3167 #endif /* UNITTEST */ | 3167 #endif /* UNITTEST */ |