static error click_walk(treeview_t *tr, int depth, int x, int y, ntree_t *t, connector_flags flags, int index, txtfmt_t *tx, int height, void *opaque) { treeview_click_data *data = opaque; os_box box; NOT_USED(tr); NOT_USED(t); NOT_USED(flags); NOT_USED(index); NOT_USED(tx); NOT_USED(height); /* hit detect */ box.x0 = x + depth * tr->line_height; box.y0 = y; box.x1 = box.x0 + tr->line_height; box.y1 = box.y0 + tr->line_height; if (box_contains_point(&box, data->x, data->y)) /* exiting here means that tr->walk.x and y are valid */ return error_TREEVIEW_FOUND; else return error_OK; }
char primitive_contains_point(PRIMITIVE *primitive, FPOINT *point) { if (primitive == NULL || point == NULL) return 0; if (!box_contains_point(&primitive->bounding_box, point->x, point->y)) return 0; if (polygon_contains_point(primitive->points, primitive->size, point->x, point->y)) return 1; return 0; }