Ejemplo n.º 1
0
void XYView::transform(
    Transformer& t, const Allocation& a, const Allocation& n
) const {
#if 0
    Allotment ax, ay;
    if (view_margin()) {
        const Allotment& alx = a.x_allotment();
        ax.span(alx.span() - 2*view_margin());
        ax.origin(alx.begin() + view_margin());
        ax.alignment(0);
        const Allotment& aly = a.y_allotment();
        ay.span(aly.span() - 2*view_margin());
        ay.origin(aly.begin() + view_margin());
        ay.alignment(0);
    } else {
        ax = a.x_allotment();
        ay = a.y_allotment();
    }
    Allocation al;
    al.allot_x(ax);
    al.allot_y(ay);
    scene2view(al);
#else
    scene2view(a);
    const Allotment& ax = a.x_allotment();
    const Allotment& ay = a.y_allotment();
#endif
    const Allotment& nx = n.x_allotment();
    const Allotment& ny = n.y_allotment();
    XYView* v = (XYView*)this;
    csize(ax.begin(), ax.span(), ay.begin(), ay.span());
    float sx = xsize_/width();
    float sy = ysize_/height();
    XYView* xv = (XYView*)this;
    xv->x_pick_epsilon_ = pick_epsilon/sx;
    xv->y_pick_epsilon_ = pick_epsilon/sy;
    t.translate( -left(), -bottom());
    t.scale(sx, sy);
    t.translate(ax.begin(), ay.begin());
#if 0
    printf("XYView::transform ax origin=%g span=%g alignment=%g begin=%g\n",
           ax.origin(), ax.span(), ax.alignment(), ax.begin());
    printf("XYView::transform ay origin=%g span=%g alignment=%g begin=%g %g\n",
           ay.origin(), ay.span(), ay.alignment(), ay.begin(), ay.end());
    printf("XYView::transform natx origin=%g span=%g alignment=%g begin=%g\n",
           nx.origin(), nx.span(), nx.alignment(), nx.begin());
    printf("XYView::transform naty origin=%g span=%g alignment=%g begin=%g %g\n",
           ny.origin(), ny.span(), ny.alignment(), ny.begin(), ny.end());
#endif
}