Eina_Bool ch = EINA_FALSE;
if (!obj->cur.map) return;
- /*
if (obj->prev.map)
{
// FIXME: this causes an infinite loop somewhere... hard to debug
}
else
ch = 1;
- */
p = obj->cur.map->points;
p_end = p + obj->cur.map->count;
free(m);
}
+/****************************************************************************/
+/* util functions for manipulating maps, so you don't need to know the math */
+/****************************************************************************/
+static inline void
+_evas_map_util_points_populate(Evas_Map *m, const Evas_Coord x, const Evas_Coord y, const Evas_Coord w, const Evas_Coord h, const Evas_Coord z)
+{
+ Evas_Map_Point *p = m->points;
+ int i;
+
+ p[0].x = x;
+ p[0].y = y;
+ p[0].z = z;
+ p[0].u = 0.0;
+ p[0].v = 0.0;
+
+ p[1].x = x + w;
+ p[1].y = y;
+ p[1].z = z;
+ p[1].u = w;
+ p[1].v = 0.0;
+
+ p[2].x = x + w;
+ p[2].y = y + h;
+ p[2].z = z;
+ p[2].u = w;
+ p[2].v = h;
+
+ p[3].x = x;
+ p[3].y = y + h;
+ p[3].z = z;
+ p[3].u = 0.0;
+ p[3].v = h;
+
+ for (i = 0; i < 4; i++)
+ {
+ p[i].px = p[i].x;
+ p[i].py = p[i].y;
+ }
+}
+
Eina_Bool
evas_map_coords_get(const Evas_Map *m, Evas_Coord x, Evas_Coord y,
Evas_Coord *mx, Evas_Coord *my, int grab)
*my = v[0] + (((x - xe[0]) * (v[1] - v[0])) /
(xe[1] - xe[0]));
}
- return 1;
+ return EINA_TRUE;
}
if (grab)
{
*my = v[0] + (((x - xe[0]) * (v[1] - v[0])) /
(xe[1] - xe[0]));
}
- return 1;
+ return EINA_TRUE;
}
}
- return 0;
+ return EINA_FALSE;
}
Eina_Bool
return evas_map_coords_get(m, x, y, NULL, NULL, 0);
}
-
EAPI void
evas_object_map_enable_set(Evas_Object *obj, Eina_Bool enabled)
{
MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
return;
MAGIC_CHECK_END();
+
enabled = !!enabled;
if (obj->cur.usemap == enabled) return;
obj->cur.usemap = enabled;
evas_object_map_enable_get(const Evas_Object *obj)
{
MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
- return 0;
+ return EINA_FALSE;
MAGIC_CHECK_END();
return obj->cur.usemap;
}
MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
return;
MAGIC_CHECK_END();
+
if (!map)
{
if (obj->cur.map)
return;
}
- if (obj->cur.map && obj->cur.map->count == map->count)
+ if ((obj->cur.map) && (obj->cur.map->count == map->count))
{
Evas_Map *omap = obj->cur.map;
obj->cur.map = _evas_map_new(map->count);
MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
return NULL;
MAGIC_CHECK_END();
- if (obj->cur.map) return obj->cur.map;
- return NULL;
+
+ return obj->cur.map;
}
EAPI Evas_Map *
ERR("map point count (%i) != 4 is unsupported!", count);
return NULL;
}
+
return _evas_map_new(count);
}
MAGIC_CHECK_END();
Evas_Map_Point *p;
- if (!m) return;
+
if (idx >= m->count) return;
p = m->points + idx;
p->x = p->px = x;
const Evas_Map_Point *p;
- if (!m) goto error;
if (idx >= m->count) goto error;
p = m->points + idx;
if (x) *x = p->x;
MAGIC_CHECK_END();
Evas_Map_Point *p;
- if (!m) return;
+
if (idx >= m->count) return;
p = m->points + idx;
p->u = u;
MAGIC_CHECK_END();
const Evas_Map_Point *p;
- if (!m) goto error;
+
if (idx >= m->count) goto error;
p = m->points + idx;
if (u) *u = p->u;
MAGIC_CHECK_END();
Evas_Map_Point *p;
- if (!m) return;
+
if (idx >= m->count) return;
p = m->points + idx;
p->r = r;
MAGIC_CHECK_END();
const Evas_Map_Point *p;
- if (!m) return;
+
if (idx >= m->count) return;
p = m->points + idx;
if (r) *r = p->r;
if (a) *a = p->a;
}
-/****************************************************************************/
-/* util functions for manipulating maps, so you don't need to know the math */
-/****************************************************************************/
-static inline void
-_evas_map_util_points_populate(Evas_Map *m, const Evas_Coord x, const Evas_Coord y, const Evas_Coord w, const Evas_Coord h, const Evas_Coord z)
-{
- Evas_Map_Point *p = m->points;
- int i;
-
- p[0].x = x;
- p[0].y = y;
- p[0].z = z;
- p[0].u = 0.0;
- p[0].v = 0.0;
-
- p[1].x = x + w;
- p[1].y = y;
- p[1].z = z;
- p[1].u = w;
- p[1].v = 0.0;
-
- p[2].x = x + w;
- p[2].y = y + h;
- p[2].z = z;
- p[2].u = w;
- p[2].v = h;
-
- p[3].x = x;
- p[3].y = y + h;
- p[3].z = z;
- p[3].u = 0.0;
- p[3].v = h;
-
- for (i = 0; i < 4; i++)
- {
- p[i].px = p[i].x;
- p[i].py = p[i].y;
- }
-}
-
EAPI void
evas_map_util_points_populate_from_object_full(Evas_Map *m, const Evas_Object *obj, Evas_Coord z)
{
MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
return;
MAGIC_CHECK_END();
- if (!m)
- {
- ERR("map == NULL");
- return;
- }
+
if (m->count != 4)
{
ERR("map has count=%d where 4 was expected.", m->count);
MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
return;
MAGIC_CHECK_END();
- if (!m)
- {
- ERR("map == NULL");
- return;
- }
+
if (m->count != 4)
{
ERR("map has count=%d where 4 was expected.", m->count);
MAGIC_CHECK_END();
Evas_Map_Point *p, *p_end;
- if (!m)
- {
- ERR("map == NULL");
- return;
- }
+
p = m->points;
p_end = p + m->count;
for (; p < p_end; p++)
double r = (degrees * M_PI) / 180.0;
Evas_Map_Point *p, *p_end;
- if (!m) return;
p = m->points;
p_end = p + m->count;
x = p->x - cx;
y = p->y - cy;
- xx = (x * cos(r));
- yy = (x * sin(r));
- x = xx + (y * cos(r + (M_PI / 2.0)));
- y = yy + (y * sin(r + (M_PI / 2.0)));
+ xx = x * cos(r);
+ yy = x * sin(r);
+ x = xx - (y * sin(r));
+ y = yy + (y * cos(r));
p->px = p->x = x + cx;
p->py = p->y = y + cy;
Evas_Map_Point *p, *p_end;
- if (!m) return;
p = m->points;
p_end = p + m->count;
double ry = (dy * M_PI) / 180.0;
Evas_Map_Point *p, *p_end;
- if (!m) return;
p = m->points;
p_end = p + m->count;
int i;
- if (!m) return;
-
for (i = 0; i < m->count; i++)
{
double x, y, z;
Evas_Map_Point *p, *p_end;
- if (!m) return;
p = m->points;
p_end = p + m->count;
m->persp.py = py;
m->persp.z0 = z0;
m->persp.foc = foc;
+
+ if (foc <= 0) return;
+
for (; p < p_end; p++)
{
double x, y, zz;
- if (foc > 0)
- {
- x = p->x - px;
- y = p->y - py;
-
- zz = ((p->z - z0) + foc);
+ x = p->x - px;
+ y = p->y - py;
- if (zz > 0)
- {
- x = (x * foc) / zz;
- y = (y * foc) / zz;
- }
+ zz = ((p->z - z0) + foc);
- p->x = px + x;
- p->y = py + y;
+ if (zz > 0)
+ {
+ x = (x * foc) / zz;
+ y = (y * foc) / zz;
}
+
+ p->x = px + x;
+ p->y = py + y;
}
}
int i, j, k, count;
long long c;
- if (!m) return 0;
- if (m->count < 3) return 0;
+ if (m->count < 3) return EINA_FALSE;
count = 0;
for (i = 0; i < m->count; i++)
if (c < 0) count--;
else if (c > 0) count++;
}
- if (count > 0) return 1;
- return 0;
+ if (count > 0) return EINA_TRUE;
+ return EINA_FALSE;
}