68 |
68 |
69 // Free the surface |
69 // Free the surface |
70 SDL_FreeSurface(surface); |
70 SDL_FreeSurface(surface); |
71 } |
71 } |
72 |
72 |
73 static void asc_text_free(AscSceneNode *node) { |
73 static void asc_text_destroy(AscSceneNode *node) { |
74 AscText *text = (AscText*) node; |
74 AscText *text = (AscText*) node; |
75 AscSprite *sprite = (AscSprite*) node; |
75 AscSprite *sprite = (AscSprite*) node; |
76 asc_texture_destroy(sprite->texture, 1); |
76 asc_texture_destroy(sprite->texture, 1); |
77 assert(sprite->texture->refcount == 0); |
77 assert(sprite->texture->refcount == 0); |
78 free(sprite->texture); |
78 free(sprite->texture); |
79 cx_strfree(&text->text); |
79 cx_strfree(&text->text); |
80 free(node); |
|
81 } |
80 } |
82 |
81 |
83 AscSceneNode *asc_text_create(struct asc_text_create_args args) { |
82 AscSceneNode *asc_text_create(struct asc_text_create_args args) { |
84 AscText *text = calloc(1, sizeof(AscText)); |
83 AscText *text = calloc(1, sizeof(AscText)); |
85 AscSceneNode *node = (AscSceneNode*) text; |
84 AscSceneNode *node = (AscSceneNode*) text; |
86 |
85 |
87 node->render_group = ASC_RENDER_GROUP_SPRITE_BLEND; |
86 node->render_group = ASC_RENDER_GROUP_SPRITE_BLEND; |
88 node->free_func = asc_text_free; |
87 node->destroy_func = asc_text_destroy; |
89 node->update_func = asc_text_update; |
88 node->update_func = asc_text_update; |
90 |
89 |
91 node->flags = args.alignment; |
90 node->flags = args.alignment; |
92 node->position = asc_vec3f_new(args.x, args.y, ASC_SCENE_2D_DEPTH_OFFSET); |
91 node->position = asc_vec3f_new(args.x, args.y, ASC_SCENE_2D_DEPTH_OFFSET); |
93 node->scale.depth = 1.f; |
92 node->scale.depth = 1.f; |