The R Project SVN R

Rev

Rev 41901 | Rev 42016 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 41901 Rev 41911
Line 3600... Line 3600...
3600
    GSavePars(dd);
3600
    GSavePars(dd);
3601
    ProcessInlinePars(args, dd, call);
3601
    ProcessInlinePars(args, dd, call);
3602
    Rf_gpptr(dd)->cex = Rf_gpptr(dd)->cexbase * Rf_gpptr(dd)->cex;
3602
    Rf_gpptr(dd)->cex = Rf_gpptr(dd)->cexbase * Rf_gpptr(dd)->cex;
3603
    dnd_offset = GStrWidth("m", INCHES, dd);
3603
    dnd_offset = GStrWidth("m", INCHES, dd);
3604
    vmax = vmaxget();
3604
    vmax = vmaxget();
-
 
3605
    /* n is the number of merges, so the points are labelled 1 ... n+1 */
3605
    y =  (double*)R_alloc(n, sizeof(double));
3606
    y =  (double*)R_alloc(n+1, sizeof(double));
3606
    ll = (double*)R_alloc(n, sizeof(double));
3607
    ll = (double*)R_alloc(n+1, sizeof(double));
3607
    dnd_lptr = &(INTEGER(merge)[0]);
3608
    dnd_lptr = &(INTEGER(merge)[0]);
3608
    dnd_rptr = &(INTEGER(merge)[n]);
3609
    dnd_rptr = &(INTEGER(merge)[n]);
3609
    ymax = ymin = REAL(height)[0];
3610
    ymax = ymin = REAL(height)[0];
3610
    for (i = 1; i < n; i++) {
3611
    for (i = 1; i < n; i++) {
3611
	m = REAL(height)[i];
3612
	m = REAL(height)[i];
Line 3613... Line 3614...
3613
	    ymax = m;
3614
	    ymax = m;
3614
	else if (m < ymin)
3615
	else if (m < ymin)
3615
	    ymin = m;
3616
	    ymin = m;
3616
    }
3617
    }
3617
    pin = Rf_gpptr(dd)->pin[1];
3618
    pin = Rf_gpptr(dd)->pin[1];
3618
    for (i = 0; i < n; i++) {
3619
    for (i = 0; i <= n; i++) {
3619
	str = STRING_ELT(llabels, i);
3620
	str = STRING_ELT(llabels, i);
3620
	ll[i] = (str == NA_STRING) ? 0.0 :
3621
	ll[i] = (str == NA_STRING) ? 0.0 :
3621
	    GStrWidth(translateChar(str), INCHES, dd) + dnd_offset;
3622
	    GStrWidth(translateChar(str), INCHES, dd) + dnd_offset;
3622
    }
3623
    }
3623
 
3624
 
Line 3633... Line 3634...
3633
		y[-dnd_rptr[i] - 1] = REAL(height)[i];
3634
		y[-dnd_rptr[i] - 1] = REAL(height)[i];
3634
	}
3635
	}
3635
	/* determine the most extreme label depth */
3636
	/* determine the most extreme label depth */
3636
	/* assuming that we are using the full plot */
3637
	/* assuming that we are using the full plot */
3637
	/* window for the tree itself */
3638
	/* window for the tree itself */
3638
	for (i = 0; i < n; i++) {
3639
	for (i = 0; i <= n; i++) {
3639
	    tmp = ((ymax - y[i]) / yrange) * pin + ll[i];
3640
	    tmp = ((ymax - y[i]) / yrange) * pin + ll[i];
3640
	    if (tmp > yval) {
3641
	    if (tmp > yval) {
3641
		yval = tmp;
3642
		yval = tmp;
3642
		imax = i;
3643
		imax = i;
3643
	    }
3644
	    }
3644
	}
3645
	}
3645
    }
3646
    }
3646
    else {
3647
    else {
3647
	yrange = ymax;
3648
	yrange = ymax;
3648
	for (i = 0; i < n; i++) {
3649
	for (i = 0; i <= n; i++) {
3649
	    tmp = pin + ll[i];
3650
	    tmp = pin + ll[i];
3650
	    if (tmp > yval) {
3651
	    if (tmp > yval) {
3651
		yval = tmp;
3652
		yval = tmp;
3652
		imax = i;
3653
		imax = i;
3653
	    }
3654
	    }