Tizen Native API  7.0

These functions provide rectangle management.

Functions

static int eina_spans_intersect (int c1, int l1, int c2, int l2)
 Checks if the given spans intersect.
static Eina_Bool eina_rectangle_is_empty (const Eina_Rectangle *rect)
 Checks if the given rectangle is empty.
static void eina_rectangle_coords_from (Eina_Rectangle *rect, int x, int y, int w, int h)
 Sets the coordinates and size of a rectangle.
static Eina_Bool eina_rectangles_intersect (const Eina_Rectangle *rect1, const Eina_Rectangle *rect2)
 Checks if two rectangles intersect.
static Eina_Bool eina_rectangle_xcoord_inside (const Eina_Rectangle *rect, int x)
 Checks if the given X-coordinate is in the rectangle.
static Eina_Bool eina_rectangle_ycoord_inside (const Eina_Rectangle *rect, int y)
 Checks if the given Y-coordinate is in the rectangle.
static Eina_Bool eina_rectangle_coords_inside (const Eina_Rectangle *rect, int x, int y)
 Checks if the given point is inside the rectangle.
static void eina_rectangle_union (Eina_Rectangle *dst, const Eina_Rectangle *src)
 Gets the union of two rectangles.
static Eina_Bool eina_rectangle_intersection (Eina_Rectangle *dst, const Eina_Rectangle *src)
 Gets the intersection of two rectangles.
static void eina_rectangle_rescale_in (const Eina_Rectangle *out, const Eina_Rectangle *in, Eina_Rectangle *res)
 FIXME I am useless and used by no one.
static void eina_rectangle_rescale_out (const Eina_Rectangle *out, const Eina_Rectangle *in, Eina_Rectangle *res)
 FIXME I am useless and used by no one.
static Eina_Bool eina_rectangle_is_valid (const Eina_Rectangle *rect)
 Tells whether a rectangle is valid.
static int eina_rectangle_max_x (Eina_Rectangle *rect)
 Gets the rectangle's maximum X coordinate.
static int eina_rectangle_max_y (Eina_Rectangle *rect)
 Gets the rectangle maximum Y coordinate.
static Eina_Bool eina_rectangle_x_cut (Eina_Rectangle *rect, Eina_Rectangle *slice, Eina_Rectangle *remainder, int amount)
 Slices a rectangle vertically into two subrectangles.
static Eina_Bool eina_rectangle_y_cut (Eina_Rectangle *rect, Eina_Rectangle *slice, Eina_Rectangle *remainder, int amount)
 Slices a rectangle horizontally into two subrectangles.
static Eina_Bool eina_rectangle_width_cut (Eina_Rectangle *rect, Eina_Rectangle *slice, Eina_Rectangle *remainder, int amount)
 Slices a rectangle vertically starting from right edge.
static Eina_Bool eina_rectangle_height_cut (Eina_Rectangle *rect, Eina_Rectangle *slice, Eina_Rectangle *remainder, int amount)
 Slices a rectangle horizontally starting from top edge.
static Eina_Bool eina_rectangle_subtract (Eina_Rectangle *rect, Eina_Rectangle *other, Eina_Rectangle out[4])
 Subtracts two rectangles and returns the differences.
Eina_Rectangle_Pooleina_rectangle_pool_new (int w, int h)
 Adds a rectangle in a new pool.
Eina_Rectangle_Pooleina_rectangle_pool_get (Eina_Rectangle *rect)
 Returns the pool of the given rectangle.
Eina_Bool eina_rectangle_pool_geometry_get (Eina_Rectangle_Pool *pool, int *w, int *h)
 Returns the width and height of the given pool.
void * eina_rectangle_pool_data_get (Eina_Rectangle_Pool *pool)
 Gets the data from the given pool.
void eina_rectangle_pool_data_set (Eina_Rectangle_Pool *pool, const void *data)
 Sets the data to the given pool.
void eina_rectangle_pool_free (Eina_Rectangle_Pool *pool)
 Frees the given pool.
int eina_rectangle_pool_count (Eina_Rectangle_Pool *pool)
 Returns the number of rectangles in the given pool.
Eina_Rectangleeina_rectangle_pool_request (Eina_Rectangle_Pool *pool, int w, int h)
 Requests a rectangle of given size in the given pool.
