src/text.c

changeset 115
e5f8c99b0987
parent 114
5b91bbab1ac0
child 116
bfb2a7d62047
--- a/src/text.c	Sat May 10 15:42:56 2025 +0200
+++ b/src/text.c	Sat May 10 18:51:45 2025 +0200
@@ -73,6 +73,7 @@
 static void asc_text_destroy(AscSceneNode *node) {
     AscText *text = (AscText*) node;
     AscSprite *sprite = (AscSprite*) node;
+    asc_mesh_destroy(&sprite->mesh);
     asc_texture_destroy(sprite->texture, 1);
     assert(sprite->texture->refcount == 0);
     free(sprite->texture);
@@ -81,15 +82,18 @@
 
 AscSceneNode *asc_text_create(struct asc_text_create_args args) {
     AscText *text = calloc(1, sizeof(AscText));
-    AscSceneNode *node = (AscSceneNode*) text;
+    AscSceneNode *node = &text->base.data;
 
+    // node properties
+    asc_scene_node_name(node, args.name);
     node->render_group = ASC_RENDER_GROUP_SPRITE_BLEND;
     node->destroy_func = asc_text_destroy;
     node->update_func = asc_text_update;
-
-    node->flags = args.alignment;
     node->position = asc_vec3f_new(args.x, args.y, ASC_SCENE_2D_DEPTH_OFFSET);
     node->scale.depth = 1.f;
+
+    // text properties
+    node->flags = args.alignment; // use flags variable to save some space
     text->max_width = args.max_width;
     text->font = asc_active_font;
     text->color = asc_context.ink;
@@ -99,8 +103,8 @@
         text->text = cx_mutstr(strdup(args.text));
     }
 
-    // initialize
-    asc_scene_node_name(node, args.name);
+    // initialize mesh and texture
+    asc_mesh_plane_2d(&text->base.mesh);
     text->base.texture = malloc(sizeof(AscTexture));
     asc_texture_init_rectangle(text->base.texture, 1);
     asc_text_update(node);

mercurial