These functions provide rectangle management. More...
Data Structures | |
| struct | _Eina_Position2D |
| A 2D position in pixel coordinates. More... | |
| struct | _Eina_Size2D |
| A 2D size in pixel coordinates. More... | |
| struct | _Eina_Rectangle |
| union | _Eina_Rect |
Macros | |
| #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_RECTANGLE_SET(Rectangle, X, Y, W, H) |
| Definition for the macro to set the values of a Eina_Rectangle. More... | |
| #define | EINA_RECT_SET(rect, x, y, w, h) do { EINA_RECTANGLE_SET((&rect), x, y, w, h) } while (0) |
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 |
Enumerations | |
| enum | Eina_Rectangle_Packing { Eina_Packing_Descending, Eina_Packing_Ascending, Eina_Packing_Bottom_Left, Eina_Packing_Bottom_Left_Skyline, Eina_Packing_Bottom_Left_Skyline_Improved } |
| enum | Eina_Rectangle_Outside { EINA_RECTANGLE_OUTSIDE_TOP = 1, EINA_RECTANGLE_OUTSIDE_LEFT = 2, EINA_RECTANGLE_OUTSIDE_BOTTOM = 4, EINA_RECTANGLE_OUTSIDE_RIGHT = 8 } |
Variables | |
| static Eina_Bool | EINA_WARN_UNUSED_RESULT |
These functions provide rectangle management.
| #define EINA_RECTANGLE_SET | ( | Rectangle, | |
| X, | |||
| Y, | |||
| W, | |||
| H | |||
| ) |
Definition for the macro to set the values of a Eina_Rectangle.
| [out] | Rectangle | The rectangle. |
| [in] | X | The X coordinate of the top left corner of the rectangle. |
| [in] | Y | The Y coordinate of the top left corner of the rectangle. |
| [in] | W | The width of the rectangle. |
| [in] | H | The 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.
Simple rectangle structure.
Type for an opaque pool of rectangles.
Type for an Eina Pool based on a packing algorithm.
Enumeration of the positions around a rectangle.
|
inlinestatic |
Checks if the given spans intersect.
| [in] | c1 | The column of the first span. |
| [in] | l1 | The length of the first span. |
| [in] | c2 | The column of the second span. |
| [in] | l2 | The length of the second span. |
|
inlinestatic |
Checks if the given rectangle is empty.
| [in] | rect | The rectangle to check. |
r is empty, EINA_FALSE otherwise.No check is done on r, so it must be a valid rectangle.
|
inlinestatic |
Sets the coordinates and size of a rectangle.
| [out] | rect | The rectangle. |
| [in] | x | The X coordinate of the rectangle's top-left corner. |
| [in] | y | The Y coordinate of the rectangle's top-left corner. |
| [in] | w | The width of the rectangle. |
| [in] | h | The 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.
Referenced by eina_rectangle_pool_request().
|
inlinestatic |
Checks if two rectangles intersect.
| [in] | rect1 | The first rectangle. |
| [in] | rect2 | The second rectangle. |
rect1 and rect2 intersect, EINA_FALSE otherwise.No check is done on rect1 and rect2, so they must be valid rectangles.
Referenced by eina_tiler_equal(), and eina_tiler_intersection().
|
inlinestatic |
Checks if the given X-coordinate is in the rectangle.
| [in] | rect | The rectangle. |
| [in] | x | The X coordinate. |
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.
|
inlinestatic |
Checks if the given Y-coordinate is in the rectangle.
| [in] | rect | The rectangle. |
| [in] | y | The Y coordinate. |
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.
|
inlinestatic |
Checks if the given point is inside the rectangle.
| [in] | rect | The rectangle. |
| [in] | x | The x coordinate of the point. |
| [in] | y | The y coordinate of 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.
|
inlinestatic |
Gets the union of two rectangles.
| [in,out] | dst | The first rectangle. |
| [in] | src | The 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.
|
inlinestatic |
Gets the intersection of two rectangles.
| [in,out] | dst | The first rectangle. |
| [in] | src | The second rectangle. |
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.
|
inlinestatic |
FIXME I am useless and used by no one.
| in | The inner rectangle. |
| out | The outer rectangle. |
| res | The resulting rectangle. |
|
inlinestatic |
FIXME I am useless and used by no one.
| in | The inner rectangle. |
| out | The outer rectangle. |
| res | The resulting rectangle. |
|
inlinestatic |
Tells whether a rectangle is valid.
| [in] | rect | The rectangle. |
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.
|
inlinestatic |
Gets the rectangle's maximum X coordinate.
| [in] | rect | The rectangle. |
This function calculates the maximum X coordinate of the rectangle by summing the width with the current x coordinate of the rectangle.
|
inlinestatic |
Gets the rectangle maximum Y coordinate.
| [in] | rect | The rectangle. |
This function calculates the maximum Y coordinate of the rectangle by summing the height with the current y coordinate of the rectangle.
|
inlinestatic |
Slices a rectangle vertically into two subrectangles.
| [in] | rect | The rectangle to slice. |
| [out] | slice | The sliced part of the rectangle. |
| [out] | remainder | The left over part of the rectangle after slicing. |
| [in] | amount | The slice location's horizontal distance from the left. |
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.
|
inlinestatic |
Slices a rectangle horizontally into two subrectangles.
| [in] | rect | The rectangle to slice. |
| [out] | slice | The sliced part of the rectangle. |
| [out] | remainder | The left over part of the rectangle after slicing. |
| [in] | amount | The slice location's vertical distance from the bottom. |
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.
|
inlinestatic |
Slices a rectangle vertically starting from right edge.
| [in] | rect | The rectangle to slice. |
| [out] | slice | The sliced part of the rectangle. |
| [out] | remainder | The left over part of the rectangle after slicing. |
| [in] | amount | The slice location's horizontal distance from the right. |
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.
|
inlinestatic |
Slices a rectangle horizontally starting from top edge.
| [in] | rect | The rectangle to slice. |
| [out] | slice | The sliced part of the rectangle. |
| [out] | remainder | The left over part of the rectangle after slicing. |
| [in] | amount | The slice location's vertical distance from the top. |
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.
|
inlinestatic |
Subtracts two rectangles and returns the differences.
| [in] | rect | The minuend rectangle. |
| [in] | other | The subtrahend rectangle. |
| [out] | out | An array of differences between the two rectangles. |
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.
| EAPI Eina_Rectangle_Pool* eina_rectangle_pool_new | ( | int | w, |
| int | h | ||
| ) |
Adds a rectangle in a new pool.
| [in] | w | The width of the rectangle. |
| [in] | h | The height of the rectangle. |
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.
References DBG, EINA_FALSE, eina_list_append(), EINA_MAGIC_SET, Eina_Packing_Ascending, and eina_rectangle_new().
| EAPI Eina_Rectangle_Pool* eina_rectangle_pool_get | ( | Eina_Rectangle * | rect | ) |
Returns the pool of the given rectangle.
| [in] | rect | The rectangle. |
This function returns the pool in which rect is. If rect is NULL, NULL is returned.
References EINA_SAFETY_ON_NULL_RETURN_VAL.
| EAPI Eina_Bool eina_rectangle_pool_geometry_get | ( | Eina_Rectangle_Pool * | pool, |
| int * | w, | ||
| int * | h | ||
| ) |
Returns the width and height of the given pool.
| [in] | pool | The pool. |
| [out] | w | The returned width. |
| [out] | h | The returned height. |
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.
References EINA_FALSE, EINA_SAFETY_ON_NULL_RETURN_VAL, and EINA_TRUE.
| EAPI void* eina_rectangle_pool_data_get | ( | Eina_Rectangle_Pool * | pool | ) |
Gets the data from the given pool.
| [in] | pool | The pool. |
This function gets the data from pool set by eina_rectangle_pool_data_set(). If pool is NULL, this function returns NULL.
References EINA_SAFETY_ON_NULL_RETURN_VAL.
| EAPI void eina_rectangle_pool_data_set | ( | Eina_Rectangle_Pool * | pool, |
| const void * | data | ||
| ) |
Sets the data to the given pool.
| [in,out] | pool | The pool. |
| [in] | data | The data to set. |
This function sets data to pool. If pool is NULL, this function does nothing.
References DBG, and EINA_SAFETY_ON_NULL_RETURN.
| EAPI void eina_rectangle_pool_free | ( | Eina_Rectangle_Pool * | pool | ) |
Frees the given pool.
| [in] | pool | The pool to free. |
This function frees the allocated data of pool. If pool is NULL, this function returned immediately.
References DBG, EINA_INLIST_GET, EINA_LIST_FREE, EINA_MAGIC_NONE, EINA_MAGIC_SET, eina_mempool_free(), eina_rectangle_free(), EINA_SAFETY_ON_NULL_RETURN, and eina_trash_pop().
| EAPI int eina_rectangle_pool_count | ( | Eina_Rectangle_Pool * | pool | ) |
Returns the number of rectangles in the given pool.
| [in] | pool | The pool. |
This function returns the number of rectangles in pool.
References EINA_SAFETY_ON_NULL_RETURN_VAL.
| EAPI Eina_Rectangle* eina_rectangle_pool_request | ( | Eina_Rectangle_Pool * | pool, |
| int | w, | ||
| int | h | ||
| ) |
Requests a rectangle of given size in the given pool.
| [in,out] | pool | The pool. |
| [in] | w | The width of the rectangle to request. |
| [in] | h | The height of the rectangle to request. |
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.
References DBG, EINA_FALSE, EINA_INLIST_GET, eina_inlist_prepend(), eina_list_sort(), EINA_MAGIC_SET, eina_mempool_malloc(), Eina_Packing_Bottom_Left_Skyline_Improved, eina_rectangle_coords_from(), EINA_SAFETY_ON_NULL_RETURN_VAL, eina_trash_pop(), EINA_TRUE, and _Eina_Rectangle::w.
| EAPI void eina_rectangle_pool_release | ( | Eina_Rectangle * | rect | ) |
Removes the given rectangle from the pool.
| [in,out] | rect | The 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.
References DBG, EINA_FALSE, EINA_INLIST_FOREACH, EINA_INLIST_GET, eina_inlist_remove(), EINA_MAGIC_NONE, EINA_MAGIC_SET, eina_mempool_free(), Eina_Packing_Bottom_Left_Skyline_Improved, eina_rectangle_new(), EINA_SAFETY_ON_NULL_RETURN, eina_trash_push(), _Eina_Rectangle::h, _Eina_Rectangle::w, _Eina_Rectangle::x, and _Eina_Rectangle::y.
| EAPI Eina_Rectangle* eina_rectangle_new | ( | int | x, |
| int | y, | ||
| int | w, | ||
| int | h | ||
| ) |
Creates a new rectangle.
| [in] | x | The X coordinate of the top left corner of the rectangle. |
| [in] | y | The Y coordinate of the top left corner of the rectangle. |
| [in] | w | The width of the rectangle. |
| [in] | h | The height of the rectangle. |
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.
References eina_mempool_malloc(), EINA_RECTANGLE_SET, eina_spinlock_release(), eina_spinlock_take(), and eina_trash_pop().
Referenced by eina_rectangle_pool_new(), and eina_rectangle_pool_release().
| EAPI void eina_rectangle_free | ( | Eina_Rectangle * | rect | ) |
Frees the given rectangle.
| [iin] | rect The rectangle to free. |
This function removes rect from the rectangles pool.
References eina_mempool_free(), EINA_SAFETY_ON_NULL_RETURN, eina_spinlock_release(), eina_spinlock_take(), and eina_trash_push().
Referenced by eina_rectangle_pool_free(), and evas_render_updates_free().
| EAPI void eina_rectangle_pool_packing_set | ( | Eina_Rectangle_Pool * | pool, |
| Eina_Rectangle_Packing | type | ||
| ) |
Sets the type of given rectangle pool.
| [in,out] | pool | The rectangle pool for which type is to be set. |
| [in] | type | Type of Eina Pool based on packing algorithm. |
This function sets type of pool.
References DBG, Eina_Packing_Ascending, Eina_Packing_Descending, and EINA_SAFETY_ON_NULL_RETURN.
| EAPI Eina_Rectangle_Outside eina_rectangle_outside_position | ( | Eina_Rectangle * | rect1, |
| Eina_Rectangle * | rect2 | ||
| ) |
calculates where rect2 is outside of rect1.
| [in] | rect1 | The rect to use as anchor |
| [in] | rect2 | The rect to look for outside positions |
References _Eina_Rectangle::y.
|
inlinestatic |
Compares two rectangles for equality.
| [in] | rect1 | First rectangle. Must not be NULL. |
| [in] | rect2 | Second rectangle. Must not be NULL. |
No check is made on the rectangles, so they should be valid and non NULL for this function to be meaningful.