void eina_rectangle_pool_release (Eina_Rectangle *rect)
 Removes the given rectangle from the pool.
Eina_Rectangleeina_rectangle_new (int x, int y, int w, int h)
 Creates a new rectangle.
void eina_rectangle_free (Eina_Rectangle *rect)
 Frees the given rectangle.
void eina_rectangle_pool_packing_set (Eina_Rectangle_Pool *pool, Eina_Rectangle_Packing type)
 Sets the type of given rectangle pool.
Eina_Rectangle_Outside eina_rectangle_outside_position (Eina_Rectangle *rect1, Eina_Rectangle *rect2)
 calculates where rect2 is outside of rect1.
static Eina_Bool eina_rectangle_equal (const Eina_Rectangle *rect1, const Eina_Rectangle *rect2)
 Compares two rectangles for equality.

Typedefs

typedef struct _Eina_Position2D Eina_Position2D
 A 2D position in pixel coordinates.
typedef struct _Eina_Size2D Eina_Size2D
 A 2D size in pixel coordinates.
typedef struct _Eina_Rectangle Eina_Rectangle
typedef union _Eina_Rect Eina_Rect
typedef struct _Eina_Rectangle_Pool Eina_Rectangle_Pool

Defines

#define EINA_RECTANGLE_INIT   { 0, 0, 0, 0}
#define EINA_RECTANGLE_FORMAT   "dx%d - %dx%d"
#define EINA_RECTANGLE_ARGS(r)   (r)->x, (r)->y, (r)->w, (r)->h
#define EINA_RECT(x, y, w, h)   ((Eina_Rect) { { (x), (y), (w), (h) } })
#define EINA_RECT_ZERO()   { EINA_RECTANGLE_INIT }
#define EINA_RECT_EMPTY()   ((Eina_Rect) EINA_RECT_ZERO())
#define EINA_POSITION2D(x, y)   ((Eina_Position2D) { (x), (y) })
#define EINA_SIZE2D(x, y)   ((Eina_Size2D) { (x), (y) })
#define EINA_SIZE2D_EQ(a, b)   (((a).w == (b).w) && ((a).h == (b).h))
 convenience macro for comparing two Eina_Size2D structs
#define EINA_POSITION2D_EQ(a, b)   (((a).x == (b).x) && ((a).y == (b).y))
 convenience macro for comparing two Eina_Position2D structs
#define EINA_POSITION2D_DISTANCE(a, b)   sqrt((a.x - b.x)*(a.x - b.x) + (a.y - b.y)*(a.y - b.y))
 Convenience macro for getting the distance from one point to another.
#define EINA_RECTANGLE_SET(Rectangle, X, Y, W, H)
 Definition for the macro to set the values of a Eina_Rectangle.
#define EINA_RECT_SET(rect, x, y, w, h)   do { EINA_RECTANGLE_SET((&rect), x, y, w, h) } while (0)

Define Documentation

#define EINA_POSITION2D (   x,
 
)    ((Eina_Position2D) { (x), (y) })

Creates an instance of an Eina_Position2D

#define EINA_POSITION2D_DISTANCE (   a,
 
)    sqrt((a.x - b.x)*(a.x - b.x) + (a.y - b.y)*(a.y - b.y))

Convenience macro for getting the distance from one point to another.

Parameters:
[in]aAn Eina_Position2D
[in]bAn Eina_Position2D
Returns:
The distance between the two points.
Since (EFL) :
1.24
#define EINA_POSITION2D_EQ (   a,
 
)    (((a).x == (b).x) && ((a).y == (b).y))

convenience macro for comparing two Eina_Position2D structs

Parameters:
[in]aAn Eina_Position2D
[in]bAn Eina_Position2D
Returns:
1 if the structs are equal, 0 if they are not
Since (EFL) :
1.24
#define EINA_RECT (   x,
  y,
  w,
 
)    ((Eina_Rect) { { (x), (y), (w), (h) } })

Creates an instance of an Eina_Rect

#define EINA_RECT_EMPTY ( )    ((Eina_Rect) EINA_RECT_ZERO())

A zero-size rectangle that can be used to initialize Eina_Rect structures.

