#ifdef IS_CLOSE
#undef IS_CLOSE
#endif
-#define IS_CLOSE(x, y) (abs((x - y)) < 2)
+#define IS_CLOSE(x, y, m) (abs((x - y)) < m)
#ifdef IS_PORTRAIT_RECT
#undef IS_PORTRAIT_RECT
#endif
-#define IS_PORTRAIT_RECT(p) \
- (IS_CLOSE(p[0].y, p[1].y) && IS_CLOSE(p[1].x, p[2].x) && \
- IS_CLOSE(p[2].y, p[3].y) && IS_CLOSE(p[3].x, p[0].x))
+#define IS_PORTRAIT_RECT(p, m) \
+ (IS_CLOSE(p[0].y, p[1].y, m) && IS_CLOSE(p[1].x, p[2].x, m) && \
+ IS_CLOSE(p[2].y, p[3].y, m) && IS_CLOSE(p[3].x, p[0].x, m))
#ifdef IS_LANDSCAPE_RECT
#undef IS_LANDSCAPE_RECT
#endif
-#define IS_LANDSCAPE_RECT(p) \
- (IS_CLOSE(p[0].x, p[1].x) && IS_CLOSE(p[1].y, p[2].y) && \
- IS_CLOSE(p[2].x, p[3].x) && IS_CLOSE(p[3].y, p[0].y))
+#define IS_LANDSCAPE_RECT(p, m) \
+ (IS_CLOSE(p[0].x, p[1].x, m) && IS_CLOSE(p[1].y, p[2].y, m) && \
+ IS_CLOSE(p[2].x, p[3].x, m) && IS_CLOSE(p[3].y, p[0].y, m))
#ifdef VERTICES_TO_RECT
#undef VERTICES_TO_RECT
#endif
-#define VERTICES_TO_RECT(r, vs) \
- r->x = MIN(vs[0].x, vs[2].x); \
- r->y = MIN(vs[0].y, vs[2].y); \
- r->w = MAX(vs[0].x, vs[2].x) - r->x; \
- r->h = MAX(vs[0].y, vs[2].y) - r->y
+#define VERTICES_TO_RECT(r, vs) \
+ (r)->x = MIN(vs[0].x, vs[2].x); \
+ (r)->y = MIN(vs[0].y, vs[2].y); \
+ (r)->w = MAX(vs[0].x, vs[2].x) - (r)->x; \
+ (r)->h = MAX(vs[0].y, vs[2].y) - (r)->y
static Eina_Bool
_e_video_hwc_coords_to_rectangle_convert(Evas_Point p[4], Eina_Rectangle *rect, uint *transform)
{
+ Eina_Rectangle boundary = {0,};
Eina_Bool ret = EINA_FALSE;
+ int margin = 2;
- if (IS_PORTRAIT_RECT(p))
+ VERTICES_TO_RECT(&boundary, p);
+ if ((boundary.w < 2) || (boundary.h < 2))
+ margin = 1;
+
+ if (IS_PORTRAIT_RECT(p, margin))
{
/* 0 or 180 */
if ((p[0].x < p[2].x) && (p[0].y < p[2].y))
ret = EINA_TRUE;
}
}
- else if (IS_LANDSCAPE_RECT(p))
+ else if (IS_LANDSCAPE_RECT(p, margin))
{
/* 90 or 270 */
if ((p[0].x > p[2].x) && (p[0].y < p[2].y))