84 if (surface == NULL) { |
84 if (surface == NULL) { |
85 asc_error("Rendering TTF surface failed: %s", SDL_GetError()); |
85 asc_error("Rendering TTF surface failed: %s", SDL_GetError()); |
86 return; |
86 return; |
87 } |
87 } |
88 if (asc_test_flag(text->base.flags, ASC_TEXT_CENTERED_FLAG)) { |
88 if (asc_test_flag(text->base.flags, ASC_TEXT_CENTERED_FLAG)) { |
89 asc_node_set_origin(node, ASC_VEC3F(surface->w / 2, 0, 0)); |
89 asc_scene_node_set_origin(node, ASC_VEC3F(surface->w / 2, 0, 0)); |
90 } |
90 } |
91 |
91 |
92 // Transfer Image Data |
92 // Transfer Image Data |
93 asc_texture_from_surface(text->texture, surface); |
93 asc_texture_from_surface(text->texture, surface); |
94 |
94 |
105 |
105 |
106 // Free the surface |
106 // Free the surface |
107 SDL_FreeSurface(surface); |
107 SDL_FreeSurface(surface); |
108 |
108 |
109 // Schedule for transform update |
109 // Schedule for transform update |
110 asc_node_update_transform(node); |
110 asc_scene_node_update_transform(node); |
111 } |
111 } |
112 |
112 |
113 static void asc_text_draw(const AscCamera *camera, const AscSceneNode *node) { |
113 static void asc_text_draw(const AscCamera *camera, const AscSceneNode *node) { |
114 asc_cptr_cast(AscText, text, node); |
114 asc_cptr_cast(AscText, text, node); |
115 |
115 |
180 AscText *node, |
180 AscText *node, |
181 enum asc_text_alignment alignment |
181 enum asc_text_alignment alignment |
182 ) { |
182 ) { |
183 asc_ptr_cast(AscSceneNode, snode, node); |
183 asc_ptr_cast(AscSceneNode, snode, node); |
184 asc_set_flag_masked(snode->flags, ASC_TEXT_ALIGNMENT_MASK, alignment); |
184 asc_set_flag_masked(snode->flags, ASC_TEXT_ALIGNMENT_MASK, alignment); |
185 asc_node_update(snode); |
185 asc_scene_node_update(snode); |
186 } |
186 } |
187 |
187 |
188 void asc_text_centered(AscText *node, bool centered) { |
188 void asc_text_centered(AscText *node, bool centered) { |
189 asc_ptr_cast(AscSceneNode, snode, node); |
189 asc_ptr_cast(AscSceneNode, snode, node); |
190 if (centered) { |
190 if (centered) { |
191 asc_clear_flag(snode->flags, ASC_TEXT_ALIGN_CENTERED); |
191 asc_clear_flag(snode->flags, ASC_TEXT_ALIGN_CENTERED); |
192 } else { |
192 } else { |
193 asc_set_flag(snode->flags, ASC_TEXT_ALIGN_CENTERED); |
193 asc_set_flag(snode->flags, ASC_TEXT_ALIGN_CENTERED); |
194 } |
194 } |
195 asc_node_update(snode); |
195 asc_scene_node_update(snode); |
196 } |
196 } |
197 |
197 |
198 void asc_text_max_width(AscText *node, unsigned max_width) { |
198 void asc_text_max_width(AscText *node, unsigned max_width) { |
199 node->max_width = max_width; |
199 node->max_width = max_width; |
200 asc_node_update((AscSceneNode*)node); |
200 asc_scene_node_update((AscSceneNode*)node); |
201 } |
201 } |
202 |
202 |
203 void asc_text_printf( |
203 void asc_text_printf( |
204 AscText *node, |
204 AscText *node, |
205 const char *format, |
205 const char *format, |