32 #include "ascension/error.h" |
32 #include "ascension/error.h" |
33 #include "ascension/shader.h" |
33 #include "ascension/shader.h" |
34 |
34 |
35 #include <assert.h> |
35 #include <assert.h> |
36 |
36 |
|
37 // TODO: add "origin" arguments to 2D primitives |
|
38 |
37 typedef struct asc_rectangle_shader_s { |
39 typedef struct asc_rectangle_shader_s { |
38 AscShaderProgram program; |
40 AscShaderProgram program; |
39 asc_uniform_loc color; |
41 asc_uniform_loc color; |
40 asc_uniform_loc border_color; |
42 asc_uniform_loc border_color; |
41 asc_uniform_loc size; |
43 asc_uniform_loc size; |
186 // use the active ink |
188 // use the active ink |
187 rectangle->border_color = rectangle->color; |
189 rectangle->border_color = rectangle->color; |
188 } |
190 } |
189 |
191 |
190 AscSceneNode *node = &rectangle->node; |
192 AscSceneNode *node = &rectangle->node; |
191 asc_transform_identity(node->transform); |
193 node->position = ASC_VEC3F(pos_x, pos_y, ASC_SCENE_2D_DEPTH_OFFSET); |
192 asc_transform_translate3f(node->transform, |
194 node->scale = ASC_VEC3F_1; |
193 ASC_VEC3F(pos_x, pos_y, ASC_SCENE_2D_DEPTH_OFFSET)); |
195 asc_mat4f_unit(node->rotation); |
194 node->render_group = asc_context.ink.alpha < 255 |
196 node->render_group = asc_context.ink.alpha < 255 |
195 ? ASC_RENDER_GROUP_2D_BLEND |
197 ? ASC_RENDER_GROUP_2D_BLEND |
196 : ASC_RENDER_GROUP_2D_OPAQUE; |
198 : ASC_RENDER_GROUP_2D_OPAQUE; |
197 node->update_func = asc_rectangle_update; |
199 node->update_func = asc_rectangle_update; |
198 node->destroy_func = asc_rectangle_destroy; |
200 node->destroy_func = asc_rectangle_destroy; |
342 // use the active ink |
344 // use the active ink |
343 ellipsis->border_color = ellipsis->color; |
345 ellipsis->border_color = ellipsis->color; |
344 } |
346 } |
345 |
347 |
346 AscSceneNode *node = &ellipsis->node; |
348 AscSceneNode *node = &ellipsis->node; |
347 asc_transform_identity(node->transform); |
349 node->position = ASC_VEC3F(pos_x, pos_y, ASC_SCENE_2D_DEPTH_OFFSET); |
348 asc_transform_translate3f(node->transform, |
350 node->scale = ASC_VEC3F_1; |
349 ASC_VEC3F(pos_x, pos_y, ASC_SCENE_2D_DEPTH_OFFSET)); |
351 asc_mat4f_unit(node->rotation); |
350 node->render_group = asc_context.ink.alpha < 255 |
352 node->render_group = asc_context.ink.alpha < 255 |
351 ? ASC_RENDER_GROUP_2D_BLEND |
353 ? ASC_RENDER_GROUP_2D_BLEND |
352 : ASC_RENDER_GROUP_2D_OPAQUE; |
354 : ASC_RENDER_GROUP_2D_OPAQUE; |
353 node->update_func = asc_ellipsis_update; |
355 node->update_func = asc_ellipsis_update; |
354 node->destroy_func = asc_ellipsis_destroy; |
356 node->destroy_func = asc_ellipsis_destroy; |