#define EINA_RECT_SET (   rect,
  x,
  y,
  w,
 
)    do { EINA_RECTANGLE_SET((&rect), x, y, w, h) } while (0)

Functionally equivalent to EINA_RECTANGLE_SET

#define EINA_RECT_ZERO ( )    { EINA_RECTANGLE_INIT }

A zero-size rectangle that can be used to initialize Eina_Rect structures.

#define EINA_RECTANGLE_ARGS (   r)    (r)->x, (r)->y, (r)->w, (r)->h

Separates the components of the rectangle structure into a comma-separated list, so they can be used as parameters.

#define EINA_RECTANGLE_FORMAT   "dx%d - %dx%d"

A format string useful for printf-like functions.

#define EINA_RECTANGLE_INIT   { 0, 0, 0, 0}

A zero-size rectangle.

#define EINA_RECTANGLE_SET (   Rectangle,
  X,
  Y,
  W,
 
)
Value:
{                         \
      (Rectangle)->x = X;             \
      (Rectangle)->y = Y;             \
      (Rectangle)->w = W;             \
      (Rectangle)->h = H;             \
    }

Definition for the macro to set the values of a Eina_Rectangle.

Parameters:
[out]RectangleThe rectangle.
[in]XThe X coordinate of the top left corner of the rectangle.
[in]YThe Y coordinate of the top left corner of the rectangle.
[in]WThe width of the rectangle.
[in]HThe height of the rectangle.

This macro set the values of Rectangle. X and Y are the coordinates of the top left corner of Rectangle, W is its width and H is its height.

#define EINA_SIZE2D (   x,
 
)    ((Eina_Size2D) { (x), (y) })

Creates an instance of an Eina_Size2D

#define EINA_SIZE2D_EQ (   a,
 
)    (((a).w == (b).w) && ((a).h == (b).h))

convenience macro for comparing two Eina_Size2D structs

Parameters:
[in]aAn Eina_Size2D
[in]bAn Eina_Size2D
Returns:
1 if the structs are equal, 0 if they are not
Since (EFL) :
1.24

Typedef Documentation

A convenient rectangle structure which can be accessed in different ways.

Simple rectangle structure.

Type for an opaque pool of rectangles.


Enumeration Type Documentation

Enumeration of the positions around a rectangle.

Since (EFL) :
1.19
Enumerator:
EINA_RECTANGLE_OUTSIDE_TOP 

Position is over the rectangle

EINA_RECTANGLE_OUTSIDE_LEFT 

Position is to the left of the rectangle

EINA_RECTANGLE_OUTSIDE_BOTTOM 

Position is below the rectangle

EINA_RECTANGLE_OUTSIDE_RIGHT 

Position is to the right of the rectangle

Type for an Eina Pool based on a packing algorithm.

Since (EFL) :
1.11
Enumerator:
Eina_Packing_Descending 

Current

Eina_Packing_Ascending 

sorting in ascending order

Eina_Packing_Bottom_Left 

sorting in bottom left fashion

Eina_Packing_Bottom_Left_Skyline 

bottom left skyline

Eina_Packing_Bottom_Left_Skyline_Improved 

optimized bottom left skyline


Function Documentation

static void eina_rectangle_coords_from ( Eina_Rectangle rect,
int  x,
int  y,
int  w,
int  h 
) [static]

Sets the coordinates and size of a rectangle.

Parameters:
[out]rectThe rectangle.
[in]xThe X coordinate of the rectangle's top-left corner.
[in]yThe Y coordinate of the rectangle's top-left corner.
[in]wThe width of the rectangle.
[in]hThe height of the rectangle.

This function sets its top-left X coordinate to x, its top-left Y coordinate to y, its width to w and its height to h.

No check is done on r, so it must be a valid rectangle.

static Eina_Bool eina_rectangle_coords_inside ( const Eina_Rectangle rect,
int  x,
int  y 
) [static]

Checks if the given point is inside the rectangle.

Parameters:
[in]rectThe rectangle.
[in]xThe x coordinate of the point.
[in]yThe y coordinate of the point.
Returns:
EINA_TRUE if the point (x, y) is within the edges of r, EINA_FALSE otherwise.

