diff --git a/src/lib/evas/canvas/evas_3d_camera.c b/src/lib/evas/canvas/evas_3d_camera.c index 8e84e68609..617375c210 100644 --- a/src/lib/evas/canvas/evas_3d_camera.c +++ b/src/lib/evas/canvas/evas_3d_camera.c @@ -44,8 +44,8 @@ evas_3d_camera_node_add(Evas_3D_Camera *camera, Evas_3D_Node *node) return; } } - else count = (int)eina_hash_find(pd->nodes, &node); - eina_hash_set(pd->nodes, &node, (const void *)(count + 1)); + else count = (int)(uintptr_t)eina_hash_find(pd->nodes, &node); + eina_hash_set(pd->nodes, &node, (const void *)(uintptr_t)(count + 1)); } void @@ -60,9 +60,9 @@ evas_3d_camera_node_del(Evas_3D_Camera *camera, Evas_3D_Node *node) return; } - count = (int)eina_hash_find(pd->nodes, &node); + count = (int)(uintptr_t)eina_hash_find(pd->nodes, &node); if (count == 1) eina_hash_del(pd->nodes, &node, NULL); - else eina_hash_set(pd->nodes, &node, (const void *)(count - 1)); + else eina_hash_set(pd->nodes, &node, (const void *)(uintptr_t)(count - 1)); } EOLIAN static void diff --git a/src/lib/evas/canvas/evas_3d_light.c b/src/lib/evas/canvas/evas_3d_light.c index 7cf2966caf..37d0b62fe9 100644 --- a/src/lib/evas/canvas/evas_3d_light.c +++ b/src/lib/evas/canvas/evas_3d_light.c @@ -50,9 +50,9 @@ evas_3d_light_node_add(Evas_3D_Light *light, Evas_3D_Node *node) } } else - count = (int)eina_hash_find(pd->nodes, &node); + count = (int)(uintptr_t)eina_hash_find(pd->nodes, &node); - eina_hash_set(pd->nodes, &node, (const void *)(count + 1)); + eina_hash_set(pd->nodes, &node, (const void *)(uintptr_t)(count + 1)); } void @@ -66,12 +66,12 @@ evas_3d_light_node_del(Evas_3D_Light *light, Evas_3D_Node *node) return; } - count = (int)eina_hash_find(pd->nodes, &node); + count = (int)(uintptr_t)eina_hash_find(pd->nodes, &node); if (count == 1) eina_hash_del(pd->nodes, &node, NULL); else - eina_hash_set(pd->nodes, &node, (const void *)(count - 1)); + eina_hash_set(pd->nodes, &node, (const void *)(uintptr_t)(count - 1)); } @@ -248,4 +248,4 @@ _eo_evas_3d_light_attenuation_enable_get(Eo *obj EINA_UNUSED, Evas_3D_Light_Data return pd->enable_attenuation; } -#include "canvas/evas_3d_light.eo.c" \ No newline at end of file +#include "canvas/evas_3d_light.eo.c" diff --git a/src/lib/evas/canvas/evas_3d_material.c b/src/lib/evas/canvas/evas_3d_material.c index 8dfe00c082..d493cdbe9c 100644 --- a/src/lib/evas/canvas/evas_3d_material.c +++ b/src/lib/evas/canvas/evas_3d_material.c @@ -59,9 +59,9 @@ evas_3d_material_mesh_add(Evas_3D_Material *material, Evas_3D_Mesh *mesh) } } else - count = (int)eina_hash_find(pd->meshes, &mesh); + count = (int)(uintptr_t)eina_hash_find(pd->meshes, &mesh); - eina_hash_set(pd->meshes, &mesh, (const void *)(count + 1)); + eina_hash_set(pd->meshes, &mesh, (const void *)(uintptr_t)(count + 1)); } void @@ -76,12 +76,12 @@ evas_3d_material_mesh_del(Evas_3D_Material *material, Evas_3D_Mesh *mesh) return; } - count = (int)eina_hash_find(pd->meshes, &mesh); + count = (int)(uintptr_t)eina_hash_find(pd->meshes, &mesh); if (count == 1) eina_hash_del(pd->meshes, &mesh, NULL); else - eina_hash_set(pd->meshes, &mesh, (const void *)(count - 1)); + eina_hash_set(pd->meshes, &mesh, (const void *)(uintptr_t)(count - 1)); } diff --git a/src/lib/evas/canvas/evas_3d_mesh.c b/src/lib/evas/canvas/evas_3d_mesh.c index 1acde4365c..fc11d4557e 100644 --- a/src/lib/evas/canvas/evas_3d_mesh.c +++ b/src/lib/evas/canvas/evas_3d_mesh.c @@ -167,9 +167,9 @@ evas_3d_mesh_node_add(Evas_3D_Mesh *mesh, Evas_3D_Node *node) } } else - count = (int)eina_hash_find(pd->nodes, &node); + count = (int)(uintptr_t)eina_hash_find(pd->nodes, &node); - eina_hash_set(pd->nodes, &node, (const void *)(count + 1)); + eina_hash_set(pd->nodes, &node, (const void *)(uintptr_t)(count + 1)); } void @@ -183,12 +183,12 @@ evas_3d_mesh_node_del(Evas_3D_Mesh *mesh, Evas_3D_Node *node) return; } - count = (int)eina_hash_find(pd->nodes, &node); + count = (int)(uintptr_t)eina_hash_find(pd->nodes, &node); if (count == 1) eina_hash_del(pd->nodes, &node, NULL); else - eina_hash_set(pd->nodes, &node, (const void *)(count - 1)); + eina_hash_set(pd->nodes, &node, (const void *)(uintptr_t)(count - 1)); } diff --git a/src/lib/evas/canvas/evas_3d_node.c b/src/lib/evas/canvas/evas_3d_node.c index b854521371..02b8567d3c 100644 --- a/src/lib/evas/canvas/evas_3d_node.c +++ b/src/lib/evas/canvas/evas_3d_node.c @@ -316,9 +316,9 @@ evas_3d_node_scene_root_add(Evas_3D_Node *node, Evas_3D_Scene *scene) } } else - count = (int)eina_hash_find(pd->scenes_root, &scene); + count = (int)(uintptr_t)eina_hash_find(pd->scenes_root, &scene); - eina_hash_set(pd->scenes_root, &scene, (const void *)(count + 1)); + eina_hash_set(pd->scenes_root, &scene, (const void *)(uintptr_t)(count + 1)); } void @@ -332,12 +332,12 @@ evas_3d_node_scene_root_del(Evas_3D_Node *node, Evas_3D_Scene *scene) return; } - count = (int)eina_hash_find(pd->scenes_root, &scene); + count = (int)(uintptr_t)eina_hash_find(pd->scenes_root, &scene); if (count == 1) eina_hash_del(pd->scenes_root, &scene, NULL); else - eina_hash_set(pd->scenes_root, &scene, (const void *)(count - 1)); + eina_hash_set(pd->scenes_root, &scene, (const void *)(uintptr_t)(count - 1)); } void @@ -356,9 +356,9 @@ evas_3d_node_scene_camera_add(Evas_3D_Node *node, Evas_3D_Scene *scene) } } else - count = (int)eina_hash_find(pd->scenes_camera, &scene); + count = (int)(uintptr_t)eina_hash_find(pd->scenes_camera, &scene); - eina_hash_set(pd->scenes_camera, &scene, (const void *)(count + 1)); + eina_hash_set(pd->scenes_camera, &scene, (const void *)(uintptr_t)(count + 1)); } void @@ -372,12 +372,12 @@ evas_3d_node_scene_camera_del(Evas_3D_Node *node, Evas_3D_Scene *scene) return; } - count = (int)eina_hash_find(pd->scenes_camera, &scene); + count = (int)(uintptr_t)eina_hash_find(pd->scenes_camera, &scene); if (count == 1) eina_hash_del(pd->scenes_camera, &scene, NULL); else - eina_hash_set(pd->scenes_camera, &scene, (const void *)(count - 1)); + eina_hash_set(pd->scenes_camera, &scene, (const void *)(uintptr_t)(count - 1)); } void diff --git a/src/lib/evas/canvas/evas_3d_texture.c b/src/lib/evas/canvas/evas_3d_texture.c index f36f2e43c2..b1a8fef63c 100644 --- a/src/lib/evas/canvas/evas_3d_texture.c +++ b/src/lib/evas/canvas/evas_3d_texture.c @@ -262,10 +262,10 @@ evas_3d_texture_material_add(Evas_3D_Texture *texture, Evas_3D_Material *materia } } else - count = (int)eina_hash_find(pd->materials, &material); + count = (int)(uintptr_t)eina_hash_find(pd->materials, &material); /* Increase reference count or add new one if not exist. */ - eina_hash_set(pd->materials, &material, (const void *)(count + 1)); + eina_hash_set(pd->materials, &material, (const void *)(uintptr_t)(count + 1)); } void @@ -279,12 +279,12 @@ evas_3d_texture_material_del(Evas_3D_Texture *texture, Evas_3D_Material *materia return; } - count = (int)eina_hash_find(pd->materials, &material); + count = (int)(uintptr_t)eina_hash_find(pd->materials, &material); if (count == 1) eina_hash_del(pd->materials, &material, NULL); else - eina_hash_set(pd->materials, &material, (const void *)(count - 1)); + eina_hash_set(pd->materials, &material, (const void *)(uintptr_t)(count - 1)); } @@ -476,4 +476,4 @@ _eo_evas_3d_texture_filter_get(Eo *obj EINA_UNUSED, Evas_3D_Texture_Data *pd, Ev e->engine.func->texture_filter_get(e->engine.data.output, pd->engine_data, min, mag); } -#include "canvas/evas_3d_texture.eo.c" \ No newline at end of file +#include "canvas/evas_3d_texture.eo.c" diff --git a/src/lib/evas/include/evas_3d_utils.h b/src/lib/evas/include/evas_3d_utils.h index 68f3ccdb4e..a5f4214c1b 100644 --- a/src/lib/evas/include/evas_3d_utils.h +++ b/src/lib/evas/include/evas_3d_utils.h @@ -7,77 +7,89 @@ #define DEGREE_TO_RADIAN(x) (((x) * M_PI) / 180.0) #define EVAS_MATRIX_IS_IDENTITY 0x00000001 -typedef struct _Evas_Color +typedef struct _Evas_Color Evas_Color; +typedef struct _Evas_Vec2 Evas_Vec2; +typedef struct _Evas_Vec3 Evas_Vec3; +typedef struct _Evas_Vec4 Evas_Vec4; +typedef struct _Evas_Mat2 Evas_Mat2; +typedef struct _Evas_Mat3 Evas_Mat3; +typedef struct _Evas_Mat4 Evas_Mat4; +typedef struct _Evas_Box2 Evas_Box2; +typedef struct _Evas_Box3 Evas_Box3; +typedef struct _Evas_Triangle3 Evas_Triangle3; +typedef struct _Evas_Ray3 Evas_Ray3; + +struct _Evas_Color { Evas_Real r; Evas_Real g; Evas_Real b; Evas_Real a; -} Evas_Color; +}; -typedef struct _Evas_Vec2 +struct _Evas_Vec2 { Evas_Real x; Evas_Real y; -} Evas_Vec2; +}; -typedef struct _Evas_Vec3 +struct _Evas_Vec3 { Evas_Real x; Evas_Real y; Evas_Real z; -} Evas_Vec3; +}; -typedef struct _Evas_Vec4 +struct _Evas_Vec4 { Evas_Real x; Evas_Real y; Evas_Real z; Evas_Real w; -} Evas_Vec4; +}; -typedef struct _Evas_Mat2 +struct _Evas_Mat2 { Evas_Real m[4]; int flags; -} Evas_Mat2; +}; -typedef struct _Evas_Mat3 +struct _Evas_Mat3 { Evas_Real m[9]; int flags; -} Evas_Mat3; +}; -typedef struct _Evas_Mat4 +struct _Evas_Mat4 { Evas_Real m[16]; int flags; -} Evas_Mat4; +}; -typedef struct _Evas_Box2 +struct _Evas_Box2 { Evas_Vec2 p0; Evas_Vec2 p1; -} Evas_Box2; +}; -typedef struct _Evas_Box3 +struct _Evas_Box3 { Evas_Vec3 p0; Evas_Vec3 p1; -} Evas_Box3; +}; -typedef struct _Evas_Triangle3 +struct _Evas_Triangle3 { Evas_Vec3 p0; Evas_Vec3 p1; Evas_Vec3 p2; -} Evas_Triangle3; +}; -typedef struct _Evas_Ray3 +struct _Evas_Ray3 { Evas_Vec3 org; Evas_Vec3 dir; -} Evas_Ray3; +}; /* 2D vector */ static inline void @@ -1487,6 +1499,8 @@ evas_ray3_init(Evas_Ray3 *ray, Evas_Real x, Evas_Real y, const Evas_Mat4 *mvp) Evas_Mat4 mat; Evas_Vec4 near, far; + memset(&mat, 0, sizeof (mat)); + /* Get the matrix which transforms from normalized device coordinate to modeling coodrinate. */ evas_mat4_inverse(&mat, mvp);