• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2012 AndroidPlot.com
3  *
4  *    Licensed under the Apache License, Version 2.0 (the "License");
5  *    you may not use this file except in compliance with the License.
6  *    You may obtain a copy of the License at
7  *
8  *        http://www.apache.org/licenses/LICENSE-2.0
9  *
10  *    Unless required by applicable law or agreed to in writing, software
11  *    distributed under the License is distributed on an "AS IS" BASIS,
12  *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  *    See the License for the specific language governing permissions and
14  *    limitations under the License.
15  */
16 
17 package com.androidplot.xy;
18 
19 import android.graphics.RectF;
20 import com.androidplot.util.ValPixConverter;
21 
22 /**
23  * Calculates "stepping" values for a plot.  These values are most commonly used for
24  * drawing grid lines on a graph.
25  */
26 public class XYStepCalculator {
27 
28 
29     /**
30      * Convenience method - wraps other form of getStep().
31      * @param plot
32      * @param axisType
33      * @param rect
34      * @param minVal
35      * @param maxVal
36      * @return
37      */
getStep(XYPlot plot, XYAxisType axisType, RectF rect, Number minVal, Number maxVal)38     public static XYStep getStep(XYPlot plot, XYAxisType axisType, RectF rect, Number minVal, Number maxVal) {
39         XYStep step = null;
40         switch(axisType) {
41             case DOMAIN:
42                 step = getStep(plot.getDomainStepMode(), rect.width(), plot.getDomainStepValue(), minVal, maxVal);
43                 break;
44             case RANGE:
45                 step = getStep(plot.getRangeStepMode(), rect.height(), plot.getRangeStepValue(), minVal, maxVal);
46                 break;
47         }
48         return step;
49     }
50 
getStep(XYStepMode typeXY, float plotPixelSize, double stepValue, Number minVal, Number maxVal)51     public static XYStep getStep(XYStepMode typeXY, float plotPixelSize, double stepValue, Number minVal, Number maxVal) {
52         //XYStep step = new XYStep();
53         double stepVal = 0;
54         float stepPix = 0;
55         float stepCount = 0;
56         switch(typeXY) {
57             case INCREMENT_BY_VAL:
58                 stepVal = stepValue;
59                 stepPix = (float)(stepValue/ ValPixConverter.valPerPix(minVal.doubleValue(), maxVal.doubleValue(), plotPixelSize));
60                 stepCount = plotPixelSize /stepPix;
61                 break;
62             case INCREMENT_BY_PIXELS:
63                 stepPix = new Double(stepValue).floatValue();
64                 stepCount = plotPixelSize /stepPix;
65                 stepVal = ValPixConverter.valPerPix(minVal.doubleValue(), maxVal.doubleValue(), plotPixelSize)*stepPix;
66                 break;
67             case SUBDIVIDE:
68                 stepCount = new Double(stepValue).floatValue();
69                 stepPix = (plotPixelSize /(stepCount-1));
70                 stepVal = ValPixConverter.valPerPix(minVal.doubleValue(), maxVal.doubleValue(), plotPixelSize)*stepPix;
71                 break;
72         }
73         return new XYStep(stepCount, stepPix, stepVal);
74     }
75 }
76