No check is done on r, so it must be a valid rectangle.

static Eina_Bool eina_rectangle_equal ( const Eina_Rectangle rect1,
const Eina_Rectangle rect2 
) [static]

Compares two rectangles for equality.

Parameters:
[in]rect1First rectangle. Must not be NULL.
[in]rect2Second rectangle. Must not be NULL.
Returns:
EINA_TRUE if the rectangles are equal (x, y, w and h are all equal).

No check is made on the rectangles, so they should be valid and non NULL for this function to be meaningful.

Since (EFL) :
1.21

Frees the given rectangle.

Parameters:
[in]rectThe rectangle to free.

This function removes rect from the rectangles pool.

Since :
2.3.1
static Eina_Bool eina_rectangle_height_cut ( Eina_Rectangle rect,
Eina_Rectangle slice,
Eina_Rectangle remainder,
int  amount 
) [static]

Slices a rectangle horizontally starting from top edge.

Parameters:
[in]rectThe rectangle to slice.
[out]sliceThe sliced part of the rectangle.
[out]remainderThe left over part of the rectangle after slicing.
[in]amountThe slice location's vertical distance from the top.
Returns:
EINA_TRUE if the cut succeeds, EINA_FALSE otherwise.

Cut a rectangle horizontally at a distance amount from the rectangle's top edge. If the amount value is greater than the rectangle width, no cut is performed and EINA_FALSE is returned.

static Eina_Bool eina_rectangle_intersection ( Eina_Rectangle dst,
const Eina_Rectangle src 
) [static]

Gets the intersection of two rectangles.

Parameters:
[in,out]dstThe first rectangle.
[in]srcThe second rectangle.
Returns:
EINA_TRUE if the rectangles intersect, EINA_FALSE otherwise.

Changes dst to be the rectangle represented by the intersection of dst and src. dst is unchanged if the two rectangles do not intersect.

No check is done on dst or src, so they must be valid rectangles.

static Eina_Bool eina_rectangle_is_empty ( const Eina_Rectangle rect) [static]

Checks if the given rectangle is empty.

Parameters:
[in]rectThe rectangle to check.
Returns:
EINA_TRUE if the rectangle r is empty, EINA_FALSE otherwise.

No check is done on r, so it must be a valid rectangle.

static Eina_Bool eina_rectangle_is_valid ( const Eina_Rectangle rect) [static]

Tells whether a rectangle is valid.

Parameters:
[in]rectThe rectangle.
Returns:
EINA_TRUE if the rectangle is valid, EINA_FALSE otherwise.

This function checks if both width and height attributes of the rectangle are positive integers. If so, the rectangle is considered valid, else the rectangle is invalid.

static int eina_rectangle_max_x ( Eina_Rectangle rect) [static]

Gets the rectangle's maximum X coordinate.

Parameters:
[in]rectThe rectangle.
Returns:
The maximum X coordinate.

This function calculates the maximum X coordinate of the rectangle by summing the width with the current x coordinate of the rectangle.

static int eina_rectangle_max_y ( Eina_Rectangle rect) [static]

Gets the rectangle maximum Y coordinate.

Parameters:
[in]rectThe rectangle.
Returns:
The maximum Y coordinate.

This function calculates the maximum y coordinate of the rectangle by summing the height with the current y coordinate of the rectangle.

Eina_Rectangle* eina_rectangle_new ( int  x,
int  y,
int  w,
int  h 
)

Creates a new rectangle.

Parameters:
[in]xThe X coordinate of the top left corner of the rectangle.
[in]yThe Y coordinate of the top left corner of the rectangle.
[in]wThe width of the rectangle.
[in]hThe height of the rectangle.
Returns:
The new rectangle on success, @ NULL otherwise.

This function creates a rectangle whose top left corner has the coordinates (x, y), with height w and height h and adds it to the rectangles pool. No check is done on w and h. This function returns a new rectangle on success, NULL otherwise.

Since :
2.3.1

calculates where rect2 is outside of rect1.

Parameters:
[in]rect1The rect to use as anchor
[in]rect2The rect to look for outside positions
Returns:
An OR'd map of Eina_Rectangle_Outside values
Since (EFL) :
1.19

