-
#include "triangulator_stroker.h"
#include <math.h>
float dx = x2 - x1;
float dy = y2 - y1;
- if (dx == 0)
+ if (EINA_FLT_CMP(dx, 0))
pw = width / fabsf(dy);
- else if (dy == 0)
+ else if (EINA_FLT_CMP(dy, 0))
pw = width / fabsf(dx);
else
pw = width / sqrtf(dx*dx + dy*dy);
_skip_duplicate_points(const double **pts, const double *end_pts)
{
while ((*pts + 2) < end_pts && (*pts)[0] == (*pts)[2] &&
- (*pts)[1] == (*pts)[3])
+ EINA_FLT_CMP((*pts)[1], (*pts)[3]))
{
*pts += 2;
}
*implicit_close = EINA_TRUE;
// fall through
case EFL_GFX_PATH_COMMAND_TYPE_MOVE_TO:
- if ((pts[0] == pts[i]) && (pts[1] == pts[i+1]))
+ if (EINA_FLT_CMP(pts[0], pts[i]) && EINA_FLT_CMP(pts[1], pts[i+1]))
*ends_at_start = EINA_TRUE;
return;
default:
}
}
// this path is the last path with out implicit close.
- *ends_at_start = pts[0] == pts[i] &&
- pts[1] == pts[i+1];
+ *ends_at_start = EINA_FLT_CMP(pts[0], pts[i]) &&
+ EINA_FLT_CMP(pts[1], pts[i+1]);
}
void
break;
}
case EFL_GFX_PATH_COMMAND_TYPE_LINE_TO:
- if (stroker->cx != (float)pts[0] || stroker->cy != (float)pts[1])
+ if (!EINA_FLT_CMP(stroker->cx, pts[0]) || !EINA_FLT_CMP(stroker->cy, (float)pts[1]))
{
if (previous_type != EFL_GFX_PATH_COMMAND_TYPE_MOVE_TO)
add_join(stroker, pts[0], pts[1]);
pts+=2;
break;
case EFL_GFX_PATH_COMMAND_TYPE_CUBIC_TO:
- if (stroker->cx != (float)pts[0] || stroker->cy != (float)pts[1] ||
- (float)pts[0] != (float)pts[2] || (float)pts[1] != (float)pts[3] ||
- (float)pts[2] != (float)pts[4] || (float)pts[3] != (float)pts[5])
+ if (!EINA_FLT_CMP(stroker->cx, pts[0]) ||
+ !EINA_FLT_CMP(stroker->cy, pts[1]) ||
+ !EINA_FLT_CMP(pts[0], pts[2]) ||
+ !EINA_FLT_CMP(pts[1], pts[3]) ||
+ !EINA_FLT_CMP(pts[2], pts[4]) ||
+ !EINA_FLT_CMP(pts[3], pts[5]))
{
- if (stroker->cx != (float)pts[0] || stroker->cy != (float)pts[1])
+ if (!EINA_FLT_CMP(stroker->cx, pts[0]) ||
+ !EINA_FLT_CMP(stroker->cy, pts[1]))
{
if (previous_type != EFL_GFX_PATH_COMMAND_TYPE_MOVE_TO)
add_join(stroker, pts[0], pts[1]);