View Javadoc

1   /* ============================================================
2    * JRobin : Pure java implementation of RRDTool's functionality
3    * ============================================================
4    *
5    * Project Info:  http://www.jrobin.org
6    * Project Lead:  Sasa Markovic (saxon@jrobin.org)
7    *
8    * Developers:    Sasa Markovic (saxon@jrobin.org)
9    *
10   *
11   * (C) Copyright 2003-2005, by Sasa Markovic.
12   *
13   * This library is free software; you can redistribute it and/or modify it under the terms
14   * of the GNU Lesser General Public License as published by the Free Software Foundation;
15   * either version 2.1 of the License, or (at your option) any later version.
16   *
17   * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
18   * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
19   * See the GNU Lesser General Public License for more details.
20   *
21   * You should have received a copy of the GNU Lesser General Public License along with this
22   * library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
23   * Boston, MA 02111-1307, USA.
24   */
25  package org.jrobin.graph;
26  
27  class Mapper {
28  	private RrdGraphDef gdef;
29  	private ImageParameters im;
30  	private double pixieX, pixieY;
31  
32  	Mapper(RrdGraph rrdGraph) {
33  		this.gdef = rrdGraph.gdef;
34  		this.im = rrdGraph.im;
35  		pixieX = (double) im.xsize / (double) (im.end - im.start);
36  		if (!gdef.logarithmic) {
37  			pixieY = (double) im.ysize / (im.maxval - im.minval);
38  		}
39  		else {
40  			pixieY = (double) im.ysize / (Math.log10(im.maxval) - Math.log10(im.minval));
41  		}
42  	}
43  
44  	int xtr(double mytime) {
45  		return (int) ((double) im.xorigin + pixieX * (mytime - im.start));
46  	}
47  
48  	int ytr(double value) {
49  		double yval;
50  		if (!gdef.logarithmic) {
51  			yval = im.yorigin - pixieY * (value - im.minval) + 0.5;
52  		}
53  		else {
54  			if (value < im.minval) {
55  				yval = im.yorigin;
56  			}
57  			else {
58  				yval = im.yorigin - pixieY * (Math.log10(value) - Math.log10(im.minval)) + 0.5;
59  			}
60  		}
61  		if (!gdef.rigid) {
62  			return (int) yval;
63  		}
64  		else if ((int) yval > im.yorigin) {
65  			return im.yorigin + 2;
66  		}
67  		else if ((int) yval < im.yorigin - im.ysize) {
68  			return im.yorigin - im.ysize - 2;
69  		}
70  		else {
71  			return (int) yval;
72  		}
73  	}
74  }