Returns the number of rectangles in the given pool.

Parameters:
[in]poolThe pool.
Returns:
The number of rectangles in the pool.

This function returns the number of rectangles in pool.

Since :
2.3.1

Gets the data from the given pool.

Parameters:
[in]poolThe pool.
Returns:
The returned data.

This function gets the data from pool set by eina_rectangle_pool_data_set(). If pool is NULL, this function returns NULL.

Since :
2.3.1
void eina_rectangle_pool_data_set ( Eina_Rectangle_Pool pool,
const void *  data 
)

Sets the data to the given pool.

Parameters:
[in,out]poolThe pool.
[in]dataThe data to set.

This function sets data to pool. If pool is NULL, this function does nothing.

Since :
2.3.1

Frees the given pool.

Parameters:
[in]poolThe pool to free.

This function frees the allocated data of pool. If pool is NULL, this function returned immediately.

Since :
2.3.1
Eina_Bool eina_rectangle_pool_geometry_get ( Eina_Rectangle_Pool pool,
int *  w,
int *  h 
)

Returns the width and height of the given pool.

Parameters:
[in]poolThe pool.
[out]wThe returned width.
[out]hThe returned height.
Returns:
EINA_TRUE on success, EINA_FALSE otherwise.

This function returns the width and height of pool and store them in respectively w and h if they are not NULL. If pool is NULL, EINA_FALSE is returned. Otherwise EINA_TRUE is returned.

Since :
2.3.1

Returns the pool of the given rectangle.

Parameters:
[in]rectThe rectangle.
Returns:
The pool of the given rectangle.

This function returns the pool in which rect is. If rect is NULL, NULL is returned.

Since :
2.3.1

Adds a rectangle in a new pool.

Parameters:
[in]wThe width of the rectangle.
[in]hThe height of the rectangle.
Returns:
A newly allocated pool on success, NULL otherwise.

This function adds the rectangle of size (width, height) to a new pool. If the pool can not be created, NULL is returned. Otherwise the newly allocated pool is returned.

Since :
2.3.1

Sets the type of given rectangle pool.

Parameters:
[in,out]poolThe rectangle pool for which type is to be set.
[in]typeType of Eina Pool based on packing algorithm.

This function sets type of pool.

See also:
Eina_Rectangle_Packing
Since (EFL) :
1.11
Since :
2.3.1

Removes the given rectangle from the pool.

Parameters:
[in,out]rectThe rectangle to remove from the pool.

This function removes rect from the pool. If rect is NULL, the function returns immediately. Otherwise it removes rect from the pool.

Since :
2.3.1

Requests a rectangle of given size in the given pool.

Parameters:
[in,out]poolThe pool.
[in]wThe width of the rectangle to request.
[in]hThe height of the rectangle to request.
Returns:
The requested rectangle on success, NULL otherwise.

This function retrieves from pool the rectangle of width w and height h. If pool is NULL, or w or h are non-positive, the function returns NULL. If w or h are greater than the pool size, the function returns NULL. On success, the function returns the rectangle which matches the size (w, h). Otherwise it returns NULL.

Since :
2.3.1
static void eina_rectangle_rescale_in ( const Eina_Rectangle out,
const Eina_Rectangle in,
Eina_Rectangle res 
) [static]

FIXME I am useless and used by no one.

Parameters:
inThe inner rectangle.
outThe outer rectangle.
resThe resulting rectangle.
static void eina_rectangle_rescale_out ( const Eina_Rectangle out,
const Eina_Rectangle in,
Eina_Rectangle res 
) [static]

FIXME I am useless and used by no one.

Parameters:
inThe inner rectangle.
outThe outer rectangle.
resThe resulting rectangle.
static Eina_Bool eina_rectangle_subtract ( Eina_Rectangle rect,
Eina_Rectangle other,
Eina_Rectangle  out[4] 
) [static]

Subtracts two rectangles and returns the differences.

Parameters:
[in]rectThe minuend rectangle.
[in]otherThe subtrahend rectangle.
[out]outAn array of differences between the two rectangles.
Returns:
EINA_TRUE on success, EINA_FALSE otherwise.

This function subtracts two rectangles and stores the resulting differences into the out array. There will be at most four differences; use eina_rectangle_is_valid to confirm the exact number.

