These functions provide rectangle management. More...
Data Structures | |
| struct | _Eina_Rectangle |
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_RECTANGLE_SET(Rectangle, X, Y, W, H) |
| Macro to set the values of a Eina_Rectangle. More... | |
Typedefs | |
| typedef struct _Eina_Rectangle | Eina_Rectangle |
| Simple rectangle structure. | |
| typedef struct _Eina_Rectangle_Pool | Eina_Rectangle_Pool |
| Type for an opaque pool of rectangle. | |
Functions | |
| static int | eina_spans_intersect (int c1, int l1, int c2, int l2) |
| Check if the given spans intersect. More... | |
| static Eina_Bool | eina_rectangle_is_empty (const Eina_Rectangle *r) |
| Check if the given rectangle is empty. More... | |
| static void | eina_rectangle_coords_from (Eina_Rectangle *r, int x, int y, int w, int h) |
| Set the coordinates and size of the given rectangle. More... | |
| static Eina_Bool | eina_rectangles_intersect (const Eina_Rectangle *r1, const Eina_Rectangle *r2) |
| Check if the given rectangles intersect. More... | |
| static Eina_Bool | eina_rectangle_xcoord_inside (const Eina_Rectangle *r, int x) |
| Check if the given x-coordinate is in the rectangle . More... | |
| static Eina_Bool | eina_rectangle_ycoord_inside (const Eina_Rectangle *r, int y) |
| Check if the given y-coordinate is in the rectangle . More... | |
| static Eina_Bool | eina_rectangle_coords_inside (const Eina_Rectangle *r, int x, int y) |
| Check if the given point is in the rectangle . More... | |
| static void | eina_rectangle_union (Eina_Rectangle *dst, const Eina_Rectangle *src) |
| Get the union of two rectangles. More... | |
| static Eina_Bool | eina_rectangle_intersection (Eina_Rectangle *dst, const Eina_Rectangle *src) |
| Get the intersection of two rectangles. More... | |
| static void | eina_rectangle_rescale_in (const Eina_Rectangle *out, const Eina_Rectangle *in, Eina_Rectangle *res) |
| static void | eina_rectangle_rescale_out (const Eina_Rectangle *out, const Eina_Rectangle *in, Eina_Rectangle *res) |
| static Eina_Bool | eina_rectangle_is_valid (const Eina_Rectangle *r) |
| static int | eina_rectangle_max_x (Eina_Rectangle *thiz) |
| static int | eina_rectangle_max_y (Eina_Rectangle *thiz) |
| static Eina_Bool | eina_rectangle_x_cut (Eina_Rectangle *thiz, Eina_Rectangle *slice, Eina_Rectangle *leftover, int amount) |
| static Eina_Bool | eina_rectangle_y_cut (Eina_Rectangle *thiz, Eina_Rectangle *slice, Eina_Rectangle *leftover, int amount) |
| static Eina_Bool | eina_rectangle_width_cut (Eina_Rectangle *thiz, Eina_Rectangle *slice, Eina_Rectangle *leftover, int amount) |
| static Eina_Bool | eina_rectangle_height_cut (Eina_Rectangle *thiz, Eina_Rectangle *slice, Eina_Rectangle *leftover, int amount) |
| static Eina_Bool | eina_rectangle_subtract (Eina_Rectangle *thiz, Eina_Rectangle *other, Eina_Rectangle out[4]) |
| Subtract two rectangles. More... | |
| EAPI Eina_Rectangle_Pool * | eina_rectangle_pool_new (int w, int h) EINA_MALLOC EINA_WARN_UNUSED_RESULT |
| Add a rectangle in a new pool. More... | |
| EAPI Eina_Rectangle_Pool * | eina_rectangle_pool_get (Eina_Rectangle *rect) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) |
| Return the pool of the given rectangle. More... | |
| EAPI Eina_Bool | eina_rectangle_pool_geometry_get (Eina_Rectangle_Pool *pool, int *w, int *h) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_WARN_UNUSED_RESULT |
| Return the width and height of the given pool. More... | |
| EAPI void * | eina_rectangle_pool_data_get (Eina_Rectangle_Pool *pool) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) |
| Get the data from the given pool. More... | |
| EAPI void | eina_rectangle_pool_data_set (Eina_Rectangle_Pool *pool, const void *data) EINA_ARG_NONNULL(1) |
| Set the data to the given pool. More... | |
| EAPI void | eina_rectangle_pool_free (Eina_Rectangle_Pool *pool) EINA_ARG_NONNULL(1) |
| Free the given pool. More... | |
| EAPI int | eina_rectangle_pool_count (Eina_Rectangle_Pool *pool) EINA_ARG_NONNULL(1) EINA_WARN_UNUSED_RESULT |
| Return the number of rectangles in the given pool. More... | |
| EAPI Eina_Rectangle * | eina_rectangle_pool_request (Eina_Rectangle_Pool *pool, int w, int h) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) |
| Request a rectangle of given size in the given pool. More... | |
| EAPI void | eina_rectangle_pool_release (Eina_Rectangle *rect) EINA_ARG_NONNULL(1) |
| Remove the given rectangle from the pool. More... | |
| EAPI Eina_Rectangle * | eina_rectangle_new (int x, int y, int w, int h) EINA_MALLOC EINA_WARN_UNUSED_RESULT |
| Create a new rectangle. More... | |
| EAPI void | eina_rectangle_free (Eina_Rectangle *rect) EINA_ARG_NONNULL(1) |
| Free the given rectangle. More... | |
Variables | |
| static Eina_Bool | EINA_WARN_UNUSED_RESULT |
These functions provide rectangle management.
| #define EINA_RECTANGLE_SET | ( | Rectangle, | |
| X, | |||
| Y, | |||
| W, | |||
| H | |||
| ) |
Macro to set the values of a Eina_Rectangle.
| Rectangle | The rectangle to set the values. |
| X | The X coordinate of the top left corner of the rectangle. |
| Y | The Y coordinate of the top left corner of the rectangle. |
| W | The width of the rectangle. |
| H | The height of the rectangle. |
This macro set the values of Rectangle. (X, Y) is the coordinates of the top left corner of Rectangle, W is its width and H is its height.
Referenced by eina_rectangle_new().
|
inlinestatic |
Check if the given spans intersect.
| c1 | The column of the first span. |
| l1 | The length of the first span. |
| c2 | The column of the second span. |
| l2 | The length of the second span. |
This function returns EINA_TRUE if the given spans intersect, EINA_FALSE otherwise.
Referenced by eina_rectangles_intersect().
|
inlinestatic |
Check if the given rectangle is empty.
| r | The rectangle to check. |
This function returns EINA_TRUE if r is empty, EINA_FALSE otherwise. No check is done on r, so it must be a valid rectangle.
References EINA_FALSE, EINA_TRUE, _Eina_Rectangle::h, and _Eina_Rectangle::w.
|
inlinestatic |
Set the coordinates and size of the given rectangle.
| r | The rectangle. |
| x | The top-left x coordinate of the rectangle. |
| y | The top-left y coordinate of the rectangle. |
| w | The width of the rectangle. |
| 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.
References _Eina_Rectangle::h, _Eina_Rectangle::w, _Eina_Rectangle::x, and _Eina_Rectangle::y.
Referenced by eina_rectangle_pool_request(), and eina_rectangle_subtract().
|
inlinestatic |
Check if the given rectangles intersect.
| r1 | The first rectangle. |
| r2 | The second rectangle. |
This function returns EINA_TRUE if r1 and r2 intersect, EINA_FALSE otherwise. No check is done on r1 and r2, so they must be valid rectangles.
References EINA_FALSE, eina_spans_intersect(), EINA_TRUE, _Eina_Rectangle::h, _Eina_Rectangle::w, _Eina_Rectangle::x, and _Eina_Rectangle::y.
Referenced by eina_rectangle_intersection().
|
inlinestatic |
Check if the given x-coordinate is in the rectangle .
| r | The rectangle. |
| x | The x coordinate. |
This function returns EINA_TRUE if x is in r with respect to the horizontal direction, EINA_FALSE otherwise. No check is done on r, so it must be a valid rectangle.
References EINA_FALSE, EINA_TRUE, _Eina_Rectangle::w, and _Eina_Rectangle::x.
Referenced by eina_rectangle_coords_inside().
|
inlinestatic |
Check if the given y-coordinate is in the rectangle .
| r | The rectangle. |
| y | The y coordinate. |
This function returns EINA_TRUE if y is in r with respect to the vertical direction, EINA_FALSE otherwise. No check is done on r, so it must be a valid rectangle.
References EINA_FALSE, EINA_TRUE, _Eina_Rectangle::h, and _Eina_Rectangle::y.
Referenced by eina_rectangle_coords_inside().
|
inlinestatic |
Check if the given point is in the rectangle .
| r | The rectangle. |
| x | The x coordinate of the point. |
| y | The y coordinate of the point. |
This function returns EINA_TRUE if the point of coordinate (x, y) is in r, EINA_FALSE otherwise. No check is done on r, so it must be a valid rectangle.
References EINA_FALSE, eina_rectangle_xcoord_inside(), eina_rectangle_ycoord_inside(), and EINA_TRUE.
|
inlinestatic |
Get the union of two rectangles.
| dst | The first rectangle. |
| src | The second rectangle. |
This function get the union of the rectangles dst and src. The result is stored in dst. No check is done on dst or src, so they must be valid rectangles.
References _Eina_Rectangle::h, _Eina_Rectangle::w, _Eina_Rectangle::x, and _Eina_Rectangle::y.
|
inlinestatic |
Get the intersection of two rectangles.
| dst | The first rectangle. |
| src | The second rectangle. |
This function get the intersection of the rectangles dst and src. The result is stored in dst. No check is done on dst or src, so they must be valid rectangles.
References EINA_FALSE, eina_rectangles_intersect(), EINA_TRUE, _Eina_Rectangle::h, _Eina_Rectangle::w, _Eina_Rectangle::x, and _Eina_Rectangle::y.
Referenced by eina_rectangle_subtract(), eina_tiler_rect_add(), and eina_tiler_rect_del().
|
inlinestatic |
Subtract two rectangles.
| thiz | The minuend rectangle |
| other | The subtrahend rectangle |
This function subtract two rectangles. The difference is stored on out There will be at most four differences, use eina_rectangle_is_valid to confirm the number of differences.
References EINA_FALSE, eina_rectangle_coords_from(), eina_rectangle_intersection(), EINA_TRUE, _Eina_Rectangle::h, _Eina_Rectangle::w, _Eina_Rectangle::x, and _Eina_Rectangle::y.
| EAPI Eina_Rectangle_Pool* eina_rectangle_pool_new | ( | int | w, |
| int | h | ||
| ) |
Add a rectangle in a new pool.
| w | The width of the rectangle. |
| 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 EINA_FALSE, eina_list_append(), EINA_MAGIC_SET, and eina_rectangle_new().
| EAPI Eina_Rectangle_Pool* eina_rectangle_pool_get | ( | Eina_Rectangle * | rect | ) |
Return the pool of the given rectangle.
| rect | The rectangle. |
This function returns the pool in which rect is. If rect is NULL, NULL is returned.
| EAPI Eina_Bool eina_rectangle_pool_geometry_get | ( | Eina_Rectangle_Pool * | pool, |
| int * | w, | ||
| int * | h | ||
| ) |
Return the width and height of the given pool.
| pool | The pool. |
| w | The returned width. |
| 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, and EINA_TRUE.
| EAPI void* eina_rectangle_pool_data_get | ( | Eina_Rectangle_Pool * | pool | ) |
Get the data from the given pool.
| 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.
| EAPI void eina_rectangle_pool_data_set | ( | Eina_Rectangle_Pool * | pool, |
| const void * | data | ||
| ) |
Set the data to the given pool.
| pool | The pool. |
| data | The data to set. |
This function sets data to pool. If pool is NULL, this function does nothing.
| EAPI void eina_rectangle_pool_free | ( | Eina_Rectangle_Pool * | pool | ) |
Free the given pool.
| pool | The pool to free. |
This function frees the allocated data of pool. If pool is NULL, this function returned immediately.
References EINA_INLIST_GET, EINA_MAGIC_NONE, EINA_MAGIC_SET, and eina_mempool_free().
| EAPI int eina_rectangle_pool_count | ( | Eina_Rectangle_Pool * | pool | ) |
Return the number of rectangles in the given pool.
| pool | The pool. |
This function returns the number of rectangles in pool.
| EAPI Eina_Rectangle* eina_rectangle_pool_request | ( | Eina_Rectangle_Pool * | pool, |
| int | w, | ||
| int | h | ||
| ) |
Request a rectangle of given size in the given pool.
| pool | The pool. |
| w | The width of the rectangle to request. |
| h | The height of the rectangle to request. |
NULL otherwise.This function retrieve 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 EINA_COMPARE_CB, EINA_FALSE, EINA_INLIST_GET, eina_inlist_prepend(), eina_list_sort(), EINA_MAGIC_SET, eina_mempool_malloc(), eina_rectangle_coords_from(), EINA_TRUE, and _Eina_Rectangle::w.
| EAPI void eina_rectangle_pool_release | ( | Eina_Rectangle * | rect | ) |
Remove the given rectangle from the pool.
| 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 EINA_FALSE, EINA_INLIST_GET, eina_inlist_remove(), EINA_MAGIC_NONE, EINA_MAGIC_SET, eina_mempool_free(), eina_rectangle_new(), _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 | ||
| ) |
Create a new rectangle.
| x | The X coordinate of the top left corner of the rectangle. |
| y | The Y coordinate of the top left corner of the rectangle. |
| w | The width of the rectangle. |
| h | The height of the rectangle. |
This function creates a rectangle which 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 otherwhise.
References eina_mempool_malloc(), and EINA_RECTANGLE_SET.
Referenced by eina_rectangle_pool_new(), and eina_rectangle_pool_release().
| EAPI void eina_rectangle_free | ( | Eina_Rectangle * | rect | ) |
Free the given rectangle.
| rect | The rectangle to free. |
This function removes rect from the rectangles pool.
References eina_mempool_free().
Referenced by evas_render_updates_free().