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) |
Definition for the 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. | |
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 } |
Type for an Eina Pool based on packing algorithm. More... | |
enum | Eina_Rectangle_Outside { EINA_RECTANGLE_OUTSIDE_TOP = 1, EINA_RECTANGLE_OUTSIDE_LEFT = 2, EINA_RECTANGLE_OUTSIDE_BOTTOM = 4, EINA_RECTANGLE_OUTSIDE_RIGHT = 8 } |
Enumeration gives the positions where a rectangle can be outside a other rectangle. More... | |
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.
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().
Type for an Eina Pool based on packing algorithm.
Enumeration gives the positions where a rectangle can be outside a other rectangle.
|
inlinestatic |
Checks 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.
|
inlinestatic |
Checks 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.
|
inlinestatic |
Sets 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.
|
inlinestatic |
Checks 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.
Referenced by eina_tiler_equal(), and eina_tiler_intersection().
|
inlinestatic |
Checks 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.
|
inlinestatic |
Checks 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.
|
inlinestatic |
Checks 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.
|
inlinestatic |
Gets 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.
|
inlinestatic |
Gets 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.
|
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 or not.
r | 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 |
Gives the rectangle maximum x coordinate.
thiz | 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 |
Gives the rectangle maximum y coordinate.
thiz | The rectangle |
This function calculates the maximum y coordinate of the rectangle by summing the height
with the current y
coodinate of the rectangle.
|
inlinestatic |
Slices a rectangle vertically into two subrectangles starting from left edge.
thiz | The rectangle to slice |
slice | The sliced part of the rectangle |
remainder | The left over part of the original rectangle after slice |
amount | The x inner coordinate of the rectangle where to perform the slicing. |
Use this function if we must cut a rectangle vertically. The amount
parameter defines the x inner coordinate where to do the cut, starting from the left edge of the rectangle. If the amount
value is greater than the rectangle width, there will be not cut possible and EINA_FALSE will be returned.
|
inlinestatic |
Slices a rectangle horizontally into two subrectangles starting from bottom edge.
thiz | The rectangle to slice |
slice | The sliced part of the rectangle |
remainder | The left over part of the original rectangle after slice |
amount | The y inner coordinate of the rectangle where to perform the slicing. |
Use this function if we must cut a rectangle horizontally. The amount
parameter defines the y inner coordinate where to do the cut, starting from the bottom edge of the rectangle. If the amount
value is greater than the rectangle width, there will be not cut possible and EINA_FALSE will be returned.
|
inlinestatic |
Slices a rectangle vertically starting from right edge.
thiz | The rectangle to slice |
slice | The sliced part of the rectangle |
remainder | The left over part of the original rectangle after slice |
amount | The amount to cut off the rectangle starting from the right edge |
Use this function if we must cut a rectangle vertically. The amount
parameter defines the inner x coordinate where to do the cut, starting from the right edge of the rectangle. If the amount
value is greater than the rectangle width, there will be not cut possible and EINA_FALSE will be returned.
|
inlinestatic |
Slices a rectangle horizontally starting from top edge.
thiz | The rectangle to slice |
slice | The sliced part of the rectangle |
remainder | The left over part of the original rectangle after slice |
amount | The amount to cut off the rectangle starting from the top edge |
Use this function if we must cut a rectangle horizontally. The amount
parameter defines the inner y coordinate where to do the cut, starting from the top edge of the rectangle. If the amount
value is greater than the rectangle width, there will be not cut possible and EINA_FALSE will be returned.
|
inlinestatic |
Subtracts 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.
EAPI Eina_Rectangle_Pool* eina_rectangle_pool_new | ( | int | w, |
int | h | ||
) |
Adds 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 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.
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 | ||
) |
Returns 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.
EAPI void* eina_rectangle_pool_data_get | ( | Eina_Rectangle_Pool * | pool | ) |
Gets 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 | ||
) |
Sets 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 | ) |
Frees the given pool.
pool | The pool to free. |
This function frees the allocated data of pool
. If pool
is NULL
, this function returned immediately.
EAPI int eina_rectangle_pool_count | ( | Eina_Rectangle_Pool * | pool | ) |
Returns 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 | ||
) |
Requests 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
.
EAPI void eina_rectangle_pool_release | ( | Eina_Rectangle * | rect | ) |
Removes 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.
EAPI Eina_Rectangle* eina_rectangle_new | ( | int | x, |
int | y, | ||
int | w, | ||
int | h | ||
) |
Creates 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
otherwise.
References eina_mempool_malloc(), EINA_RECTANGLE_SET, eina_spinlock_release(), eina_spinlock_take(), and eina_trash_pop().
Referenced by eina_rectangle_pool_new().
EAPI void eina_rectangle_free | ( | Eina_Rectangle * | rect | ) |
Frees the given rectangle.
rect | The rectangle to free. |
This function removes rect
from the rectangles pool.
Referenced by 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.
pool | The rectangle pool for which type is to be set. |
This function sets type
of pool
.
EAPI Eina_Rectangle_Outside eina_rectangle_outside_position | ( | Eina_Rectangle * | rect1, |
Eina_Rectangle * | rect2 | ||
) |
calculates where rect2 is outside of rect1.
rect1 | The rect to use as anchor |
rect2 | The rect to look for outside positions |
References _Eina_Rectangle::y.