static void eina_rectangle_union ( Eina_Rectangle dst,
const Eina_Rectangle src 
) [static]

Gets the union of two rectangles.

Parameters:
[in,out]dstThe first rectangle.
[in]srcThe second rectangle.

Changes dst to be the bounding box of both rectangles dst and src.

No check is done on dst or src, so they must be valid rectangles.

static Eina_Bool eina_rectangle_width_cut ( Eina_Rectangle rect,
Eina_Rectangle slice,
Eina_Rectangle remainder,
int  amount 
) [static]

Slices a rectangle vertically starting from right edge.

Parameters:
[in]rectThe rectangle to slice.
[out]sliceThe sliced part of the rectangle.
[out]remainderThe left over part of the rectangle after slicing.
[in]amountThe slice location's horizontal distance from the right.
Returns:
EINA_TRUE if the cut succeeds, EINA_FALSE otherwise

Cut a rectangle vertically at a distance amount from the rectangle's right edge. If the amount value is greater than the rectangle's width, no cut is performed and EINA_FALSE is returned.

static Eina_Bool eina_rectangle_x_cut ( Eina_Rectangle rect,
Eina_Rectangle slice,
Eina_Rectangle remainder,
int  amount 
) [static]

Slices a rectangle vertically into two subrectangles.

Parameters:
[in]rectThe rectangle to slice.
[out]sliceThe sliced part of the rectangle.
[out]remainderThe left over part of the rectangle after slicing.
[in]amountThe slice location's horizontal distance from the left.
Returns:
EINA_TRUE if the cut succeeds, EINA_FALSE otherwise.

Cut a rectangle vertically at a distance amount from the rectangle's left edge. If the amount value is greater than the rectangle's width, no cut is performed and EINA_FALSE is returned.

static Eina_Bool eina_rectangle_xcoord_inside ( const Eina_Rectangle rect,
int  x 
) [static]

Checks if the given X-coordinate is in the rectangle.

Parameters:
[in]rectThe rectangle.
[in]xThe X coordinate.
Returns:
EINA_TRUE if x is between the rectangle's left and right edges, EINA_FALSE otherwise.

No check is done on r, so it must be a valid rectangle.

static Eina_Bool eina_rectangle_y_cut ( Eina_Rectangle rect,
Eina_Rectangle slice,
Eina_Rectangle remainder,
int  amount 
) [static]

Slices a rectangle horizontally into two subrectangles.

Parameters:
[in]rectThe rectangle to slice.
[out]sliceThe sliced part of the rectangle.
[out]remainderThe left over part of the rectangle after slicing.
[in]amountThe slice location's vertical distance from the bottom.
Returns:
EINA_TRUE if the cut succeeds, EINA_FALSE otherwise

Cut a rectangle horizontally at a distance amount from the rectangle's bottom edge. If the amount value is greater than the rectangle's height, no cut is performed and EINA_FALSE is returned.

static Eina_Bool eina_rectangle_ycoord_inside ( const Eina_Rectangle rect,
int  y 
) [static]

Checks if the given Y-coordinate is in the rectangle.

Parameters:
[in]rectThe rectangle.
[in]yThe Y coordinate.
Returns:
EINA_TRUE if y is between the rectangle's top and bottom edges, EINA_FALSE otherwise.

No check is done on r, so it must be a valid rectangle.

static Eina_Bool eina_rectangles_intersect ( const Eina_Rectangle rect1,
const Eina_Rectangle rect2 
) [static]

Checks if two rectangles intersect.

Parameters:
[in]rect1The first rectangle.
[in]rect2The second rectangle.
Returns:
EINA_TRUE if the rectangles rect1 and rect2 intersect, EINA_FALSE otherwise.

No check is done on rect1 and rect2, so they must be valid rectangles.

static int eina_spans_intersect ( int  c1,
int  l1,
int  c2,
int  l2 
) [static]

Checks if the given spans intersect.

Parameters:
[in]c1The column of the first span.
[in]l1The length of the first span.
[in]c2The column of the second span.
[in]l2The length of the second span.
Returns:
EINA_TRUE if the given spans intersect, EINA_FALSE otherwise.