Agnode_t *n;
} u;
int kind;
- int n_children;
+ size_t n_children;
};
#define DFLT_SZ 1.0
treenode_t *cp;
treenode_t *first = 0;
treenode_t *prev = 0;
- int i, n_children = 0;
+ int i;
double area = 0;
p->kind = AGRAPH;
p->u.subg = g;
+ size_t n_children = 0;
for (i = 1; i <= GD_n_cluster(g); i++) {
subg = GD_clust(g)[i];
cp = mkTree (subg, gp, ap, mp);
static void layoutTree(treenode_t * tree)
{
rectangle *recs;
- int i, nc;
treenode_t* cp;
/* if (tree->kind == AGNODE) return; */
if (tree->n_children == 0) return;
- nc = tree->n_children;
+ size_t nc = tree->n_children;
treenode_t** nodes = gv_calloc(nc, sizeof(treenode_t*));
cp = tree->leftchild;
- for (i = 0; i < nc; i++) {
+ for (size_t i = 0; i < nc; i++) {
nodes[i] = cp;
cp = cp->rightsib;
}
qsort (nodes, nc, sizeof(treenode_t*), (qsort_cmpf)nodecmp);
double* areas_sorted = gv_calloc(nc, sizeof(double));
- for (i = 0; i < nc; i++) {
+ for (size_t i = 0; i < nc; i++) {
areas_sorted[i] = nodes[i]->area;
}
if (tree->area == tree->child_area)
}
if (Verbose)
fprintf (stderr, "rec %f %f %f %f\n", tree->r.x[0], tree->r.x[1], tree->r.size[0], tree->r.size[1]);
- for (i = 0; i < nc; i++) {
+ for (size_t i = 0; i < nc; i++) {
nodes[i]->r = recs[i];
if (Verbose)
fprintf (stderr, "%f - %f %f %f %f = %f (%f %f %f %f)\n", areas_sorted[i],
free (recs);
cp = tree->leftchild;
- for (i = 0; i < nc; i++) {
+ for (size_t i = 0; i < nc; i++) {
if (cp->kind == AGRAPH)
layoutTree (cp);
cp = cp->rightsib;
{
treenode_t* cp = tp->leftchild;
treenode_t* rp;
- int i, nc = tp->n_children;
+ size_t nc = tp->n_children;
- for (i = 0; i < nc; i++) {
+ for (size_t i = 0; i < nc; i++) {
rp = cp->rightsib;
freeTree (cp);
cp = rp;
*************************************************************************/
#include <cgraph/alloc.h>
+#include <cgraph/prisize_t.h>
#include <common/render.h>
#include <math.h>
#include <patchwork/tree_map.h>
-static void squarify(int n, double *area, rectangle *recs, int nadded, double maxarea, double minarea, double totalarea,
+static void squarify(size_t n, double *area, rectangle *recs, size_t nadded, double maxarea, double minarea, double totalarea,
double asp, rectangle fillrec){
/* add a list of area in fillrec using squarified treemap alg.
n: number of items to add
fillrec: the rectangle to be filled in.
*/
double w = fmin(fillrec.size[0], fillrec.size[1]);
- int i;
- if (n <= 0) return;
+ if (n == 0) return;
if (Verbose) {
fprintf(stderr, "trying to add to rect {%f +/- %f, %f +/- %f}\n",fillrec.x[0], fillrec.size[0], fillrec.x[1], fillrec.size[1]);
- fprintf(stderr, "total added so far = %d\n", nadded);
+ fprintf(stderr, "total added so far = %" PRISIZE_T "\n", nadded);
}
if (nadded == 0){
squarify(n, area, recs, ++nadded, newmaxarea, newminarea, s, newasp, fillrec);
} else {
/* aspectio worsen if add another area, fixed the already added recs */
- if (Verbose) fprintf(stderr,"adding %d items, total area = %f, w = %f, area/w=%f\n",nadded, totalarea, w, totalarea/w);
+ if (Verbose) fprintf(stderr, "adding %" PRISIZE_T
+ " items, total area = %f, w = %f, area/w=%f\n",
+ nadded, totalarea, w, totalarea/w);
if (fillrec.size[0] <= fillrec.size[1]) {
// tall rec. fix the items along x direction, left to right, at top
hh = totalarea/w;
xx = fillrec.x[0] - fillrec.size[0]/2;
- for (i = 0; i < nadded; i++){
+ for (size_t i = 0; i < nadded; i++){
recs[i].size[1] = hh;
ww = area[i]/hh;
recs[i].size[0] = ww;
} else {/* short rec. fix along y top to bot, at left*/
ww = totalarea/w;
yy = fillrec.x[1] + fillrec.size[1]/2;
- for (i = 0; i < nadded; i++){
+ for (size_t i = 0; i < nadded; i++){
recs[i].size[0] = ww;
hh = area[i]/ww;
recs[i].size[1] = hh;
* fillred - rectangle to be filled
* return array of rectangles
*/
-rectangle* tree_map(int n, double *area, rectangle fillrec){
+rectangle* tree_map(size_t n, double *area, rectangle fillrec){
/* fill a rectangle rec with n items, each item i has area[i] area. */
- int i;
double total = 0, minarea = 1., maxarea = 0., asp = 1, totalarea = 0;
- int nadded = 0;
- for (i = 0; i < n; i++) total += area[i];
+ for (size_t i = 0; i < n; i++) total += area[i];
/* make sure there is enough area */
if (total > fillrec.size[0] * fillrec.size[1] + 0.001)
return NULL;
rectangle *recs = gv_calloc(n, sizeof(rectangle));
- squarify(n, area, recs, nadded, maxarea, minarea, totalarea, asp, fillrec);
+ squarify(n, area, recs, 0, maxarea, minarea, totalarea, asp, fillrec);
return recs;
}