evas/evas_map - added magic check

SVN revision: 60390
This commit is contained in:
ChunEon Park 2011-06-16 12:08:46 +00:00
parent eac7a5832d
commit 81672eac1c
3 changed files with 104 additions and 40 deletions

View File

@ -119,6 +119,7 @@ _evas_map_new(int count)
m->persp.foc = 0; m->persp.foc = 0;
m->alpha = 1; m->alpha = 1;
m->smooth = 1; m->smooth = 1;
m->magic = MAGIC_MAP;
for (i = 0; i < count; i++) for (i = 0; i < count; i++)
{ {
m->points[i].r = 255; m->points[i].r = 255;
@ -212,6 +213,10 @@ Eina_Bool
evas_map_coords_get(const Evas_Map *m, Evas_Coord x, Evas_Coord y, evas_map_coords_get(const Evas_Map *m, Evas_Coord x, Evas_Coord y,
Evas_Coord *mx, Evas_Coord *my, int grab) Evas_Coord *mx, Evas_Coord *my, int grab)
{ {
MAGIC_CHECK(m, Evas_Map, MAGIC_MAP);
return EINA_FALSE;
MAGIC_CHECK_END();
int i, j, edges, edge[m->count][2], douv; int i, j, edges, edge[m->count][2], douv;
Evas_Coord xe[2]; Evas_Coord xe[2];
double u[2] = { 0.0, 0.0 }; double u[2] = { 0.0, 0.0 };
@ -489,57 +494,82 @@ evas_map_new(int count)
EAPI void EAPI void
evas_map_smooth_set(Evas_Map *m, Eina_Bool enabled) evas_map_smooth_set(Evas_Map *m, Eina_Bool enabled)
{ {
if (!m) return; MAGIC_CHECK(m, Evas_Map, MAGIC_MAP);
return;
MAGIC_CHECK_END();
m->smooth = enabled; m->smooth = enabled;
} }
EAPI Eina_Bool EAPI Eina_Bool
evas_map_smooth_get(const Evas_Map *m) evas_map_smooth_get(const Evas_Map *m)
{ {
if (!m) return 0; MAGIC_CHECK(m, Evas_Map, MAGIC_MAP);
return EINA_FALSE;
MAGIC_CHECK_END();
return m->smooth; return m->smooth;
} }
EAPI void EAPI void
evas_map_alpha_set(Evas_Map *m, Eina_Bool enabled) evas_map_alpha_set(Evas_Map *m, Eina_Bool enabled)
{ {
if (!m) return; MAGIC_CHECK(m, Evas_Map, MAGIC_MAP);
return;
MAGIC_CHECK_END();
m->alpha = enabled; m->alpha = enabled;
} }
EAPI Eina_Bool EAPI Eina_Bool
evas_map_alpha_get(const Evas_Map *m) evas_map_alpha_get(const Evas_Map *m)
{ {
if (!m) return 0; MAGIC_CHECK(m, Evas_Map, MAGIC_MAP);
return EINA_FALSE;
MAGIC_CHECK_END();
return m->alpha; return m->alpha;
} }
EAPI Evas_Map * EAPI Evas_Map *
evas_map_dup(const Evas_Map *m) evas_map_dup(const Evas_Map *m)
{ {
if (!m) return NULL; MAGIC_CHECK(m, Evas_Map, MAGIC_MAP);
return;
MAGIC_CHECK_END();
return _evas_map_dup(m); return _evas_map_dup(m);
} }
EAPI void EAPI void
evas_map_free(Evas_Map *m) evas_map_free(Evas_Map *m)
{ {
if (!m) return; MAGIC_CHECK(m, Evas_Map, MAGIC_MAP);
return;
MAGIC_CHECK_END();
_evas_map_free(NULL, m); _evas_map_free(NULL, m);
} }
EAPI int EAPI int
evas_map_count_get(const Evas_Map *m) evas_map_count_get(const Evas_Map *m)
{ {
if (!m) return -1; MAGIC_CHECK(m, Evas_Map, MAGIC_MAP);
return -1;
MAGIC_CHECK_END();
return m->count; return m->count;
} }
EAPI void EAPI void
evas_map_point_coord_set(Evas_Map *m, int idx, Evas_Coord x, Evas_Coord y, Evas_Coord z) evas_map_point_coord_set(Evas_Map *m, int idx, Evas_Coord x, Evas_Coord y, Evas_Coord z)
{ {
MAGIC_CHECK(m, Evas_Map, MAGIC_MAP);
return;
MAGIC_CHECK_END();
Evas_Map_Point *p; Evas_Map_Point *p;
if (!m) return;
if (idx >= m->count) return; if (idx >= m->count) return;
p = m->points + idx; p = m->points + idx;
p->x = p->px = x; p->x = p->px = x;
@ -550,9 +580,12 @@ evas_map_point_coord_set(Evas_Map *m, int idx, Evas_Coord x, Evas_Coord y, Evas_
EAPI void EAPI void
evas_map_point_coord_get(const Evas_Map *m, int idx, Evas_Coord *x, Evas_Coord *y, Evas_Coord *z) evas_map_point_coord_get(const Evas_Map *m, int idx, Evas_Coord *x, Evas_Coord *y, Evas_Coord *z)
{ {
MAGIC_CHECK(m, Evas_Map, MAGIC_MAP);
goto error;
MAGIC_CHECK_END();
const Evas_Map_Point *p; const Evas_Map_Point *p;
if (!m) goto error;
if (idx >= m->count) goto error; if (idx >= m->count) goto error;
p = m->points + idx; p = m->points + idx;
if (x) *x = p->x; if (x) *x = p->x;
@ -569,8 +602,12 @@ evas_map_point_coord_get(const Evas_Map *m, int idx, Evas_Coord *x, Evas_Coord *
EAPI void EAPI void
evas_map_point_image_uv_set(Evas_Map *m, int idx, double u, double v) evas_map_point_image_uv_set(Evas_Map *m, int idx, double u, double v)
{ {
MAGIC_CHECK(m, Evas_Map, MAGIC_MAP);
return;
MAGIC_CHECK_END();
Evas_Map_Point *p; Evas_Map_Point *p;
if (!m) return;
if (idx >= m->count) return; if (idx >= m->count) return;
p = m->points + idx; p = m->points + idx;
p->u = u; p->u = u;
@ -580,8 +617,12 @@ evas_map_point_image_uv_set(Evas_Map *m, int idx, double u, double v)
EAPI void EAPI void
evas_map_point_image_uv_get(const Evas_Map *m, int idx, double *u, double *v) evas_map_point_image_uv_get(const Evas_Map *m, int idx, double *u, double *v)
{ {
MAGIC_CHECK(m, Evas_Map, MAGIC_MAP);
goto error;
MAGIC_CHECK_END();
const Evas_Map_Point *p; const Evas_Map_Point *p;
if (!m) goto error;
if (idx >= m->count) goto error; if (idx >= m->count) goto error;
p = m->points + idx; p = m->points + idx;
if (u) *u = p->u; if (u) *u = p->u;
@ -596,8 +637,12 @@ evas_map_point_image_uv_get(const Evas_Map *m, int idx, double *u, double *v)
EAPI void EAPI void
evas_map_point_color_set(Evas_Map *m, int idx, int r, int g, int b, int a) evas_map_point_color_set(Evas_Map *m, int idx, int r, int g, int b, int a)
{ {
MAGIC_CHECK(m, Evas_Map, MAGIC_MAP);
return;
MAGIC_CHECK_END();
Evas_Map_Point *p; Evas_Map_Point *p;
if (!m) return;
if (idx >= m->count) return; if (idx >= m->count) return;
p = m->points + idx; p = m->points + idx;
p->r = r; p->r = r;
@ -609,8 +654,12 @@ evas_map_point_color_set(Evas_Map *m, int idx, int r, int g, int b, int a)
EAPI void EAPI void
evas_map_point_color_get(const Evas_Map *m, int idx, int *r, int *g, int *b, int *a) evas_map_point_color_get(const Evas_Map *m, int idx, int *r, int *g, int *b, int *a)
{ {
MAGIC_CHECK(m, Evas_Map, MAGIC_MAP);
return;
MAGIC_CHECK_END();
const Evas_Map_Point *p; const Evas_Map_Point *p;
if (!m) return;
if (idx >= m->count) return; if (idx >= m->count) return;
p = m->points + idx; p = m->points + idx;
if (r) *r = p->r; if (r) *r = p->r;
@ -625,11 +674,7 @@ evas_map_util_points_populate_from_object_full(Evas_Map *m, const Evas_Object *o
MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
return; return;
MAGIC_CHECK_END(); MAGIC_CHECK_END();
if (!m)
{
ERR("map == NULL");
return;
}
if (m->count != 4) if (m->count != 4)
{ {
ERR("map has count=%d where 4 was expected.", m->count); ERR("map has count=%d where 4 was expected.", m->count);
@ -642,14 +687,14 @@ evas_map_util_points_populate_from_object_full(Evas_Map *m, const Evas_Object *o
EAPI void EAPI void
evas_map_util_points_populate_from_object(Evas_Map *m, const Evas_Object *obj) evas_map_util_points_populate_from_object(Evas_Map *m, const Evas_Object *obj)
{ {
MAGIC_CHECK(m, Evas_Map, MAGIC_MAP);
return;
MAGIC_CHECK_END();
MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
return; return;
MAGIC_CHECK_END(); MAGIC_CHECK_END();
if (!m)
{
ERR("map == NULL");
return;
}
if (m->count != 4) if (m->count != 4)
{ {
ERR("map has count=%d where 4 was expected.", m->count); ERR("map has count=%d where 4 was expected.", m->count);
@ -662,11 +707,10 @@ evas_map_util_points_populate_from_object(Evas_Map *m, const Evas_Object *obj)
EAPI void EAPI void
evas_map_util_points_populate_from_geometry(Evas_Map *m, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h, Evas_Coord z) evas_map_util_points_populate_from_geometry(Evas_Map *m, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h, Evas_Coord z)
{ {
if (!m) MAGIC_CHECK(m, Evas_Map, MAGIC_MAP);
{ return;
ERR("map == NULL"); MAGIC_CHECK_END();
return;
}
if (m->count != 4) if (m->count != 4)
{ {
ERR("map has count=%d where 4 was expected.", m->count); ERR("map has count=%d where 4 was expected.", m->count);
@ -678,12 +722,12 @@ evas_map_util_points_populate_from_geometry(Evas_Map *m, Evas_Coord x, Evas_Coor
EAPI void EAPI void
evas_map_util_points_color_set(Evas_Map *m, int r, int g, int b, int a) evas_map_util_points_color_set(Evas_Map *m, int r, int g, int b, int a)
{ {
MAGIC_CHECK(m, Evas_Map, MAGIC_MAP);
return;
MAGIC_CHECK_END();
Evas_Map_Point *p, *p_end; Evas_Map_Point *p, *p_end;
if (!m)
{
ERR("map == NULL");
return;
}
p = m->points; p = m->points;
p_end = p + m->count; p_end = p + m->count;
for (; p < p_end; p++) for (; p < p_end; p++)
@ -698,10 +742,13 @@ evas_map_util_points_color_set(Evas_Map *m, int r, int g, int b, int a)
EAPI void EAPI void
evas_map_util_rotate(Evas_Map *m, double degrees, Evas_Coord cx, Evas_Coord cy) evas_map_util_rotate(Evas_Map *m, double degrees, Evas_Coord cx, Evas_Coord cy)
{ {
MAGIC_CHECK(m, Evas_Map, MAGIC_MAP);
return;
MAGIC_CHECK_END();
double r = (degrees * M_PI) / 180.0; double r = (degrees * M_PI) / 180.0;
Evas_Map_Point *p, *p_end; Evas_Map_Point *p, *p_end;
if (!m) return;
p = m->points; p = m->points;
p_end = p + m->count; p_end = p + m->count;
@ -725,9 +772,12 @@ evas_map_util_rotate(Evas_Map *m, double degrees, Evas_Coord cx, Evas_Coord cy)
EAPI void EAPI void
evas_map_util_zoom(Evas_Map *m, double zoomx, double zoomy, Evas_Coord cx, Evas_Coord cy) evas_map_util_zoom(Evas_Map *m, double zoomx, double zoomy, Evas_Coord cx, Evas_Coord cy)
{ {
MAGIC_CHECK(m, Evas_Map, MAGIC_MAP);
return;
MAGIC_CHECK_END();
Evas_Map_Point *p, *p_end; Evas_Map_Point *p, *p_end;
if (!m) return;
p = m->points; p = m->points;
p_end = p + m->count; p_end = p + m->count;
@ -750,12 +800,15 @@ EAPI void
evas_map_util_3d_rotate(Evas_Map *m, double dx, double dy, double dz, evas_map_util_3d_rotate(Evas_Map *m, double dx, double dy, double dz,
Evas_Coord cx, Evas_Coord cy, Evas_Coord cz) Evas_Coord cx, Evas_Coord cy, Evas_Coord cz)
{ {
MAGIC_CHECK(m, Evas_Map, MAGIC_MAP);
return;
MAGIC_CHECK_END();
double rz = (dz * M_PI) / 180.0; double rz = (dz * M_PI) / 180.0;
double rx = (dx * M_PI) / 180.0; double rx = (dx * M_PI) / 180.0;
double ry = (dy * M_PI) / 180.0; double ry = (dy * M_PI) / 180.0;
Evas_Map_Point *p, *p_end; Evas_Map_Point *p, *p_end;
if (!m) return;
p = m->points; p = m->points;
p_end = p + m->count; p_end = p + m->count;
@ -802,9 +855,11 @@ evas_map_util_3d_lighting(Evas_Map *m,
Evas_Coord lx, Evas_Coord ly, Evas_Coord lz, Evas_Coord lx, Evas_Coord ly, Evas_Coord lz,
int lr, int lg, int lb, int ar, int ag, int ab) int lr, int lg, int lb, int ar, int ag, int ab)
{ {
int i; MAGIC_CHECK(m, Evas_Map, MAGIC_MAP);
return;
MAGIC_CHECK_END();
if (!m) return; int i;
for (i = 0; i < m->count; i++) for (i = 0; i < m->count; i++)
{ {
@ -879,9 +934,12 @@ evas_map_util_3d_perspective(Evas_Map *m,
Evas_Coord px, Evas_Coord py, Evas_Coord px, Evas_Coord py,
Evas_Coord z0, Evas_Coord foc) Evas_Coord z0, Evas_Coord foc)
{ {
MAGIC_CHECK(m, Evas_Map, MAGIC_MAP);
return;
MAGIC_CHECK_END();
Evas_Map_Point *p, *p_end; Evas_Map_Point *p, *p_end;
if (!m) return;
p = m->points; p = m->points;
p_end = p + m->count; p_end = p + m->count;
@ -915,10 +973,12 @@ evas_map_util_3d_perspective(Evas_Map *m,
EAPI Eina_Bool EAPI Eina_Bool
evas_map_util_clockwise_get(Evas_Map *m) evas_map_util_clockwise_get(Evas_Map *m)
{ {
MAGIC_CHECK(m, Evas_Map, MAGIC_MAP);
return EINA_FALSE;
MAGIC_CHECK_END();
int i, j, k, count; int i, j, k, count;
long long c; long long c;
if (!m) return 0;
if (m->count < 3) return 0; if (m->count < 3) return 0;
count = 0; count = 0;

View File

@ -68,6 +68,7 @@ OPAQUE_TYPE(Evas_Font_Instance); /* General type for RGBA_Font_Int */
#define MAGIC_OBJ_CONTAINER 0x72777774 #define MAGIC_OBJ_CONTAINER 0x72777774
#define MAGIC_OBJ_CUSTOM 0x72777775 #define MAGIC_OBJ_CUSTOM 0x72777775
#define MAGIC_EVAS_GL 0x72777776 #define MAGIC_EVAS_GL 0x72777776
#define MAGIC_MAP 0x72777777
#ifdef MAGIC_DEBUG #ifdef MAGIC_DEBUG
# define MAGIC_CHECK_FAILED(o, t, m) \ # define MAGIC_CHECK_FAILED(o, t, m) \
@ -376,6 +377,7 @@ struct _Evas_Map_Point
struct _Evas_Map struct _Evas_Map
{ {
DATA32 magic;
int count; // num of points int count; // num of points
Evas_Coord_Rectangle normal_geometry; // bounding box of map geom actually Evas_Coord_Rectangle normal_geometry; // bounding box of map geom actually
void *surface; // surface holding map if needed void *surface; // surface holding map if needed

View File

@ -147,6 +147,8 @@ evas_debug_magic_string_get(DATA32 magic)
case MAGIC_OBJ_SMART: case MAGIC_OBJ_SMART:
return "Evas_Object (Smart)"; return "Evas_Object (Smart)";
break; break;
case MAGIC_MAP:
return "Evas_Map";
default: default:
return "<UNKNOWN>"; return "<UNKNOWN>";
}; };