#include "evas_common.h"
#ifdef EVAS_RECT_SPLIT
+static inline void rect_list_node_pool_set_max(int max);
+static inline void rect_list_node_pool_flush(void);
+static inline list_node_t *rect_list_node_pool_get(void);
+static inline void rect_list_node_pool_put(list_node_t *node);
+static inline void rect_init(rect_t *r, int x, int y, int w, int h);
+static inline void rect_list_append_node(list_t *rects, list_node_t *node);
+static inline void rect_list_append(list_t *rects, const rect_t r);
+static inline void rect_list_append_xywh(list_t *rects, int x, int y, int w, int h);
+static inline void rect_list_concat(list_t *rects, list_t *other);
+static inline list_node_t *rect_list_unlink_next(list_t *rects, list_node_t *parent_node);
+static inline void rect_list_del_next(list_t *rects, list_node_t *parent_node);
+static inline void rect_list_clear(list_t *rects);
+static inline void rect_list_del_split_strict(list_t *rects, const rect_t del_r);
+static inline void rect_list_add_split_strict(list_t *rects, list_node_t *node);
+static inline list_node_t *rect_list_add_split_fuzzy(list_t *rects, list_node_t *node, int accepted_error);
+static inline void rect_list_merge_rects(list_t *rects, list_t *to_merge, int accepted_error);
+static inline void rect_list_add_split_fuzzy_and_merge(list_t *rects, list_node_t *node, int split_accepted_error, int merge_accepted_error);
+static inline void rect_print(const rect_t r);
+static inline void rect_list_print(const list_t rects);
+
static const list_node_t list_node_zeroed = { NULL };
static const list_t list_zeroed = { NULL, NULL };
static list_node_pool_t list_node_pool = { NULL, 0, 1024 };
-void
+static inline void
rect_list_node_pool_set_max(int max)
{
int diff;
list_node_pool.max = max;
}
-void
+static inline void
rect_list_node_pool_flush(void)
{
while (list_node_pool.node)
}
}
-inline list_node_t *
+static inline list_node_t *
rect_list_node_pool_get(void)
{
if (list_node_pool.node)
else return malloc(sizeof(rect_node_t));
}
-inline void
+static inline void
rect_list_node_pool_put(list_node_t *node)
{
if (list_node_pool.len < list_node_pool.max)
else free(node);
}
-inline void
+static inline void
rect_init(rect_t *r, int x, int y, int w, int h)
{
r->area = w * h;
r->height = h;
}
-void
+static inline void
rect_print(const rect_t r)
{
INF("<rect(%d, %d, %d, %d)>", r.left, r.top, r.width, r.height);
}
-void
+static inline void
rect_list_print(const list_t rects)
{
list_node_t *node;
putchar(']');
}
-inline void
+static inline void
rect_list_append_node(list_t *rects, list_node_t *node)
{
if (rects->tail)
}
}
-inline void
+static inline void
rect_list_append(list_t *rects, const rect_t r)
{
rect_node_t *rect_node;
rect_list_append_node(rects, (list_node_t *)rect_node);
}
-inline void
+static inline void
rect_list_append_xywh(list_t *rects, int x, int y, int w, int h)
{
rect_t r;
rect_list_append(rects, r);
}
-inline void
+static inline void
rect_list_concat(list_t *rects, list_t *other)
{
if (!other->head)
*other = list_zeroed;
}
-inline list_node_t *
+static inline list_node_t *
rect_list_unlink_next(list_t *rects, list_node_t *parent_node)
{
list_node_t *node;
return node;
}
-inline void
+static inline void
rect_list_del_next(list_t *rects, list_node_t *parent_node)
{
list_node_t *node;
rect_list_node_pool_put(node);
}
-void
+static inline void
rect_list_clear(list_t *rects)
{
list_node_t *node;
}
}
-void
+static inline void
rect_list_del_split_strict(list_t *rects, const rect_t del_r)
{
list_t modified = list_zeroed;
rect_list_concat(rects, &modified);
}
-void
+static inline void
rect_list_add_split_strict(list_t *rects, list_node_t *node)
{
list_t dirty = list_zeroed;
return action;
}
-list_node_t *
+static inline list_node_t *
rect_list_add_split_fuzzy(list_t *rects, list_node_t *node, int accepted_error)
{
list_t dirty = list_zeroed;
outer->area = outer->width * outer->height;
}
-void
+static inline void
rect_list_merge_rects(list_t *rects, list_t *to_merge, int accepted_error)
{
while (to_merge->head)
}
}
-void
+static inline void
rect_list_add_split_fuzzy_and_merge(list_t *rects,
list_node_t *node,
int split_accepted_error,
struct list_node _lst;
struct rect rect;
};
-
-void rect_list_node_pool_set_max(int max);
-void rect_list_node_pool_flush(void);
-list_node_t *rect_list_node_pool_get(void);
-void rect_list_node_pool_put(list_node_t *node);
-
-void rect_init(rect_t *r, int x, int y, int w, int h);
-void rect_list_append_node(list_t *rects, list_node_t *node);
-void rect_list_append(list_t *rects, const rect_t r);
-void rect_list_append_xywh(list_t *rects, int x, int y, int w, int h);
-void rect_list_concat(list_t *rects, list_t *other);
-list_node_t *rect_list_unlink_next(list_t *rects, list_node_t *parent_node);
-void rect_list_del_next(list_t *rects, list_node_t *parent_node);
-void rect_list_clear(list_t *rects);
-void rect_list_del_split_strict(list_t *rects, const rect_t del_r);
-void rect_list_add_split_strict(list_t *rects, list_node_t *node);
-list_node_t *rect_list_add_split_fuzzy(list_t *rects, list_node_t *node, int accepted_error);
-void rect_list_merge_rects(list_t *rects, list_t *to_merge, int accepted_error);void rect_list_add_split_fuzzy_and_merge(list_t *rects, list_node_t *node, int split_accepted_error, int merge_accepted_error);
-
-void rect_print(const rect_t r);
-void rect_list_print(const list_t rects);
#endif /* EVAS_RECT_SPLIT */
struct _Tilebuf